TAKIZAWA Takashi
taki****@cyber*****
2005年 9月 10日 (土) 23:41:17 JST
滝澤です。 tamoさんが回答してくれたので、beta2の公開とwcwidthの補足をします。 On Sat, Sep 10, 2005 at 09:36:14PM +0900, TAKAHASHI Tamotsu wrote: > > ・時折、表示位置がずれる。いわゆる全角と半角が混じっている行で > > が後ろにずれることがある。再描画(Ctrl+L)で直る。数字の桁が > > 増えてみることがあるので、びっくりする。 > > これは滝澤さんが「人柱用」とおっしゃっていた通り > wcwidth などの変更によるものだと思います。 > 滝澤さんの blog にもある通り、難しいようです。 溜まっていた課題を少々片付けた beta2 を作ったので試してみてください。 http://www.emaillab.org/mutt/download1510.html beta1からの変更点: - tamoさんパッチにある程度同期して、機能は同じになった。 - $assumed_charsetの変換失敗時の動作変更 変換に失敗したら assumed_charset の最初に指定したエンコーディングと 仮定して無理矢理変換します。 - wcwidth の修正 Unicode Standard Annex #11 "East Asian Width" の処理に従っただけ では不具合があるので、いくつかの文字をAmbiguousとして追加した。 - $cjk_widthの追加 beta1で追加した$charset_is_cjkの名前の変更です。 表示位置がずれる問題について: 表示位置がずれる問題はtamoさんが書いたとおりwcwidthの変更によるものです。 以前のjaパッチでのwcwidthはja l10n のために非常におおざっぱな範囲で 設定していました。しかし、beta1で CJK l10n への厳密な設定のものに差し替えた ために、実情に微妙に合わない点が出てきていて、そのために表示がずれることが ありました。 今回の修正でEUC-JPロカールにおいては問題はなくなったと思います。 しかし、UTF-8ロカールにおいては完全には解決していません。 Unicode上、文字幅がはっきりしない(Ambiguous)な文字がCJKに存在するためです。 Ambiguousな文字をどう扱うかは端末次第なので、設定パラメータを用意するくら いしか解決できないと思います。 私が把握している端末の種類としては次の3つになると思います。 1. Ambiguousな文字を1桁で表示する端末 2. Ambiguousな文字を2桁で表示する端末 3. JIS X 0208にある文字を全て2桁で表示する端末 Muttの標準の挙動としては1にしか対応していません。 jaパッチの$cjk_widthを設定することにより、2に対応します。 3に完全には対応できていませんが、$cjk_widthを設定することである程度対応 できます。異なる文字数は数文字ですし、文字幅が狭くなる方向で異なるので、 表示はほとんどずれないと思います。 # 本来は2と3で2桁で表示される文字は同じになるはずなのですが、iconvライブ # ラリの変換テーブルの問題で JIS X 0208 の文字がNarrowな文字にマッピング # されている場合があります。少なくとも glibc と libiconv はそうなります。 ってな感じなので、試してください。 ちなみに、私自身はWindows XPのマシンからLinuxマシンにsshでログインして 作業しています。このときに使っているsshクライアントは putty-jp です。 putty-jp は1および2の端末になります。 UTF-8 TeraTerm Pro だと3の端末になります。 X上の端末は最近は全然使っていないので、最近の事情は異なるかもしれませんが、 xtermは1の端末になります。mltermは設定で変更できると思います。 文字幅についてのややこしい問題については知りたい人は下記サイトを参照して ください。 Unicode Standard Annex #11 "East Asian Width" http://www.unicode.org/reports/tr11/ -- TAKIZAWA Takashi(滝澤 隆史) http://www.emaillab.org/