共用方式為


OpenType 字型功能

更新:2007 年 11 月

本主題概述 Windows Presentation Foundation (WPF) 中 OpenType 字型技術的部分重要功能。

這個主題包含下列章節。

  • OpenType 字型格式
  • 變型
  • 大寫字
  • 連字
  • 花飾字
  • 替代字
  • 數值樣式
  • Typography 類別
  • 相關主題

OpenType 字型格式

OpenType 字型格式是 TrueType® 字型格式的延伸,其中增加了 PostScript 字型資料的支援。OpenType 字型格式是由 Microsoft 和 Adobe Corporation 共同開發。OpenType 字型以及支援 OpenType 字型的作業系統服務提供一種簡單的方法,不論字型是否包含 TrueType 外框或 CFF (PostScript) 外框,使用者都可以輕鬆安裝及使用字型。

OpenType 字型格式解決了開發人員所面臨的下列挑戰:

  • 擴展多重平台支援的範圍。

  • 加強支援國際字元集。

  • 加強保護字型資料。

  • 縮小檔案大小以提升字型傳送的效率。

  • 擴展進階印刷樣式控制的支援。

注意事項:

Windows SDK 包含一組可以搭配 Windows Presentation Foundation (WPF) 應用程式使用的範例 OpenType 字型。這些字型提供本主題其餘章節說明的大部分功能。如需詳細資訊,請參閱範例 OpenType 字型套件

如需 OpenType 字型格式的詳細資訊,請參閱 OpenType 規格 (英文)。

進階印刷樣式擴充功能

進階印刷樣式表格 (OpenType 版面配置表格) 以 TrueType 或 CFF 外框擴充了字型的功能。OpenType 版面配置字型包含擴充字型功能的額外資訊,以支援高品質的國際印刷樣式。大部分的 OpenType 字型只會公開可用之所有 OpenType 功能的子集。OpenType 字型提供下列功能:

  • 字元和圖像 (Glyph) 間豐富對應,可支援連字、位置形式、替代字和其他字型替代功能。

  • 支援二維定位與圖像附件。

  • 字型中包含明確的指令碼和語言資訊,因此文字處理應用程式可據以調整其行為。

如需 OpenType 版面配置表格的詳細說明,請參閱 OpenType 規格的字型檔表格章節 (英文)。

本概觀其餘內容簡介 Typography 物件屬性所公開具趣味視覺效果之部分 OpenType 功能的廣度和彈性。如需此物件的詳細資訊,請參閱印刷樣式類別。

變型

變型可用來產生不同的印刷樣式,例如上標和下標。

上標和下標

Variants 屬性可讓您設定 OpenType 字型的上標和下標值。

下列文字顯示 Palatino Linotype 字型的上標。

使用 OpenType 上標的文字

使用 OpenType 上標的文字

下列標記範例示範如何使用 Typography 物件的屬性,定義 Palatino Linotype 字型的上標。

<Paragraph FontFamily="Palatino Linotype">
  2<Run Typography.Variants="Superscript">3</Run>
  14<Run Typography.Variants="Superscript">th</Run>
</Paragraph>

下列文字顯示 Palatino Linotype 字型的下標。

使用 OpenType 下標的文字

使用 OpenType 下標的文字

下列標記範例示範如何使用 Typography 物件的屬性,定義 Palatino Linotype 字型的下標。

<Paragraph FontFamily="Palatino Linotype">
  H<Run Typography.Variants="Subscript">2</Run>O
  Footnote<Run Typography.Variants="Subscript">4</Run>
</Paragraph>

上標和下標的裝飾性用途

您也可以使用上標和下標來建立混合大小寫文字的裝飾效果。下列文字顯示 Palatino Linotype 字型的上標和下標文字。請注意,大寫字不受影響。

使用 OpenType 上標和下標的文字

使用 OpenType 上標和下標的文字

下列標記範例示範如何使用 Typography 物件的屬性,定義字型的上標和下標。

<Paragraph FontFamily="Palatino Linotype" Typography.Variants="Superscript">
  Chapter One
</Paragraph>
<Paragraph FontFamily="Palatino Linotype" Typography.Variants="Subscript">
  Chapter One
</Paragraph>

大寫字

大寫字是以大寫樣式圖像呈現文字的一組印刷格式。通常,將文字呈現成全部大寫字時,字母的間距可能太近,而且字母的粗細和比例可能過重。OpenType 支援大寫字的許多樣式設定格式,包括小型大寫字、特小大寫字、標題和大寫字間距。這些樣式設定格式可以讓您控制大寫字的外觀。

