Unicodeは、世界中の文字をコンピューター上で統一的に扱うために定められた
文字コード規格です。
ISO/IEC 10646|ISO_IEC 10646(UCS)と密接に関連しており、ほぼ同義として扱われることもあります。
Unicodeは、単純計算でU+0000からU+10FFFFまでの1,114,112個の符号位置を持っています。
符号位置の割り当て状況
Unicode 5.0.0の時点では、これらの符号位置のうち102,012個(約9.2%)が実際に文字や記号に割り当てられています。さらに、137,468個(約12.3%)が私用文字として、2,048個が代用符号位置として予約されています。また、66個が非文字として指定され、残りの872,582個(約78.3%)は未割り当てとなっています。
割り当てられた符号位置の内訳は以下の通りです。
2,684個は特定のブロック内での割り当てのために予約
98,893個は
図形文字
435個は制御、整形、グリフ/文字の異体字選択用の特殊用途文字
文字の分類
Unicodeの文字は、さまざまな方法で分類できます。まず、すべての文字には「用字(スクリプト)」が割り当てられています。多くの文字は「Common」(複数の用字で共通)または「Inherited」(隣接する文字から用字を継承)という用字を持ちます。用字とは、文字だけでなく、その用字特有の句読点、
ダイアクリティカルマーク、その他の記号や数字を含む一貫した書記体系です。一つの用字は一つ以上の言語をサポートします。
また、文字は「ブロック」に割り当てられます。これらのブロックは通常、8の倍数の符号位置のグループであり、例えば128個や256個の符号位置で構成されます。すべての文字には、「一般カテゴリ」と「下位カテゴリ」も割り当てられています。一般カテゴリは、「字(letter)」、「マーク(mark)」、「数字(number)」、「句読点(punctuation)」、「記号(symbol)」、または「制御文字(control)」に分類されます。
面(Plane)
文字のブロックは、さらに「面(plane)」に割り当てられます。現在、ほとんどの文字は「
基本多言語面(Basic Multilingual Plane; BMP)」である第0面に割り当てられています。BMPは2オクテットで指定可能であり、従来のソフトウェアとの互換性を保つ上で重要です。BMPに含まれない文字は、通常、非常に特殊なものか、めったに使われないものです。
第0面(BMP): 基本的な文字や記号が収録されています。
第1面(SMP): 古代文字や人工文字など、BMPに入りきらない文字を収録しています。
第2面(SIP): BMPに入りきらない
漢字を収録しています。
第3面(TIP): SIPに入りきらない
漢字や、現在使用されない
漢字を収録しています。
第14面(SSP): 言語タグや
異体字セレクタなどの制御コードを収録しています。
第15面、第16面: 私用面です。
Unicodeには、実際に目に見える「
図形文字」と、表示されない「非
図形文字」があります。また、制御文字や書式文字として機能する文字も存在します。
その他の特殊用途文字
図形文字以外の特殊用途文字には、ゼロ幅の境界表示子、不可視の区切り文字、不可視の乗算記号、関数適用、そして各種の空白文字などがあります。
ゼロ幅の境界表示子
ソフトハイフン (U+00AD)
ワード接合子 (U+2060)
ゼロ幅接合子 (U+200D)
ゼロ幅非接合子 (U+200C)
ゼロ幅スペース (U+200B)
図形素結合子 (U+034F)
不可視の区切り文字
数学記号などで、空白や句読点の省略された文字間の区切りを提供します。(U+2063)
不可視の乗算記号と関数適用
数式で、演算を示すグリフを明示せずに乗算や関数適用を示すために使用します。
不可視の乗算記号 (U+2062)
関数適用 (U+2061)
空白文字
空白文字は、単語の区切りやテキストの整形に使われます。
Unicodeには、標準的なスペース (U+0020) の他にも、幅の異なる多くの空白文字が含まれています。
Space (U+0020)
En Quad (U+2000)
Em Quad (U+2001)
En Space (U+2002)
Em Space (U+2003)
Three-Per-Em Space (U+2004)
Four-Per-Em Space (U+2005)
Six-Per-Em Space (U+2006)
Figure Space (U+2007)
Punctuation Space (U+2008)
Thin Space (U+2009)
Hair Space (U+200A)
Mathematical Space (U+205F)
これらの空白文字のうち、
ASCII由来の空白以外は互換文字であり、テキストの意味内容ではなく、スタイルの制御に使われます。
改行を制御する文字
改行を制御する文字には、改行を抑制するものと、改行を促すものがあります。
ソフトハイフン (U+00AD)
改行しないハイフン (U+2011)
ノーブレークスペース (U+00A0)
狭い改行しないスペース (U+202F)
* ゼロ幅スペース (U+200B)
ホワイトスペース文字
Unicodeでは、特定の文字を「ホワイトスペース」と定義しています。これらの文字はプログラミング環境で無視され、単語やコードの区切りに使われます。制御文字 (U+0009 から U+000D および U+0085)、行区切り文字、段落区切り文字、基本空白文字などが含まれます。
私用文字
Unicodeには、10万個を超える私用領域の符号位置があり、個人や組織が独自の文字を割り当てることができます。
基本多言語面にはU+E000からU+F8FFの範囲、第15面と第16面は完全に私用領域です。例えば、
Appleは自社のロゴにU+F8FFを使用しています。
特殊な符号位置
Unicodeには、代用符号位置や非文字など、特殊な目的で使用される符号位置があります。
代用符号位置
U+D800からU+DBFFとU+DC00からU+DFFFまでの2,048個の符号位置は、サロゲートペア(代用対)を構成するために使用されます。これらの符号位置は文字そのものではなく、
基本多言語面外の文字を表現するために用いられます。
非文字
Unicodeは、決して文字が割り当てられないことが保証された「非文字」をいくつか予約しています。これらの符号位置は、ソフトウェア実装が内部的に自由に利用できます。しかし、実装間で交換されるテキストには含まれるべきではありません。例えば、U+FFFEはバイト順マーク(U+FEFF)とバイト順が逆であり、テキストの
エンディアンを検出するために使用されることがあります。
まとめ
Unicodeは、多岐にわたる文字や記号を統一的に扱うための複雑なシステムです。その構造を理解することで、より効率的な
文字コード処理や多言語対応を実現することができます。