Unicode:文字と記号を符号化する国際標準
Unicode標準の概要。符号位置、UTF-8・UTF-16などの符号化方式、文字処理の機能、歴史、用途、正規化、双方向テキスト、絵文字、制御文字に関する実用上の課題を解説する。
Unicodeは、現代の文字体系および多くの歴史的な文字体系で用いられるすべての文字に加え、記号、句読点、制御コードにも一意の番号を割り当てる、広く採用されている標準である。Unicodeコンソーシアムが維持管理しており、文字という抽象的な概念(符号位置)と、その保存・送信方法(符号化方式)を区別する。公式情報および詳細な技術情報については、Unicodeコンソーシアムを参照。
画像ギャラリー
1 画像基本概念と構造
Unicodeの中核となるのは符号位置である。これは文字を識別する整数値で、しばしば16進数で表記される。符号位置は複数の面に編成され、最も一般的に使われる面は基本多言語面(BMP)である。割り当て済み符号位置の全範囲はBMPを超えており、さらに何千もの文字を扱える。符号化方式は、符号位置をバイト列へ対応付ける。代表的な方式には、ASCIIと互換性を持つ可変長・バイト指向のUTF-8、16ビットのコード単位を使用しBMP外の文字にはサロゲートペアを用いるUTF-16、固定長の32ビット単位を使うUTF-32がある。これらの方式により、Unicodeはファイル、ネットワークプロトコル、メモリ内で利用できる。
テキストの表示と挙動
読みやすいテキストを表示するには、符号位置を字形へ対応付けるだけでは足りない。複数の符号位置が結合して、一つの見かけ上の文字を形成することがある。たとえば、基底文字と一つ以上の結合文字(アクセントや発音区別符号)は、組み合わされた外観として表示される。利用者が通常一文字として扱う視覚上の単位は書記素クラスタであり、必ずしも一つの符号位置とは一致しない。Unicodeは、レイアウトや方向に影響を及ぼす不可視の制御文字も定義している。改行や方向上書きがその例であり、挙動と用途については制御文字を参照。アラビア語やヘブライ語とラテン文字が混在する場合のような双方向テキストでは、Unicode双方向アルゴリズムが視覚上の順序を決定する。
歴史と発展
Unicodeは、互いに異なる文字コードを統一し、多言語コンピューティングを妨げていた非互換性を防ぐプロジェクトとして始まった。時を経て国際標準ISO/IEC 10646と整合し、単一の文字レパートリーと符号位置の集合が広く用いられるようになった。この標準は、文字体系、歴史的文字、記号、絵文字などの現代的な追加項目を取り込むために発展してきた。Unicodeコンソーシアムは提案を調整し、新しい文字を割り当て、Unicode文字データベースおよび関連する技術報告書を公開している。
用途、例、重要性
Unicodeは国際化ソフトウェアの基盤であり、現代のウェブページ、オペレーティングシステム、プログラミング言語、データベースはUnicode互換の符号化を前提としている。UTF-8は、ASCII文字を単一バイトで符号化できる一方、他のすべての文字も表現できるため、ウェブ上で主流の符号化方式となっている。Unicodeは検索エンジンや整列アルゴリズムで使われる注釈も標準化しており、Unicode照合アルゴリズムは異なる文字体系にまたがって文字列を比較する方法を提供する。さらに、旧来の符号化では表現できなかった絵文字やその他の絵記号も扱える。ベンダーやフォントは、これらの符号位置を図形的な字形へ対応付ける(絵文字と記号)。
実用上の考慮事項と主な事実
- 正規化:見た目が同じテキストでも、合成済みまたは分解済みなど、複数の符号位置列を持ち得る。正規化形式(NFC、NFDなど)は、比較と検索の信頼性を高める。
- 長さと文字数:バイト、コード単位、符号位置を数える関数は、画面上の文字数を反映しないことがある。書記素を考慮した処理が必要になる場合が多い。
- セキュリティ:見た目が似た文字(ホモグリフ)は、ドメイン名や識別子で悪用される可能性がある。
- 私用領域:Unicodeはベンダー間の私的な取り決めのための範囲を予約しているが、そこにある符号位置に標準の意味はない。
- フォントと字形:Unicodeが定義するのは文字であり、字形の形状ではない。表示はフォントとシェーピングエンジンに依存する。
Unicodeを理解することは、開発者やコンテンツ制作者が多言語テキストを確実に扱う助けとなる。この標準は、新しい文字体系、記号、利用形態を対象に拡張を続ける一方で、プラットフォームと言語をまたいで一貫した符号化、照合、表示を実現する技術的な規則を提供している。
関連項目
著者
AlegsaOnline.com Unicode:文字と記号を符号化する国際標準 Leandro Alegsa
URL: https://ja.alegsaonline.com/art/102854