次の方法で共有


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を指定すると、返されるビットマップは、DWORD で配置された行指向のバイト配列で、値の範囲は 0 から 4 です。 GGO_GRAY4_BITMAPを指定すると、返されるビットマップは、DWORD で整列された行指向のバイト配列で、値の範囲は 0 から 16 です。 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 バイ 2 変換マトリックスを指定することで、ビットマップまたはネイティブ形式で取得された文字を変更できます。 たとえば、グリフは、せん断、回転、スケーリング、または行列乗算を使用した 3 つの任意の組み合わせによって変更できます。

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

手記

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

必要条件

要件 価値
サポートされる最小クライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされる最小サーバー Windows 2000 Server [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー wingdi.h (Windows.h を含む)
ライブラリ Gdi32.lib
DLL Gdi32.dll

関連項目

ExtTextOut を する

FORM_INFO_1

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

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

GLYPHMETRICS を する

GetOutlineTextMetrics の

MAT2

OUTLINETEXTMETRIC

POINT

POINTFX

TTPOLYCURVE を する

TTPOLYGONHEADER を する