Man page - unicode(7)

Packages contains this manual

Available languages:

en fr pt_BR es it pl cs ja ru ro zh_TW zh_CN de

Manual

UNICODE

名 前
説 明
合 成 文 字 (Combining characters)
実 装 レ ベ ル
Linux に お け る Unicode
私 用 領 域 (Private Use Areas; PUA)
文 献
関 連 項 目
こ の 文 書 に つ い て

名 前

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/ に 書 か れ て い る 。