[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]] 版) * 分類 除外される文字には4種類あります。 :[[用字系]]特有:通常特定用字系で優先形とされない[[合成済文字]]。 (これは [[UCD]] の情報からは計算できない。) :合成後の版:[[Unicode3.0]] 以後に追加された合成済文字。 :一人っ子:一文字だけの[[分解]]を持つ文字 >>2 :非開始子分解:非[[開始子]]から始まる分解を持つ合成済文字。 これらを除外しておかないと、 [[NFC]] や [[NFKC]] の結果が一意に定まらないことになってしまいます。 除外文字の一覧表は にあります。 [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[一人っ子分解]])。 要は[[重複符号化]]の下らない後始末です。 [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])