共用方式為


OpenType 字型功能

本主題提供 Windows Presentation Foundation (WPF) 的 OpenType 字型技術重要功能概觀。

OpenType 字型格式

OpenType 字型格式是 TrueType® 字型格式的延伸模組,新增 PostScript 字型資料的支援。 OpenType 字型格式是由 Microsoft 和 Adobe Corporation 共同開發。 OpenType 字型與支援 OpenType 字型的作業系統服務,提供使用者簡單的字型安裝與使用方式,無論字型包含 TrueType 外框或 CFF (PostScript) 外框。

OpenType 字型格式解決下列開發人員難題︰

  • 更廣泛的多平台支援。

  • 更好的國際字元集支援。

  • 更好的字型資料保護。

  • 較小的檔案大小,讓字型發佈更有效率。

  • 進階印刷樣式控制項的廣泛支援。

備註

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

如需 OpenType 字型格式的詳細資訊,請參閱 OpenType 規格

進階的印刷樣式延伸模組

進階印刷樣式資料表 (OpenType 版面配置表格) 使用 TrueType 或 CFF 外框來擴充字型功能。 OpenType 版面配置字型包含延伸字型功能的其他資訊,支援高品質的國際印刷樣式。 大部分 OpenType 字型只公開整體 OpenType 可用功能的子集。 OpenType 字型提供下列功能。

  • 字元與字符之間的豐富對應,支援連音符號、位置形式、替代項目,以及其他字型替代項目。

  • 支援二維定位與字符附件。

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

在 OpenType 規格的「字型檔案表格」一節中,會詳細說明 OpenType 版面配置表格。

本概觀其餘部分會介紹 Typography 物件的屬性所公開的一些視覺有趣之 OpenType 功能的彈性與廣度。 如需此物件的詳細資訊,請參閱印刷樣式類別

變體

用來轉譯不同印刷樣式的變數,例如上標和下標。

上標和下標

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

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

Text using OpenType superscripts使用 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 字型。

Text using OpenType subscripts使用 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 字型的上下標文字。 請注意,大寫字不受影響。

Text using OpenType superscripts and subscripts使用 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" 的字母。 在此情況下,三個單字全都使用相同的字型大小。

Text using OpenType capitals使用 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>

標題大寫字

標題大寫字的加權和比例較輕,設計目的是為了比正常大寫字母看起來更雅緻。 標題大寫字通常用於較大的字型大小作為標題。 下列文字顯示 Pescadero 字型的正常和標題大寫字。 請注意第二行文字較窄的主體寬度。

Text using OpenType titling capitals使用 OpenType 標題用大寫的文字使用 OpenType 標題用大寫的文字

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

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

大寫字母間距

大寫字母間距功能可讓您在全部使用大寫字的文字中,提供更多的間距。 大寫字母通常會設計為與小寫字母混合在一起。 大寫字母和小寫字母間看起來很不錯的間距,在全部使用大寫字母時會看起來很擠。 下列文字顯示 Pescadero 字型的正常和大寫字間距。

Text using OpenType capital spacing使用 OpenType 大寫留空的文字使用 OpenType 大寫留空的文字

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

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

連字

連音符號是兩個或以上的字符,形成單一字符以建立更清晰或更美觀的文字。 OpenType 字型支援四種連音符號︰

  • 標準連音符號。 設計目的旨在增進可讀性。 標準連音符號包括 "fi"、"fl" 和 "ff"。

  • 內容連音符號。 設計目的旨在提供組成連音符號的字元間更好的聯結行為,以提升可讀性。

  • Discretionary 連音符號。 設計成裝飾之用,並不是特別針對可讀性設計。

  • 過往連音符號。 設計成記錄之用,並不是特別針對可讀性所設計。

下列文字顯示 Pericles 字型的標準連音符號字符。

Text using OpenType standard ligatures使用 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 連音符號。

Text using OpenType discretionary ligatures使用 OpenType Discretionary 連音符號的文字使用 OpenType Discretionary 連音符號的文字

下列標記範例示範如何使用 Typography 物件的屬性,定義 Pericles 字型的自由連音字符。

<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" 會顯示為合併的字元字符。 請注意,每個標準連音符號的成對字元都彼此相鄰。

