i18nを実感する

アラビア語ショック

http://ar.wikipedia.org/wiki/الصفحة_الرئيسية
アラビア語Wiki。全てが右、のように見えて、実は左から右もある(年の数字など)。アラビア語は正直勉強していないのでわかってないだけだが、個人的にはカルチャーショックを受けた。もちろんTeraPadでは全部?で表示される。
OperaのTextBoxでこのリンクを作ってみると、私が上のリンクを作るのにどれだけ苦労したか理解してもらえるだろう。アラビア語に入った途端、右矢印キーを押しているのになぜかキャレットが左に移動しだす。多分これが正しい動作なのだろうが、いやはや。

ベトナム語ショック

ベトナム語入力用IMEを入れたので面白がってWordで打ちまくっていたら、一つの文字を消すのにバックスペースキーが20回以上必要な事態になった。しかも少しずつ文字が欠けていく。一体どんな文字表示を行っているんだ。
後でクリップボードからEMEditorに貼り付けたら、文字の後ろに「・」が大量に。日本語の「〃」とか「゜」みたいな修飾が行われているのだろうか。Wordの内部バッファも大したものといいたいところだが、これはさすがにバグではないのだろうか。

WitchPaperを想う

これからのテキストエディタは、こういうのにも対応しないといけないのだろうな。
Unicodeでバッファを管理してますと言って「国際化」とのたまうのは、チャンチャラ可笑しいという事だ。
世界は広い。

参考

一応テキストエディタごとにアラビア語WikiのHTMLを開いて見た。ファイル名もアラビア語のまま。

エディタ名 結果
サクラエディタ 開けず。ファイル名を読める形式にして開くと文字化け。
xyzzy 開けず。ファイル名を読める形式にして開くと半角の■で文字化け。
TeraPad 開けず。ファイル名を読める形式にして開くと?で文字化け。
WitchTree 開けるがキャレットの位置が狂う。
EMEditor 開けるが文字を選択すると表示がバグる。
真魚 表示できるし選択出来るし違和感なく編集出来る。

真魚の結果が飛びぬけている。さすがロシア語対応エディタ。
真魚以外は、英語または日本語専用という事だ。アラビア語は世界第4位のシェアを誇る言語だから、国際化エディタが表示くらい出来ないのはおかしいだろう。
※(2006/07/19 訂正)御指摘を受けて訂正。どうもアラビア語は例外的らしく、ロシア語や中国語、キリル語などはEmEditorやxyzzy等でも編集可能であることを確認。いずれもTrueTypeのままで編集出来ることから、対応言語においては真魚よりも高度な性能を発揮している。本項目はエディタごとに対応方法が大幅に異なるため記述をやめておきます。
ちなみに真魚を含めても矢印キーの挙動がOperaのようになることはなかった。



WitchTreeの結果は把握している。WitchPaperが1バイトの文字と2バイトの文字しかキャレット位置計測をしていないのだが、アラビア語はTrueTypeなサイズで表示されていないのでこうなる。以前ロシア語で確認済みの現象だ。
なんでTrueTypeってくれないかというと、正直調査不足なのだがDirectX9(というかおそらくGDI)の仕様なんだと思っている。認識違いだったら申し訳ない。
対策は単に毎回MeasureStringでキャレット位置を計測してやればいいだけだが(今は2バイト文字のリストと照合しての独自計測)、どの道改行位置には違和感があるので日本語専用なのは昔からだし、今はこれで割り切っている。
実は真魚アラビア語はTrueType表示されてはおらず、プロポーショナルフォント扱いになっているため、指定桁数で折り返すと何やら違和感のある表示になる。なるが、真魚はこの実装で「プロポーショナルフォント仮対応」をしているため、閲覧も編集も問題なく出来るというわけだ。


なんだかWitchPaper作り直しの話を本格的にやりたくなってきた。
アラビア語ベトナム語に完全対応したエディタって、渋いっしょ。
やらないけどね。


※(2006/07/19 お詫び)
他者様作成ソフトの批判的言葉が含まれる文章を記述するには軽率でした。
以後この手の記述をする場合、十分な調査をしてからとするよう気をつけます。大変失礼しました。
なお、後日エディタの国際化対応比較は清書して再掲載しておきます。