続々・rxvt-unicode ×問題再び, etc.
_ [comp] 続々・rxvt-unicode ×問題再び
いろいろ腑に落ちないけど、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 なるものを作ってみた(2015/12/10 追記: これはだいぶ古くなっています。East Asian Ambiguous Width問題の修正ロケール にて新しいものが配布されています)。これを /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 があれば個人的には今のところ問題ないんだけど、ひとまず食い下がってみた。
_ [debian] iceweasel 2.0.0.3-1vd1
- Bugzilla Bug 255990: Characters below U+0100 are not subject to line-breaking rules at all
- Bugzilla Bug 330852: raising assertion when clicking anytime
- Bugzilla-jp Bug 4575: [GTK2] IME APIの実装 #1 + Bugzilla Bug 337036: Crashes in IM_get_owning_window
などのパッチ
vd_iceweasel-2.0.0.3_without-gconf.patchvd_bugzilla-jp_bug-4575_attachment-3106+bugzilla-org_bug-337036_attachment-221583.patchvd_bugzilla-org_bug-255990_attachment-213337_iceweasel-2.0.0.1.patchbugzilla-org_bug-330852_attachment-215418.patch
を当てて作成。 #413954 だけど、graphicsmagick-imagemagick-compat が Build-Conflicts に指定されて回避されている。