« 私がグーグルのアドワード広告を止めた理由 まとめ | メイン | PDFと文字(14) – CJK漢字統合問題 »

2006年01月02日

PDFと文字(13) – Unicode文字の検討

Unicodeは、アメリカの企業を中心とする私的コンソーシアムが定めている仕様ですが、文字集合の決定、その符号化方式の仕様はISOという国際標準化団体と一緒に決めていることは、12月25日にUnicodeとISO 10646で説明しました。

(1) ISO 10646の仕様は、各国から代表が集まった委員会で議論・投票をして決定しています。このため、決定内容が各国の思惑の違いに左右されることがあるようです。

(2) そして、Unicodeに収容する文字は、ゼロから独自に集めたわけではなく、各国で決まっている標準規格等から収集しています。ここに各国の標準規格との関係をどうするかという課題が生まれます。

(3) また、当初のUnicodeは、16ビットでの実装用に企画されていたため2の16乗(65,536)個のコードポイントしかありませんでした。これは、実装の制限が仕様に影響を及ぼしたことになります。現在は、2005年12月26日に述べましたように、コードスペースが拡張されていますが、この拡張は極めてトリッキーな(tricky;巧妙な、ずるい)方法によるものです。

このような事情から、Unicodeの仕様には、いろいろと問題が出ている面もあるようです。これについて、以下に少し、まとめてみたいと思います。なお、私は、ISOの委員会にもJISの国内委員会にも参加していませんのであまり詳しいことは知りません。Webなどで調べながら書いていますので、誤りがありましたらぜひ指摘していただきたいと思います。

また、前にも申し上げましたが、私自身Unicodeは20世紀の偉業の一つと考えています。実際のところ、いまなにか製品を実装するとしてベースにする符号化文字集合にはUnicode以外の選択肢はないだろうと思います。

そのようなわけで、製品を実装する、あるいは利用する場合に理解しておくべき事柄として問題を整理してみたものです。このことを予めお断りしておきます。

1.漢字について
まず、最初に漢字について見てみましょう。Unicode4.0では次の表のように71,098文字の漢字が定義されています。(12月26日の表から漢字だけ取り出したもの)。

■Unicode4.0の漢字文字数

分類 コード範囲 文字数 収容時期
CJK統合漢字拡張A (CJK Unified Ideographs Extension A) U+3400~U+4DB5 6,582 V3.0
CJK統合漢字 (CJK Unified Ideographs) U+4E00~U+9FA5 20,902 V1.0
CJK互換漢字 (CJK Compatibility Ideographs) U+F900~U+FA6A 361 V1.0で302文字 V3.2から361文字に増加
CJK統合漢字拡張B (CJK Unified Ideographs Extension B) U+20000~ U+2A6D6 42,711 V3.1
CJK互換補助漢字 (CJK Compatibility Ideographs Suppliment) U+2F800~ U+2FA1D 542 V3.1
合計 71,098

※注意
1.正しくは、Ideographを表意文字と訳すべきですが、ここでは分かり易く漢字としています。
2.この表は、Unicode4.0仕様書のAppendix A Table D-2, Table D-3を元に構成したものなんですが、Unicode4.0仕様書の11.1 Han (p.293) の下から3行目では漢字は70,207文字とされています。891文字の違いはどこから来るか分かりません。

さらに、
http://www.unicode.org/Public/UNIDATA/DerivedAge.txt
を見ますと、UnicodeV4.1.0で128文字が追加されています。

分類 V4.0 V4.1で追加 V4.1総数
CJK統合漢字拡張A 6,582 0 6,582
CJK統合漢字 20,902 22 20,924
CJK互換漢字 361 106 467
CJK統合漢字拡張B 42711 0 42,711
CJK互換補助漢字 542 0 542
合計 71,098 128 71,226

投稿者 koba : 2006年01月02日 08:00

トラックバック

このエントリーのトラックバックURL:
http://blog.antenna.co.jp/PDFTool/mt-tbng2.cgi/107

コメント

コメントしてください




保存しますか?