GetGlyphOutlineA 関数 (wingdi.h)

GetGlyphOutline 関数は、指定されたデバイス コンテキストで選択された TrueType フォントの文字のアウトラインまたはビットマップを取得します。

構文

DWORD GetGlyphOutlineA(
  [in]  HDC            hdc,
  [in]  UINT           uChar,
  [in]  UINT           fuFormat,
  [out] LPGLYPHMETRICS lpgm,
  [in]  DWORD          cjBuffer,
  [out] LPVOID         pvBuffer,
  [in]  const MAT2     *lpmat2
);

パラメーター

[in] hdc

デバイス コンテキストへのハンドル。

[in] uChar

データが返される文字。

[in] fuFormat

関数が取得するデータの形式。 このパラメーターには、次の値のいずれかを指定できます。

意味
GGO_BEZIER
関数は、曲線データを 3 次ベジエ スプラインとして取得します (2 次スプライン形式ではありません)。
GGO_BITMAP
関数はグリフ ビットマップを取得します。 メモリ割り当ての詳細については、次の「備考」セクションを参照してください。
GGO_GLYPH_INDEX
uChar パラメーターが文字コードではなく TrueType グリフ インデックスであることを示します。 グリフインデックス作成に関するその他の解説については、 ExtTextOut 関数を参照してください。
GGO_GRAY2_BITMAP
関数は、5 レベルの灰色を含むグリフ ビットマップを取得します。
GGO_GRAY4_BITMAP
関数は、17 レベルの灰色を含むグリフ ビットマップを取得します。
GGO_GRAY8_BITMAP
この関数は、65 レベルの灰色を含むグリフ ビットマップを取得します。
GGO_METRICS
この関数は、lpgm で指定された GLYPHMETRICS 構造体のみを取得します。 lpvBuffer は無視されます。 この値は、失敗した場合の関数の戻り値の意味に影響します。「戻り値」セクションを参照してください。
GGO_NATIVE
関数は、ラスタライザーのネイティブ形式で曲線データ ポイントを取得し、フォントのデザイン単位を使用します。
GGO_UNHINTED
関数は、後で囲まれたアウトラインのみを返します。 このフラグは、GGO_BEZIERおよびGGO_NATIVEと組み合わせてのみ機能します。
 

GGO_GRAYn_BITMAP値の場合、関数は n^2+1 (n 2 乗と 1) レベルの灰色を含むグリフ ビットマップを取得します。

[out] lpgm

文字セル内のグリフの配置を記述する GLYPHMETRICS 構造体へのポインター。

[in] cjBuffer

関数がアウトライン文字に関する情報をコピーするバッファー (*lpvBuffer) のサイズ (バイト単位)。 この値が 0 の場合、関数はバッファーの必要なサイズを返します。

[out] pvBuffer

アウトライン文字に関する情報を受け取るバッファーへのポインター。 この値が NULL の場合、関数はバッファーの必要なサイズを返します。

[in] lpmat2

文字の変換行列を指定する MAT2 構造体へのポインター。

戻り値

GGO_BITMAP、GGO_GRAY2_BITMAP、GGO_GRAY4_BITMAP、GGO_GRAY8_BITMAP、またはGGO_NATIVEが指定され、関数が成功すると、戻り値は 0 より大きくなります。それ以外の場合、戻り値はGDI_ERROR。 これらのフラグのいずれかを指定し、バッファー サイズまたはアドレスが 0 の場合、戻り値は必要なバッファー サイズをバイト単位で指定します。

GGO_METRICSが指定され、関数が失敗した場合、戻り値はGDI_ERROR。

注釈

GetGlyphOutline 関数によって返されるグリフ アウトラインは、グリッドに適合するグリフ用です。 (グリッドフィット グリフは、ビットマップイメージがグリフの元のデザインとできるだけ密接に一致するように変更されたグリフです)。アプリケーションで変更されていないグリフ アウトラインが必要な場合は、フォントのサイズがフォントの em 単位と等しい文字のグリフ アウトラインを要求できます。 フォントの em 単位の値は、OUTLINETEXTMETRIC 構造体の otmEMSquare メンバーに格納されます。

GGO_BITMAPが指定されている場合 に GetGlyphOutline によって返されるグリフ ビットマップは、DWORD に配置された行指向のモノクロ ビットマップです。 GGO_GRAY2_BITMAPが指定されている場合、返されるビットマップは、値が 0 から 4 の範囲の DWORD で整列された行指向のバイト配列です。 GGO_GRAY4_BITMAPが指定されている場合、返されるビットマップは、値が 0 から 16 の範囲の DWORD で整列された行指向のバイト配列です。 GGO_GRAY8_BITMAPが指定されている場合、返されるビットマップは、値が 0 から 64 の範囲の DWORD で整列された行指向のバイト配列です。

GGO_NATIVEが指定されている場合 に GetGlyphOutline によって返されるネイティブ バッファーはグリフ アウトラインです。 グリフ アウトラインは、 TTPOLYGONHEADER 構造体で定義された一連の 1 つ以上のコンターとして返され、その後に 1 つ以上の曲線が続きます。 コンター内の各曲線は、 TTPOLYCURVE 構造体の後に多数の POINTFX データ ポイントが続いて定義されます。 POINTFX ポイントは相対移動ではなく、絶対位置です。 コンターの開始点は、TTPOLYGONHEADER 構造体の pfxStart メンバーによって指定されます。 各曲線の始点は、前の曲線の最後の点、または輪郭の始点です。 曲線内のデータ ポイントの数は、TTPOLYCURVE 構造体の cpfx メンバーに格納されます。 バッファー内の各コンターのサイズ (バイト単位) は、TTPOLYGONHEADER 構造体の cb メンバーに格納されます。 追加の曲線定義は、先行する曲線に続いてバッファーにパックされ、追加のコンターは、先行するコンターに続いてバッファーにパックされます。 バッファーには、 GetGlyphOutline によって返されるバッファー内に収まる数のコンターが含まれます。

GLYPHMETRICS 構造体は、文字セルの幅と、文字セル内のグリフの位置を指定します。 文字セルの原点は、フォントのベースラインにあるセルの左側にあります。 グリフの原点の位置は、文字セルの原点に対する相対位置です。 フォントに対する文字セル、ベースライン、およびその他のメトリックの高さは、 OUTLINETEXTMETRIC 構造体によって指定されます。

アプリケーションでは、 lpMatrix パラメーターで 2 by 2 変換行列を指定することで、ビットマップまたはネイティブ形式で取得された文字を変更できます。 たとえば、グリフは、せん断、回転、スケーリング、または行列乗算を使用した 3 つの任意の組み合わせによって変更できます。

グリフアウトラインの追加情報は、TrueType および OpenType 技術仕様にあります。

注意

wingdi.h ヘッダーは、GetGlyphOutline をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー wingdi.h (Windows.h を含む)
Library Gdi32.lib
[DLL] Gdi32.dll

こちらもご覧ください

ExtTextOut

FORM_INFO_1

フォント関数とテキスト関数

フォントとテキストの概要

GLYPHMETRICS

GetOutlineTextMetrics

MAT2

OUTLINETEXTMETRIC

ポイント

POINTFX

TTPOLYCURVE

TTPOLYGONHEADER