下列文字顯示 Pescadero 字型的標準大寫字,後面再加上設定成 "SmallCaps" 和 "AllSmallCaps" 樣式的字母。在這個案例中,三個字全都使用相同的字型大小。

使用 OpenType 大寫字的文字

使用 OpenType 大寫的文字

下列標記範例示範如何使用 Typography 物件的屬性,為使用 OpenType 字型範例定義大寫字。使用 "SmallCaps" 格式時,將會忽略任何前置大寫字母。

<Paragraph FontFamily="Pescadero" FontSize="48">
  <Run>CAPITALS</Run>
  <Run Typography.Capitals="SmallCaps">Capitals</Run>
  <Run Typography.Capitals="AllSmallCaps">Capitals</Run>
</Paragraph>

標題大寫字

標題大寫字的線條較細、比例較輕,其外觀設計也比一般大寫字更為高雅。標題大寫字通常用於較大的字型以充當標題。下列文字顯示 Pescadero 字型的一般大寫字和標題大寫字。請注意,第二行文字的字幹寬度較窄。

使用 OpenType 標題大寫字的文字

使用 OpenType 標題用大寫的文字

下列標記範例示範如何使用 Typography 物件的屬性,定義 Pescadero 字型的標題大寫字。

<Paragraph FontFamily="Pescadero">
  <Run Typography.Capitals="Titling">chapter one</Run>
</Paragraph>

大寫字間距

當您在文字中使用全部大寫字時,大寫字間距的功能可以讓您提供較大的間距。大寫字母通常設計為與小寫字母混用。使用全部大寫字母時,在大寫字母和小寫字母之間看似恰當的間距可能會變得過於擁擠。下列文字顯示 Pescadero 字型的一般和大寫字間距。

使用 OpenType 大寫字間距的文字

使用 OpenType 大寫留空的文字

下列標記範例示範如何使用 Typography 物件的屬性,定義 Pescadero 字型的大寫字間距。

<Paragraph FontFamily="Pescadero">
  <Run Typography.CapitalSpacing="True">CHAPTER ONE</Run>
</Paragraph>

連字

連字是兩個以上的圖像形成單一圖像,以建立更清晰或美觀的文字。OpenType 字型支援四種連字類型:

  • 標準連字:設計用來加強清晰度。標準連字包括 "fi"、"fl" 和 "ff"。

  • 內容連字:透過在構成連字的字元間提供較佳的聯結 (Join) 方式,以加強清晰度。

  • Discretionary 連字:為了裝飾目的而設計,並非特别為了清晰度而設計。

  • 歷史連字:為了記錄目的而設計,並非特別為了清晰度而設計。

下列文字顯示 Pericles 字型的標準連字圖像。

使用 OpenType 標準連字的文字

使用 OpenType 標準連字的文字

下列標記範例示範如何使用 Typography 物件的屬性,定義 Pericles 字型的標準連字圖像。

<Paragraph FontFamily="Pericles" Typography.StandardLigatures="True">
  <Run Typography.StylisticAlternates="1">FI</Run>
  <Run Typography.StylisticAlternates="1">FL</Run>
  <Run Typography.StylisticAlternates="1">TH</Run>
  <Run Typography.StylisticAlternates="1">TT</Run>
  <Run Typography.StylisticAlternates="1">TV</Run>
  <Run Typography.StylisticAlternates="1">TW</Run>
  <Run Typography.StylisticAlternates="1">TY</Run>
  <Run Typography.StylisticAlternates="1">VT</Run>
  <Run Typography.StylisticAlternates="1">WT</Run>
  <Run Typography.StylisticAlternates="1">YT</Run>
</Paragraph>

下列文字顯示 Pericles 字型的 Discretionary 連字圖像。

使用 OpenType Discretionary 連字的文字

使用 OpenType Discretionary 連字的文字

下列標記範例示範如何使用 Typography 物件的屬性,定義 Pericles 字型的 Discretionary 連字圖像。

<Paragraph FontFamily="Pericles" Typography.DiscretionaryLigatures="True">
  <Run Typography.StylisticAlternates="1">CO</Run>
  <Run Typography.StylisticAlternates="1">LA</Run>
  <Run Typography.StylisticAlternates="1">LE</Run>
  <Run Typography.StylisticAlternates="1">LI</Run>
  <Run Typography.StylisticAlternates="1">LL</Run>
  <Run Typography.StylisticAlternates="1">LO</Run>
  <Run Typography.StylisticAlternates="1">LU</Run>
</Paragraph>

