[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-devel:12788] Re: sensible-xtermemu_0.04



久保田です。

From: Nozomi Ytow <nozomi@xxxxxxxxxxxxxxxxxx>
Subject: [debian-devel:12787] Re: sensible-xtermemu_0.04
Date: Fri, 11 Aug 2000 00:53:36 +0900

>> 現に XFree86 4.0 の xterm も UTF-8 を部分的に
>> サポートしているけど、UTF-8 モードへの切り替えはロケールを見て
>> 自動的に行なわれるのではなく、コマンドオプションとかで行われる
>> ようになっていますね。
> 「現に」以降が噛み合っていない様な...

XFree86 4.0 以降において、「xterm -u8」と入力すると、xterm が 
UTF-8 モードで起動しますよね。でも、たとえば「LANG=en_US.UTF-8 xterm」
と入力しても xterm は UTF-8 モードで起動するわけではない。
そういう意味です。

将来、xterm が例えば EUC-JP をサポートするようになったと仮定
しましょう。そのとき、LANG=ja_JP.eucJP という設定がされていたら、
xterm は自動的に EUC-JP モードで起動するべきです。せっかく
LC_CTYPE ロケールというものが利用可能なのに、コマンドオプションや
リソースなどで xterm に対して EUC-JP モードを指定しなければ
ならないとしたら、それは必要以上の不便さです。

そして、xterm は将来的には、UTF-8 だけではなく、ISO-2022-*、EUC-*、
ShiftJIS、Big5、VISCII、TIS620 などもサポートするべきだと思っています。

# と思ったら、xterm-139 の main.c の 1750 行目あたりに、
# LC_CTYPE に「UTF-8」という文字列が含まれていれば UTF-8 モードに
# する、という記述らしきものを見付けました。
# というわけで、もし xterm が将来 EUC-JP をサポートするように
# なれば、当然この部分も追加されるでしょうから、私の心配は
# 杞憂だったということになりそうです。
# 以下が、その部分のソースコードです。
> #if OPT_WIDE_CHARS
>         /* Test whether UTF-8 mode should be active by default */
>         {
>             char *s;
> 
>             if ((s = getenv("LC_ALL")) ||
>                 (s = getenv("LC_CTYPE")) ||
>                 (s = getenv("LANG"))) {
>                 if (strstr(s, "UTF-8"))
>                     defaultUTF8[0] = '2';
>             }
>         }
> #endif

# というわけで、私は、すでに実現している (あるいは、実現の方向へと
# 向かっている) ことがらについて、こうすべきだと主張していたことに
# なります。よく調べずに書いてすみませんでした。grep setlocale *.c
# でそれらしいソースコードが出てこなかったので、早とちりしていました。


>> でも私としては、UTF-8 は、サポートされるべきロケールのひとつ、
<snip>
>> (ヨーロッパ語人も、環境変数 LANG の設定くらいはやってもらわないと)。
>> UTF-8 をデフォルトにするという解決策は却下したいのです。
> どうも良く理解できません。
> 最後の 2 文に集約される感情論なのでしょうか。

上記の説明のような意味です。xterm 内部で、setlocale(LC_CTYPE, "") の
結果に従って、UTF-8 で動作したり EUC-* や ISO-2022-* で動作したり
Big5 で動作したりするようになっているべきです。

ヨーロッパ語人にしても、従来の ISO-8859-* を使うか、それとも 
UTF-8 を使うかを選択するために、各ソフトウェアごとに
設定しなければならないとしたら、うんざりするでしょう。
各ソフトウェアを LC_CTYPE ロケールに従うように作っておいて、
ユーザーがしなければならない設定は LANG 変数のみにする、
というのは、良い解決策であると思うのですが。


> それは文字コードとグリフを混同しろという意味ですか?

すみません、「グリフ」というのが何か分かりません。以前にも書き
ましたが、私は X についてはまったくの素人です。従って、私のしている
議論は、xterm の内部でどのような処理をすべきか、ということ
ではなく、ユーザーから見たときにどのような仕様であるべきか、
ということです。

# といっても、xterm が EUC-* とかをサポートしてほしいので、
# それに対するお手伝いができればいいな、と思って、少しずつ
# 勉強しているところです。

ISO-2022-* とか EUC-* とかの文字コードがきちんと表示できるので
あれば、それが X の仕組みの中でどのように扱われようが、つまり、
従来のフォントが用いられようが、Unicode フォントにマッピング
されようが、ユーザーとしてはどちらでもいいです。

---
Tomohiro KUBOTA <kubota@debian.or.jp>
http://surfchem0.riken.go.jp/~kubota/