次の方法で共有


グリフとグリフの実行

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

グリフ

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

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

代替グリフ

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

代替グリフを使用した

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

標準グリフとスワッシュ グリフの文字 "a" から "n" のスクリーン ショットを

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

グリフの実行

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

IDWriteFontFace インターフェイス

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

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

グリフ メトリック

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

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

2 つの異なるグリフのメトリックの図

グリフランの描画

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

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

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