Email: Takayama Fumihiko <tekezo@pqrs.org>

Emacs22 + UTF-8 における文脈依存な文字幅の問題について

Emacs22 + UTF-8 における文脈依存な文字幅の問題について

UTF-8 には文字の幅が文脈依存 (ambiguous) となる文字があって、 矢印や記号 (■▲)、罫線などの文字は状況に応じて文字幅が変化します。

下の 2 つの画像は Emacs で同じファイルの内容を narrow character として判定させた場合と、 wide character として判定させた場合のスクリーンショットです。

narrow wide
narrow.png wide.png

現状、 Emacs22 はこれらの文字をデフォルトで narrow character として判定します (※のように化けてしまう文字もあります)。

文字によって幅を変えるプロポーショナルフォントを前提としたテキストであれば あまり問題にはならないと思いますが、等幅フォントに向けて書いたテキストでは 表示がガタガタになってしまい問題になります。

解決策

これらの文字を wide character として判別させるには以下の設定を行います。

(utf-translate-cjk-set-unicode-range
 '((#x00a2 . #x00a3)                    ; ¢, £
   (#x00a7 . #x00a8)                    ; §, ¨
   (#x00ac . #x00ac)                    ; ¬
   (#x00b0 . #x00b1)                    ; °, ±
   (#x00b4 . #x00b4)                    ; ´
   (#x00b6 . #x00b6)                    ; ¶
   (#x00d7 . #x00d7)                    ; ×
   (#X00f7 . #x00f7)                    ; ÷
   (#x0370 . #x03ff)                    ; Greek and Coptic
   (#x0400 . #x04FF)                    ; Cyrillic
   (#x2000 . #x206F)                    ; General Punctuation
   (#x2100 . #x214F)                    ; Letterlike Symbols
   (#x2190 . #x21FF)                    ; Arrows
   (#x2200 . #x22FF)                    ; Mathematical Operators
   (#x2300 . #x23FF)                    ; Miscellaneous Technical
   (#x2500 . #x257F)                    ; Box Drawing
   (#x25A0 . #x25FF)                    ; Geometric Shapes
   (#x2600 . #x26FF)                    ; Miscellaneous Symbols
   (#x2e80 . #xd7a3) (#xff00 . #xffef)))

備考

Emacs だけでなく Vim や mlterm など多数のソフトウェアにも同様の症状が見られ、 そもそも UTF-8 自体の問題であるという見解もあるようですが、 とりあえず Emacs で直ったので良いとします。


Comments for This Page.
Date: 2006-02-23 00:00 (JST)