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 フォントの上付き文字を示したものです。
次に示すマークアップの例では、Typography オブジェクトのプロパティを使用して Palatino Linotype フォントの上付き文字を定義する方法を示しています。
<Paragraph FontFamily="Palatino Linotype">
2<Run Typography.Variants="Superscript">3</Run>
14<Run Typography.Variants="Superscript">th</Run>
</Paragraph>
次のテキストは、Palatino Linotype フォントの下付き文字を示したものです。
次に示すマークアップの例では、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 フォントの上付き文字と下付き文字を示したものです。 大文字には影響がないことに注目してください。
次のマークアップの例では、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 つの単語すべてに同じフォント サイズが使用されています。
次のマークアップの例では、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 行目のテキストの縦線の幅が狭いことに注意してください。
次のマークアップの例では、Typography オブジェクトのプロパティを使用して Pescadero フォントのタイトル用大文字を定義する方法を示します。
<Paragraph FontFamily="Pescadero">
<Run Typography.Capitals="Titling">chapter one</Run>
</Paragraph>
大文字スペーシング
大文字スペーシングは、テキストをすべて大文字にする場合に間隔を広くする機能です。 大文字は、通常、小文字と調和するようにデザインされています。 大文字と小文字の間では適切に見えるスペーシングでも、大文字だけが使用されている場合は、狭すぎるように見えることがあります。 次のテキストは、Pescadero フォントの標準のスペーシングと大文字スペーシングを示したものです。
次のマークアップの例では、Typography オブジェクトのプロパティを使用して Pescadero フォントの大文字スペーシングを定義する方法を示します。
<Paragraph FontFamily="Pescadero">
<Run Typography.CapitalSpacing="True">CHAPTER ONE</Run>
</Paragraph>
合字
合字とは、2 つ以上のグリフを、より読みやすい、あるいはより魅力的なテキストにするために、1 つのグリフに形成したものです。 OpenType フォントでは、4 種類の合字がサポートされています。
標準合字。 読みやすさを高めるように設計されています。 標準合字には、"fi"、"fl" および "ff" があります。
コンテキスト合字。 合字を構成する文字の間の結合を向上させることによって、読みやすさを高めるよう設計されています。
随意合字。 装飾を加える設計で、特に読みやすくなるようには設計されていません。
歴史的合字。 歴史的な記述に相応しい設計で、特に読みやすくなるようには設計されていません。
次のテキストは、Pericles フォントの標準合字グリフを示したものです。
次のマークアップの例では、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 フォントの随意合字グリフを示したものです。
次のマークアップの例では、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" は組み合わせ文字グリフとして表示されます。 各標準合字では文字のペアが相互に接していることに注意してください。
ただし、標準合字機能を無効にして、"ff" などの標準合字が、組み合わせ文字グリフとしてではなく、2 つの別々のグリフとして表示されるようにできます。
次のマークアップの例では、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 フォントの標準および飾り付きグリフを示したものです。
飾り付きは、季節のご挨拶などの短いフレーズで装飾的な要素としてよく使用されます。 次のテキストでは、飾り付きを使用して、イベントの名前の大文字を強調しています。
次のマークアップの例では、Typography オブジェクトのプロパティを使用してフォントの飾り付きを定義する方法を示します。
<Paragraph FontFamily="Pescadero" TextBlock.TextAlignment="Center">
Wishing you a<LineBreak/>
<Run Typography.StandardSwashes="1" FontSize="36">Happy New Year!</Run>
</Paragraph>
コンテキスト飾り付き
飾り付きグリフの特定の組み合わせでは、隣りあう文字の下に延びる部分が重なり合うなど、美しくない外観になる可能性があります。 コンテキスト飾り付きを使用すると、より良い外観を生成する代替の飾り付きグリフを使用できます。 次のテキストでは、コンテキスト飾り付きが適用される前後の同じ単語を示します。
次のマークアップの例では、Typography オブジェクトのプロパティを使用して Pescadero フォントのコンテキスト飾り付きを定義する方法を示します。
<Paragraph FontFamily="Pescadero" Typography.StandardSwashes="1">
Lyon <Run Typography.ContextualSwashes="1">L</Run>yon
</Paragraph>
代替
代替文字は、標準的なグリフの代わりに使用できるグリフです。 次の例で使用される Pericles フォントなどの OpenType フォントには、テキストの異なる外観を作るのに使用できる代替グリフを含めることができます。 次のテキストは、Pericles フォントの標準グリフを示したものです。
Pericles 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 フォントの他のスタイル代替グリフを示したものです。
次のマークアップの例では、これらの他のスタイル代替グリフを定義する方法を示します。
<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" の外観が少し異なることに注意してください
次のマークアップの例では、Typography オブジェクトのプロパティを使用して Lindsey フォントのランダムなコンテキスト代替を定義する方法を示します。
<TextBlock FontFamily="Lindsey">
<Run Typography.ContextualAlternates="True">
a banana in a cabana
</Run>
</TextBlock>
歴史的形式
歴史的形式は、過去に一般的であった表示形式です。 次のテキストでは、Palatino Linotype フォントのグリフの歴史的形式を使用して、"Boston, Massachusetts" という語句が表示されています。
次のマークアップの例では、Typography オブジェクトのプロパティを使用して Palatino Linotype フォントの歴史的形式を定義する方法を示します。
<Paragraph FontFamily="Palatino Linotype">
<Run Typography.HistoricalForms="True">Boston, Massachusetts</Run>
</Paragraph>
数値スタイル
OpenType フォントでは、テキスト内の数値に使用できる数多くの機能をサポートします。
小数
OpenType フォントでは、スラッシュや横棒を使用した小数スタイルがサポートされています。
次のテキストは、Palatino Linotype フォントの小数スタイルを示したものです。
次のマークアップの例では、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 世紀の日付を表示したものです。
次のテキストは、Palatino Linotype フォントの標準の数字と、旧式スタイルの数字を示したものです。
次のマークアップの例では、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 つの数値が表形式の数字機能を使用して横幅を調整されて表示されています。
次のマークアップの例では、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" と区別しやすいように、スラッシュ付きゼロの数字が使用されています。
次のマークアップの例では、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 つの単語すべてに同じフォント サイズが使用されています。
次のマークアップの例では、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 オブジェクトのプロパティ、値、既定値の一覧です。
関連項目
.NET Desktop feedback