共用方式為


OpenType 字型功能

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

這個主題包含下列章節。

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

OpenType 字型格式

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

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

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

  • 加強支援國際字元集。

  • 加強保護字型資料。

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

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

注意事項注意事項

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

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

進階印刷樣式擴充功能

進階印刷樣式表格 (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 支援多種大寫字母的樣式格式,包括小型的大寫字母、Petite 大寫字母、加標題及大寫字母間距。 這些樣式格式可讓您控制大寫字母的外觀。

下列文字顯示 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>

標題大寫字

標題大寫字的線條較細、比例較輕,其外觀設計也比一般大寫字更為高雅。 加標題大寫字母通常會使用與標題一樣的較大字型大小。 下列文字顯示 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>

內容花飾字

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

使用 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>

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

            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())
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

請參閱

參考

Typography

概念

WPF 中的印刷樣式

範例 OpenType 字型套件

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

其他資源

OpenType 規格