DirectWrite 的新功能

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

Windows 應用程式 ADK (機器翻譯)

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)-也稱為 Windows 10 2018 年 4 月更新。

新增

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,以便輕鬆存取 Web 上其他來源可使用 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 內容。
  • '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 來使用字型服務機制。 如需詳細資訊,請參閱下列主題:

可下載字型 (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 進行文字轉譯的 Direct2D 已新增列舉值D2D1_DRAW_TEXT_OPTIONS_ENABLE_COLOR_FONT,以在繪製文字時啟用此功能。 如需詳細資訊,請參閱下列主題:

Windows 8

新的處理站介面 IDWriteFactory1,可用來建立可用的其他介面。

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

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

改善的轉譯目標和參數。

文字複雜度分析改善。

新的腳本屬性、新的腳本支援 (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 支援 Unicode 字碼點區塊,這些代碼點對應至緬甸、Tiffinagh 和 Old Hangul 語言中的字元,因此您可以建立包含這三種語言文字的應用程式。 除了支持這些字元之外,DirectWrite 還支援 Old Hangul 處理斷行的唯一方式。

新增腳本

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

  • 阿維斯坦
  • Bamum
  • 巴塔克
  • 布拉赫米
  • 埃及象形
  • 帝國阿拉馬伊文
  • 題詞 Pahlavi
  • 題詞帕希安文
  • 爪 哇
  • Kaithi
  • 麗蘇(弗雷澤)
  • 曼迪奇
  • Meetei Mayek
  • 舊南阿拉伯文
  • 老土耳其文 (奧爾洪)
  • 撒 瑪利亞
  • 泰漢姆(蘭娜)
  • 泰越