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

Re: xterm -cjk_width と utf-translate-[...]



On May 22, 2007, [emacs-w3m:09461],
shinichiro (at stained-g.net) wrote:

> ひょっとして xterm の `-cjk_width' オプションって
> utf-translate-cjk-set-unicode-range の効いた emacs 専用のオプション
> だったりしますか?

いいえ。Vimなら「:set ambiwidth=double」としてみてください。

これは、ターミナルエミュレータとその中で動かすアプリケーションとで、
文字コードを一致させておかなければならない、という一般的な話です。

たとえば、LANG=ja_JP.eucJPなら、通常、アプリケーションは文字を
EUC-JPとして出力して、ターミナルエミュレータはそれをEUC-JPだと解釈
して表示します。

今回問題になっているのは、UTF-8環境(たとえばja_JP.UTF-8)の場合です。
UTF-8では、文字幅が1桁分なのか2桁分なのかはっきりしていない文字があり、
それらについてターミナルエミュレータとアプリケーションとで文字幅を一致
させておかないと表示がずれてしまう、ということです。

たとえば、xterm -cjk_widthと設定無しのEmacs/Vimだと、ターミナルエミュ
レータでの文字表示は2桁分なのに、アプリケーションは1桁分のつもりでカー
ソル移動するので、表示がずれてしまう、ということになります。

文字幅の設定については、localeに従っているもの、変更できないもの、
個別の文字について設定できるもの・できないもの、一括で設定できる範囲
が異なるものなど様々なのが現状では、難しい問題となっています。

-- 
木下達也