次の方法で共有


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 Font Pack」を参照してください。

OpenType フォント形式の詳細については、 OpenType の仕様を参照してください。

高度な文字体裁拡張機能

高度な文字体裁テーブル (OpenType レイアウト テーブル) は、TrueType または CFF アウトラインを使用してフォントの機能を拡張します。 OpenType レイアウト フォントには、高品質の国際タイポグラフィをサポートするためにフォントの機能を拡張する追加情報が含まれています。 ほとんどの OpenType フォントでは、使用可能な OpenType 機能の合計のサブセットのみが公開されます。 OpenType フォントには、次の機能があります。

  • 合字、位置指定フォーム、代替、およびその他のフォント置換をサポートする文字とグリフ間の豊富なマッピング。

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

  • フォントに含まれる明示的なスクリプトと言語情報により、テキスト処理アプリケーションはそれに応じて動作を調整できます。

OpenType レイアウト テーブルの詳細については、OpenType 仕様の 「フォント ファイル テーブル」 セクションを参照してください。

この概要の残りの部分では、 Typography オブジェクトのプロパティによって公開される、視覚的に興味深い OpenType 機能の幅と柔軟性について説明します。 このオブジェクトの詳細については、「 文字体裁クラス」を参照してください。

バリエーション

バリアントは、上付き文字や下付き文字など、さまざまな文字体裁スタイルをレンダリングするために使用されます。

上付き文字と下付き文字

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

次のテキストには、Palatino Linotype フォントの上付き文字が表示されます。

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 の下付き文字を使用するテキスト

次のマークアップの例は、 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 上付き文字と下付き文字を使用するテキスト

次のマークアップの例は、 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 つの単語すべてに同じフォント サイズが使用されます。

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 フォントの通常の大文字とタイトルの大文字を表示します。 2 行目のテキストの狭いステム幅に注目してください。

OpenType のタイトル用大文字を使用したテキスト

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

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

大文字の文字間隔

大文字の間隔は、テキスト内のすべての大文字を使用するときに、より多くの間隔を提供できる機能です。 大文字は通常、小文字とブレンドするように設計されています。 大文字と小文字の間に魅力的に見える間隔は、すべての大文字を使用すると、狭すぎるように見える場合があります。 次のテキストは、Pescadero フォントの通常のスペースと大文字の間隔を表示します。

OpenType の大文字間隔を使用したテキスト

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

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

合 字

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

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

  • コンテキストリガチャ。 合字を構成する文字間の結合動作を改善することで、読みやすさを向上するように設計されています。

  • 随意合字。 装飾用に設計されており、読みやすくするために特別に設計されていません。

  • 歴史的合字。 履歴として設計されており、読みやすくするために特別に設計されていません。

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

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 フォントの随意合字グリフを表示します。

OpenType 随意合字を使用したテキスト

次のマークアップ例は、 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" は結合文字グリフとして表示されます。 各標準合字の文字のペアが互いに触れ合うことに注意してください。

テキストを使用したOpenType 標準合字と Palatino Linotype

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

無効化された 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 のスワッシュを使用したテキスト

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

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

文脈的スワッシュ

斜めグリフの特定の組み合わせにより、隣接する文字に重複する降順など、魅力的でない外観が発生する可能性があります。 コンテクストに応じたスワッシュを使うと、見た目を良くする代替スワッシュグリフを使用できます。 次のテキストは、コンテキストのスワッシュ体が適用される前と後の同じ単語を示しています。

OpenType コンテキストのスワッシュを使用したテキスト

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

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

代替

代替は、標準グリフに置き換えることができるグリフです。 次の例で使用する Pericles フォントなどの OpenType フォントには、テキストのさまざまな外観を作成するために使用できる代替グリフを含めることができます。 次のテキストは、Pericles フォントの標準グリフを表示します。

OpenType 標準グリフを使用するテキスト

Pericles 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 フォントの他のいくつかのスタイル代替グリフが表示されます。

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>

ランダムコンテクストアルタネート

ランダムコンテキスト代替は、1 文字に複数の代替グリフを提供します。 スクリプトタイプのフォントを使用して実装すると、この機能はランダムに選択されたグリフのセットを使用して手書きをシミュレートし、外観が若干異なります。 次のテキストでは、Lindsey フォントにランダムなコンテキスト代替を使用します。 文字 "a" は外観が若干異なっています

OpenType ランダム コンテキスト代替を使用するテキスト

次のマークアップの例は、 Typography オブジェクトのプロパティを使用して、Lindsey フォントのランダムなコンテキスト代替を定義する方法を示しています。

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

歴史的フォーム

歴史的な形式は、過去に一般的だった文字体裁規則です。 次のテキストには、パラティーノ・リノタイプフォントの歴史的な字形形式を使用して、"Boston, マサチューセッツ" という語句が表示されます。

OpenType 履歴フォームを使用した

次のマークアップ例は、 Typography オブジェクトのプロパティを使用して、Palatino Linotype フォントの履歴形式を定義する方法を示しています。

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

数値スタイル

OpenType フォントは、テキスト内の数値と共に使用できる多数の機能をサポートしています。

分数

OpenType フォントでは、分数のスタイルとしてスラッシュや積み上げを含むものがサポートされます。

次のテキストには、Palatino Linotype フォントの分数スタイルが表示されます。

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 フォントでは、古いスタイルの数字形式がサポートされています。 この形式は、標準ではなくなったスタイルで数字を表示する場合に便利です。 次のテキストは、18 世紀の日付を、Palatino Linotype フォントの標準および古いスタイルの数字形式で表示します。

OpenType の古いスタイルの数字を使用したテキスト

次のテキストには、Palatino Linotype フォントの標準の数字と、その後に古いスタイルの数字が表示されます。

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 フォントを使用して最初の列に 2 つの比例図を表示します。 数字 "5" と "1" の幅の違いに注意してください。 2 番目の列には、同じ 2 つの数値と、表形式の図機能を使用して調整された幅が表示されます。

OpenType プロポーショナルおよび表形式の数値を使用したテキスト

次のマークアップ例は、Miramonte フォントのプロポーショナルおよび表形式の図を、 Typography オブジェクトのプロパティを使用して定義する方法を示しています。

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

スラッシュ 0

OpenType フォントでは、文字 "O" と数字 "0" の違いを強調するために、スラッシュ付きのゼロ数字形式がサポートされています。 スラッシュ付きゼロ数字は、多くの場合、財務およびビジネス情報の識別子に使用されます。

次のテキストには、Miramonte フォントを使用したサンプル注文識別子が表示されます。 最初の行には標準の数字が使用されます。 2 行目では、大文字の "O" 文字とのコントラストを向上させるために、スラッシュ付きのゼロ数字を使用しました。

OpenType のスラッシュ付きゼロ数字を使用したテキスト

次のマークアップの例は、miramonte フォントに対して、 Typography オブジェクトのプロパティを使用して、スラッシュ付きゼロ数字を定義する方法を示しています。

<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 つの単語すべてに同じフォント サイズが使用されます。

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

こちらも参照ください