次の方法で共有


グリフとグリフの実行

グリフとグリフの実行は、グリフ レンダリング レイヤーである DirectWrite API の機能の最下位レイヤーで使用できます。

グリフ

グリフは、特定のフォント内の文字の物理的な表現です。 文字には多くのグリフが含まれる場合があり、システム上の各フォントでは、その文字に対して異なるグリフが定義されている可能性があります。

2 つ以上のグリフを 1 つのグリフに結合することもできます。このプロセスはグリフコンポジションと呼ばれます。 これは、1 つのグリフが複数のグリフ (グリフ分解と呼ばれます) に分割される逆方向でも実行できます。

代替グリフ

次のスクリーン ショットに示すように、フォントは、Pericles OpenType フォントのスタイル代替グリフなど、文字の代替グリフを提供する場合があります。 'A'、'E'、および 'O' 文字は、スタイル代替グリフでレンダリングされます。

screen shot of

代替グリフのもう 1 つの例として、斜体グリフがあります。 次のスクリーン ショットは、Pescadero フォントの標準グリフと斜体グリフを示しています。

screen shot of the letters

Swash と他の文字体裁機能 (より複雑な代替グリフを含む) は、 OpenType を通じて使用できます。 OpenType 文字体裁機能は、 IDWriteTextLayout::SetTypography を 使用し、目的の機能に関連付けられている DWRITE_FONT_FEATURE_TAG 列挙定数を渡すことによって、テキスト範囲に適用できます。

グリフの実行

グリフ実行は、フォント面とサイズが同じグリフの連続したセットと、同じクライアント描画効果 (存在する場合) を表します。 下線と取り消し線は、適用されるテキスト範囲のグリフ実行の一部ではなく、後で描画されます。 画像などのインライン オブジェクトも、フォントの一部でなく、個別に描画されます。

IDWriteFontFace インターフェイス

DirectWriteは、Pesentation Foundation (WPF) Windowsフォント分類に同じシステムを使用するため、各フォント ファミリごとに複数の物理フォントを使用できます。 DirectWriteの IDWriteFontFace インターフェイスなどのフォント面は、特定の太さ、傾斜、およびストレッチを持つ物理フォントを表します。 フォントの顔の種類、適切なファイル参照、顔識別データ、メトリック、名前、グリフアウトラインなどのさまざまなフォント データが含まれています。

IDWriteFontFace は、フォント名から直接作成することも、フォント コレクションから取得することもできます。

グリフのメトリック

個々のグリフには、メトリックが関連付けられています。 IDWriteFontFace::GetDesignGlyphMetrics メソッドを使用して、実行されるグリフ内のすべてのグリフのメトリックを取得できます。 これにより、高度な幅、左右のベアリング、上下の側のベアリング、高さと垂直ベースラインの原点を持つ DWRITE_GLYPH_METRICS 構造が返されます。

次の図は、2 つの異なるグリフ文字のさまざまなメトリックを示しています。

diagram of the metrics of two different glyphs

グリフランの描画

カスタム テキスト レンダラーを実装する場合、グリフのレンダリングは IDWriteTextRenderer::D rawGlyphRun ( IDWriteTextRenderer から派生したクラスの一部として実装するコールバック メソッド) によって処理されます。 DrawGlyphRun に渡されるDWRITE_GLYPH_RUN構造体には、グリフ実行全体のフォント面を表す fontFace という名前の IDWriteFontFace オブジェクトが含まれています。

IDWriteFontFace オブジェクトには、Direct2D でレンダリングするときに ID2D1SimplifiedGeometrySink などの指定したジオメトリ シンク コールバックを使用してグリフ アウトラインを計算する GetGlyphRunOutline メソッドも用意されています。

詳細については、「 カスタム テキスト レンダラーを実装する方法 」トピックを参照してください。