WPF 中的印刷樣式

本主題介紹 WPF 的主要印刷樣式功能。 這些功能包括改善文字轉譯的品質和效能、OpenType 印刷樣式支援、增強的國際文字、增強字型支援,以及新的文字應用程式開發介面(API)。

提升文字的品質與效能

WPF 中的文字會使用 Microsoft ClearType 轉譯,以增強文字的清晰性和可讀性。 ClearType 是由 Microsoft 開發的軟體技術,可改善現有 LCD 上文字的可讀性,例如膝上型電腦螢幕、口袋電腦螢幕和平板監視器。 ClearType 使用子圖元轉譯,讓文字在圖元的小數部分對齊字元,以更逼真度顯示其真實圖形。 額外的解析度可提高文字顯示細節的銳度,即使經過長時間也容易閱讀。 WPF 中 ClearType 的另一個改進是 Y 方向的消除鋸齒,可平滑文字字元中淺曲線的頂端和底部。 如需 ClearType 功能的詳細資訊,請參閱 ClearType 概觀

Text with ClearType y-direction anti-aliasing
以 ClearType Y 方向消除鋸齒功能顯示的文字

如果您的電腦符合所需的最低硬體層級,整個文字轉譯管線可以在 WPF 中加速硬體。 無法使用硬體執行的轉譯會回復為軟體轉譯。 硬體加速會影響文字轉譯管線的所有階段,從儲存個別圖像、將圖像組合成圖像執行、套用效果,到將 ClearType 混合演算法套用至最終顯示的輸出。 如需硬體加速的詳細資訊,請參閱圖形轉譯層

Diagram of the text rendering pipeline

此外,動畫文字,無論是字元或圖像,都會充分利用 WPF 所啟用的圖形硬體功能。 這樣可產生平滑的文字動畫。

豐富的印刷樣式

OpenType 字型格式是 TrueType® 字型格式的延伸。 OpenType 字型格式是由 Microsoft 和 Adobe 共同開發,並提供豐富的進階印刷樣式功能。 物件 Typography 會公開 OpenType 字型的許多進階功能,例如文體替代字型和斜體。 Windows SDK 提供一組範例 OpenType 字型,這些字型的設計具有豐富的功能,例如 Pericles 和 Pescadero 字型。 如需詳細資訊,請參閱 範例 OpenType 字型套件

Pericles OpenType 字型包含額外的字元,可提供標準字元集的文體替代字型。 下列文字顯示文體替代字符。

Text using OpenType stylistic alternate glyphs

花飾字是裝飾性字符,使用精心設計且通常與書寫體相關聯的裝飾。 下列文字顯示 Pescadero 字型的標準和花飾字字符。

Text using OpenType standard and swash glyphs

如需 OpenType 功能的詳細資訊,請參閱 OpenType 字型功能

已增強的國際文字支援

WPF 提供下列功能來提供增強的國際文字支援:

  • 在所有書寫系統中,使用自動調整度量功能來自動調整行間距。

  • 對於國際文字的廣泛支援。 如需詳細資訊,請參閱 WPF 的全球化

  • 語言導向的分行、斷字及對齊。

已增強的字型支援

WPF 提供下列功能來提供增強的字型支援:

  • 適用於所有文字的 Unicode。 字型行為和選取不再需要字元集或字碼頁。

  • 字型行為與全域設定 (例如系統地區設定) 無關。

  • 分隔 FontWeightFontStretch 、 和 FontStyle 型別,以定義 FontFamily 。 這提供比 Win32 程式設計更大的彈性,其中斜體和粗體布林值組合用來定義字型系列。

  • 書寫方向 (水平和垂直) 會與字型名稱分開處理。

  • 使用複合字型技術,在可攜式 XML 檔案中連結字型和字型後援。 複合字型,能夠建構全系列的多語系字型。 複合字型也提供一種機制來避免顯示遺漏的字符。 如需詳細資訊,請參閱 類別中的 FontFamily 備註。

  • 從複合字型,使用單一語言字型群組建置的國際字型。 這可在開發多國語言的字型時節省資源成本。

  • 內嵌於文件中的複合字型,藉此提供文件的可攜性。 如需詳細資訊,請參閱 類別中的 FontFamily 備註。

新的文字應用程式開發介面 (API)

WPF 提供數個文字 API,供開發人員在應用程式中包含文字時使用。 這些 API 分成三個類別:

  • 版面配置和使用者介面。 圖形化使用者介面 (GUI) 的通用文字控制項。

  • 輕量型文字繪製。 可讓您直接對物件繪製文字。

  • 進階文字格式化。 可讓您實作自訂的文字引擎。

