OpenType フォントの機能

このトピックでは、Windows Presentation Foundation (WPF) における OpenType フォント技術の主要機能の概要を説明します。

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 フォントでは次のような機能が提供されています。

  • 合字、位置フォーム、代替、およびその他のフォント置換をサポートする、文字とグリフの間の充実したマッピング。

  • 2 次元配置とグリフ結合のサポート。

  • フォントには明示的なスクリプトと言語情報が含まれるため、テキスト処理アプリケーションはそれに従って動作を調整可能。

OpenType レイアウト テーブルについては、OpenType 仕様の "フォント ファイル テーブル" に関するセクションで詳しく説明されています。

この概要のこれ以降では、Typography オブジェクトのプロパティによって公開される、視覚的に興味深い OpenType の機能の幅広さと柔軟性について説明します。 このオブジェクトの詳細については、「タイポグラフィ クラス」を参照してください。

バリアント

バリアントを使用して、上付き文字と下付きなどのさまざまなタイポグラフィ スタイルを表示します。

上付き/下付きの文字

Variants プロパティを使用すると、OpenType フォントに上付き文字と下付き文字の値を設定することができます。

次のテキストは、Palatino Linotype フォントの上付き文字を示したものです。

Text using OpenType superscripts

次に示すマークアップの例では、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

次に示すマークアップの例では、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

次のマークアップの例では、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" のスタイルをあてた文字を示したものです。 この例では、3 つの単語すべてに同じフォント サイズが使用されています。

Text using OpenType capitals

次のマークアップの例では、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 フォントの標準の大文字とタイトル用大文字を示したものです。 2 行目のテキストの縦線の幅が狭いことに注意してください。

Text using OpenType titling capitals

次のマークアップの例では、Typography オブジェクトのプロパティを使用して Pescadero フォントのタイトル用大文字を定義する方法を示します。

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

大文字スペーシング

大文字スペーシングは、テキストをすべて大文字にする場合に間隔を広くする機能です。 大文字は、通常、小文字と調和するようにデザインされています。 大文字と小文字の間では適切に見えるスペーシングでも、大文字だけが使用されている場合は、狭すぎるように見えることがあります。 次のテキストは、Pescadero フォントの標準のスペーシングと大文字スペーシングを示したものです。

Text using OpenType capital spacing

次のマークアップの例では、Typography オブジェクトのプロパティを使用して Pescadero フォントの大文字スペーシングを定義する方法を示します。

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

合字

合字とは、2 つ以上のグリフを、より読みやすい、あるいはより魅力的なテキストにするために、1 つのグリフに形成したものです。 OpenType フォントでは、4 種類の合字がサポートされています。

  • 標準合字。 読みやすさを高めるように設計されています。 標準合字には、"fi"、"fl" および "ff" があります。

  • コンテキスト合字。 合字を構成する文字の間の結合を向上させることによって、読みやすさを高めるよう設計されています。

  • 随意合字。 装飾を加える設計で、特に読みやすくなるようには設計されていません。

  • 歴史的合字。 歴史的な記述に相応しい設計で、特に読みやすくなるようには設計されていません。

次のテキストは、Pericles フォントの標準合字グリフを示したものです。

Text using OpenType standard ligatures

次のマークアップの例では、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 フォントの随意合字グリフを示したものです。

Text using OpenType discretionary ligatures

次のマークアップの例では、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

ただし、標準合字機能を無効にして、"ff" などの標準合字が、組み合わせ文字グリフとしてではなく、2 つの別々のグリフとして表示されるようにできます。

Text using disabled OpenType standard ligatures

次のマークアップの例では、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 フォントの標準および飾り付きグリフを示したものです。

Text using OpenType standard and swash glyphs

飾り付きは、季節のご挨拶などの短いフレーズで装飾的な要素としてよく使用されます。 次のテキストでは、飾り付きを使用して、イベントの名前の大文字を強調しています。

Text using OpenType swashes

次のマークアップの例では、Typography オブジェクトのプロパティを使用してフォントの飾り付きを定義する方法を示します。

<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

次のマークアップの例では、Typography オブジェクトのプロパティを使用して Pescadero フォントのコンテキスト飾り付きを定義する方法を示します。

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

代替

代替文字は、標準的なグリフの代わりに使用できるグリフです。 次の例で使用される Pericles フォントなどの OpenType フォントには、テキストの異なる外観を作るのに使用できる代替グリフを含めることができます。 次のテキストは、Pericles フォントの標準グリフを示したものです。

Text using OpenType standard glyphs

Pericles OpenType フォントには、標準グリフ セットにスタイル代替グリフを提供する追加グリフが含まれています。 次のテキストでは、スタイル代替グリフが表示されています。

Text using OpenType stylistic alternate glyphs

次のマークアップの例では、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

次のマークアップの例では、これらの他のスタイル代替グリフを定義する方法を示します。

<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

次のマークアップの例では、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

次のマークアップの例では、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

次のマークアップの例では、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

次のテキストは、Palatino Linotype フォントの標準の数字と、旧式スタイルの数字を示したものです。

Text using OpenType old style numeral sets

次のマークアップの例では、Typography オブジェクトのプロパティを使用して Palatino Linotype フォントの旧式スタイルの数値を定義する方法を示します。

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

プロポーショナルと表形式の数字

OpenType フォントでは、プロポーショナルと表形式の数字の機能がサポートされており、数字を使用するときの幅の調整が制御されます。 プロポーショナルの数字では、それぞれの数字は異なる幅を持つものとして扱われます。たとえば "1" は "5" より狭い幅です。 表形式の数字は、横が揃うように等幅の数字として処理されるため、財務に関する情報が読みやすくなります。

1 列目のテキストは、Miramonte フォントを使用して表示された 2 つのプロポーショナルの数字です。 数字 "5" と "1" の幅の違いに注意してください。 2 列目には、同じ 2 つの数値が表形式の数字機能を使用して横幅を調整されて表示されています。

Text using OpenType proportional & tabular figures

次のマークアップの例では、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" の違いを強調するためのスラッシュ付きゼロの数字形式がサポートされています。 スラッシュ付きゼロは、財務およびビジネス情報における ID によく使用されます。

次のテキストは、Miramonte フォントを使用してサンプルの注文識別子を表示したものです。 1 行目では、標準の数字が使用されています。 2 行目では、大文字の "O" と区別しやすいように、スラッシュ付きゼロの数字が使用されています。

Text using OpenType slashed zero numerals

次のマークアップの例では、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" のスタイルをあてた文字を示したものです。 この例では、3 つの単語すべてに同じフォント サイズが使用されています。

Text using OpenType capitals

次のマークアップの例では、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

関連項目