コンテンツにスキップ

Unicode正規化

出典: フリー百科事典『ウィキペディア(Wikipedia)』

これはこのページの過去の版です。Monokano (会話 | 投稿記録) による 2016年9月28日 (水) 21:10個人設定で未設定ならUTC)時点の版 (UCSの用語が混在して意味不明になっていたのをUnicodeの用語に統一した。)であり、現在の版とは大きく異なる場合があります。

Unicode > Unicode正規化

Unicode正規化(ユニコードせいきか、英語: Unicode normalization)とは、等価な文字や文字の並びを統一的な内部表現に変換することでテキストの比較を容易にする、テキスト正規化処理の一種である。一般に、正規化はテキストの文字列を検索や整列のために比較(照合、英語: collation)するときに重要である[1]

合成と分解

Unicodeの正規化手段の基礎は、文字の合成と分解という概念である。文字の合成とは、基底文字と結合文字の組み合わせによる結合文字列を、単一の符号位置である合成済み文字にする手続きである。たとえば、文字 n と結合文字 ~ の組み合わせを単独の ñ 文字に変換する、仮名文字と濁点の結合文字の組み合わせを単独の濁点つき仮名とするなど。分解はその逆で、合成済み文字を結合文字列にする。分解は単独の文字を別の単独の文字に変換することもある。

Unicodeは等価性と呼ばれるものに基づいて文字を合成・分解する。Unicodeには2種類の等価性がある。1つは正準(英語: Canonical)と呼ばれ、機能的に等しく視覚的にも識別不可能であるべき文字を識別する。もう1つは互換文字(英語: Compatibility Character)と呼ばれ、視覚的に異なり意味的にも異なるかもしれないものを識別する。詳細はUnicodeの等価性Unicodeの互換文字の記事を参照。

正規化形式

Unicode標準附属書 UAX#15 では正規化に関して4種類の正規化形式を定義している。

正規化形式の一覧
名称(英語) 日本語名称 説明
NFD
Normalization Form Canonical Decomposition
正規化形式D 文字は正準等価性によって分解される。
NFC
Normalization Form Canonical Composition
正規化形式C 文字は正準等価性によって分解され、再度合成される。結果として文字の並びが変換前と変わることもありうる。
NFKD
Normalization Form Compatibility Decomposition
正規化形式KD 文字は互換等価性によって分解される。
NFKC
Normalization Form Compatibility Composition
正規化形式KC 文字は互換等価性によって分解され、正準等価性によって再度合成される。

上記の手法はすべて、文字の並びが正規化前にすでに分解されている場合も含め、分解された文字の出現順序を標準化する。これらは文字数が変化しなくても、文字や文字の並びを等価な文字やその並びに置き換えることがある。これらは正規化に要求されている符号化の一貫性を達成するために行われる。

各種OSでの採用状況

  • OS XのファイルシステムHFS+ではNFDの変種が用いられる(U+2000 〜 U+2FFF、U+F900 〜 U+FAFF、U+2F800 〜 U+2FAFF は分解されない)。

用語の日本語訳

「合成列」「合成用文字」はUCS(ISO/IEC 10646)の日本語訳であるJIS X 0221で定義されている用語だが、Unicode正規化に用いるのは不適切である。UCSの規格文書のUnicode正規化形式の項では、Unicode標準を参照するのみに留めており、解説はされていない。それはUCSの用語体系でUnicode正規化を解説するのが不可能だからである。UCS由来の用語をUnicode正規化に持ち込むのは不用な混乱を招くので、厳に避けたい。

ここでの日本語表記は原則として Unicode Terminology English - Japanese にならっている。ただし、Combining Character Sequenceの日本語訳である「結合文字の並び」は適切とはいえない。Combining Character Sequenceは基底文字と結合文字の並びであって、結合文字のみが並んでいるわけではないからである。そこでここではあえて「結合文字列」と表記した。

脚注

  1. ^ Unicodeの照合仕様は、正規化形式仕様とは別に、Unicode Technical Standard #10 "Unicode Collation Algorithm"で定義される。

関連項目

外部リンク