Provided by: manpages-ja_0.5.0.0.20221215+dfsg-1_all
名前
unicode - 汎用文字集合
説明
国際規格 ISO 10646 は汎用文字集合 (Universal Character Set (UCS)) を定義している。 UCS は 他規格の文字集合の文字を全て含んでいる。 さらに、 「双方向の互換性」("round-trip compatibility") を保証する。 つまり、他の符号から UCS に変換しさらに元の符号に変換したとし ても、 何の情報も失なわれないように変換テーブルを作成することができる。 UCS は現実的に知られている全ての言語を表現するのに必要な文字を含んでいる。 これにはラテン 文字、ギリシャ文字、キリル文字、ヘブライ文字、アラビア文字、 アルメニア文字、グルジア文字 だけでなく、中国・日本・韓国で使われている漢字、 さらには、平仮名、片仮名、ハングル文字、 デーヴァナーガリー文字、ベンガル文字、グルムキー文字、グジャラート文字、 オリヤー文字、タ ミール文字、テルグ文字、カナラ文字、マラヤーラム文字、 タイ文字、ラオス文字、クメール文 字、ボポモフォ文字 (注音字母)、 チベット文字、ルーン文字、エチオピア文字、カナダ音節文字、 チェロキー文字、モンゴル文字、 オガム文字、ミャンマー文字、シンハラ文字、 ターナ文字、イ (彝) 文字などが含まれる。 まだカバーされていない文字に付いても、 コンピュータで使用するた めに どのようなエンコードがもっとも良いかという研究が進められており、 最終的には追加される だろう。 ヒエログリフや歴史的ないろいろなインド=ヨーロッパ言語だけでなく、 テングワール文 字、キアス文字、クリンゴン文字などの人工的な言語も選ばれている。 UCS は、これらの文字に加 えて、TeX, PostScript, APL, MS-DOS, MS-Windows, Macintosh, OCR フォント、数多くのワードプ ロセッサーや 出版システム、などが提供する 図形記号・印字記号・数学記号・科学記号などの多く を含むようになった。 UCS 規格 (ISO 10646) は 31 ビットの文字集合アーキテクチャーを記述しており、 128 個の 24 ビット 群 (group) から構成されている。 各群は 256 個の 16 ビット 面 (plane) に分割されてお り、 各文字は 256 個の 8 ビット 区 (row) の 256 点 (column) の中に位置する。 この規格の Part 1 (ISO 10646-1) では、 最初の 65534 個のコード位置 (0x0000 〜 0xfffd) を定義してい る。 これは第 0 群の第 0 面である 基本多言語面 (Basic Multilingual Plane (BMP)) を構成す る。 この規格の Part 2 (ISO 10646-2) では、第 0 群の BMP の外部である 0x10000 〜 0x10ffff の範囲にある 補助面 (supplementary planes) に文字を追加した。 この規格では 0x10ffff を越え た位置に文字を追加する予定はないので、 予想できる将来においては、 全コード空間のうちグルー プ 0 の一部分は実際には使われることはない。 BMP には他の文字集合で一般に使われる全ての文字 が含まれている。 ISO 10646-2 で追加された補助面は、 特定の科学分野・辞書出版・印刷産業・高 次プロトコル・ 何かのファンの間などで使われる特殊な文字だけをカバーする。 UCS 文字を 2 バイトのワードで表現するのが UCS-2 形式である (BMP 文字のみ)。 また、UCS-4 で は文字を 4 バイトのワードで表現する。 さらに、ASCII を処理するソフトウェアへの下位互換のた めに UTF-8 エンコード形式がある。 また、0x10ffff までの非 BMP 文字を扱う UCS-2 対応ソフト ウェアとの互換のために UTF-16 エンコード形式がある。 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-1 は 以下の三段階の UCS の 実装レベル を指定している。 Level 1 合成文字とハングル・ジャモ文字 (いろいろな韓国・朝鮮文字の符号化。 この符号化で は、ハングル音節のグリフが 3 つまたは 2 つの母音・子音コードの組み合わせで符号化 される) はサポートしない。 Level 2 Level 1 と同様だが、合成文字を必須とする言語のための文字 (例えば、タイ文字・ラオ ス文字・ヘブライ文字・アラビア文字・ デーヴァナーガリー文字・マレヤーラム文字) は 使える。 Level 3 全ての UCS 文字をサポートする。 ユニコードコンソーシアム (Unicode Consortium) から発行された Unicode 3.0 Standard は、ISO 10646-1:2000 に記述された UCS Basic Multilingual Plane の level 3 実装と全く同じである。 Unicode 3.1 では ISO 10646-2 の補助面が追加されている。 Unicode Consortium から発行される Unicode 規格と技術レポートにより、 いろいろな文字の意味と推奨される使用法についての更なる 情報が得られる。 これらの規格書や技術レポートで、Unicode 文字列を 編集・並べ替え・比較・正 規化・変換・表示するための ガイドラインとアルゴリズムが分かる。 Linux における Unicode GNU/Linux では、C 言語の型 wchar_t は符号付き 32 ビット整数型である。 その値は C ライブラ リにより (すべてのロケールにおいて) 常に UCS コードの値として解釈される。 これを GNU C ラ イブラリがアプリケーションに知らせるための規約として、 定数 __STDC_ISO_10646__ を定義す る。 これは ISO C99 規格で指定されている。 ASCII 互換の UTF-8 マルチバイトエンコードでは、入出力ストリーム・端末通信・ プレーンテキス トファイル・ファイル名・環境変数において、 UCS/Unicode を ASCII のように使うことができる。 UTF-8 を文字エンコードとして使うことを 全てのアプリケーションに知らせるためには、 ("LANG=en_GB.UTF-8" のように) 環境変数を使って適切な ロケール (locale) を選択しなければな らない。 nl_langinfo(CODESET) 関数は選択されたエンコードの名前を返す。 内部的な wchar_t 文字や文字 列をシステム文字列エンコードに変換 (逆変換) するのに使われる wctomb(3) や mbsrtowcs(3)、さ らには wcwidth(3) といったライブラリ関数は、 文字出力でどれだけカーソルが進んだか (0–2) を 返す。 私用領域 (Private Use Areas; PUA) 基本多言語面 (Basic Multilingual Plane (BMP)) では、 0xe000 〜 0xf8ff の範囲は、規格ではい かなる文字も割り当てず、私的な使用のために予約されている。 Linux コミュニティでは、このプ ライベートエリアをさらに細かく分割して使用する。 0xe000 〜 0xefff の範囲はエンドユーザーが 個々に使用することができる。 0xf000 〜 0xf8ff の範囲は Linux Zone で全ての Linux ユーザー で共通に使用する。 Linux Zone への文字割り当ての登録は LANANA (The Linux Assigned Names And Numbers Authority) により管理されており、登録自体は Linux カーネルソースの Documentation/admin-guide/unicode.rst (Linux 4.10 より前は Documentation/unicode.txt) で行 われている。 この他に 2 つの面が私的な使用のために予約されている: 第 15 面 (追加私用領域 A; Supplementary Private Use Area-A, 0xf0000 〜 0xffffd の範囲) と第 16 面 (追加私用領域 B; Supplementary Private Use Area-B, 0x100000 〜 0x10fffd の範囲)。 文献 * Information technology — Universal Multiple-Octet Coded Character Set (UCS) — Part 1: Architecture and Basic Multilingual Plane. International Standard ISO/IEC 10646-1, International Organization for Standardization, Geneva, 2000. これは UCS の公式な仕様である。 ⟨http://www.iso.ch/⟩ から入手できる。 * The Unicode Standard, Version 3.0. The Unicode Consortium, Addison-Wesley, Reading, MA, 2000, ISBN 0-201-61633-5. * S. Harbison, G. Steele. C: A Reference Manual. Fourth edition, Prentice Hall, Englewood Cliffs, 1995, ISBN 0-13-326224-3. C プログラム言語についてのとても良い参考書である。 第四版では、ワイド文字やマルチバイト 文字エンコードを扱うための 多くの新しい C ライブラリ関数が 加えられた ISO C90 規格の 1994 Amendment 1 をカバーしている。 しかし、ワイド文字やマルチバイト文字のサポートを 更 に改善した ISO C99 は、まだカバーしていない。 * Unicode 技術レポート。 ⟨http://www.unicode.org/reports/⟩ * Markus Kuhn: UNIX/Linux のための UTF-8 と Unicode の FAQ。 ⟨http://www.cl.cam.ac.uk/~mgk25/unicode.html⟩ * Bruno Haible: Unicode HOWTO. ⟨http://www.tldp.org/HOWTO/Unicode-HOWTO.html⟩
関連項目
locale(1), setlocale(3), charsets(7), utf-8(7)
この文書について
この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの 説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。