根據預設,Windows Presentation Foundation (WPF) 中的 OpenType 字型會啟用標準連字。例如,如果您使用 Palatino Linotype 字型,標準連字 "fi"、"ff" 和 "fl" 便會顯示成合併的字元圖像。請注意,每個標準連字的各組字元彼此相接。

使用 OpenType 標準連字的文字

使用 OpenType 標準連字的文字

不過,您可以停用標準連字功能,讓諸如 "ff" 等標準連字顯示成兩個圖像,而非合併的字元圖像。

使用停用 OpenType 標準連字的文字

使用已停用之 OpenType 標準連字的文字

下列標記範例示範如何使用 Typography 物件的屬性,停用 Palatino Linotype 字型的標準連字圖像。

<!-- Set standard ligatures to false in order to disable feature. -->
<Paragraph Typography.StandardLigatures="False" FontFamily="Palatino Linotype" FontSize="72">
  fi ff fl
</Paragraph>

花飾字

花飾字一般是與書法相關的精緻裝飾性圖像。下列文字顯示 Pescadero 字型的標準和花飾字圖像。

使用 OpenType 標準和花飾字圖像的文字

使用 OpenType 標準和勾耳圖像的文字

花飾字通常做為簡短句子 (例如事件公告) 中的裝飾性項目。下列文字使用花飾字來突顯事件名稱的大寫字母。

使用 OpenType 花飾字的文字

使用 OpenType 勾耳的文字

下列標記範例示範如何使用 Typography 物件的屬性,定義字型的花飾字。

<Paragraph FontFamily="Pescadero" TextBlock.TextAlignment="Center">
  Wishing you a<LineBreak/>
  <Run Typography.StandardSwashes="1" FontSize="36">Happy New Year!</Run>
</Paragraph>

內容花飾字

花飾字圖像的特定組合可能產生不討喜的外觀,例如下降幅度與前後字母重疊的情況。使用內容花飾字可以讓您使用替代花飾字圖像來改善外觀。下列文字顯示同一個字套用內容花飾字之前和之後的外觀。

使用 OpenType 內容花飾字的文字

使用 OpenType 視內容來勾耳的文字

下列標記範例示範如何使用 Typography 物件的屬性,定義 Pescadero 字型的內容花飾字。

<Paragraph FontFamily="Pescadero" Typography.StandardSwashes="1">
  Lyon <Run Typography.ContextualSwashes="1">L</Run>yon
</Paragraph>

替代字

替代字是可以用來取代標準圖像的圖像。OpenType 字型 (例如下列範例中使用的 Pericles 字型) 可以包含替代字圖像,用以建立文字的不同外觀。下列文字顯示 Pericles 字型的標準圖像。

使用 OpenType 標準圖像的文字

使用 OpenType 標準圖像的文字

Pericles OpenType 字型包含額外的圖像,這些圖像可以提供標準圖像集的文體替代字。下列文字顯示文體替代字圖像。

使用 OpenType 文體替代字圖像的文字

使用 OpenType 文體替代圖像的文字

下列標記範例示範如何使用 Typography 物件的屬性,定義 Pericles 字型的文體替代字圖像。

<Paragraph FontFamily="Pericles">
  <Run Typography.StylisticAlternates="1">A</Run>NCIENT
  GR<Run Typography.StylisticAlternates="1">EE</Run>K
  MYTH<Run Typography.StylisticAlternates="1">O</Run>LOGY
</Paragraph>

下列文字顯示 Pericles 字型的其他幾種文體替代字圖像。

使用 OpenType 文體替代字圖像的文字

使用 OpenType 文體替代圖像的文字

下列標記範例示範如何這些額外的文體替代字圖像。

<Paragraph FontFamily="Pericles">
  <Run Typography.StylisticAlternates="1">A</Run>
  <Run Typography.StylisticAlternates="2">A</Run>
  <Run Typography.StylisticAlternates="3">A</Run>
  <Run Typography.StylisticAlternates="1">C</Run>
  <Run Typography.StylisticAlternates="1">E</Run>
  <Run Typography.StylisticAlternates="1">G</Run>
  <Run Typography.StylisticAlternates="1">O</Run>
  <Run Typography.StylisticAlternates="1">Q</Run>
  <Run Typography.StylisticAlternates="1">R</Run>
  <Run Typography.StylisticAlternates="2">R</Run>
  <Run Typography.StylisticAlternates="1">S</Run>
  <Run Typography.StylisticAlternates="1">Y</Run>
</Paragraph>

隨機內容替代字

隨機內容替代字提供單一字元的多個替代圖像。以指令碼類型字型實作時,這項功能可以使用一組隨機選擇且外觀上略有出入的圖像,模擬手寫字。下列文字使用 Lindsey 字型的隨機內容替代字。請注意字母 "a" 外觀上的些微差異。

