CDC::GetCharABCWidths
更新 : 2007 年 11 月
現在の TrueType フォントから、指定された範囲の連続した文字の幅を取得します。
BOOL GetCharABCWidths(
UINT nFirstChar,
UINT nLastChar,
LPABC lpabc
) const;
BOOL GetCharABCWidths(
UINT nFirstChar,
UINT nLastChar,
LPABCFLOAT lpABCF
) const;
パラメータ
nFirstChar
現在のフォントが文字幅を返す対象となる文字範囲の先頭の文字を指定します。nLastChar
現在のフォントが文字幅を返す対象となる文字範囲の最後の文字を指定します。lpabc
関数から戻るときに文字幅を受け取る ABC 構造体の配列へのポインタ。この配列には、少なくともパラメータ nFirstChar と nLastChar で指定した範囲に含まれる文字数分の ABC 構造体を持つ必要があります。lpABCF
関数から戻るときに文字幅を受け取る ABCFLOAT 構造体の配列を持つ、アプリケーションが用意したバッファへのポインタ。この関数が返す幅は、IEEE 浮動小数点形式です。
戻り値
正常終了した場合は 0 以外を返します。それ以外の場合は 0 を返します。
解説
幅は論理単位で返されます。この関数は TrueType フォントだけで有効です。
TrueType ラスタライザは、特定のポイント サイズを選択後、"ABC" の文字間隔を提供します。"A" の文字間隔は、グリフを置く前に現在位置に加算される距離です。"B" の文字間隔は、グリフそのものの幅です。"C" の文字間隔は、グリフの右側の現在位置に加算される空白部分の量です。文字幅の総計は A + B + C になります。
GetCharABCWidths メンバ関数が描画文字の "A" または "C" の幅に負の値を取得したときは、文字はアンダーハングまたはオーバーハングを持っています。
文字の ABC 幅をフォントのデザイン上の単位に変換するには、アプリケーションで、フォントの高さが (LOGFONT 構造体の lfHeight メンバで指定したように) NEWTEXTMETRIC 構造体の ntmSizeEM メンバに格納されている値と等しいフォントを作成します。ntmSizeEM メンバの値は、Windows 関数の EnumFontFamilies を使って取得できます。
現在選択されている範囲外の文字には、既定の文字の ABC 幅が使われます。
非 TrueType フォントの文字幅を取得するには、アプリケーションで GetCharWidth Windows 関数を使用します。
必要条件
ヘッダー : afxwin.h