<Return[G]><Top>

GetGlyphOutline

Declare Function Api_GetGlyphOutline& Lib "gdi32" Alias "GetGlyphOutlineA" (ByVal hDC&, ByVal uChar&, ByVal uFormat&, lpgm As GLYPHMETRICS, ByVal cbBuffer&, lpvBuffer As Any, lpmat2 As MAT2)

Declare Function GetGlyphOutline Lib "gdi32" Alias "GetGlyphOutlineA" (ByVal hdc As Long, ByVal uChar As Long, ByVal uFormat As Long, lpgm As GLYPHMETRICS, ByVal cbBuffer As Long, lpvBuffer As Any, lpmat2 As MAT2) As Long

指定されたデバイスコンテキストで選択されている TrueType フォント文字のビットマップまたはアウトラインを取得する文字列をグリフインデックスの配列に変換する。この関数を使って、フォントにグリフが存在するかどうかを調べることができる。

パラメータ
hdc
    デバイスコンテキストのハンドルを指定する。
uChar
    データを取得する文字を指定する。
uFormat
    関数が取得するデータの形式を指定する。次の値のいずれかを使う。

    値                                   

意味                                                                                                      

    GGO_BEZIER

曲線データを、4 次スプライン形式ではなく 3 次ベジェスプラインとして取得する。

    GGO_BITMAP

グリフビットマップを取得する。

    GGO_GLYPH_INDEX

 

Windows 95、Windows NT 4.0 および Windows 2000:グリフに対する ABC 文字間隔を取得する。この場合、A はグリフ左側の空白、B はグリフの幅、C はグリフ右側の空白を表わす。

    GGO_GRAY2_BITMAP

5 階調のグレーのグリフビットマップを取得する。

    GGO_GRAY4_BITMAP

17 階調のグレーのグリフビットマップを取得する。

    GGO_GRAY8_BITMAP

65 階調のグレーのグリフビットマップを取得する。

    GGO_METRICS

 

lpgm パラメータで指定される GLYPHMETRICS 構造体だけを取得する。ほかのバッファは無視される。関数が失敗した場合の戻り値はこの値に影響される。「戻り値」の項を参照。

    GGO_NATIVE

 

ラスタライザの曲線データポイントをネイティブ形式で取得し、フォントのデザイン単位を使う。この値が指定されている場合、lpMatrix パラメータで指定されている変換はいずれも無視される。

    GGO_UNHINTED

 

Windows 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 の変換行列を指定し、ビットマップ形式で取得した文字を回転することができる。