Unicodeとは(草稿)

JEPAサイトで完成版公開
Unicode

Unicodeは、Unicodeコンソーシアムという業界団体が定める、地球上の全ての文字を網羅する符号化文字集合(文字コード)である。Unicodeが普及する前は地域・国別に標準化された文字コードが使われていた。地域別に文字コードが異なるとコンピュータ・ソフトウェアのローカライズで、基本的なテキスト処理を地域毎に変更しなければならない。この問題を解消するためプログラムの文字処理用にUnicodeが開発されたが、インターネットの普及に伴い、HTMLやXMLのテキスト用文字コードとしても使われるようになり、現在は最もポピュラーな文字コードになった。

Unicodeの歴史

ゼロックスはStarの日本版J-Star、アップルはKanji Talk(Macintoshの日本語環境)を作る過程で、日本語化の問題に直面した。こんなことから両社でUnicodeのアイデアについて意見の交換があった。1988年4月に初めてアップルがUnicodeテキストのプロトタイプを出し、TrueTypeでUnicodeをサポートすることを決めた。また、1988年7月にアップルはResearch Libraries Groupから中国語、日本語、韓国語(CJK)の文字データベースを購入し、CJK漢字の統一化(Unification)をはじめた。その後、Sun、IBM、マイクロソフトなどの米国メーカーの賛同を得て、大きな動きになった。1991年にUnicode1.0仕様書出版、1992年には第2巻が追加されUnicode1.0.1となった。

UnicodeとISO(International Organization for Standardization)標準の関係

UnicodeはISO/IEC 10646という文字コード規格と同期をとっている。最新のUnicodeV8.0は、ISO/IEC 10646:2014, Information Technology—Universal Coded Character Set (UCS)(Universal Character Set (UCS)ともいう)とコード単位で完全互換である。

ISO/IEC 10646との相違点は、Unicodeは実装のための様々な機能文字、文字データ、テキスト処理アルゴリズムなどを定めていることである。仕様書本体にはスクリプト別のテキスト処理方法を定めており、さらに文字の特性データベース(Unicode Character Database)などのデータを提供している。付録として提供されるUnicode Standard Annex(UAX)は仕様の一部である。重要なものにアラビア文字やヘブライ文字をラテン文字などと混植するための双方向処理方法(UAX#9)、改行位置の決定特性(UAX#14)、正規形(UAX#15)などがある。他に、Unicode Technical Standard (UTS)と、Unicode Technical Report(UTR)がある。UTSはUnicodeとは別の独立した仕様であり、UTRは参考情報である。

文字の割り当てと番号付け

Unicodeの文字番号をコードポイントと言い、番号の範囲をコードスペースと言う。コードスペースは0から10FFFF(16進表記、以下、コードポイントは16進表記)で、1,114,112個のコードポイントを収容可能である。コードスペースは便宜上64Kずつのサイズの面に分けており、主な面には次のものがある。

(ア)基本多言語面(BMP):0000~FFFFまで。通常使う文字の大部分が収容される
(イ)第1面または補助多言語面(Supplementary Multilingual Plane):10000~1FFFFまで。Lenear B(線状文字B)など歴史的な文字、音楽表記用の文字、数学表記用の文字(記号)のような特殊用途の文字用の面
(ウ)第2面または補助表意文字面(Supplementary Ideographic Plane):20000~2FFFFまで。BMP面に入りきらなかったCJK文字(漢字)を収容する

スクリプト主義

Unicodeはグリフではなく抽象的な文字に対してコードポイントを与える。このときスクリプトが異なれば形が似た文字であっても別のコードポイントを与えるが、スクリプトが同じであれば言語が異なってもコードポイントを一つに統合している。例えば、ラテン文字の“o”(U+006F)、ギリシャ文字の“ο”(U+03BF:Omicron)、キリル文字の“о”(U+043E)は、スクリプトが異なるので同じ字形に関わらず別のコードポイントが与えられている。日本語はひらがな、カタカナ、漢字、ラテンアルファベットを用いて表記するが、それぞれ別のスクリプトである。漢字は日本語、中国語(大陸、台湾、香港、シンガポールなどで方言がある)、韓国語(昔)などの表記に使われるが、言語の相違を捨象して漢字というスクリプト内で統合する。但し、当初の統合化作業では元になる主な地域別文字集合で別の文字コードになっていれば統合はしなかった(1992年以降はこのルールは適用されていない)。

収録文字数

V1.0.1で漢字が収録された。このときの文字数は図形文字とレイアウト制御文字を含めて、28,294文字であった。その後、精力的な文字の追加が行われて、2015年公開のV8では同120,672文字となっている。そのうち、アルファベット・記号が27,958、漢字81,390、ハングル音節11,172、レイアウト制御文字152である。レイアウト制御文字は、改行などの基本的文字、左から右へ書く文字と右から左へ書く文字の混在のために使う方向制御文字などが分類される。

※Unicodeではスクリプトが中核概念であるにも関わらず、スクリプトについての厳密な定義がなかった。現在、UAX #24, Unicode Script Propertyの改訂版(草稿)でスクリプトについて定義しようとしている。

2.Unicode バージョン別の登録文字数の推移、追加文字数と変更点
3.Unicodeの漢字統合と絵文字(草稿)