2009年2月2日月曜日

同字形系文字の埋め込み符号化法

Unicodeで標準以外の文字を利用するには外字などを使う。また、外字を用いても16ビットのUnicodeでは10万文字を表現することは不可能だ。そこで、サロゲートペアという方式で32ビットの符号を表現する。
しかし、異体文字や誤字を含む同字形系文字(これは字形が類似の文字の集合という意味の筆者独自の造語だ)をサロゲートペアで表すと、検索プログラムはすべての類似性判断を行うために非常に複雑になる。あるいは、そのような複雑なプログラムのライブラリが普及するのには長い時間がかかる。
簡単な異体文字を例に考えると、例えば、澤と沢は正式な氏名では区別されるが、通常の利用では区別する必要はほとんどない。意味も読み方も等しく、一般的には澤の簡略形が沢だと思われているだろう。しかし、両者は文字コードが異なるため、沢で検索しても澤は見つからない。そのために澤の名が付く人をしばしば見逃してしまうこともある。澤は、それでもまだ知らない人がいないくらい有名な文字だからよい。それこそ誤字はほとんど知る人がいない世間では通用しない文字であるにもかかわらず、その本人にとっては正式な文字である。これが検索でないのでは電子化の恩恵に預かることができない。
そこで、以下のような符号化法を考える。
ESC, 外1, 外2, 同
ここで、ESCはいわゆるエスケープシーケンスである。外1, 外2は両方で1つの外字を表す。ESCを省略し、2つの外コードで拡張サロゲートペアを形成してもよい。いずれにせよ可変長の処理は必要となる。最後の「同」はBMP内での代替文字だ。真の文字コードの他に代替コードを埋め込む所がポイントだ。これによって、外字コードを無視するだけで通常の検索プログラムが動作する。

0 件のコメント: