プロポーショナルフォントについて

[戻る]
yuki 2003/12/09(火) 20:19:16
初心者で申し訳ありませんが、文字情報の取得について、
教えてください。

フォント名(FaceName)を指定した場合にプロポーショナル
フォントかどうかの判定は、どのようにしたらよいのでしょうか?

単にPがあるかのチェックで宜しいのでしょうか?
何かAPIでチェックできる方法は、あるのでしょうか?

申し訳ありませんが、ご教授をお願いします。

YuO [E-Mail] 2003/12/10(水) 00:04:07
直接的な方法は見つかりませんでした……。

というわけで,EnumFontFamiliesなんてどうでしょう。
コールバック関数に渡される,NEWTEXTMETRICまたはTEXTMETRIC構造体の,
tmPitchAndFamilyメンバを調べれば,プロポーショナルか否かは判別できます。

yuki 2003/12/10(水) 13:41:02
YuOさん。回答ありがとうございます。
tmPitchAndFamilyメンバで判定できることがわかりました。

もう一つ、教えてください。
EnumFontFamiliesで、フォントを列挙して取得しないと
NEWTEXTMETRICまたはTEXTMETRIC構造体を取得できないのでしょうか?

例えば、フォント名(FaceName)を指定した場合にNEWTEXTMETRICまたは
TEXTMETRIC構造体を取得する方法はないのでしょうか?

わかれば、教えて下さい。

それでは、宜しくお願いします。

SunPac 2003/12/12(金) 12:39:13
そのまんまの関数があります。
GetTextMetrics()です。
SelectObject()でHDCに指定のフォントを選ばせといて実行すればOK。

SunPac 2003/12/12(金) 12:50:05
補足
フォントはCreateFont()等で。
フェイスネーム以外は指定しなくてもOKかと。
(幅と高さは指定しなくてもいいかはやった事ないからわかりませんけど。)

LOGFONT lf;
TEXTMETRICS tm;

ZeroMemory(&lf, sizeof(LOGFONT));
lstrcpy(lf.lfFaceName, "フォント名");
HFONT hFont = CreateFontIndirect(&lf);
SelectObject(hdc, hFont);
GetTextMetrics(hdc, &tm);

・・・こんな感じかな。

古いスレッドには追加発言できません。