プロポーショナルフォントについて – プログラミング – Home

プロポーショナルフォントについて
 
通知
すべてクリア

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


yuki
 yuki
(@yuki)
ゲスト
結合: 24年前
投稿: 39
Topic starter  

初心者で申し訳ありませんが、文字情報の取得について、
教えてください。

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

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

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


引用解決済
トピックタグ
YuO
 YuO
(@YuO)
ゲスト
結合: 22年前
投稿: 320
 

直接的な方法は見つかりませんでした……。

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


返信引用
yuki
 yuki
(@yuki)
ゲスト
結合: 24年前
投稿: 39
Topic starter  

YuOさん。回答ありがとうございます。
tmPitchAndFamilyメンバで判定できることがわかりました。

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

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

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

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


返信引用
SunPac
 SunPac
(@SunPac)
ゲスト
結合: 22年前
投稿: 105
 

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


返信引用
SunPac
 SunPac
(@SunPac)
ゲスト
結合: 22年前
投稿: 105
 

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

LOGFONT lf;
TEXTMETRICS tm;

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

・・・こんな感じかな。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました