UNICODE(7)

名前
Unicode - 統一された 16 ビットスーパー文字集合

説明
国際規格 ISO 10646 は 汎用文字集合(Universal Character Set (UCS)) を定義している。 UCS は他規格のの文字集合の文字を全て含んでいる。さらに、 双方向の互換性(round-trip compatibility) を保証する。例えば他の符号から UCS に変換しさらに元の符号に変換したとしても何の情報も失なわれないように 変換テーブルを作成することができる。 UCS は知られている全ての言語を表現するのに必要な文字を含んんでいる。 これにはギリシャ文字、キリル文字、ヘブライ文字、アラビア文字、 アメリカ文字(?)、グレゴリオ文字(?)、漢字、平仮名、片仮名、ハングル、 デーヴァナーガリー、ベンガル文字、グルムキー文字、グジャラート文字、 オリヤー文字、タミール文字、テルグ文字、カナラ文字、マラヤーラム文字、 タイ文字、ラオ文字、ボポモフォ文字(?)、などが含まれる。 さらに チベット文字、クメール文字、ルーン文字、エチオピア文字、 ヒエログリフ、インド=ヨーロッパ語族の亜種、などの多くを含めるように 作業が進められている。1993 に規格が発行された時には、これら多くの 文字をどように符号化するのが最良か明確になっていなかった。さらに、 これらの文字に加えて、TeX, PostScript, MS-DOS, Macintosh, Videotext, OCR, など、多くのワードプロセッサーなどが提供するような 図形記号、印字記号、数学記号、科学記号などの多くを含むようになった、 また特殊コードについても他の既存の文字集合規格との間で双方向の互換性を 保証する。 UCS 規格(ISO 10646) は 31ビットの文字集合アーキテクチャーを記述している。 一方で現在のところ最初の 65534 コード(0x0000 to 0xfffd)のみが割り当て られている。それは 基本多言語面(Basic Multilingual Plane (BMP)) と呼ばれている。そして特殊な学術目的の非常に風変りな文字 (例えばヒエログリフ)のみが 16ビット BMP の外に置かれている。 UCS 文字集合の 0x0000 から 0x007f は古典的な US-ASCII 文字集合の文字と同じである。また 0x0000 から 0x00ff の範囲では ISO 8859-1 Latin-1 文字集合の文字と同じである。

合成文字(COMBINING CHARACTERS)
UCS のいくつかのコード・ポイントは 合成文字(combining characters)に割り当てられている。 これらはタイプライターの移動しないアクセント・キーに似ている。 合成文字は直前の文字にアクセントのみを加える。 最も重要なアクセント付きの文字はそれ自身のコードを UCS に持っている、 一方で合成文字機構は全ての文字に発音区別符号やアクセントを加えることを 許している。合成文字は常にそれが修正する文字に続く。例えばドイツ語 の文字 A ウムラウト("Latin capital letter A with diaeresis")は UCS に前もって準備されたコード 0x00c4 でも、通常の A "Latin capital letter A" に合成文字の "combining diaeresis" を続けた 0x0041 0x0308 のどちらでも 表現することができる。

実装レベル
全てのシステムに合成文字のような進んだサポートを期待しているわでではない。 ISO 10646 は以下の三段階の UCS の実装レベルを指定している。

Level 1
    合成文字とハングル・ジャモ文字(さらに特殊で複雑な韓国語の符号化、 ハングルの音節を二つか三つの部分文字を組み合わせて符号化する)は サポートされていない。

Level 2
    Lebel 1 と同様だが、一部の活字や合成文字が可能となる。(例えば ヘブライ文字、アラビア文字、デーヴァナガーリ、ベンガル文字、 グルムキー文字、オリヤー文字、タミール文字、テルゴ文字、カナラ文字、 マレヤーラム文字、タイ文字、ラオ文字 など)。

Level 3
    全ての UCS 文字をサポートする。

ユニコード・コンソーシアム(Unicode Consortium)から発行された Unicode 1.1 standard は ISO 10646 に記述された UCS Basic Multilingual Plane の level 3 実装と全く同じである。Unicode 1.1 では ISO 10646 の定義にいくつかの意味的な定義を加えている。

LINUX における UNICODE
Linux において、現在のところ合成文字の複雑な実装を避けるため BMP の level 1 実装のみが使用できる。より高度な実装レベルは個別の ワード・プロセッサーに相応しく、一般的なシステム用の文字集合ではない。 C の型 wchar_t は Linux では符号無し 16 ビット整数型で、その値は UCS level 1 BMP コードとして表現される。 ロケール(locale)の設定で、そのシステムの使用する文字の符号化を指定する。 例えば UTF-8 や ISO 8859-1など。 wctomb, mbtowc, wprintf のようなライブラリ関数で内部の wchar_t 文字や文字列からシステムの文字に変換したり戻したりできる。

プライベート・エリア
BMP の 0xe000 から 0xf8ff の範囲は規格ではいかなる文字も割り当てず、 私的な使用のために予約されている。Linux コミュニティではこの プライベート・エリアをさらに細かく分割して使用する。 0xe000 から 0xefff の範囲はエンド・ユーザーが個々に使用することができる。 0xf000 から 0xf8ff の範囲は Linux Zone で全ての Linux ユーザーで 共通に使用する。Linux Zone への文字割り当ての登録は、現在 H. Peter Anvin <Peter.Anvin@linux.org>, Yggdrasil Computing, Inc. によって管理されている。Linux Zone にはコンソール・フォント・バッファー の文字に直接アクセスすることができるように、 Unicode に欠けているいくつかの DEC VT100 のグラフィック文字や その他、クリンゴン文字のようないくつかの進んだ文章で 使用される文字を含んでいる。

文献

*   Information technology - Universal Multiple-Octet Coded Character Set (UCS) - Part 1: Architecture and Basic Multilingual Plane. International Standard ISO 10646-1, International Organization for Standardization, Geneva, 1993. これは UCS の公式な仕様である。とっても官僚的で、とっても厚くて、とっても高価である。 注文する場合には www.iso.ch を参照すること。

*   The Unicode Standard - Worldwide Character Encoding Version 1.0. The Unicode Consortium, Addison-Wesley, Reading, MA, 1991. 既に Unicode 1.1.4 が入手可能である。1.0 からの変更点は ftp.unicode.org から入手可能である。Unicode 2.0 は 1996年に再び本として発行されるだろう。

*   S. Harbison, G. Steele. C - A Reference Manual. Fourth edition, Prentice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3. C プログラム言語についてのとても良い参考書である。第四版には 広い範囲の文字集合を扱うための多くの新しい C ライブラリ関数が 加えられた ISO C 規格(ISO/IEC 9899:1990) の 1994 Amendment 1 についてもカバーしている。

バグ
このマニュアル・ページが書かれた時点で Linux の libc の UCS のサポートは完成からほど遠い。

著者
Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de>

関連項目
utf-8(7)