[1] [DFN[[RUBYB[合成除外表] [Composition Exclusion Table]]]]は、 [[正準分解]]可能な[[文字]]のうち、[[合成]] ([[初等合成]]) が行われないものの表です。 [[NFC]] や [[NFKC]] は[[分解]]の後に[[初頭合成]]を行いますが、ここで[[合成]]結果として採用しない[[文字]]の表がこの[[合成除外表]]です。 * 仕様書 - [5] [CITE@en-us[UAX #15: Unicode Normalization Forms]] ([TIME[2010-09-18 09:52:06 +09:00]] 版) * 分類 [6] [[合成除外表]]に含まれる[[文字]]は4種類に分類されます。 ** 用字系固有の合成除外文字 [7] [DFN[[RUBYB[用字系固有]@en[script-specific]]]]に分類される[[文字]]は、 [[正準分解]]できるものの、通常はその[[用字系]]の利用時に[[合成]]形は使わないものです。 [SRC[>>5]] [8] 例: [CODE(char)[[[U+0958]]]] [CODE(charname)@en[[[DEVANAGARI LETTER QA]]]] ([CODE(char)[[[क़]]]]) [SRC[>>5]] ** 合成版の後に追加された合成除外文字 [9] [DFN[[RUBYB[合成版後]@en[post composition version]]]]に分類される[[文字]]は、 [[合成版]]であるところの [[Unicode]] 3.0 よりも後に追加された[[正準分解]]できる[[文字]]です。 [SRC[>>5]] [10] 例: [CODE(char)[[[U+2ADC]]]] [CODE(charname)@en[[[FORKING]]]] ([CODE(char)[[[⫝̸]]]]) [SRC[>>5]] ** 一人っ子合成除外文字 [11] [DFN[[RUBY[一人っ子][シングルトン]@en[singleton]]]]に分類される[[文字]]は、 [[文字]]1つだけへの[[正準分解]]を持つ[[文字]]です。 [SRC[>>5]] [12] 例: [CODE(char)[[[U+2126]]]] [CODE(charname)@en[[[OHM SIGN]]]] ([CODE(char)[[[Ω]]]]) [SRC[>>5]] [2] [DFN[[RUBYB[一人っ子] [singleton]]]]というのはちょっとわかりにくいのですが、 [[UAX]] #15 には次のような例が挙げられています。 = [CODE(char)[[[U+212B]]]] ([CODE(char)[[[ANGSTROM SIGN]]]]) の正準分解は [CODE(char)[<[[U+0041]], [[U+00C5]]>]] ([CODE(char)[<[[LATIN CAPITAL LETTER A, COMBINING RING ABOVE]]>]]) である。 = [CODE(char)[[[U+00C5]]]] ([CODE(char)[[[LATIN CAPITAL LETTER A WITH RING ABOVE]]]]) の[[正準分解]]も [CODE(char)[]] である。 = つまり、 [CODE(char)[U+212B]] が [CODE(char)[U+00C5]] になってしまう ([DFN[一人っ子分解]])。 ;; [16] 要は[[重複符号化]]の下らない後始末です。 ** 非開始子分解の合成除外文字 [13] [DFN[[RUBYB[非開始子分解]@en[non-starter decompositions]]]]に分類される[[文字]]は、 [[正準分解]]で複数の[[文字]]に展開されるものであって、その[[文字]]自体が[[開始子]]で無いか、 または[[正準分解]]した最初の[[文字]]が[[開始子]]で無いものです。 [SRC[>>5]] [14] 例: [CODE(char)[[[U+0344]]]] [CODE(charname)@en[[[COMBINING GREEK DIALYTIKA TONOS]]]] ([CODE(char)[[[ ̈́]]]]) [SRC[>>5]] * メモ [15] これらを除外しておかないと、 [[NFC]] や [[NFKC]] の結果が一意に定まらないことになってしまいます。 除外文字の一覧表は にあります。 [3] [CITE[Normalization Corrigendum]] [[Unicode 3.0]] では本来表に含まれるべき [CODE(char)[[[U+FB1D]]]] [CODE(char)[[[HEBREW LETTER YOD WITH HIRIQ]]]] が抜けていたという失態をやらかし、 このような正誤表がでております。 ([[Unicode 3.1]] で修正されました。) 非互換変更はしないつもりだけど使用頻度は高くないし云々などという恥ずかしい言い訳をまたしておりますぞ。 懲りない連中ですこと。 ([[名無しさん]] [sage]) [4] [[正準XML]] などいくつかの正規化に関する規定を含んだ仕様がこの正誤表を参照しています。 ([[名無しさん]] [sage])