FONTOBJ 構造体 (winddi.h)

FONTOBJ 構造体は、フォントの特定のインスタンスに関する情報へのアクセス権をドライバーに付与するために使用されます。

構文

typedef struct _FONTOBJ {
  ULONG     iUniq;
  ULONG     iFace;
  ULONG     cxMax;
  FLONG     flFontType;
  ULONG_PTR iTTUniq;
  ULONG_PTR iFile;
  SIZE      sizLogResPpi;
  ULONG     ulStyleSize;
  PVOID     pvConsumer;
  PVOID     pvProducer;
} FONTOBJ;

メンバー

iUniq

フォントの明確な認識を指定します。 この値は、ドライバーがキャッシュした可能性のある GDI フォントを識別したり、ドライバーが独自のフォントを認識したりするために使用できます。 GDI フォントのこのメンバーが 0 の場合は、フォントをキャッシュしないでください。

iFace

DrvQueryFont の呼び出しによって登録されたデバイス フォントのデバイス インデックスを指定します。 フォントが GDI フォントの場合、このメンバーは GDI に対してのみ意味を持ち、ドライバーはそれを無視する必要があります。

cxMax

指定したフォントの最大グリフの幅をピクセル単位で指定します。

flFontType

フォントの種類を指定する値です。 このメンバーは、次の表に示すフラグの組み合わせにすることができます。 (ただし、FO_GRAY16とFO_NOGRAY16は相互に排他的であることに注意してください)。

フラグ 説明
FO_CFF Postscript OpenType フォント。
FO_DBCS_FONT フォントは DBCS コード ページをサポートします。
FO_EM_HEIGHT TrueType ドライバーの内部フラグ。
FO_GRAY16 フォント ビットマップは、ピクセルごとの 4 ビット ブレンド (アルファ) 値です。
FO_MULTIPLEMASTER 複数のマスター (Type1 または OpenType) フォント。
FO_NOGRAY16 フォント ドライバーが特定のフォントの実現をグレースケールできない (またはスケールしない) ことを示します。
FO_POSTSCRIPT Postscript (Type1 または OpenType) フォント。
FO_SIM_BOLD ドライバーシミュレートされた太字フォント。
FO_SIM_ITALIC ドライバーシミュレートされた斜体フォント。
FO_TYPE_DEVICE デバイス固有のフォント。
FO_TYPE_OPENTYPE OpenType フォント。
FO_TYPE_RASTER ビットマップ フォント。
FO_TYPE_TRUETYPE TrueType フォント。
FO_VERT_FACE 縦書きフォント。
 

FO_RASTER フラグが設定されている場合、指定した STROBJ 構造体に書き込まれるグリフはビットマップであり、それ以外の場合は PATHOBJ 構造体へのポインターです。 グリフ イメージが PATHOBJ 構造体の形式で返される場合、ドライバーは、関連付けられている IFIMETRICS 構造体の flInfo メンバーのFM_INFO_TECH_STROKE フラグを検査する必要があります。 そのフラグが設定されている場合は、パスをストロークする必要があります。それ以外の場合は、交互モード規則を使用してパスを入力する必要があります。

FO_GRAY16 フラグが設定されている場合、フォント ビットマップはピクセルごとの 4 ビット ブレンド (アルファ) 値になります。 0 の値は、結果のピクセルの色が背景と同じである必要があることを意味します。 アルファ値が k の場合、次の表では、線形アルファ ブレンドまたはガンマ補正アルファ ブレンドを使用して、結果として得られるピクセルの属性について説明します。 どちらの方法でも、前景色と背景色はそれぞれ cf と cb です

ピクセル属性 説明
ブレンドされた色
(線形アルファ ブレンド)
線形アルファ ブレンドでは、前景色と背景色の線形の組み合わせであるブレンドされた色が生成されます。

c = b * cf + (1 - b) * cb

ブレンド分画bは、以下のようにして得られる。

b = k / 15、k = 0、1、2、...、15 の場合

注: 前景色と背景色には、3 つのカラー チャネル (R、G、B) がすべて含まれます。

ブレンドされた色
(ガンマ補正アルファ ブレンド)
ガンマ補正アルファ ブレンドでは、アルファ値に依存する変数を固定累乗に引き上げることで、ブレンドされた色が生成されます。

