wcwidthパッチ、その3
8月18日の記事の続きです。
追加した文字
追加した文字は次の7文字です。
Unicode | グリフ |
---|---|
00A2 | ¢ |
00A3 | £ |
00A5 | ¥ |
00A6 | 釗 |
00AC | ¬ |
00AF |  ̄ |
2212 | − |
なんというか、どこでも問題となっている文字ですね。
ちなみに、mutt-dev本家に投げることを前提として作っているので、この追加はEUC-JP/Shift_JISなどのレガシーエンコーディングでのみ有効です。UTF-8の場合は"Unicode Standard Annex #11"通りの挙動を行います。Ambiguousな文字は1桁として扱います。これを2桁として扱うために次のcjk_widthパッチを作りました。
cjk_width
Unicode上、文字幅がはっきりしない(Ambiguous)な文字がCJKに存在します。
このAmbiguousな文字をどう扱うかは端末次第です。
私が把握している端末の種類としては次の3つになると思います。
1. Ambiguousな文字を1桁で表示する端末
2. Ambiguousな文字を2桁で表示する端末
3. JIS X 0208にある文字を全て2桁で表示する端末
Muttの標準の挙動としては1にしか対応していません。cjk_widthパッチを当ててを$cjk_widthを設定することにより、2に対応します。3に完全には対応できていませんが、$cjk_widthを設定することである程度対応できます。異なる文字数は数文字ですし、文字幅が狭くなる方向で異なるので、表示はほとんどずれないと思います。