[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-devel:13035] Re: jgroff patch handling on latin1 (Re: linuxdoc-tools: no Korean .txt output!)
久保田です。
At Sat, 14 Oct 2000 06:20:48 +0900,
Fumitoshi UKAI <ukai@debian.or.jp> wrote:
> まずは現状がどうなってるか見てみました。
> project/experimental/groff_1.16-1から NIPPON関係をぬきだしただけですが
おつかれさまです。私は、grep NIPPON したときに大量に出てきたのを
見ただけでげんなりしてました。
まだ、作業を初める前に、可能かどうか、構想を練っているところですが。
(コードを読んだわけではないので、見当外れなことを言ってるかもしれません)。
# これは、いわゆる「作業予約」のつもりではありません。作業を
# やることを検討している方は、これを読んで作業をやめようと思わないで
# 下さい。
入力については、wchar_t を使うとうまくいきそうですが、
出力についてはどうでしょうか。どういう仕様にするべきだと
思いますか?
私は、デバイスタイプの -Tascii、-Tlatin1、-Tnippon、-Tascii8、-Tutf8 は
全廃して、-Ttty とかのデバイスタイプに統一してしまうのがいいと思って
います。これについてはたぶん異存はないと思うのですが、問題は、
ハイフネーション文字や \(co などの扱いです。
# groff のアップストリームとはまだ話したことがないのですが、
# -Tutf8 を廃止するとか言ったら反対するのかな。
# でも、私の意見としては、UTF-8 のサポートは locale の枠組の
# なかでやるべきだと思ってますから、UTF-8 だけ特別扱いするべき
# ではありません。
現在の groff では、それらは -Tascii と -Tlatin1 とで使い分けることが
できます。たぶん出力には putwchar() とか wprintf() とかが使われることに
なると思うのですが、そうすると、ISO-8859-1 で 0xa9 ('(C)') や
0xad (ソフトハイフン) に相当する文字が表示できない環境
(LANG=ja_JP.eucJP など) では、疑問符「?」で表示されてしまう
ことになります。これは、改悪になります。そこで、出力環境に
応じて u+00a9 と「(C)」とか、u+00ad と「-」とかを使い分けるような
機構が必要になります。これは、setlocale(LC_CTYPE,NULL) の結果を
見て場合分けするのがいいのでしょうか? これだとハードコーディングに
なってしまうのであまりよろしくないですが。(いままでの groff が
ひどかったので、改悪ということにはならないと思いますが)。
それから、それらの文字をソースコード上で表現するにはどうすれば
いいのか、という問題があります。というのは、ワイド文字の定義と
して、0x21-0x7e の範囲は ASCII と一緒ですが、それ以外については
何ら仮定をしてはいけないことになっています。glibc では UCS-4 と
いうことになっていますが、それに依存するコードを書くべきではありません。
# groff 1.16 の font/devlatin1/R.proto では、当然のことながら、
# それらを ISO-8859-1 で表現しています。改造後の font/devtty/
入力については glibc 2.2 では fgetc() のかわりに fgetwc() を使って
しまえば問題はすべて解決、という気がします。これを使うと、
入力については最初からワイド文字になるので、マルチバイト文字には
一切触らなくてもいいことになりますから。という認識は正しい
でしょうか?
# is_euc_byte とかは不要になりますし、mbrtowc() とか wcrtomb()
# とかも使う必要がなくなります。ただし、glibc 2.1 な環境では
# コンパイルすらできなくなりますが。Linux はいずれ glibc 2.2 に
# 移行するからいいでしょうが、他の UNICES についてはどうでしょうか。
# portability を考えると、そのへんの関数は使わないほうがいいの
# でしょうか。それとも、UNICES のなかでは Linux がいちばん
# 国際化がおくれているので、Linux で動くものはたいてい他でも
# 動くのでしょうか。
---
Tomohiro KUBOTA <kubota@debian.org>
http://surfchem0.riken.go.jp/~kubota/