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

Re: w3mmee with utf-8



From: Kiyokazu SUTO <suto@ks-and-ks.ne.jp> さん曰く
Subject: [emacs-w3m:01194] Re: w3mmee with utf-8 (was: w3m-m17n support)
Message-ID: <20010613-210244-29631.suto@ks-and-ks.ne.jp>
Date: 13 Jun 2001 21:02:44 +0900

suto> > と罫線関係の multibyte char の char-width(?) の計算が 2倍狂って
suto> > いるような感じになります。
suto> …中略…
suto> > とちゃんと表示されます。なお、xterm(utf-8) ではきちんと表示でき
suto> > ているので、"-dump=half-buffer" のときのみの症状だと思いますが、
suto> 
suto> xtermとMule-UCS(?)で、box drawing characterの幅の設定が違うためでしょ
suto> う。

Mule-UCS(Ver.0.84) で

(?─ . "0x2500") ;; BOX DRAWINGS LIGHT HORIZONTAL
...       
(?┼ . "0x253C") ;; BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL

を定義しているのは、

u-cns-1.el:246:   (?略 . "0x2500") ; BOX DRAWINGS LIGHT HORIZONTAL
ubig5.el:251:     (?略 . "0x2500") ;; BOX DRAWINGS LIGHT HORIZONTAL
ugb2312.el:642:   (?略 . "0x2500") ;; BOX DRAWINGS LIGHT HORIZONTAL
ujisx0208.el:528: (?─ . "0x2500") ;; BOX DRAWINGS LIGHT HORIZONTAL
uksc5601.el:465:  (?略 . "0x2500") ; BOX DRAWINGS LIGHT HORIZONTAL

がありました。?略も含めて全部 char-width が 2 です。

また、通常(jisx0213 も含めると)、

     (let ((cand
	    (append
	     '(ascii
	       latin-iso8859-1 latin-iso8859-2 latin-iso8859-3 latin-iso8859-4
	       cyrillic-iso8859-5
	       ;; arabic-iso8859-6
	       greek-iso8859-7 hebrew-iso8859-8  latin-iso8859-9 latin-iso8859-14
	       latin-iso8859-15
	       ipa
	       japanese-jisx0208 japanese-jisx0213-1 japanese-jisx0213-2 japanese-jisx0212
	       korean-ksc5601
	       chinese-gb2312  chinese-cns11643-1 chinese-cns11643-2 chinese-cns11643-3
	       chinese-cns11643-4 chinese-cns11643-5 chinese-cns11643-6 chinese-cns11643-7
	       chinese-big5-1 chinese-big5-2
	       latin-jisx0201 katakana-jisx0201
	       thai-tis620 ethiopic indian-is13194
	       chinese-sisheng vietnamese-viscii-lower vietnamese-viscii-upper)
	     (if (fboundp
		  (function tibetan-pre-write-canonicalize-for-unicode))
		 '(tibetan))
	     '(mule-unicode-0100-24ff
	       mule-unicode-2500-33ff
	       mule-unicode-e000-ffff)))
	   elem result)
       (while (setq elem (car cand))
	 (if (or (funcall-if-possible (function find-charset) elem)
		 (funcall-if-possible (function charsetp) elem))
	     (setq result (cons elem result)))
	 (setq cand (cdr cand)))
       (nreverse result))

この式の結果で表示が order づけされます。

suto> # Unicodeの文字の幅というのは完全に定まった規格があるわけじゃなくて、
suto> # libmoeのデフォルトはxtermのそれと揃えてあります。

はい、了解です。そのへんの関係もあって、僕の Mule-UCS は w3mmee
を使わせていただくようになってから、latin-jisx0201 と
katakana-jisx0201 を korean-ksc5601 の前にしてあったりします。
default では jisx0201 の "," が gb2312 で表示していたりするので、
日本語だと違和感 + 表のずれがありました。

# これやっても、例えば、EURO SIGN U+20AC は Emacs 21 だと
# iso88591-15(半角?) で表示されるけど、Emacs 20 だと jisx0213-1
# (全角)で表示したりするので、その辺も順番かえようかな。
## けど、弊害が良くわかっていないので ^^;;;

suto> 手元に何故かあるMule-UCS-0.82.tar.gzを展開して、どういう表を追加す
suto> るのが正しいのか調べてみますので、しばしお待ちを。

suto> # EastAsianWidth.txtで、属性がAmbiguousな文字は皆2にしてるとかだったら、
suto> # 表作るのは簡単なんだが。

わざわざ申し訳ないです。

## 最近、iso8859-14, 15, 10646-1 など一気に font が増えてしまい
## ました。Emacs-21 と UTF-8 な xterm のせいでございます。

-- 
白井秀行 (mailto:shirai@rdmg.mgcs.mei.co.jp)