灯台下暗し -カッターナイフで恐竜を腑分けした記録-

仕事で携帯向けアプリを書いて、趣味で携帯電話を買い、趣味で同人小説を書いて、何もしていません。

誰かが一頑張りするべきとき

2005-05-19 01:05:55 | Mozilla
今、[Bug 157967] Make Gecko interoperate better with advanced typography systems such as ATSUI, Uniscribe, Pango & STSF で大事で面白い話をしています。ここで日本語を話す人が参加しないと、近い未来の Firefox/Thunderbird のα版で日本語が表示できなくなるかも知れない話を。

討論の題名は、Windows や Linux 含め UNIX や Mac OS X での文字表示の国際化をプラットフォームの機能を生かすものに変えよう、という意味です。変えればいいじゃないか、と言うだけなら簡単な話です。かなり作り直しが必要で滅多にできることではなく、いざ作り替えようとなった今こそよく考えなければならないんです。本当に、作り直しなんですよ。

ここで、説明のために意味のとれない一段落を置いてみますね。

This is a pen. This is aペン. This is a pen. This is aペン. This is a pen. This is aペン. This is a pen. This is aペン. This is a pen. This is aペン. This is a pen. This is aペン. This is a pen. This is aペン. This is a pen. This is aペン. This is a pen. This is aペン. This is a pen. This is aペン. This is a pen. This is aペン. ...

上の段落を現在の Firefox/Thunderbird が表示するときには、改行しそうにない位置で分割して文字列の幅を求めて行を折り返しています。まず決められたフォントで "This" がどのくらいの幅になるかプラットフォームに確認して、空白を入れて、次に "is" がどのくらいの幅になるか確認して、"a" がどのくらいの幅になるか確認して、そのまま "pen" を横に書けたらいいけれども画面の端(あるいはテーブルの端)に来ているようだと改行してから "pen" の幅を確認して。

この方法は簡単だけど、それで正しく表示しようとすると Firefox/Thunderbird が世界の言語にかなり精通していないといけない訳です。まず改行していい位置も変わります。"pen" の途中で改行するとおかしいけれども「ペン」の間には改行が入れられますから、その違いを知っていなければなりません。さらに空白の開け方・詰め方が変わります。「aペン」を日本語で書くときには "a" と「ペン」に微妙に空白を入れたいですが、それを Firefox/Thunderbird が知らないと空白を開けられません。そんなこんなで、ある程度読めるようにするには楽だけれど、きれいに表示しようとすると地獄の道です。実際、あんまりきれいに表示できていません。

そんな話を、現代のデスクトップシステムはプラットフォームが持っています。Windows なら Uniscribe、Linux 含め UNIX では GTK+ 上の Pango、Mac OS X では ATSUI、という機能がそれを受け持ちます。これらは大体似た作りをしています。少なくとも一段落全てを先にプラットフォームに渡して欲しいということです。

先の段落だと "This is a pen. This is aペン. This is a ..." をプラットフォームに渡します。すると「a と pen の間に改行をいれて、a と ペン の間に空白をいれて...」とひとしきり考えた後、結果全体をアプリケーションに返します。アプリケーションはその結果を全部覚えておいて、後で表示するときに使う、というのがマナーです。

「This の幅がこれで、is の幅がこれで...」と動かしたらどうなるか。プラットホームは一応は文句言わずに動きますが、とても遅いです。それは嫌がらせじゃありません。段落全部任せてくれるときと同じように考え込んでしまうのです。

現状の Firefix/Thunderbird はいわば単語ごとの幅の確認しかしないのを、段落を一気に計算する動きに変えないとプラットフォームの国際化機能は使いこなせません。その話がようやく動き始めました。

しかし日本からコードを書いたり少なくともこの話に参加する人がほとんどいません、これはとても危険なことです。正直な話、欧米のプログラマに日本語は読めません。日本語が読めないプログラマが日本語の表示のバグに気付くことはありません。無料のソフトウェアだから「日本人は金持ちだから日本語に対応すると売れるぞ」という動機も発生しないので、もともと言葉を知っている人がプログラミングしないと勉強してプログラミングしようという気もなりません。

すると、チェックは欧米の言語だけになされて、日本語を表示してみたらダメダメだったということが起きても全く不思議はないんです。このままでは。

日本人プログラマだって他の言語で起きるバグは分からない訳ですから他人のことをとやかく言えませんし。

私は気持ちだけあるのでにわか勉強中。しかし追いつける方が不思議です。今はまだ、アジるだけ。
コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« Volari には NVIDIA DVD Deco... | トップ | 偏屈な人間には鉄槌が下る »
最新の画像もっと見る

コメントを投稿

Mozilla」カテゴリの最新記事