[Date Prev][Date Next][Thread Prev][][Date Index][Thread Index]

Re: bug#4090: Bug#541704: emacs-snapshot ruins w3m-el-snapshot tables



白井です。

まずは、お礼から。。

>> ・Emacs23.1
>> (char-width (make-char 'mule-unicode-2500-33ff 32 92)) => 2
>
> FYI, with Emacs 23, in non-CJK environment, that value is 1.

フォローどうもありがとうございます。CJK しか頭に入っていなかったです。 ^^;;;

From: Kenichi Handa <handa@xxxxxxxx> さん曰く
Subject: [emacs-w3m:11008] Re: bug#4090: Bug#541704: emacs-snapshot ruins w3m-el-snapshot tables
Message-ID: <E1MdfME-0001nO-HP@etlken>
Date: Wed, 19 Aug 2009 16:13:18 +0900

>>>> emacs-major-version> 22 のときは、(setq w3m-use-symbol nil)
>>>> にして、上記の置き換えをやめて、
>>>> 
>>>> +-----+---+
>>>> |     |   |
>>>> +-----+---+
>>>> 
>>>> な罫線のままにするしかないかしら?
> 
>> とすることにしました。お手数をおかけして申し訳ないです。
> 
> そうですか。ただ Emacs 23 でもbox drawing character をちゃん
> と使える手立ては必要だと思います。良い案はありませんかねぇ。
> 
> Emacs 23.1 ではデフォルトでは box drawing character に CJK の
> フォントを割当てていないので、今のままでも char-width の部分
> だけでも何とかすれば大丈夫だとは思うのですが。

確かに  emacs -q で立ち上げると、見かけの幅は 1 で width が 2 に
なりますね。

現在、手元の emacs23 では TTF で表示して、ほとんどすべてのフォン
トを設定し直している(*1)のですが、そのなかで、

    (set-char-table-range char-width-table '(#x2500 . #x257F) 1)
    (set-fontset-font fontset
     		      '(#x2500 . #x257F)	;; BOX draw
     		      (font-spec :family "unifont" :size 12)
     		      nil 'prepend)

で、emacs-w3m の表はうまいこと表示できました。


> w3m では <_SYMBOL TYPE=10>----------</_SYMBOL> とかの "-" の
> 数をどうやって決めているのですか?

http://w3m.sourceforge.net/STORY の "w3mでのtableのレンダリング
アルゴリズム" に書いてあるように、各枠の大きさを決めているようで
す。従来の日本語環境のみだと文字の幅は決め打ちだったのでしょうが、
その後、UNICODE がなされたときに、独自に多言語ライブラリが構築し
てあって各文字の幅とかを決めるようになっています。その結果から、
上記の "-----" の数を求めているようです。emacs-w3m はその数を信
用して box drawing char に置き換えています。なので、w3m と
emacs-w3m 間で齟齬が起きると今回のようになります。

# だけど、これも、いろいろあって、素の w3m に
# http://www.j10n.org/files/w3m-cvs-1.914-ambwidth.patch をあて
# ている有沢さんとか、一筋縄ではいかないかもです。

-- 
白井秀行 (mailto:shirai@xxxxxxxxxxx)

(*1) ちょっと綺麗な読みやすいフォントを ASCII に使うと、どうして
     も 漢字の幅=ASCIIの幅x2 にならないんだもん。

     ぼくの環境だと face-font-rescale-alist が効かない?みたいな
     ので、ascii向けフォント(DejaVu Sans Mono) は 14dot で指定し
     てその他のフォントは全部 16dot を使うようにゴリゴリ書いてい
     ます。