版面配置和使用者介面

在最高層級的功能上,文字 API 會提供常見的 UI 控制項,例如 LabelTextBlockTextBox 。 這些控制項提供應用程式內的基本 UI 元素,並提供簡單的方式來呈現和與文字互動。 和 PasswordBox 之類的 RichTextBox 控制項可啟用更進階或特製化的文字處理。 和 類別,例如 TextRangeTextSelection 和 ,可 TextPointer 啟用有用的文字操作。 這些 UI 控制項提供的屬性,例如 FontFamilyFontSizeFontStyle ,可讓您控制用來轉譯文字的字型。

使用點陣圖效果、轉換和文字效果

WPF 可讓您使用點陣圖效果、轉換和文字效果等功能,以視覺化方式建立文字的有趣用法。 下列範例示範套用至文字之延伸陰影效果的典型類型。

Text shadow with Softness = 0.25

下列範例示範套用至文字的延伸陰影效果與雜點。

Text shadow with noise

下列範例示範套用至文字的外光暈效果。

Text shadow using an OuterGlowBitmapEffect

下列範例示範套用至文字的模糊效果。

Text shadow using a BlurBitmapEffect

下列範例示範沿著 X 軸縮放 150% 的第二行文字,以及沿著 Y 軸縮放 150% 的第三行文字。

Text scaled using a ScaleTransform

下列範例顯示沿著 X 軸扭曲的文字。

Text skewed using a SkewTransform

物件 TextEffect 是協助程式物件,可讓您將文字視為文字字串中的一或多個字元群組。 下列範例示範旋轉個別字元。 每一個字元會以 1 秒的間隔獨立旋轉。

Screenshot of text effect rotating text

使用非固定格式文件

除了一般 UI 控制項之外,WPF 還提供文字簡報的版面配置控制項,也就是 FlowDocument 元素。 元素 FlowDocumentDocumentViewer 元素搭配使用,可為具有不同版面配置需求的大量文字提供控制項。 版面配置控制項可透過 Typography 其他 UI 控制項的物件和字型相關屬性,存取進階印刷樣式。

下列範例顯示裝載在 中的 FlowDocumentReader 文字內容,其提供搜尋、流覽、分頁和內容調整支援。

Screenshot that shows OpenType fonts.

如需詳細資訊,請參閱 WPF 中的文件

輕量型文字繪製

您可以使用 物件的 方法 DrawingContext ,將文字直接繪製至 WPF 物件 DrawText 。 若要使用此方法,您可以建立 FormattedText 物件。 這個物件可讓您繪製多行文字,且可個別格式化文字中的每個字元。 物件的功能 FormattedText 包含 Windows API 中 DrawText 旗標的大部分功能。 此外, FormattedText 物件還包含省略號支援等功能,其中會在文字超過其界限時顯示省略號。 下列範例示範的文字具有數種已套用的格式,包括第二個和第三個字的線性漸層。

Text displayed using FormattedText object

您可以將格式化的文字轉換成 Geometry 物件,讓您建立其他類型的視覺有趣文字。 例如,您可以根據文字字串的大綱建立 Geometry 物件。

Text outline using a linear gradient brush

下列範例示範數種方式,可透過修改筆劃、填滿和反白顯示轉換的文字,來建立有趣的視覺效果。

Text with different colors for fill and stroke

Text with image brush applied to stroke

Text with image brush applied to stroke and highlight

如需物件的詳細資訊 FormattedText ,請參閱 繪製格式化文字

進階文字格式化

在文字 API 的最進階層級,WPF 可讓您使用 TextFormatter 命名空間中的物件和其他類型來建立自訂文字版面配置 System.Windows.Media.TextFormattingTextFormatter和相關聯的類別可讓您實作自訂文字版面配置,以支援您自己定義字元格式、段落樣式、斷行規則,以及國際文字的其他版面配置功能。 在極少數的情況下,您會想要覆寫 WPF 文字配置支援的預設實作。 不過,如果您要建立文字編輯控制項或應用程式,您可能需要與預設 WPF 實作不同的實作。

不同于傳統的文字 API,會 TextFormatter 透過一組回呼方法與文字版面配置用戶端互動。 它要求用戶端在 類別的實作 TextSource 中提供這些方法。 下圖說明用戶端應用程式與 TextFormatter 之間的文字配置互動。

Diagram of text layout client and TextFormatter

如需如何建立自訂文字版面配置的詳細資訊,請參閱進階文字格式化

另請參閱