DirectWrite的新功能

本主題描述各種Windows 10版本的DirectWrite新功能。

Windows 應用程式 SDK

Windows 應用程式 SDK引進名為 DWriteCore 的新版本DirectWrite。 如需詳細資訊,請參閱 DWriteCore 概觀

Windows 10 2019 年 5 月更新

Windows 10版本 1903 (10.0 未新增或更新任何功能或 API;組建 18362) ,也稱為Windows 10 2019 年 5 月更新。

Windows 10 2018 年 10 月更新

已針對 Windows 10 版本 1809 (10.0 新增或更新下列功能和 API;組建 17763) ,也稱為Windows 10 2018 年 10 月更新。

新增

Windows 10 2018 4 月更新

已針對 Windows 10 1803 版 (10.0 新增或更新下列功能和 API;組建 17134) —也稱為 2018 年 4 月更新Windows 10。

新增

Windows 10 Fall Creators Update

已針對 Windows 10 1709 版 (10.0 新增或更新下列功能和 API;組建 16299) ,也稱為Windows 10 Fall Creators Update。

新增

DWRITE_GLYPH_IMAGE_FORMATS列舉dwrite_3.h 移至 dcommon.h

Windows 10 Creators Update

已針對 Windows 10 1703 版 (10.0 新增或更新下列功能和 API;組建 15063) ,也稱為Windows 10 Creators Update。

雲端字型和自訂字型集的擴充 API 支援

Windows 10包含的 API,可讓 app 輕鬆地從Windows字型服務存取字型。 在Windows 10 Creators Update中,會擴充遠端字型的 API,以便輕鬆存取可從網路上使用 HTTP 或 HTTPS 存取的其他來源的字型。 

新的遠端字型 API 可以搭配公用或私人 Web 服務使用。 此外,它們可以用來存取原始、OpenType 字型檔案 (.ttf、.otf.、.ttc、.otc) ,或以 WOFFWOFF2 容器格式封裝的字型。 新的 API 會與現有的 API 搭配使用,以佇列要求來下載遠端字型資料,以及處理實際的下載程式。

其他新的 API 可讓應用程式更輕鬆地使用儲存在本機檔案系統或載入記憶體緩衝區中的自訂字型。

如需使用遠端字型、自訂字型集或 WOFF/WOFF2 容器格式之新 API 的詳細資訊,請參閱下列主題:

自訂字型集

另請參閱該主題中提供的 API 參考主題連結。  DirectWrite自訂字型集範例中也會說明使用新的和現有的 API 來處理自訂字型。 此範例說明數種不同案例的程式碼實作,包括磁片上的本機字型、Web 上的遠端字型、記憶體內部字型資料,以及封裝 WOFF 或 WOFF2 格式的字型。

OpenType 字型變化的初始支援

OpenType 字型格式規格 1.8 版引進了稱為 OpenType 字型變化之格式的全新擴充功能。 DirectWrite已在 Windows 10 Creators Update 中更新,以支援變數字型的具名實例。 如需詳細資訊,請參閱下列主題:

OpenType 變數字型

Windows 10 年度更新

已針對 Windows 10 1607 版 (10.0 新增或更新下列功能和 API;組建 14393) ,也稱為Windows 10年度更新版。

改善的色彩字型支援

