Unicode

2015.11.18

Unicodeとは

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

もっと詳しく!

Unicodeの誕生

ゼロックスはStarの日本版J-Star、アップルは漢字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 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進表記でU+を付けて表示する)で、1,114,112個のコードポイントを収容可能である。コードスペースは便宜上64Kずつのサイズの面に分けており、主な面には次のものがある。

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

スクリプト主義

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

スクリプトとは

Unicodeの仕様書を読めば、スクリプトが中核概念であることは一目瞭然であるにも関わらず、スクリプトは「書記言語において一緒に使う文字の組(sets of letters that are used together in writing languages)」という定義しかなかった。現在、Unicode Script Property(UAX #24)の改訂版(草稿)でスクリプトについて定義しようとしている。

収録文字数

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

漢字の統合

Unicodeは漢字統合の提案をISO/IEC 10646に持ち込み、中国・日本・韓国の共同作業部会(CJK-JRG)において作業が行われた。この作業の成果として1992年に最初のCJK漢字統合(Unified Repertoire and Ordering (URO))ができあがった。UROは中国・日本・韓国の地域別標準文字コード表を出典とするが、元になる文字コード表で別のコードになっていれば統合しないという出典分離規則がある。UROはUnicode V1.0.1で20,902文字が規定され、その後、48文字が追加されている。また、出典文字コード表と双方向変換するための文字や出典外の主要文字として互換漢字が302文字規定された。その後、互換漢字は170文字追加されている。

1993年10月にCJK-JRGはIRG(Ideographic Rapporteur Group)に変更され、さらに多くの出典から漢字を追加する作業が行われた。IRGが追加したCJK統合漢字ブロックとしては漢字拡張A 6,582文字(Unicode 3.0で追加)、漢字拡張 B 42,711文字(同3.1で追加)、漢字拡張 C 4,149文字(同5.0で追加)、漢字拡張 D 222文字(同6.0で追加)、漢字拡張 E 5,765文字(同8.0で追加)、互換漢字補助542文字がある。漢字拡張B以降は第2面に追加されている。

Unicode 5.1.0からコードポイントと出典文字コードを対応つけるデータベース(UAX#38)が付属仕様として提供されている。

絵文字

2009年のUnicode 5.2で、ARIB(Association of Radio Industries and Businesses)が定義する114の絵文字がBMPに追加された。さらにUnicode 6.0で608の絵文字が第1面の記号エリア(U+1D000...U+1E7FF)に追加され、主要な日本の携帯端末用の絵文字が揃った。その後、Unicode7.0までに多数の絵文字が追加され、世界中のメディアの注目を集めた。もともと様々な記号類(天気記号など)はUnicodeでいくつかのブロックに定義されているので、絵文字の登録自体は不自然ではない。しかし、絵文字に関連して人種差別にならないように肌の色調を変えるための符号(U+1F3FB...U+1F3FF)が導入された。また、マルチカラー、アニメーションの可視化方法、絵文字デザインなどの複雑な問題がある。こうした利用方法に関してガイドライン(UTR#51)が作成されている。

[小林 徳滋 アンテナハウス株式会社 20151113]