Text using OpenType standard ligatures with Palatino Linotype搭配 Palatino Linotype 使用 OpenType 標準連音字符的文字搭配 Palatino Linotype 使用 OpenType 標準連音字符的文字

不過,您可以停用標準連音符號功能,讓 "ff" 等標準連音符號顯示為兩個分開的字符,而不是合併的字元字符。

Text using disabled OpenType standard ligatures使用已停用之 OpenType 標準連音符號的文字使用已停用之 OpenType 標準連音符號的文字

下列標記範例示範如何使用 Typography 物件的屬性,停用 Pericles 字型的標準連音字符。

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

花飾字

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

Text using OpenType standard and swash glyphs使用 OpenType 標準和花飾字字符的文字使用 OpenType 標準和花飾字字符的文字

花飾字通常用為簡短片語中的裝飾項目,例如事件宣告。 下列文字使用花飾字強調大寫字母的事件名稱。

Text using OpenType swashes使用 OpenType 勾耳的文字使用 OpenType 勾耳的文字

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

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

內容花飾字

某些花飾字字符的組合會導致不討喜的外觀,例如相鄰字母的伸尾部分重疊。 使用內容花飾字可讓您使用會產生更佳外觀的替代花飾字字符。 下列文字顯示套用內容花飾字之前和之後的相同字組。

Text using OpenType contextual swashes使用 OpenType 視內容來勾耳的文字使用 OpenType 視內容來勾耳的文字

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

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

候補

替代項目是可以取代標準字符的字符。 OpenType 字型,例如下例使用的 Pericles 字型,可以包含替代字符,您可用來建立不同的文字外觀。 下列文字顯示 Pericles 字型的標準字符。

Text using OpenType standard glyphs使用 OpenType 標準字符的文字使用 OpenType 標準字符的文字

Pericles OpenType 字型包含其他字符,可為標準的字符組提供文體替代字。 下列文字顯示文體替代字符。

Text using OpenType stylistic alternate glyphs使用 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 字型的其他文體替代字符。

Text using OpenType stylistic alternate glyphs  for the Pericles font使用 Pericles 字型的 OpenType 文體替代字符的文字使用 Pericles 字型的 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" 的外觀略有不同。

Text using OpenType random contextual alternates使用 OpenType 隨機內容替代項目的文字使用 OpenType 隨機內容替代項目的文字

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

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

古體形式

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

Text using OpenType historical forms使用 OpenType 古體形式的文字使用 OpenType 古體形式的文字

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

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

數字的樣式

OpenType 字型支援大量可搭配文字中數值使用的功能。

分數

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

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

Text using OpenType slashed and stacked fractions使用 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 世紀的日期。

Text using OpenType old style numerals使用 OpenType 舊樣式數字的文字使用 OpenType 舊樣式數字的文字

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

Text using OpenType old style numeral sets使用 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" 之間的寬度差異。 第二個資料行顯示相同的兩個數值,使用表格式數字功能調整其寬度。

Text using OpenType proportional & tabular figures使用 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" 的對比。

Text using OpenType slashed zero numerals使用 OpenType 加斜線之零數字的文字使用 OpenType 加斜線之零數字的文字

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

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

印刷樣式類別

Typography 物件會公開 OpenType 字型支援的一組功能。 在標記中設定 Typography 的屬性,您可以輕鬆撰寫充分利用 OpenType 功能的文件。

下列文字顯示 Pescadero 字型的標準大寫字母,後面接著樣式設定為 "SmallCaps" 和 "AllSmallCaps" 的字母。 在此情況下,三個單字全都使用相同的字型大小。

Text using OpenType capitals使用 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());
MyParagraph.FontFamily = New FontFamily("Pescadero")
MyParagraph.FontSize = 48

Dim run_1 As New Run("CAPITALS ")
MyParagraph.Inlines.Add(run_1)

Dim run_2 As New Run("Capitals ")
run_2.Typography.Capitals = FontCapitals.SmallCaps
MyParagraph.Inlines.Add(run_2)

Dim run_3 As New Run("Capitals")
run_3.Typography.Capitals = FontCapitals.AllSmallCaps
MyParagraph.Inlines.Add(run_3)

MyParagraph.Inlines.Add(New LineBreak())

印刷樣式類別屬性

下表列出 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

另請參閱