<Return[G]><Top>

GetCharABCWidths

Declare Function Api_GetCharABCWidths& Lib "gdi32" Alias "GetCharABCWidthsA" (ByVal hDC&, ByVal uFirstChar&, ByVal uLastChar&, lpabc As ABC)

Declare Function GetCharABCWidths Lib "gdi32" Alias "GetCharABCWidthsA" (ByVal hdc As Long, ByVal uFirstChar As Long, ByVal uLastChar As Long, lpabc As ABC) As Long

文字の幅を論理単位で取得する。現在の TrueType フォントについて、昇順に連続した文字(A から E まで、S から T までなど)の幅を一括して取得できる。この関数は、TrueType フォントに対してのみ有効である。

パラメータ
hdc
    デバイスコンテキストのハンドルを指定する。
uFirstChar
    現在のフォントの連続した文字範囲の最初の文字を指定する。
uLastChar
    現在のフォントの連続した文字範囲の最後の文字を指定する。
lpabc
    構造体の配列へのポインタを指定する。この配列に、各文字の文字幅が格納される。この配列には、少なくとも uFirstChar パラメータと

    uLastChar パラメータで指定した範囲に含まれる文字の数だけの ABC 構造体が入っていなければならない。

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。
    Windows NT/2000:拡張エラー情報を取得するには、 関数を使う。

解説
    TrueType ラスタライザは、特定のポイントサイズが選択された後に ABC 文字スペーシングを与える。A スペーシングとは、グリフを置く前に

    加算される距離である。B スペーシングは、グリフの黒い部分の幅である。C スペーシングは、グリフの右側に空白をあけるために追加される

    距離である。最終的な文字幅は A+B+C で与えられる。
    文字によっては、A スペーシングや C スペーシングが負の値をとることもある。
    ABC 幅をフォントの設計単位に変換するには、 構造体の otmEMSquare メンバに格納されている値を使用する。この値は、

    GetOutlineTextMetrics 関数を呼び出すことにより取得できる。
    現在選択されているフォントの指定した範囲外の文字には、既定の文字の ABC 幅が使用される。
    TrueType フォント以外のフォントの文字幅を取得するには、 GetCharWidth 関数を使う。