GetGlyphOutlineW

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

GetGlyphOutlineW hdc, uChar, fuFormat, lpgm, cjBuffer, pvBuffer, lpmat2

hdc : [intptr] デバイスコンテキストのハンドル。
uChar : [int] データを取得する対象の文字。
fuFormat : [int] 
lpgm : [var] 文字セル内のグリフ配置を記述する GLYPHMETRICS 構造体へのポインタ。
cjBuffer : [int] アウトライン文字情報をコピーするバッファ (*lpvBuffer) のサイズ(バイト単位)。この値が 0 の場合、関数は必要なバッファサイズを返す。
pvBuffer : [intptr] アウトライン文字情報を受け取るバッファへのポインタ。この値が NULL の場合、関数は必要なバッファサイズを返す。
lpmat2 : [var] 文字の変換行列を指定する MAT2 構造体へのポインタ。

(プラグイン / モジュール : gdi32.dll)

解説

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

[戻り値]
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
のバイト配列、GGO_GRAY4_BITMAP 指定時は値の範囲 0 ~ 16、GGO_GRAY8_BITMAP 指定時は値の範囲 0 ~
64 である。GGO_NATIVE 指定時に GetGlyphOutline
が返すネイティブバッファはグリフアウトラインである。グリフアウトラインは、TTPOLYGONHEADER 構造体とそれに続く 1
つ以上の曲線によって定義される輪郭の連続として返される。輪郭内の各曲線は TTPOLYCURVE 構造体と、それに続く POINTFX
データポイントによって定義される。POINTFX 点は相対移動ではなく絶対位置である。輪郭の始点は TTPOLYGONHEADER
構造体の pfxStart メンバで与えられる。各曲線の始点は前の曲線の最後の点または輪郭の始点である。曲線のデータポイント数は
TTPOLYCURVE 構造体の cpfx メンバに格納される。バッファ内の各輪郭のサイズ(バイト単位)は TTPOLYGONHEADER
構造体の cb
メンバに格納される。追加の曲線定義は先行する曲線に続いてバッファに詰め込まれ、追加の輪郭も先行する輪郭に続いて詰め込まれる。バッファにはバッファに収まるだけの輪郭が格納される。GLYPHMETRICS
構造体は文字セルの幅とグリフの文字セル内の位置を指定する。文字セルの原点はフォントのベースライン上のセル左側にある。グリフ原点の位置は文字セル原点を基準とした相対位置である。文字セルの高さ、ベースライン、その他フォント全体に共通のメトリックは
OUTLINETEXTMETRIC 構造体に含まれる。アプリケーションは lpMatrix パラメータに 2x2
変換行列を指定することで、ビットマップまたはネイティブ形式で取得される文字を変形できる。例えば、行列乗算によりせん断、回転、スケーリング、またはそれらの組み合わせを適用できる。グリフアウトラインに関する追加情報は
TrueType および OpenType 技術仕様に記載されている。
> [!NOTE] > wingdi.h ヘッダは GetGlyphOutline をエイリアスとして定義しており、UNICODE
プリプロセッサ定数の有無に応じてこの関数の ANSI 版または Unicode
版が自動的に選択される。エンコーディング中立なエイリアスと非中立コードを混在させると、コンパイルまたは実行時エラーの原因となる不整合を引き起こすことがある。詳細は
[関数プロトタイプの規則](/windows/win32/intl/conventions-for-function-prototypes)
を参照。

情報

プラグイン / モジュールgdi32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の gdi32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_gdi32_gen2.hs