Manpages

名 前

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) を 返 す 。 プ ラ イ ベ ー ト エ リ ア 基 本 多 言 語 面 (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/unicode.txt で 行 わ れ て い る 。 文 献

*

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/">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/">http://www.unicode.org/reports/

*

Markus Kuhn: UNIX/Linux の た め の UTF−8 と Unicode の FAQ。

http://www.cl.cam.ac.uk/~mgk25/unicode.html">http://www.cl.cam.ac.uk/~mgk25/unicode.html

*

Bruno Haible: Unicode HOWTO.

http://www.tldp.org/HOWTO/Unicode-HOWTO.html">http://www.tldp.org/HOWTO/Unicode-HOWTO.html

関 連 項 目

locale(1), setlocale(3), charsets(7), utf−8(7)

こ の 文 書 に つ い て

こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。