ということは、これで xterm での文字幅もバッチリということですね。
LANG環境変数に合わせてCJK文字幅や日本語互換文字幅も使えるはず。
・・・あれ?
・・・・使えるはず?!?
・・・・・何で?何で?
・・・・・・なぜか駄目でした。うーむ。
で source を確認したところ「罫線(line drawing)が全角の場合、そのロケールは信頼できないので、ロケールの文字幅は使用しない」という処理が入っていました。何ってこった。(Solaris のロケールが常に 2を返すので無効にするためらしいです。)
日本語処理系では伝統的に罫線は全角なんだよー。わかれよー。変なことすんなよー。
ということで余計な処理を無効にするために #ifdef でコメントアウトしてしまいました。以下のパッチを当てることで、フォント設定さえ適切なら xterm で ロケールの文字幅が使えるようになります。
--- xterm-269.orig/util.c 2011-02-17 09:28:45.000000000 +0900 +++ xterm-269/util.c 2011-06-17 10:59:16.922977037 +0900 @@ -3881,6 +3881,7 @@ wchar_t n; int oops = 0; +#ifdef __sun for (n = 21; n <= 25; ++n) { int code = (int) dec2ucs((unsigned) n); int system_code = wcwidth(code); @@ -3899,6 +3900,7 @@ break; } } +#endif for (n = 0; n < (wchar_t) samplesize; ++n) { int system_code = wcwidth(n);
0 件のコメント:
コメントを投稿