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

Re: font :height setting



>>>>> [meadow-users-jp : No.7130] にて
>>>>> 矢木さんは書きました:
> ><ORIENTATION>が抜けてました。Wiki の記述を修正しておきました。

> それだけでなく ITALIC-P と STRIKEOUT-P の間に UNDERLINE-P が
> 必要だと思います。

> あとページの後半がばっさり削除されてしまっているような。

修正しました。

> 高さに -16 を指定すると 16dot にならないのですね。

> (w32-query-get-logfont) ;; Courier New 12pt を選択
> => (w32-logfont "Courier New" 0 -16 400 0 nil nil nil 0 1 3 49)

> (mapcar (lambda (size)
>           (let ((lf `(w32-logfont "Courier New" 0 ,size 400 0
>                                   nil nil nil 0 1 3 49)))
>             (cdr (assq 'height (w32-get-logfont-info lf)))))
>         '(-16 -13 13 16))
> => (18 16 12 16)

> よくわからん。

;; どの部分がわからないのかが分からないのですが...

w32-logfont の height と、w32-get-logfont-info の返す height の違
いに注意してください。

w32-logfont の height は Windows GDI の LOGFONT 構造体の lfHeight
そのものです。

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/fontext_1wmq.asp

つまり、値が正の時にはセルの高さを、負の時には文字の高さを意味しま
す。ここで、
http://phys.cool.ne.jp/physjpn/htextmetric.htm
の図を使って説明すると、
  セルの高さ = tmHeight
  文字の高さ = tmHeight - tmInternalLeading
です。

それに対して、w32-get-logfont-info の返す height はセルの高さです。


> 高さに -16 を指定すると 16dot にならないのですね。

この例では、文字の高さとして16ドットを指定することを意味します。こ
の場合、Courier New を選んだ場合には、セルの高さは16ドットではなく
18ドットであることが、上記の実行例から分かります。ただし、あくまで
も文字の高さは16ドットです。

--
三好 雅則 http://miyoshi.meadowy.org/