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

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



白井です。

From: Kenichi Handa <handa@xxxxxxxx> さん曰く
Subject: [emacs-w3m:11004] Re: bug#4090: Bug#541704: emacs-snapshot ruins w3m-el-snapshot tables
Message-ID: <E1Mdco0-0001TO-LZ@etlken>
Date: Wed, 19 Aug 2009 13:29:48 +0900

>> というわけで、半田さんにお聞きしたいのですが、上記の zzz-symbols
>> を char-width = 1 な文字列で生成することは可能でしょうか?
> 
> 「char-width = 1 な文字列」というものは存在しません。

そうですね。何か書いているんだか。。。

emacs-w3m ML で検討した(?)結果、

『w3m にもいろいろとパッチが存在するし、すべての組み合わせを救う
のは無理そう』

ということになりまして、

>> emacs-major-version > 22 のときは、(setq w3m-use-symbol nil)
>> にして、上記の置き換えをやめて、
>> 
>>   +-----+---+
>>   |     |   |
>>   +-----+---+
>> 
>> な罫線のままにするしかないかしら?

とすることにしました。お手数をおかけして申し訳ないです。

また、以下、丁寧な説明ありがとうございます。今後の参考にさせてい
ただきます。

> char-width は char-width-table によって決まり、
> char-width-table は現在の lang. env. で決まるので、まず、
> 
> (defvar w3m-char-width-table (make-char-table nil))
> (set-char-table-range w3m-char-width-table '(#x2500 . #x257F) 1)
> (set-char-table-parent w3m-char-width-table char-width-table)
> 
> とやって w3m 専用の char-width-table を用意し、w3m の表示バッ
> ファでは (w3m-mode かなにかの中で)、
> 
> (make-local-variable 'char-width-table)
> (setq char-width-table w3m-char-width-table)
> 
> とやります。これで box drawing character はすべて width = 1
> になります。
> 
> 次に、
> 
> (new-fontset "-*-*-*-*-*-*-*-*-*-*-*-*-fontset-w3mbox" nil)
> (set-fontset-font "fontset-w3mbox" '(#x2500 . #x257F) '(nil . "iso10646-1"))
> (make-face 'w3mbox)
> (set-face-attribute 'w3mbox nil :fontset "fontset-w3mbox")
> 
> とやって box drawing character には iso10646-1 のフォントを使
> う face `w3mbox' を作ります。本当はこれだけでは、ASCII と同じ
> 幅のグリフを持つフォントが選ばれることは保証できないのですが、
> まあ大抵はうまくいきます。これで駄目な場合は、ユーザにフォン
> トを明示的に指定させないかぎりどうしようもありません。
> 
> 最後に box drawing character を挿入する時に、例えば
> 
> (insert (apply 'concat (make-list (/ (string-width "+")
> 				     (string-width (nth 3 zzz-symbols)))
> 				  (nth 3 zzz-symbols))))
> 
> の代わりに
> 
> (insert
>  (propertize (apply 'concat (make-list (/ (string-width "+")
> 					  (string-width (nth 3 zzz-symbols)))
> 				       (nth 3 zzz-symbols)))
> 	     'face 'w3mbox))
> 
> とやれば box drawing character は w3mbox face で表示されます。

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