次の方法で共有


テキストの描画

テキスト出力関数は、ドライバーが EngAssociateSurface 関数の呼び出しをフックした場合にのみ、 デバイスで管理されるサーフェイス (デバイス ビットマップまたはサーフェス)、または GDI で管理されたサーフェイスに対してのみ呼び出されます。 テキストのグラフィック出力プリミティブは、次の関数です。

GDI は DrvTextOut を呼び出して、テキスト出力の指定した位置にあるグリフのセットのピクセルをレンダリングします。 DrvTextOut 機能の多くは、 DrvEnablePDEV 関数によって返される DEVINFO 構造体の GCAPS ビットで定義されています。

DrvTextOut の入力パラメーターは、 前景不透明の 2 つのピクセル セットを定義します。 ドライバーは、次の結果を提供するサーフェスをレンダリングします。

  1. 不透明なピクセルは、最初に不透明なブラシでレンダリングされます。

  2. その後、前景ピクセルは前景ブラシでレンダリングされます。

これらのレンダリング操作はそれぞれ、 クリップ領域で実行されます。 クリップ領域の外側のピクセルは影響を受けません。

ドライバーは、不透明なピクセルが計算され、不透明なブラシで最初にサーフェスに描画されるように、サーフェスをレンダリングする必要があります。 その後、前景ピクセルが計算され、前景ブラシでレンダリングされます。 これらの各操作はクリッピングによって制限されます。

前景ピクセルと不透明ピクセルは、カラーがサーフェス上にブラシ処理されるマスクを構成します。 フォントのグリフ自体に色はありません。 ピクセルの前景セットは、グリフのピクセルと、取り消し線または下線をシミュレートするために使用される特定の追加の四角形のピクセルの和集合として定義されます。 不透明なピクセルは、不透明な四角形によって定義されます。

DrvTextOut は、ポインター pfo を使用して指定されたフォントを選択し、現在の FONTOBJ 構造体を照会します。 このプロセスには、ソフト フォントまたはフォント置換のダウンロード、またはデバイスに必要なその他のフォントの最適化を含めることができます。

ドライバーにスケーラブルなフォントがある場合は、現在の FONTOBJ 構造体の FONTOBJ_pxoGetXform 関数を呼び出して、関連付けられているフォントの概念からデバイスへの変換を返す必要があります。 これは、ドライバーが指定したフォントに必要です。 概念空間は、デバイス フォントのデザイン空間です。 たとえば、PostScript フォントは 1000 行 1000 列の単位文字セルで定義されます。 IFIMETRICS 構造体で返されるメトリックのほとんどは、概念空間に変換されるため、概念からデバイスへの変換が必要です。

グラフィックス エンジンは、関数 DrvGetGlyphMode を呼び出してドライバーに対してクエリを実行し、そのフォント情報を内部的にキャッシュする方法を確認します。 個々のグリフをビットマップ、アウトライン、またはどちらもキャッシュできません (デバイス フォントに適した選択)。