初心者で申し訳ありませんが、文字情報の取得について、
教えてください。
フォント名(FaceName)を指定した場合にプロポーショナル
フォントかどうかの判定は、どのようにしたらよいのでしょうか?
単にPがあるかのチェックで宜しいのでしょうか?
何かAPIでチェックできる方法は、あるのでしょうか?
申し訳ありませんが、ご教授をお願いします。
直接的な方法は見つかりませんでした……。
というわけで,EnumFontFamiliesなんてどうでしょう。
コールバック関数に渡される,NEWTEXTMETRICまたはTEXTMETRIC構造体の,
tmPitchAndFamilyメンバを調べれば,プロポーショナルか否かは判別できます。
YuOさん。回答ありがとうございます。
tmPitchAndFamilyメンバで判定できることがわかりました。
もう一つ、教えてください。
EnumFontFamiliesで、フォントを列挙して取得しないと
NEWTEXTMETRICまたはTEXTMETRIC構造体を取得できないのでしょうか?
例えば、フォント名(FaceName)を指定した場合にNEWTEXTMETRICまたは
TEXTMETRIC構造体を取得する方法はないのでしょうか?
わかれば、教えて下さい。
それでは、宜しくお願いします。
そのまんまの関数があります。
GetTextMetrics()です。
SelectObject()でHDCに指定のフォントを選ばせといて実行すればOK。
補足
フォントはCreateFont()等で。
フェイスネーム以外は指定しなくてもOKかと。
(幅と高さは指定しなくてもいいかはやった事ないからわかりませんけど。)
LOGFONT lf;
TEXTMETRICS tm;
ZeroMemory(&lf, sizeof(LOGFONT));
lstrcpy(lf.lfFaceName, フォント名);
HFONT hFont = CreateFontIndirect(&lf);
SelectObject(hdc, hFont);
GetTextMetrics(hdc, &tm);
・・・こんな感じかな。