コンテンツへスキップ
ものがたり
戻る

2005-06-03

jarwars episode III

ワロタ

Windowsでは、もうサポート対象の漢字を一生増やせません

少なくともバイナリ互換性を維持する限りは。

Windowsのsortkeyでは、CJK統合漢字のコードポイント4E00-9FA5にあたる膨大なマップを、sortkeyの9E 02 01 01 01 01からF0 B4 01 01 01 01に割り当て、続けてF900から始まるCJK互換漢字のマップをF0 B5 01 01 01 01から割り当てている。

ところで、Unicode 4.1のCJK統合漢字の範囲は、4E00-9FA5ではなく4E00-9FBBである。この9FA6-9FBBにあたる範囲の文字は、最新の仕様に至るまでの過程で追加された文字であろうと思われる。

これらの文字のコードを間に入れちゃえば良いじゃん、ということは出来ないだろう。なんにも考えずに間を隙間なく埋めてしまったので、このようなことになってしまったのだ。

Windows XPは2001年に出ているというのに、文字列比較のコードはWindows 95の頃の実装をそのまま引きずっているので、新しい文字が出てきたりUnicodeの仕様の問題が修正されるたびに、どんどん時代遅れのものになっているというわけだ。

追記: 何か一部にウソだと勘違いしている奴がいるみたいだけど、僕は事実しか書いていないんだよな、残念ながら。バイナリ互換性を破棄すればちゃんと正しくサポート対象の漢字を増やすことだってできる。Windowsにはもう未来がないんだ、って思いこむのは、文章をきちんと読めてない奴だけだ。

あ、でも、そういう文章理解能力のない奴が僕の文章を忌避するというのはとても理解できる(何で読んでいるのかは理解できないが)。ただ、評価する利用者の視点で言えば、重要なのはサポート担当がいるかどうかであって、国内に開発者がいるかどうかなんて実にどうでもいい要素だ。開発者として参加するという側面でも、僕はつるんで活動しているわけじゃない(もちろん連携とか協力とかを拒んでいるわけでもない)し、何かを犠牲にすることなく僕と一生関わらずにいることは十分可能だ。ていうか穴ぐらで愚痴ってないで自分なりに自分の思うところをちゃんと行動で示せよ、とか思う。何も出来ない負け犬など見苦しい。

まあ話はそんな一般的な事じゃないだろうね。僕には敵がたくさんいるし、そいつらがこそこそ動いているだけの話だろうな、と。つうか、堂々とおもての顔を使って書けよ。ホント情けねえ。

CJK ordering sucks

Windows上では、一と㆒と㊀は絶対に同一視できないらしい。何でCJK ideograph領域を完全なCodepoint順にしなかったんだか。
互換字ならdiacritical weightあるいはspecial weightで調整することで、より柔軟な文字列比較も可能になったはずだし(special weightはいずれにしても複雑なので、CJK互換字の同一視フラグが追加されたところで大した損失にはならない)、何よりCJK領域に関するでっかいマッピングをインメモリに保持しなくてもすんだはずなのだ。

視点を他の記号に移してみれば(たとえばU+2460とか)、僕が書いていることがちっとも不思議ではないことが理解できるだろう。


この記事を共有:

前の記事
Windowsでは、もうサポート対象の漢字を一生増やせません
次の記事
jarwars episode III