OpenType フォントの機能
ここでは、Windows Presentation Foundation (WPF) の OpenType フォント技術のいくつかの重要な機能の概要について説明します。
このトピックは、次のセクションで構成されています。
- OpenType フォント形式
- バリアント
- 大文字
- 合字
- スワッシュ
- 代替文字
- 数字スタイル
- Typography クラス
- 関連トピック
OpenType フォント形式
OpenType フォント形式は、TrueType® フォント形式の拡張で、PostScript フォント データのサポートが追加されています。 OpenType フォント形式は、Microsoft と Adobe Corporation が共同開発しました。 フォントに TrueType アウトラインまたは CFF (PostScript) アウトラインが含まれていても、OpenType フォントと OpenType フォントをサポートするオペレーティング システム サービスを使用することで、フォントを簡単にインストールして使用できます。
OpenType フォント形式は、開発時の次のような課題に対応しています。
より広範なマルチプラットフォーム サポート。
各国対応文字セットのより適切なサポート。
フォント データのより良い保護。
より小さいファイル サイズによるいっそう効率的なフォント配布。
高度なタイポグラフィ制御のより広範なサポート。
メモ |
---|
Windows SDK には、Windows Presentation Foundation (WPF) アプリケーションで使用できる一連の OpenType フォントがサンプルとして用意されています。これらのフォントは、このトピックで説明する機能のほとんどを提供します。詳細については、「OpenType フォント パックのサンプル」を参照してください。 |
OpenType フォント形式の詳細については、「OpenType specification (OpenType の仕様)」を参照してください。
高度なタイポグラフィ拡張機能
Advanced Typographic テーブル (OpenType Layout テーブル) は、TrueType または CFF のアウトラインを含むフォントの機能を拡張します。 OpenType Layout フォントには、高品質の各国対応タイポグラフィをサポートするようにフォントの機能を拡張する追加情報が含まれます。 ほとんどの OpenType フォントは、使用できるすべての OpenType 機能の一部だけを公開します。 OpenType フォントには、次の機能があります。
文字と、合字、位置形式、代替、その他のフォントの置き換えをサポートするグリフの間の充実したマッピング。
2 次元の配置とグリフ結合のサポート。
スクリプトと言語に関する明示的な情報のフォントへの格納。テキスト処理アプリケーションはそれに従って動作を調整できます。
OpenType Layout テーブルの詳細については、OpenType 仕様の「フォント ファイル テーブル」のセクションを参照してください。
ここからは、Typography オブジェクトのプロパティによって公開される、興味を引く外観を持った OpenType の広範で柔軟な機能の一部について説明します。 このオブジェクトの詳細については、「Typography クラス」を参照してください。
バリアント
バリアントは、上付き文字や下付き文字など、異なるタイポグラフィ スタイルをレンダリングするために使用します。
上付き文字と下付き文字
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 フォントの大文字を定義する方法を次のマークアップ例に示します。 "小型英大文字" 書式を使用する場合、先頭の大文字はすべて無視されます。
<Paragraph FontFamily="Pescadero" FontSize="48">
<Run>CAPITALS</Run>
<Run Typography.Capitals="SmallCaps">Capitals</Run>
<Run Typography.Capitals="AllSmallCaps">Capitals</Run>
</Paragraph>
タイトル用の大文字
タイトル用大文字は、文字の太さが細めでつりあいが取れ、通常の大文字よりも上品な外観になるようにデザインされています。 タイトル用大文字は、一般に比較的大きなフォント サイズで見出しとして使用されます。 次のテキストは、Pescadero フォントの通常の間隔とタイトル用大文字を示したものです。 2 行目のテキストの縦線の幅が 1 行目よりも細いことに注意してください。
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 つのグリフを形成し、より読みやすいテキストまたは人目を引くテキストを作成することです。 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 標準合字を使用するテキスト
ただし、標準合字機能を無効にすることにより、"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 フォントのその他のスタイル上の代替グリフがいくつか表示されています。
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>
歴史的形式
歴史的形式は、過去に一般的であった表記規則です。 次のテキストは、Palatino Linotype フォントで歴史的形式のグリフを使用して、"Boston, Massachusetts" という語句を示したものです。
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 フォントは、古いスタイルの数字形式をサポートします。 この形式は、今では標準的ではなくなったスタイルで数字を表示する場合に役立ちます。 次のテキストでは、Palatino Linotype フォントの標準および古いスタイルの数字形式で 18 世紀の日付が表示されています。
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" よりも狭くなります。 表形式数字は、縦の位置が揃うように等幅の数字として扱われます。このため、財務関連の情報が読みやすくなります。
次のテキストの 1 列目には、Miramonte フォントで 2 つのプロポーショナル数字が表示されています。 数字の "5" と "1" の幅の違いに注意してください。 2 列目には、表形式数字機能を使用して字幅が調整された同じ 2 つの数値が表示されています。
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" の違いを強調するスラッシュ ゼロの数字形式をサポートします。 スラッシュ ゼロは、財務およびビジネス情報の ID に使用されることがよくあります。
次のテキストには、Miramonte フォントを使用した発注 ID のサンプルが示されています。 1 行目では標準の数字が使用されています。 2 行目ではスラッシュ ゼロが使用されているため、大文字の "O" との違いがはっきりしています。
OpenType スラッシュ 0 数字を使用するテキスト
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" のスタイルを適用した文字が表示されています。 ここでは、3 つの単語すべてに同じフォント サイズを使用しています。
OpenType 大文字を使用するテキスト
Typography オブジェクトのプロパティを使用して、Pescadero フォントの大文字を定義する方法を次のマークアップ例に示します。 "小型英大文字" 書式を使用する場合、先頭の大文字はすべて無視されます。
<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 オブジェクトのプロパティ、値、および既定の設定を次の表に示します。
プロパティ |
値 |
既定値 |
---|---|---|
数値 - バイト |
0 |
|
AllPetiteCaps | AllSmallCaps | Normal | PetiteCaps | SmallCaps | Titling | Unicase |
||
false |
||
false |
||
true |
||
true |
||
数値 - バイト |
0 |
|
false |
||
false |
||
HojoKanji | Jis04 | Jis78 | Jis83 | Jis90 | NlcKanji | Normal | Simplified | Traditional | TraditionalNames |
||
false |
||
false |
||
true |
||
false |
||
false |
||
true |
||
数値 - バイト |
0 |
|
数値 - バイト |
0 |
|
false |
||
false |
||
false |
||
false |
||
false |
||
false |
||
false |
||
false |
||
false |
||
false |
||
false |
||
false |
||
false |
||
false |
||
false |
||
false |
||
false |
||
false |
||
false |
||
false |
||
Inferior | Normal | Ordinal | Ruby | Subscript | Superscript |