[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-devel:13053] Re: jgroff patch handling on latin1 (Re: linuxdoc-tools: no Korean .txt output!)
久保田です。
重大な設計ミスがありました。
日本語のロケールは、ja_JP.eucJP かもしれないし、
ja_JP.UTF-8 かもしれません。groff は、どちらでも動くように
できていないといけません。(あるいは、ja_JP.SJIS とかのロケールが
追加されたら、それでも動かなければなりません)。重要な点は、
同一のマシン、同一の構成において、LANG などの環境変数を変える
だけで動作が切り変わらないといけないということです。
ところが、/usr/share/man/ja/* にあるマニュアルページは、
特定の文字コードで書かれています。今のところ、それは
EUC-JP です。
LANG=ja_JP.UTF-8 な状態で setlocale(LC_ALL,""); すると、
fgetwc() にしろ、mbstowcs() にしろ、入力を UTF-8 だと思って
しまいます。
解決法としては、
(1) groff に、ロケールとは独立に入力文字コードを指定する
コマンドオプションを追加する。
(2) man-db を、groff を起動するときにソースの文字コードを
指定するコマンドオプションを指定するように改造する。
(3) 以下のどちらかを選択し、Debian Policy に載せる。
(3a) 各言語ごとに、マニュアルページはどの文字コードで書くか
についてのガイドラインを定める。(実質的には現状を
追認する形になる)。
(3b) すべてのマニュアルページは UTF-8 で書くこととする。
というふうなことになると思います。groff が出力する文字コードは、
ロケール依存でいいと思います。
キーは、groff は Debian や Linux 以外でも動くように設計するべき
だけど、man-db は Debian specific package だから portability を
少々犠牲にしても構わない、というところです。
# UTF-8 --> wchar_t の変換って、どうすればいいんでしょうか?
# iconv では wchar_t が使えないし、mbstowcs では UTF-8 が
# 今のところ使えない (UTF-8 ロケールが存在しない) し、使えた
# としても、ロケール名ってポータブルなものではないし。
# (ということで言えば、iconv に与える文字コード名もポータブル
# ではないんですが)。
ところで、佐野さんの提案にもあるように、議論は debian-i18n@org
でやりませんか?それとも、いっそのこと groff の upstream も
まきこんでやるほうがいいのでしょうか? (とするとどこが適切
なんでしょうか)
---
Tomohiro KUBOTA <kubota@debian.org>
http://surfchem0.riken.go.jp/~kubota/