[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
[MD:1826] 日本語フォントのボールド体部分でカーソルが歪む(Win98)
- X-ml-count: 1826
- Subject: [MD:1826] 日本語フォントのボールド体部分でカーソルが歪む(Win98)
- From: Kyotaro HORIGUCHI <horiguchi.kyotaro@xxxxxxxxxxxxxxxxxxxxx>
- Date: Sat, 15 Jul 2000 04:19:24 +0900 (JST)
- User-agent: Mew version 1.95b47 on Emacs 20.6 / Mule 4.1 (葵) / Meadow-1.13 Beta1 (棚橋:61)
堀口です. meadow-develop フリフリモードです.
特にお呼びではないようですがとりあえず出てきました^^;
ボールド文字の上のカーソルが傾いてるのには気づかなかった..
# ちなみにわたしも C-l をぱたぱた打っていますがこれは私のフォント
# の設定が字間を詰め過ぎになっているせいだと思っています.
## ちなみに文字を消すときにはオーバーハングを文字毎にとるようには
## していないのはパフォーマンスのためですか? いずれにしても
## 消すときの領域は平行四辺形は考えてないみたいですね.
### なもんだから FixedSys のイタリック体はスラントがあまりに激し
### くて使えないんですよ ^^;;;;
At 14 Jul 2000 13:44:47 +0900, MIYASHITA Hisashi(宮下 尚:HIMI) <himi@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in <u8zv5wcao.fsf@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
> 98のfont metricがなんかおかしいのかなぁ?
Windowsがおかしいのか使い方がおかしいのかはわかりませんが,
GetTextMerics は期待通りの値を返してはいないようです.
カーソルのひずみ自体は mw32term.c:998 で起きています.
> points[0].x = left + tm.tmOverhang;
tm.tmOverhang がボールドで 1, イタリックで 0 になっています.
このせいでカーソルがボールドの時に1ドットスラント, イタリックで
は正立になっています.
これを Elisp の上からお手軽に検証するには以下の方法でokです.
(w32-get-logfont-info
'(w32-logfont "MS ゴシック" 0 -12 700 0 nil nil nil 128 1 3 49))
~~~ not italic
結果は..
((max-width . 13) (charset-num . 128) (overhang . 1) (base . 10)
(height . 12) (width . 7)) ~ 1ドットオーバーハング
(w32-get-logfont-info
'(w32-logfont "MS ゴシック" 0 -12 400 0 t nil nil 128 1 3 49))
~ italic
結果は...
((max-width . 16) (charset-num . 128) (overhang . 0) (base . 10)
(height . 12) (width . 6)) ~ オーバーハング無し
この辺は内部的には
・logfont からwin32 api の LOGFONT 構造体をつくって(ここは間違っ
ていないみたい)
・この LOGFONT 構造体で CreateFontIndirect して
・その結果のフォントで SetObject して
・その結果のフォントハンドルで GetTextMetrics すると
・tmOverhang が上のような状態
になっています. わからないなりにみてみた限りでは
CreateFontIndirect に与える lf の設定(lisp_object_to_logfont())は
間違ってはいないようです.
もうちょっと面白い(?)のは w32-get-logfont-info の overhang は
logfont の italic は無視してweight に反応しているらしいあたりです.
(w32-get-logfont-info
'(w32-logfont "MS ゴシック" 0 -12 550 0 nil nil nil 128 1 3 49))
~~~
((max-width . 12) (charset-num . 128) (overhang . 0) (base . 10)
~~ (height . 12) (width . 6)) ~
~
(w32-get-logfont-info
'(w32-logfont "MS ゴシック" 0 -12 551 0 nil nil nil 128 1 3 49))
~~~
((max-width . 13) (charset-num . 128) (overhang . 1) (base . 10)
~~ (height . 12) (width . 7)) ~
~
残念ながら今の私の手許では win32 api のヘルプが見られない上に自
由に弄くれる NT マシンも今のところ無いのでここまでです ;_;
--
堀口恭太郎