- - PR -
プロポーショナル・固定ピッチフォントの判別
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-02-17 11:47
ラベルに設定されたフォントがプロポーショナルフォントなのか、固定ピッチフォントなのかを判別する方法がわかりません。
テキストにセットされた文字列の文字幅を比べれば判別可能ですが、テキストに文字列がセットされていない状態で判別する必要があります。 ご存知の方いらっしゃいましたら、ご教授お願いします。 | ||||||||
|
投稿日時: 2005-02-17 16:18
こんにちは。
期待にそえてないかもしれませんが。。。 ラベルに設定されているフォントを取得して、そのフォントをIF文か何かで 判断すればいいのでは?
あと、余計ですが環境書いてくださいね。 | ||||||||
|
投稿日時: 2005-02-17 21:03
> テキストにセットされた文字列の文字幅を比べれば判別可能ですが
テキストにセットされた文字列の文字幅と、何を比べるのですか? 固定ピッチはどの文字であろうと同じ幅、ですよね。プロポーショナルは文字によって幅が異なる、ですよね。だったらテキストに文字列がセットされている、いないは関係ないでしょう。一番幅が異なりそうな"i","l","1"辺りと、"W","M"辺りの幅を比べればいいと思いますけど? _________________ | ||||||||
|
投稿日時: 2005-02-17 21:10
単に、あるfont-familyがプロポーショナルかどうかを取得したいってことですか?
CreateGraphicsでGraphicsオブジェクトを取得して、MeasureStringメソッドで プロポーショナルフォントなら明らかに幅が異なる2つの文字列同士の幅を比較する とか。(半角英数と日本語両方考慮する必要があったりするかな)
どの段階で判別したいのかよくわかりませんが
逆に私はわからないのですが、フォント自体はプロポーショナルかどうかの情報を 持っているのでしょうかね。 あ、先レスが・・ [ メッセージ編集済み 編集者: べる 編集日時 2005-02-17 21:14 ] | ||||||||
|
投稿日時: 2005-02-17 21:57
試していませんが、LOGFONT 構造体の lfPitchAndFamily の下位 2bit が FIXED_PITCH なら(VARIABLE_PITCH 以外なら?)固定幅なのでしょうね。 で、LOGFONT は void Font.ToLogFont(object) で取得できるそうです。 | ||||||||
|
投稿日時: 2005-02-18 01:20
ここが参考になりました。 http://www.gdncom.jp/general/mllog/tech/webTech.aspx?ID=2-06 「Fontが固定幅かプロポーショナルかの判断方法は?」を拾い読みしました。 特に、このサンプルは動かしてみたら実際取得できました。.NETの外に出る感じですが。 ToLogFontを使っても情報が全部入ってこないことがある、みたいな話の流れでした。 一応ここにもLOGFONTを扱うサンプルがのっています。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/csref/html/vcwlkplatforminvoketutorial.asp | ||||||||
|
投稿日時: 2005-02-18 10:20
情報提供ありがとうございました。
また、説明不足であったことをお詫び申し上げます。 やりたいことは、あるfont-familyがプロポーショナルかどうかを取得したいということです。また、その取得ロジックはマネージコードであることが前提条件です。 「テキストにセットされた文字列の文字幅を比べれば判別可能ですが・・」というのは私の勘違いでした。すみません。 べるさんが返信してくださった、 「CreateGraphicsでGraphicsオブジェクトを取得して、MeasureStringメソッドで プロポーショナルフォントなら明らかに幅が異なる2つの文字列同士の幅を比較する 」方法での実装を検討いたします。 |
1