«前の日記(2007-03-21(水)) 最新 次の日記(2007-03-23(金))»

vdrめも

検索キーワード:
[PR]:「Chef活用ガイド コードではじめる構成管理 (大型本), (Kindle版)」発売中です。


2007-03-22(木) バトル継続 [長年日記]

_ [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

などのパッチ

を当てて作成。

#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

パッチ等(無保証)

GPG Fingerprint = 0B29 D88E 42E6 B765 B8D8 EA50 7839 619D D439 668E