* 仕様書

[REFS[
- [1] [CITE[The Unicode Standard, Version 13.0 - ch03.pdf]], [TIME[2020-03-09T17:53:34.000Z]], [TIME[2020-12-31T08:45:19.650Z]] <https://www.unicode.org/versions/latest/ch03.pdf#G50313>
]REFS]

* 結合クラス

[2] 
[[Unicode符号点]]は、
[DFN[[F[[RUBYB[[[[RUBY[結合][けつごう]]クラス][結合クラス]]][combining class]]]]]]
([[特性][文字特性]] [DFN[[CODE[Canonical_Combining_Class]]]], [DFN[[CODE[ccc]]]])
を持ちます。
[F[結合クラス]]は、
[[正準順序付けアルゴリズム]]で[[結合マーク]]の[[正準等価性]]の決定に使う
[ [N[0]], [N[254]] ] 
の[[数値]]です。
[SRC[>>1 D104]]

[3] 
[CODE[Canonical_Combining_Class]]
は、
[[UCD]]
の
[CODE[UnicodeData.txt]]
で定義されます。
[DFN[[CODE[DerivedCombiningClass.txt]]]]
にも収録されています。
[SRC[>>1 D104]]

[4] 
データファイルに明記されていないときの既定値は、
[N[0]]
です。
[SRC[>>1 D104]]

- [5] 
[CODE[ccc]]
が
[N[0]]
以外なのは、
[[結合マーク]]だけです。
[SRC[>>1 D104]]
-- [6] 
[CODE[ccc]]
が非 [N[0]]
のほとんどの[[結合マーク]]は、
[[nonspacing mark]]
です。
[SRC[>>1 D104]]
- [7] 
[[nonspacing mark]]
には、
[CODE[ccc]]
が非 [N[0]]
では''ない''ものもあります。
[SRC[>>1 D104]]
- [10] 
[CODE[ccc]] = [N[0]]
の[[結合文字]]には、
例えば
[CODE(charname)@en[CGJ]]
があります。


[REFS[
- [8] 
[CODE[Canonical_Combining_Class]] ごとの[[符号点]]の一覧
<https://chars.suikawiki.org/set#:~:text=$unicode:Canonical_Combining_Class:>
-- [9] 
[CODE[ccc]] = [N[0]]
の[[符号点]]の一覧
<https://chars.suikawiki.org/set/%24unicode%3ACanonical_Combining_Class%3A0>
]REFS]

-*-*-

[11] 
[DFN[[RUBYB[[RUBY[固定位置][こていいち]]クラス][fixed position class]]]]は、
[[結合クラス]]の[[部分集合]]で、
範囲
[ [N[10]], [N[199]] ]
の[[数値]]です。
[SRC[>>1 D105]]

[12] 
[[固定位置クラス]]は、
[[ヘブライ文字]]、
[[アラビア文字]]、
[[シリア文字]]、
[[テルグ文字]]、
[[タイ文字]]、
[[ラオス文字]]、
[[チベット文字]]の少数の[[結合マーク]]のみに適用され、
[[grapheme base]]
に対して固定された位置に出現するものを表しています。
適用対象となる[[結合文字]]には
[[Arabic vowel point]]
や
[[Indic matras]]
のような[[母音記号]]の一部が含まれますが、
すべてではありません。
[SRC[>>1 D105]]

[13] 
[[固定位置クラス]]は、
[[正規化形]]の正式な標準化に先立つ開発の初期段階に由来する歴史的遺物とされます。
[SRC[>>1 D105]]

-*-*-


[15] 
[CODE[ccc]]
は、元々、
[[typograph的相互作用]]を持つ
[[nonspacing mark]]
を同じ値でグループ化すべく定められました。
[CODE[ccc]]
を使って行われる
[[canonical ordering]]
は、
通常は、

- [16] [VAR[C1]] と [VAR[C2]] が[[typograph的相互作用]]するなら、
<[VAR[C1]], [VAR[C2]]>,
<[VAR[C2]], [VAR[C1]]>
は[[正準等価]]では''ない''
- [17] [VAR[C1]] と [VAR[C2]] が[[typograph的相互作用]]''しない''なら、
<[VAR[C1]], [VAR[C2]]>,
<[VAR[C2]], [VAR[C1]]>
は[[正準等価]]である

... となります。
ところが[[固定位置クラス]]の[[結合文字]]など、
一部には
[CODE[ccc]]
が違うのに[[typograph的相互作用]]するケースもあります。
[SRC[>>1]]

[18] 
それ故に
[CODE[ccc]]
が[[規定]]として使われるのは[[正準順序付けアルゴリズム]]だけです。
[SRC[>>1]]

[19] 
[CODE[ccc]]
は、
[[結合文字]]の[[typograph的相互作用]]については[[指針]]としてのみ扱う[RUBYB[べき][should]]です。
[SRC[>>1]]




* メモ

[14] ([TIME[2024-08-25T23:05:31.000Z]], [TIME[2025-01-18T12:28:32.636Z]])
<https://www.unicode.org/Public/16.0.0/ucd/extracted/DerivedCombiningClass.txt>