使用 OpenType 隨機內容替代字的文字

使用 OpenType 隨機內容替代的文字

下列標記範例示範如何使用 Typography 物件的屬性,定義 Lindsey 字型的隨機內容替代字。

<TextBlock FontFamily="Lindsey">
  <Run Typography.ContextualAlternates="True">
    a banana in a cabana
  </Run>
</TextBlock>

歷史形式

歷史形式是過去常用的印刷樣式慣例。下列文字顯示的片語 "Boston, Massachusetts" 使用 Palatino Linotype 字型的圖像歷史形式。

使用 OpenType 歷史形式的文字

使用 OpenType 古體形式的文字

下列標記範例示範如何使用 Typography 物件的屬性,定義 Palatino Linotype 字型的歷史形式。

<Paragraph FontFamily="Palatino Linotype">
  <Run Typography.HistoricalForms="True">Boston, Massachusetts</Run>
</Paragraph>

數值樣式

OpenType 字型支援可用於文字中之數值的許多功能。

分數

OpenType 字型支援分數樣式,包括橫式和直式。

下列文字顯示 Palatino Linotype 字型的分數樣式。

使用 OpenType 橫式和直式分數的文字

使用 OpenType 斜式和直式分數的文字

下列標記範例示範如何使用 Typography 物件的屬性,定義 Palatino Linotype 字型的分數樣式。

<Paragraph FontFamily="Palatino Linotype" Typography.Fraction="Slashed">
  1/8 1/4 3/8 1/2 5/8 3/4 7/8
</Paragraph>
<Paragraph FontFamily="Palatino Linotype" Typography.Fraction="Stacked">
  1/8 1/4 3/8 1/2 5/8 3/4 7/8
</Paragraph>

舊樣式數字

OpenType 字型支援舊樣式數字格式。這種格式適合用來顯示已非標準之樣式中的數字。下列文字使用 Palatino Linotype 字型的標準和舊樣式數字格式,顯示 18 世紀的日期。

使用 OpenType 舊樣式數字的文字

使用 OpenType 舊樣式數字的文字

下列文字顯示 Palatino Linotype 字型的標準數字,後面再加上舊樣式數字。

使用 OpenType 舊樣式數字集的文字

使用 OpenType 舊樣式數字集的文字

下列標記範例示範如何使用 Typography 物件的屬性,定義 Palatino Linotype 字型的舊樣式數字。

<Paragraph FontFamily="Palatino Linotype">
  <Run Typography.NumeralStyle="Normal">1234567890</Run>
  <Run Typography.NumeralStyle="OldStyle">1234567890</Run>
</Paragraph>

調和間距和表格式圖形

OpenType 字型支援調和間距和表格式圖形功能,以便在使用數字時控制寬度的調整。調和間距圖形會將每個數字視為擁有不同的寬度 — "1" 的寬度小於 "5"。表格式圖形會被視為等寬的數字,因此呈垂直對齊,而能增加財務類型資訊的可讀性。

下列文字使用 Miramonte 字型在第一個資料行中顯示兩個調和間距圖形。請注意數字 "5" 和 "1" 兩者在寬度上的差異。第二個資料行同樣顯示這兩個數值,但已使用表格式圖形功能調整過其寬度。

使用 OpenType 調和間距和表格式圖形

使用 OpenType 調和間距與表格式圖形的文字

下列標記範例示範如何使用 Typography 物件的屬性,定義 Miramonte 字型的調和間距和表格式圖形。

<TextBlock FontFamily="Miramonte">
  <Run Typography.NumeralAlignment="Proportional">114,131</Run>
</TextBlock>
<TextBlock FontFamily="Miramonte">
  <Run Typography.NumeralAlignment="Tabular">114,131</Run>
</TextBlock>

斜線零

OpenType 字型支援斜線零的數字格式,以突顯字母 "O" 和數字 "0" 的不同。斜線零數字通常用於財務和商務資訊中的識別項。

下列文字顯示使用 Miramonte 字型的範例訂單識別項。第一行使用標準的數字;第二行則使用斜線零數字,以提供與大寫字母 "O" 的較佳對照。

使用 OpenType 斜線零數字的文字

使用 OpenType 零帶有斜線之數字的文字

下列標記範例示範如何使用 Typography 物件的屬性,定義 Miramonte 字型的斜線零數字。

<Paragraph FontFamily="Miramonte">
  <Run>Order #0048-OTC-390</Run>
  <LineBreak/>
  <Run Typography.SlashedZero="True">Order #0048-OTC-390</Run>
