[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: [MD:3578]フォントの設定



少し進展がありました。

>>>>> [meadow-develop : No.3578] にて
>>>>> "三好" = MIYOSHI Masanori <miyoshi@xxxxxxxxxxxxxxxx> さんは書きました:
三好> WindowsXP 上の Meadow2 で、フォント設定がうまくいかなくて、ずいぶ
三好> ん悩んでいました。
三好> TrueType フォントの bold を normal と等幅にしたいのですが、等幅に
三好> はなるものの bold にならないのです。

三好> ところが、Windows2000 で、同じ設定を試したところ、うそのように思
三好> い通りに設定できました。

三好> 具体的には、下記の設定です。
三好> これは、OS 依存の話なのでしょうか?
三好> それとも、それ以外の環境依存の話なのでしょうか?


三好> (w32-add-font
三好>  "fontset-std"
三好>  '((strict-spec
三好>     ((:char-spec ascii :height any)
三好>      (w32-logfont "Courier New" 8 16 400 0 nil nil nil 0 1 3 49))
snip

色々試した結果、次のことがわかりました。

・OS に関係なく、フォント設定(bold, italic, bold + italic の選択)
  がうまくいかない。TrueType でも BDF でもだめ。

・上記で Windows2000 で OK だったと書いてあるが、これは誤り。実際
  は、少し古めの Meadow2 では、OK だった。

ちょっとだけソース(mw32font.c)を調べたところ、フォント選択用のハッ
シュテーブルに問題がありそうなことがわかりました。

試しに、mw32_lf_equal() が常に偽を返すように変更したら、思い通り
にフォントを選択できるようになりました。

この関数は、登録しようとする logfont (MW32LogicalFont) が、ハッシュ
テーブルの中に存在するか判定するときに呼ばれる関数です。この判定
が甘くて誤作動しているような気がします。

この関数では、MW32LogicalFont のメンバしか比較の対象としていない
のですが、他に weight や slant の情報も対象とすべきではないでしょ
うか?

;; 上記の情報を pphys 経由で引っ張ってくる?

--
三好 雅則 mailto:miyoshi@xxxxxxxxxxxxxxxx
          http://www.boreas.dti.ne.jp/~miyoshi/