從 Windows 10 年度更新版開始,DirectWrite提供更各種色彩字型格式的內建支援,讓開發人員在其DirectWrite支援的應用程式中使用更多類型的字型。 這包括下列項目的支援:

  • 'COLR' OpenType 資料表,可在字型中啟用精簡向量內容。 自 Windows 8.1.) 以來支援 (
  • 'SVG ' OpenType 表格,可在字型中啟用 SVG 內容。
  • 'WARNINGT' 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 10 行動裝置版、Xbox 和 HoloLens,以及桌面用戶端。 這可讓應用程式使用任何Windows字型來顯示內容,即使裝置上目前未安裝字型也一樣。

已在 XAML 架構中實作DirectWrite字型服務機制的支援,這表示任何使用 XAML 的應用程式都不需要變更程式碼,才能利用字型服務。 XAML ) 程式碼範例 (可下載字 型會示範這一點。 直接呼叫 DirectWrite API 的應用程式必須使用新的 API,才能使用字型服務機制。 如需詳細資訊,請參閱下列主題:

可下載的字型 (DirectWrite) 程式碼範例說明如何使用數個新的 API。

字型集 API

DirectWrite的字型集合介面提供依字型系列組織之字型集合的檢視,使用粗細、延展和樣式做為子系列屬性。 在內部,DirectWrite使用具有各種屬性的一般字型清單來實作字型集合介面。 這種方法更有彈性,在 中可以支援粗細/延展/樣式系列列舉,但也支援使用其他字型屬性進行查詢和篩選。

在Windows 10中,這個更有彈性的字型處理機制可透過 IDWriteFontSet 和相關 API 提供給應用程式使用。 例如,字型集 API 可用來建立自訂的字型選擇器使用者介面,利用自訂字型集中的應用程式自訂字型屬性。

如需詳細資訊,請參閱下列主題:

新的文字版面配置行距模式

DirectWrite的文字格式和文字版面配置介面支援新的行距模式。 在舊版中,DirectWrite的文字版面配置實作允許行距,其中每一行的高度會根據行內的最高專案自動設定, (「預設」模式) ,或所有行距設定為應用程式所決定的統一高度, (「統一」模式) 。 在Windows 10中,支援額外的「比例」行距模式,讓應用程式有更多行距行為選項。 如需詳細資訊,請參閱下列主題:

行距 (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

新的 Factory 介面 IDWriteFactory1,用於建立可用的其他介面。

其他字型屬性,例如:超/下標、插入號斜率、PANOSE 和 Unicode 範圍。

間距改善,例如:控制字元間距、舊版的 Kerning 配對和理由。 如需詳細資訊 ,請參閱理由、Kerning 和間距 主題。

改善的轉譯目標和參數。

文字複雜度分析改善。

新的腳本屬性、新的腳本支援 (Unicode 6) 、字型後援新增、配對括弧和 bidi 擴增。

字型快取效能增強功能。 從 Windows 8字型快取為全域,並在您的電腦開機時啟動。

新的轉譯模式。

從Windows 8開始,DirectWrite支援許多功能,可協助您為全球市場建立應用程式。

以下是數個區域,可協助您實作可針對全球客戶量身打造的 RTF 應用程式。

中文、日文和韓文延伸模組 C & D

Unicode 聯盟每隔幾年都會發行中文、日文和韓文統一 Ideograph 區塊的標準化新增專案清單。 透過 Unicode 6.0 修訂,它們已發行擴充功能區塊 C 和 D。您可以在 Unicode 網站 延伸模組 C延伸模組 D中找到這些表意文字區塊。

從Windows 8開始,DirectWrite支援這些標準化 CJK Ideographs 新區塊的 Unicode 程式碼點,因此您可以在DirectWrite應用程式中使用這些程式碼點。

印度印度文符號

在 2005 年 3 月,印度政府宣佈了一項競賽,以選擇印度貨幣的符號。 在很多競爭之後,在 2010 年 7 月 15 日,印度政府選擇由 D.Udya Kumar 所建立的設計,而DirectWrite包含系結至符號的 Unicode 代碼點支援。 因此,DirectWrite應用程式現在支援此貨幣符號。

Emoji

DirectWrite現在支援在應用程式中使用 emoji。 如果您嘗試轉譯 emoji ideograph,則舊版的 DirectWrite,會顯示遺漏的字元方塊。 從Windows 8開始,DirectWrite支援與 emoji 相關聯的 Unicode 程式碼區塊,因此如果您的 app 針對 emoji 使用 Unicode 標準代碼點,則會顯示適當的字元。

印度文、Tiffinagh 和舊韓文

從Windows 8開始,DirectWrite支援 Unicode 字碼點區塊,這些字點對應至印度文、Tiffinagh 和舊韓文語言中的字元,因此您可以建立包含這三種語言文字的應用程式。 除了支援這些字元之外,DirectWrite支援舊韓文處理換行的唯一方式。

新增腳本

從Windows 8開始,GetScriptProperties方法會傳回許多新腳本的資訊。 以下是Windows 8和之後DirectWrite支援的腳本清單。

  • Avestan
  • Bamum
  • Batak
  • Brahmi
  • 克拉夫文
  • 亞馬亞文
  • Inscriptional Pahlavi
  • Inscriptional Parthian
  • 爪哇文
  • Kaithi
  • Lisu (Fraser)
  • Mandaic
  • 曼尼普爾文
  • 舊南阿拉伯文
  • 舊土耳其文 (Orkhon)
  • 撒 瑪利亞
  • Tai Tham (Lanna)
  • 泰達文