DirectWrite 的新功能
本主題說明適用於各種 Windows 10 版本的 DirectWrite 新功能。
Windows App SDK
Windows App SDK 引進了名為 DWriteCore 的新版 DirectWrite。 如需詳細資訊,請參閱 DWriteCore 概觀。
Windows 10 2019 年 5 月更新
對於 Windows 10 版本 1903(版本組建 18362,也稱為 Windows 10 2019 年 5 月更新),未新增或更新任何功能或 API。
Windows 10 2018 年 10 月更新
Windows 10 版本 1809(10.0; 組建 17763)—也稱為 Windows 10 2018 年 10 月更新—已新增或更新下列功能和 API。
新增功能
- DWRITE_FONT_SOURCE_TYPE 列舉
- IDWriteFontSet3 介面及其方法
Windows 10 2018 年 4 月更新
Windows 10 版本 1803(10.0; 組建 17134)已新增或更新下列功能和 API,也稱為 Windows 10 2018 年 4 月更新。
新增功能
- IDWriteFactory7 介面及其方法
- IDWriteFontCollection3 介面及其方法
- IDWriteFontSet2 介面及其方法
Windows 10 Fall Creators Update
已針對 Windows 10 版本 1709(10.0,組建版本 16299)新增或更新下列功能和 API,也稱為 Windows 10 秋季創作者更新。
新增功能
- DWRITE_AUTOMATIC_FONT_AXES 列舉
- DWRITE_FONT_AXIS_ATTRIBUTES 列舉
- DWRITE_FONT_AXIS_TAG 列舉
- DWRITE_FONT_FAMILY_MODEL 列舉
- IDWriteFactory6 介面及其方法
- IDWriteFontCollection2 介面及其方法
- IDWriteFontFace5 介面及其方法
- IDWriteFontFaceReference1 介面及其方法
- IDWriteFontFallback1 介面及其方法
- IDWriteFontFamily2 介面及其方法
- IDWriteFontList2 介面及其方法
- IDWriteFontResource 介面及其方法
- IDWriteFontSet1 介面及其方法
- IDWriteFontSetBuilder2 介面及其方法
- IDWriteTextFormat3 介面及其方法
- IDWriteTextLayout4 介面及其方法
- DWRITE_MAKE_FONT_AXIS_TAG 巨集
- DWRITE_FONT_AXIS_RANGE 結構
- DWRITE_FONT_AXIS_VALUE 結構
搬遷
DWRITE_GLYPH_IMAGE_FORMATS 列舉從 dwrite_3.h
移至 dcommon.h
。
Windows 10 Creators Update
Windows 10 版本 1703(10.0; 組建 15063)已新增或更新下列功能和 API,也稱為 Windows 10 Creators Update。
雲端字型和自定義字型集的擴充 API 支援
Windows 10 包含的 API,可讓 app 輕鬆地從 Windows 字型服務存取字型。 在 Windows 10 Creators Update 中,會擴充遠端字型的 API,以便輕鬆存取 Web 上其他來源可使用 HTTP 或 HTTPS 存取的字型。
新的遠端字型 API 可以搭配公用或私人 Web 服務使用。 此外,它們可以用來存取原始、OpenType 字型檔案(.ttf、.otf.、.ttc、.otc),或封裝在 WOFF WOFF 或 WOFF2 容器格式的字型。 新的 API 會與現有的 API 搭配使用,用來將請求排入佇列以下載遠端字型資料,並處理實際的下載過程。
其他新的 API 可讓應用程式更輕鬆地使用儲存在本機檔案系統或載入記憶體緩衝區中的自訂字型。
如需使用遠端字型、自定義字型集或 WOFF/WOFF2 容器格式之新 API 的詳細資訊,請參閱下列主題:
另請參閱該主題中提供的 API 參考主題連結。 在 DirectWrite 自訂字型集範例中也會說明使用新的和現有的 API 來使用自定義字型。 此範例說明數種不同案例的程式代碼實作,包括磁碟上的本機字型、Web 上的遠端字型、記憶體內部字型數據,以及封裝 WOFF 或 WOFF2 格式的字型。
OpenType 字型變化的初始支援
OpenType 字型格式規範第 1.8 版引入了一個令人振奮的新擴展功能,稱為 OpenType 字型變體。 DirectWrite 已在 Windows 10 Creators Update 中更新,以支援變數字型的具名實例。 如需詳細資訊,請參閱下列主題:
Windows 10 年度更新版
Windows 10 版本 1607 (10.0; 組建 14393)已新增或更新的功能和 API,也稱為 Windows 10 週年更新版。
改善色彩字型的支援
從 Windows 10 年度更新版開始,DirectWrite 為更廣泛的色彩字型格式提供內建支援,可讓開發人員在其 DirectWrite 支援的應用程式中使用比以往更多的字型類型。 這包括下列項目的支援:
- 'COLR' OpenType 數據表,可在字型中啟用精簡向量內容。 (自 Windows 8.1 起支援)
- 'SVG ' OpenType 數據表,可啟用字型中的 SVG 內容。
- 'CBDT' OpenType 表格,可在字型中啟用色彩點圖內容。
- 'sbix' OpenType 數據表,可在字型中啟用色彩點圖內容。
Direct2D,它會使用 DirectWrite 進行文字轉譯,在啟用 D2D1_DRAW_TEXT_OPTIONS_ENABLE_COLOR_FONT 旗標時自動支援這些色彩字型格式。 如需詳細資訊,請參閱下列主題:
支援 Adobe Typekit 和其他字型服務客戶端
某些字型服務,例如 Adobe Typekit,具有用戶端公用程式,可讓使用者從服務載入字型,並在 Windows 電腦上的不同應用程式中使用這些字型。 這些公用程式通常會透過對 GDI 進行運行時間呼叫以載入其他字型,而不是在系統上永久安裝字型來運作。 由於該設計,在舊版 Windows 上,字型可在以 GDI 為基礎的應用程式中使用,但在 DirectWrite 應用程式中則無法使用。 從 Windows 10 年度更新版開始,這類公用程式所載入的字型也可以在 DirectWrite 以及 GDI 中使用。
由字型服務公用程式載入的字型會顯示在系統字型集合中,方法是呼叫 IDWriteFactory::GetSystemFontCollection 方法取得。 由於字型服務通常會遵循每個使用者授權模型,因此這些公用程式所載入的字型會以每個使用者為基礎進行管理。 因此,現有的 DirectWrite 應用程式可以利用終端使用者使用這類服務取得的字型,而不需要在應用程式中進行任何程式碼變更,為使用者提供更順暢的體驗。
支援使用 CFF 輪廓的 OpenType 集合
OpenType 和 TrueType 字型格式長期以來一直支援將多個字型封裝在單一字型檔案中的能力,稱為「字型集合」。 OpenType 規格一律允許字型使用 TrueType 或 CFF 格式的字元大綱數據。 不過,直到最近,規格只允許字體輪廓使用 TrueType 格式的集合。 OpenType 1.7 版現在允許集合使用 TrueType 或 CFF 格式的字形輪廓資料。 從 Windows 10 年度更新版開始,DirectWrite 會使用 CFF 大綱數據支援 OpenType 集合。
Windows 10
Windows 字型服務整合
從 Windows 10 開始,隨附於 Windows 的字型可在在線服務中使用,並可透過任何 Windows 10 裝置上的 DirectWrite 存取。 這適用於所有 Windows 10 版本。 這可讓應用程式使用任何 Windows 字型顯示內容,即使該字型目前未安裝在裝置上也一樣。
已在 XAML 架構中實作 DirectWrite 字型服務機制的支援,這表示任何使用 XAML 的應用程式都不需要變更程式代碼,才能利用字型服務。 可下載字型 (XAML) 程式代碼範例 示範這一點。 直接呼叫 DirectWrite API 的應用程式需要使用新的 API 來使用字型服務機制。 如需詳細資訊,請參閱下列主題:
- IDWriteFactory3::GetSystemFontCollection 方法
- IDWriteTextLayout3 介面
- IDWriteFontDownloadQueue 介面
- IDWriteFontDownloadListener 介面
可下載字型 (DirectWrite) 程式代碼範例 說明如何使用數個新的 API。
字型集 API
DirectWrite 的字型集合介面提供以字型系列組織之字型集合的檢視,使用粗細、伸展和樣式做為子系列屬性。 在內部,DirectWrite 會使用具有各種屬性的一般字型清單來實作字型集合介面。 這種方法更有彈性,不僅可以支援列舉字重/延展/樣式系列,還支援使用其他字型屬性進行查詢和篩選。
在 Windows 10 中,這個更有彈性的字型處理機制可透過 IDWriteFontSet 和相關 API 提供給應用程式使用。 例如,您可以使用字型集 API,利用自訂字型集中的應用程式自定義字型屬性來建立自訂字型選擇器使用者介面。
如需詳細資訊,請參閱下列主題:
- IDWriteFontSet 介面
- IDWriteFontSetBuilder 介面
- DWRITE_FONT_PROPERTY_ID 列舉
- IDWriteFontFactory3::GetSystemFontSet 方法
新的文字排版行距方式
DirectWrite 的文字格式和文字配置介面支援新的行距模式。 在舊版中,DirectWrite 的文字版面配置實作允許使用行距,其中每個行的高度會根據行內的最高專案自動設定(預設“模式),或所有行距設定為應用程式所決定之統一高度的行距(統一模式)。 在 Windows 10 中,支援額外的「比例」行距模式,讓應用程式有更多行距行為選項。 如需詳細資訊,請參閱下列主題:
- IDWriteTextLayout3 介面
- IDWriteTextLayout3::SetLineSpacing 方法
- DWRITE_LINE_SPACING 結構
- DWRITE_LINE_SPACING_METHOD 列舉
- DWRITE_FONT_LINE_GAP_USAGE 列舉
- IDWriteTextLayout3::GetLineMetrics 方法
- DWRITE_LINE_METRICS1 結構
行距 (DirectWrite) 程式代碼範例 說明如何使用數個新的 API,並提供所有不同行距模式的視覺效果,讓您更容易瞭解可用的各種行距選項。
GDI Interop
自 Windows 7 引進以來,DirectWrite 已為原本使用 GDI 字型模型、文字版面配置和轉譯實作的應用程式提供移轉路徑。 這是透過 [[IDWriteGdiInterop]] 介面提供。 在 Windows 10 中,其他 API 提供額外的 GDI-interop 功能。 如需詳細資訊,請參閱下列主題:
Windows 8.1
渲染彩色字體
從 Windows Windows 8.1 開始,DirectWrite 提供色彩字型的支援。 Direct2D,其使用 DirectWrite 進行文字轉譯,已新增列舉值D2D1_DRAW_TEXT_OPTIONS_ENABLE_COLOR_FONT,以在繪製文字時啟用此功能。 如需詳細資訊,請參閱下列主題:
Windows 8
新的工廠介面,IDWriteFactory1,可以用來建立其他可用的介面。
其他字型屬性,例如:上標/下標、插入符號斜率、PANOSE 和 Unicode 範圍。
間距改善,例如:控制字元間隔、舊版字距調整和文本對齊。 如需詳細資訊,請參閱 齊行、字距調整和間距 主題。
改進的渲染目標和參數。
文字複雜度分析改善。
新的腳本屬性、新的腳本支援 (Unicode 6)、字型後援新增、配對括弧和 bidi 增強功能。
字型快取效能增強。 從 Windows 8 開始,字型快取是全域的,會在您的電腦開機時啟動。
新的轉譯模式。
從 Windows 8 開始,DirectWrite 支援許多功能,可協助您為世界市場製作應用程式。
以下是數個區域,可協助您實作可針對全球客戶量身打造的 RTF 應用程式。
中文、日文和韓文擴充功能 C & D
每隔幾年,Unicode 聯盟就會發佈一份新增到中日韓統一表意文字區塊的標準化清單。 隨著 Unicode 6.0 修訂版的發佈,它們已推出延伸區塊 C 和 D。您可以在 Unicode 網站上找到這些表意字區塊,即 延伸區塊 C 和 延伸區塊 D。
從 Windows 8 開始,DirectWrite 支援這些標準化 CJK Ideographs 新區塊的 Unicode 程式代碼點,因此您可以在 DirectWrite 應用程式中使用這些程式代碼點。
印度盧比符號
2005年3月,印度政府宣布舉辦比賽,為盧比貨幣選擇標誌符號。 經過激烈的競爭,2010年7月15日,印度政府選擇了由 D. Udaya Kumar 創建的設計,DirectWrite 包括支持與該符號關聯的 Unicode 碼位。 因此,DirectWrite 應用程式現在支援此貨幣符號。
Emoji
DirectWrite 現在支援在應用程式中使用 emoji。 舊版的 DirectWrite,如果您嘗試轉譯表情符號表義文字,則會呈現遺漏的字元方塊。 從 Windows 8 開始,DirectWrite 支援與 emoji 相關聯的 Unicode 程式代碼區塊,因此,如果您的 app 針對 emoji 使用 Unicode 標準程式代碼點,它會顯示適當的字元。
緬甸、蒂夫納和舊漢古文
從 Windows 8 開始,DirectWrite 支援對應至緬甸、Tiffinagh 和 Old Hangul 語言字元的 Unicode 字碼點區塊,因此您可以建立包含這三種語言文字的應用程式。 除了支援這些字元之外,DirectWrite 還支援古朝鮮文字處理斷行的特有方式。
新增腳本
從 Windows 8 開始,GetScriptProperties 方法會傳回許多新腳本的資訊。 以下是 Windows 8 和更新版本 DirectWrite 支援的腳本清單。
- 阿維斯陀語
- 巴穆姆
- 巴塔克
- 布拉赫米
- 埃及象形文字
- 帝國阿拉馬伊文
- 題詞 Pahlavi
- 帕提亞銘文
- 爪哇語
- Kaithi
- 麗蘇(弗雷澤)
- 曼底安語
- Meetei Mayek
- 舊南阿拉伯文
- 老土耳其文 (奧爾洪)
- 撒馬利亞人
- 泰漢姆(蘭娜)
- 泰越