2 つの数式が用意されています。1 つは、前景色が背景色よりも数値的に大きい場合に使用する必要があります。逆の場合は、もう一方を使用する必要があります。 (前景色と背景色が等しい場合、両方の数式が c = cb に簡略化されます)。

cf> cb の場合、
c = cb + pow(b[k], (1 / gamma)) * (cf - cb)
cf< cb の場合、
c = cb + (1 - pow(1 - b[k], 1 / gamma)) * (cf - cb)

これらの式において、gamma=2.33、およびb[k]は、k番目 のブレンド分画であり、以下のようにして得られる:

b[k] = 0、k = 0、および
b[k] = (k + 1) / 16, for k = 1, 2, ..., 15

注: 線形アルファ ブレンドとは異なり、これらの数式は 3 つのカラー チャネル (R、G、B) のそれぞれに 適用する必要があります。

 

GDI は、フォントを 16 個の値のいずれかにグレースケールするように要求したときに 、DrvQueryFontData 関数へのエントリに対してFO_GRAY16 フラグを設定します。 フォント ドライバーで特定のフォントの実現をグレースケールできない場合、フォント プロバイダーは FO_GRAY16 フラグをクリアし、FO_NOGRAY16 フラグを設定して、グレースケール要求が満たされないことを GDI に通知します。

iTTUniq

関連付けられている TrueType ファイルを指定します。 TrueType フォントフェイスの 2 つの個別のポイント サイズの実現には、同じ iTTUniq 値を共有する FONTOBJ 構造体がありますが、 iUniq 値は異なります。 0 以外の iTTUniq メンバーを持つことは、TrueType フォントの種類のみです。 詳細については、「 flFontType」を参照してください。

iFile

既に読み込まれているデバイス フォントのドライバー定義値へのポインター。 フォントが GDI フォントの場合、このメンバーは内部的にフォントを識別するために使用され、無視する必要があります。

sizLogResPpi

このフォントを実現するデバイスの解像度を指定します。

ulStyleSize

フォント インスタンスのスタイル サイズをポイント単位で指定します。

pvConsumer

このフォント インスタンスに関連付けられているコンシューマー割り当てデータへのポインター。 コンシューマーは、テキスト出力を生成するための入力としてグリフ情報を受け取るドライバーです。 このメンバーを変更できるのは、フォント コンシューマーだけです。 このフォントのコンシューマーは、このメンバーが指す場所に任意の情報を格納できます。 エンジンはこのメンバーを変更しません。 pvConsumer メンバーは、FONTOBJ 構造体がコンシューマーに初めて渡されるときに null であることが保証されます。

pvProducer

このフォント インスタンスに関連付けられているプロデューサー割り当てデータへのポインター。 プロデューサーは、グリフ情報を出力として生成できるドライバーです。これには、グリフ メトリック、ビットマップ、アウトラインが含まれます。 このメンバーを変更できるのはフォント プロデューサーだけです。 このフォントのプロデューサーは、このメンバーが指す場所に任意の情報を格納できます。 エンジンはこのメンバーを変更しません。 PVProducer メンバーは、FONTOBJ 構造体がプロデューサーに初めて渡されるときに null であることが保証されます。

注釈

アクセラレータとして、ドライバーは FONTOBJ 構造体のパブリック メンバーにアクセスできます。

ドライバーは、プロデューサーとコンシューマーの両方にすることができます。 たとえば、プリンター ドライバーは、ドライバー提供の DrvQueryFontData 関数の呼び出しを処理中にプロデューサーとして機能してグリフ メトリックを提供し、後でドライバー提供 の DrvTextOut 関数の呼び出しを処理中にコンシューマーを動作させることができます。

要件

要件
Header winddi.h (Winddi.h を含む)

こちらもご覧ください

DrvDestroyFont

DrvGetGlyphMode

DrvQueryFont

DrvQueryTrueTypeOutline

FONTOBJ_cGetAllGlyphHandles

FONTOBJ_cGetGlyphs

FONTOBJ_pifi

FONTOBJ_pxoGetXform

FONTOBJ_vGetInfo

IFIMETRICS