</Paragraph>

使用 XamlPad 檢視 OpenType 功能

了解 OpenType 功能的實用技巧,就是使用 XamlPad 來建立試驗使用不同印刷樣式屬性的標記。如需詳細資訊,請參閱 XAMLPad

使用 XamlPad 測試 OpenType 字型

顯示 OpenType 功能的 XamlPad

Typography 類別

Typography 物件會公開 OpenType 字型支援的功能集。透過在標記中設定 Typography 的屬性,您可以輕鬆撰寫善用 OpenType 功能的文件。

下列文字顯示 Pescadero 字型的標準大寫字,後面再加上設定成 "SmallCaps" 和 "AllSmallCaps" 樣式的字母。在這個案例中,三個字全都使用相同的字型大小。

使用 OpenType 大寫字的文字

使用 OpenType 大寫的文字

下列標記範例示範如何使用 Typography 物件的屬性,定義 Pescadero 字型的大寫字。使用 "SmallCaps" 格式時,將會忽略任何前置大寫字母。

<Paragraph FontFamily="Pescadero" FontSize="48">
  <Run>CAPITALS</Run>
  <Run Typography.Capitals="SmallCaps">Capitals</Run>
  <Run Typography.Capitals="AllSmallCaps">Capitals</Run>
</Paragraph>

下列程式碼範例完成的工作與前述標記範例相同。

MyParagraph.FontFamily = new FontFamily("Pescadero");
MyParagraph.FontSize = 48;

Run run_1 = new Run("CAPITALS ");
MyParagraph.Inlines.Add(run_1);

Run run_2 = new Run("Capitals ");
run_2.Typography.Capitals = FontCapitals.SmallCaps;
MyParagraph.Inlines.Add(run_2);

Run run_3 = new Run("Capitals");
run_3.Typography.Capitals = FontCapitals.AllSmallCaps;
MyParagraph.Inlines.Add(run_3);

MyParagraph.Inlines.Add(new LineBreak());

Typography 類別屬性

下表列出 Typography 物件的屬性、值和預設值。

屬性

預設值

AnnotationAlternates

數值 - 位元組

0

Capitals

AllPetiteCaps | AllSmallCaps | Normal | PetiteCaps | SmallCaps | Titling | Unicase

FontCapitals.Normal

CapitalSpacing

Boolean

false

CaseSensitiveForms

Boolean

false

ContextualAlternates

Boolean

true

ContextualLigatures

Boolean

true

ContextualSwashes

數值 - 位元組

0

DiscretionaryLigatures

Boolean

false

EastAsianExpertForms

Boolean

false

EastAsianLanguage

HojoKanji | Jis04 | Jis78 | Jis83 | Jis90 | NlcKanji | Normal | Simplified | Traditional | TraditionalNames

FontEastAsianLanguage.Normal

EastAsianWidths

Full | Half | Normal | Proportional | Quarter | Third

FontEastAsianWidths.Normal

Fraction

Normal | Slashed | Stacked

FontFraction.Normal

HistoricalForms

Boolean

false

HistoricalLigatures

Boolean

false

Kerning

Boolean

true

MathematicalGreek

Boolean

false

NumeralAlignment

Normal | Proportional | Tabular

FontNumeralAlignment.Normal

NumeralStyle

Boolean

FontNumeralStyle.Normal

SlashedZero

Boolean

false

StandardLigatures

Boolean

true

StandardSwashes

數值 – 位元組

0

StylisticAlternates

數值 – 位元組

0

StylisticSet1

Boolean

false

StylisticSet2

Boolean

false

StylisticSet3

Boolean

false

StylisticSet4

Boolean

false

StylisticSet5

Boolean

false

StylisticSet6

Boolean

false

StylisticSet7

Boolean

false

StylisticSet8

Boolean

false

StylisticSet9

Boolean

false

StylisticSet10

Boolean

false

StylisticSet11

Boolean

false

StylisticSet12

Boolean

false

StylisticSet13

Boolean

false

StylisticSet14

Boolean

false

StylisticSet15

Boolean

false

StylisticSet16

Boolean

false

StylisticSet17

Boolean

false

StylisticSet18

Boolean

false

StylisticSet19

Boolean

false

StylisticSet20

Boolean

false

Variants

Inferior | Normal | Ordinal | Ruby | Subscript | Superscript

FontVariants.Normal

請參閱

概念

Windows Presentation Foundation 中的印刷樣式

範例 OpenType 字型套件

將字型與應用程式一起封裝

參考

Typography

其他資源

OpenType 規格