WPF 中的印刷樣式
本主題將介紹 WPF 的主要印刷樣式功能。 這些功能包括改善文字轉譯的品質和效能、支援 OpenType 字型技術、加強國際化文字處理、增強字型支援以及新的文字應用程式開發介面 (API)。
提升文字的品質與效能
在 WPF 中,文字使用 Microsoft ClearType 轉譯技術,使文字更清晰、易讀。 ClearType 軟體技術是由 Microsoft 所開發,此技術改善了現有 LCD (液晶顯示器) 上的文字可讀性,例如膝上型電腦螢幕、Pocket PC 螢幕和平面監視器。 ClearType 使用子像素轉譯,利用像素的小數部分來對齊字元,使文字更貼近其真實形狀顯示。 額外的解析度可提高文字顯示細節的銳度,即使經過長時間也容易閱讀。 WPF 中 ClearType 的另一項改進是 y 方向消除鋸齒功能,這使得文字上方和下方曲線更加平滑。 如需 ClearType 功能的更多詳細資訊,請參閱 ClearType 概觀。
套用 ClearType Y 方向消除鋸齒功能的文字
以 ClearType Y 方向消除鋸齒功能顯示的文字
在符合最低硬體要求的情況下,WPF 中整個文字轉譯管線流程都可在硬體加速的情況下進行。 無法使用硬體執行的轉譯會回復為軟體轉譯。 硬體加速會影響文字轉譯管線的所有階段;從儲存個別字符、字符組合至字符執行、套用效果,到將 ClearType 混色演算法套用至最終顯示的輸出。 如需硬體加速的詳細資訊,請參閱圖形轉譯層。
文字轉譯管線的圖表
此外,具動畫效果的文字 (無論是字元或字符) 都可充分利用 WPF 所啟用的圖形硬體功能。 這樣可產生平滑的文字動畫。
豐富的印刷樣式
OpenType 字型格式是 TrueType® 字型格式的延伸。 OpenType 字型格式由 Microsoft 和 Adobe 共同開發,提供豐富的進階印刷樣式功能。 Typography 物件公開許多 OpenType 字型的進階功能,例如文體替代字型和花飾字。 Windows SDK 提供了一組 OpenType 字型範例,這組字型設計具有豐富的功能,例如 Pericles 和 Pescadero 字型。 如需詳細資訊,請參閱 範例 OpenType 字型套件。
Pericles OpenType 字型包含其他字符,可為標準的字符組提供文體替代字。 下列文字顯示文體替代字符。
使用 OpenType 文體替代字符的文字使用 OpenType 文體替代字符的文字
花飾字是裝飾性字符,使用精心設計且通常與書寫體相關聯的裝飾。 下列文字顯示 Pescadero 字型的標準和花飾字字符。
使用 OpenType 標準和花飾字字符的文字使用 OpenType 標準和花飾字字符的文字
如需 OpenType 功能的更多詳細資訊,請參閱 OpenType 字型功能。
已增強的國際文字支援
WPF 透過以下功能增強了國際文字支援:
在所有書寫系統中,使用自動調整度量功能來自動調整行間距。
對於國際文字的廣泛支援。 如需詳細資訊,請參閱 WPF 的全球化。
語言導向的分行、斷字及對齊。
已增強的字型支援
WPF 提供增強的字型支援,包含以下功能:
適用於所有文字的 Unicode。 字型行為和選取不再需要字元集或字碼頁。
字型行為與全域設定 (例如系統地區設定) 無關。
分隔 FontWeight、FontStretch 和 FontStyle 類型,以定義 FontFamily。 這比 Win32 程式設計中使用布林值組合定義粗體和斜體字型家族的方式更具靈活性。
書寫方向 (水平和垂直) 會與字型名稱分開處理。
可攜式 XML 檔案中的字型連結和備用字型,使用複合字型技術。 複合字型,能夠建構全系列的多語系字型。 複合字型也提供一種機制來避免顯示遺漏的字符。 如需更多資訊,請參閱 FontFamily 類別中的備註。
從複合字型,使用單一語言字型群組建置的國際字型。 這可在開發多國語言的字型時節省資源成本。
內嵌於文件中的複合字型,藉此提供文件的可攜性。 如需更多資訊,請參閱 FontFamily 類別中的備註。
新的文字應用程式開發介面 (API)
WPF 提供數個文字 API,供開發人員在應用程式中需處理文字時使用。 這些 API 分為三大類:
版面配置和使用者介面。 用於圖形使用者介面 (GUI) 的常見文字控制項。
輕量型文字繪製。 可讓您直接對物件繪製文字。
進階文字格式化。 可讓您實作自訂的文字引擎。
版面配置和使用者介面
在最高層級的功能中,文字 API 提供常見的 UI 控制項,例如 Label、TextBlock 和 TextBox。 這些控制項提供應用程式內基本的 UI 元素,以及提供一種簡單方式來呈現文字並與之互動。 RichTextBox 和 PasswordBox 等控制項可啟用更進階或特製化的文字處理。 如 TextRange、TextSelection 和 TextPointer 等類別,可開啟有用的文字操作。 這些 UI 控制項的屬性,例如 FontFamily、FontSize 和 FontStyle,可讓您控制用來轉譯文字的字型。
使用點陣圖效果、轉換和文字效果
WPF 可讓您藉由使用點陣圖效果、轉換和文字效果等功能創建視覺上有趣的文字應用。 下列範例示範套用至文字之延伸陰影效果的典型類型。
文字陰影,濃淡 = 0.25
下列範例示範套用至文字的延伸陰影效果與雜點。
具有雜點的文字陰影
下列範例示範套用至文字的外光暈效果。
使用 OuterGlowBitmapEffect 的文字陰影
下列範例示範套用至文字的模糊效果。
使用 BlurBitmapEffect 的文字陰影
下列範例示範沿著 X 軸縮放 150% 的第二行文字,以及沿著 Y 軸縮放 150% 的第三行文字。
使用 ScaleTransform 縮放的文字
下列範例顯示沿著 X 軸扭曲的文字。
使用 SkewTransform 傾斜的文字
TextEffect 物件是一個協助程式物件,可讓您將文字視為文字字串中的一或多個字元群組。 下列範例示範旋轉個別字元。 每一個字元會以 1 秒的間隔獨立旋轉。
旋轉文字的文字效果螢幕擷取畫面
使用非固定格式文件
除了常見的 UI 控制項外,WPF 還提供了一個版面配置控制項,以利文字呈現—FlowDocument 元素。 FlowDocument 元素與 DocumentViewer 元素搭配使用,可為具有不同版面配置需求的大量文字提供控制項。 版面配置控制項可透過 Typography 物件和其他 UI 控制項的字型相關屬性存取進階印刷樣式功能。
下列範例顯示了在 FlowDocumentReader 中託管的文字內容,該元素提供了搜尋、瀏覽、分頁及內容縮放支援。
顯示 OpenType 字型的螢幕擷取畫面。
如需詳細資訊,請參閱 WPF 中的文件。
輕量型文字繪製
您可以使用 DrawingContext 物件的 DrawText 方法,直接將文字繪製到 WPF 物件上。 若要使用此方法,您需要建立一個 FormattedText 物件。 這個物件可讓您繪製多行文字,且可個別格式化文字中的每個字元。 FormattedText 物件的功能包含了 Windows API 中 DrawText 旗標的大部分功能。 此外,FormattedText 物件還包含了省略符號支援等功能,當文字超出其邊界時,省略符號便會顯示。 下列範例示範的文字具有數種已套用的格式,包括第二個和第三個字的線性漸層。
使用 FormattedText 物件顯示的文字
您可以將格式化的文字轉換成 Geometry 物件,讓您建立其他類型的視覺上趣味文字。 例如,您可以根據文字字串的外框建立 Geometry 物件。
以線性漸層筆刷繪製外框的文字
下列範例示範數種方式,可透過修改筆劃、填滿和反白顯示轉換的文字,來建立有趣的視覺效果。
使用不同填色和筆觸色彩的文字
影像筆刷套用至筆觸的文字
套用至筆劃和反白顯示影像筆刷的文字
如需更多有關 FormattedText 物件的資訊,請參閱繪製格式化文字。
進階文字格式化
在文字 API 的最進階層級,WPF 可讓您使用 TextFormatter 物件和 System.Windows.Media.TextFormatting 命名空間中的其他類型來建立自定義文字配置。 TextFormatter 和相關類別可讓您實作自訂的文字版面配置,支援自定義字元格式、段落樣式、分行規則及其他國際文字版面配置功能。 在大多數情況下,您可能不需要覆寫 WPF 文字配置支援的預設實作。 不過,如果您要建立文字編輯控制項或應用程式,您可能需要不同於 WPF 預設實作的配置支援。
不同於傳統的文字 API,TextFormatter 會透過一組回撥方法與文字版面配置用戶端互動。 它需要用戶端在 TextSource 類別的實作中提供這些方法。 下圖說明用戶端應用程式與 TextFormatter 之間的文字版面配置互動情況。
文字配置用戶端和 TextFormatter 的圖表
如需如何建立自訂文字版面配置的詳細資訊,請參閱進階文字格式化。