GetGlyphOutline

https://msdn.microsoft.com/ja-jp/library/ms535641.aspx https://msdn.microsoft.com/ja-jp/library/ms534001.aspx https://msdn.microsoft.com/ja-jp/library/ms533959.aspx https://msdn.microsoft.com/ja-jp/library/ms534014.aspx https://msdn.microsoft.com/ja-jp/library/ms536119.aspx

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

DWORD GetGlyphOutline(
  HDC hdc,             // デバイスコンテキストのハンドル
  UINT uChar,          // 照会する文字
  UINT uFormat,        // 返すデータの形式
  LPGLYPHMETRICS lpgm, // メトリックス用の構造体へのポインタ
  DWORD cbBuffer,      // データを受け取るバッファのサイズ
  LPVOID lpvBuffer,    // データを受け取るバッファへのポインタ
  CONST MAT2 *lpmat2   // 変換行列構造体へのポインタ
);

パラメータ

hdc
デバイスコンテキストのハンドルを指定します。
uChar
データを取得する文字を指定します。
uFormat
関数が取得するデータの形式を指定します。次の値のいずれかを使います。
意味
GGO_BEZIER曲線データを、2 次スプライン形式ではなく 3 次ベジェスプラインとして取得します。
GGO_BITMAPグリフビットマップを取得します。メモリ割り当てに関する情報は、「解説」の項を参照してください。
GGO_GLYPH_INDEXWindows 95、Windows NT 4.0 および Windows 2000:グリフに対する ABC 文字間隔を取得します。この場合、A はグリフ左側の空白、B はグリフの幅、C はグリフ右側の空白を表します。
GGO_GRAY2_BITMAP5 階調のグレーのグリフビットマップを取得します。
GGO_GRAY4_BITMAP17 階調のグレーのグリフビットマップを取得します。
GGO_GRAY8_BITMAP65 階調のグレーのグリフビットマップを取得します。
GGO_METRICSlpgm パラメータで指定される GLYPHMETRICS 構造体だけを取得します。ほかのバッファは無視されます。関数が失敗した場合の戻り値はこの値に影響されます。「戻り値」の項を参照してください。
GGO_NATIVEラスタライザの曲線データポイントをネイティブ形式で取得し、フォントのデザイン単位を使います。この値が指定されている場合、lpMatrix パラメータで指定されている変換はいずれも無視されます。
GGO_UNHINTEDWindows 2000:ヒンティングを行わないアウトラインだけを返します。このフラグは GGO_BEZIER および GGO_NATIVE フラグと共に使う場合にだけ機能します。

GGO_GRAYn_BITMAP の値に対して、関数は n^2+1(n の 2 乗に 1 を加えたもの)階調のグレーのグリフビットマップを取得することに注意してください。

lpgm
文字セル内のグリフの位置を記述した GLYPHMETRICS 構造体へのポインタ指定します。
cbBuffer
アウトライン文字に関する情報をコピーするためのバッファのサイズを指定します。この値が 0 の場合、関数は必要なバッファのサイズを返します。
lpvBuffer
アウトライン文字に関する情報をコピーするためのバッファへのポインタを指定します。この値が NULL の場合、関数は必要なバッファのサイズを返します。
lpmat2
文字に対する変換行列を指定する MAT2 構造体へのポインタを指定します。

戻り値

フラグ GGO_BITMAP、GGO_GRAY2_BITMAP、GGO_GRAY4_BITMAP、GGO_GRAY8_BITMAP または GGO_NATIVE が指定されていて関数が成功した場合、0 を超える値が返ります。失敗した場合は、GDI_ERROR が返ります。これらのフラグのうちの 1 つが指定されていてバッファサイズまたはアドレスが 0 の場合、必要なバッファのサイズがバイト単位で返ります。
GGO_METRICS フラグが指定されていて関数が失敗した場合、GDI_ERROR が返ります。
Windows NT/2000:拡張エラー情報を取得するには、GetLastError 関数を使います。

解説

GetGlyphOutline 関数が返すグリフアウトラインは、グリッドに合わせたグリフ用です(グリッドに合わせたグリフとは、ビットマップ化されたイメージが元のグリフにできるだけ一致するように修正してあるグリフのことです)。未修正のグリフアウトラインを必要とする場合、アプリケーションは、あるフォントの文字について、そのフォントのエム単位と等しいサイズのグリフアウトラインを要求することができます。フォントのエム単位の値は、OUTLINETEXTMETRIC 構造体の otmEMSquare メンバに格納されています。
GGO_BITMAP フラグが指定されているときに GetGlyphOutline 関数から返されるグリフビットマップは、位置調整がダブルワードの行方向のモノクロームビットマップです。GGO_GRAY2_BITMAP フラグが指定されているときに返されるビットマップは、位置調整がダブルワードの行方向のバイト配列で、0~4 までの値を保持します。GGO_GRAY4_BITMAP フラグが指定されているときに返されるビットマップは、位置調整がダブルワードの行方向のバイト配列で、0~16 までの値を保持します。GGO_GRAY8_BITMAP フラグが指定されているときに返されるビットマップは、位置調整がダブルワードの行方向のバイト配列で、0~255 までの値を保持します。
アプリケーションは lpMatrix パラメータに 2×2 の変換行列を指定し、ビットマップ形式で取得した文字を回転することができます。

対応情報

  Windows NT/2000:Windows NT 3.1 以降
  Windows 95/98:Windows 95 以降
  ヘッダー:wingdi.h 内で宣言
  インポートライブラリ:gdi32.lib を使用
  Unicode:Windows NT/2000 は Unicode 版と ANSI 版を実装

参照

GetOutlineTextMetrics、、、、

表示: