いろいろ腑に落ちないけど、locale のほうをいじってみることにした。てか、そもそも locale って何からどうやって生成されてるんだ? ということで /usr/sbin/locale-gen を見てみる。これ自体シェルスクリプトで、実体の /usr/bin/localedef に渡す引数とかをいろいろやってるようだ。locale.gen(5) より、ja_JP.UTF-8 だと /usr/share/i18n/locales/ja_JP と /usr/share/i18n/charmaps/UTF-8.gz が locale の基になるようだ。で、/usr/share/i18n/charmaps/UTF-8.gz を見てみると、
% Character width according to Unicode 3.2. % - Default width is 1. % - Double-width characters have width 2; generated from % "grep '^[^;]*;[WF]' EastAsianWidth.txt" % and "grep '^[^;]*;[^WF]' EastAsianWidth.txt" (略) WIDTH (略) <U3041>...<U3096> 2 (略)
どうやら、デフォルトの文字幅は 1 で、EastAsianWidth.txt で W(Wide) か F(FullWidth) になっているものの文字幅が 2 になるようだ。つまり、A(Ambiguous) の文字幅はデフォルトの 1 ということになる。
ということで、A(Ambiguous) の文字幅は 2 に決め打ちしたリストを作って、/usr/share/i18n/charmaps/UTF-8.gz にねじ込んだ UTF-8-EAW-FULLWIDTH.gz なるものを作ってみた。これを /usr/share/i18n/charmaps/UTF-8-EAW-FULLWIDTH.gz に配置して、/etc/locale.gen を
ja_JP.EUC-JP EUC-JP ja_JP.UTF-8 UTF-8-EAW-FULLWIDTH
として locale-gen してみた。
# locale-gen Generating locales (this might take a while)... ja_JP.EUC-JP... done ja_JP.UTF-8-EAW-FULLWIDTH.../usr/share/i18n/charmaps/UTF-8-EAW-FULLWIDTH:28441: unknown character `U00002614' done Generation complete. #
なんか警告が出たけど生成は成功したようだ。これで生成された ja_JP.UTF-8 locale 上だと、素の rxvt-unicode でも×とかの幅は当たり前だけど全く問題ない。
この捏造 ja_JP.UTF-8 locale があれば個人的には今のところ問題ないんだけど、ひとまず食い下がってみた。
などのパッチ
を当てて作成。
#413954 だけど、graphicsmagick-imagemagick-compat が Build-Conflicts に指定されて回避されている。
| 前 | 2007年 3月 |
次 | ||||
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
[amd64 | audacious | comp | debian | gkrelluim | kip | misc | movie | research | rime | unicon | vdr | work | えふえふ]
書いてる人: dai
パッチ等(無保証)
Tracking: