CGJ

U+034F COMBINING GRAPHEME JOINER

仕様書

構文

[22] 基底文字の後に任意の個数使えるようです。 連続して挿入したり、 結合文字の連続の最初や最後に挿入したりすることも、 禁止はされていません。 (意味があるかどうかはまた別。)

文脈

[5] U+034F COMBINING GRAPHEME JOINER (CGJ) は、 言語依存 (sensitive) 照合検索のため、 隣接文字照合に関与するべく使うものです。 >>4

[6] CGJ は、 通常正準的に等価文字列を区別するためにも使います。 >>4

[13] Unicode Collation Algorithmcollation weighting の適用前に正規化するため、 その時点で結合文字の順序を入れ替えてしまいます。 CGJcollation key weighting では通常無視されるのですが、 順序の入れ替えを抑制するので、 結合文字に関する secondary key weight の順序に影響が出ます。 これによって、 CGJ結合文字の重みを tailor することなしに検索整列文字列を違って扱わせることができます。 >>4

[14] UCA における contraction の形成を防ぐためにも使うことが出来ます。 例えばスロバキア語tailor した照合では ch を単一の単位として扱いますが、 <c, CGJ, h> は c の後に h として整列されることになります。 ドイツ語では ü を一般的な u-umlaut と解して <u, e> のように整列させるケースと、 稀な u-diaeresis と解して usecondary key weight がついたものとして整列させるケースがあり、 CGJ により区別できます。 CGJ結合文字の重みを tailor することなしに実現できます。 >>4

[15] CGJ は不可視でかつ Default_Ignorable_Code_Point なので、 他の処理では問題を起こさないはずとされています。 >>4

[11] ヘブライ文字のアクセントやマークは、 分析やテキスト表現のために順序が意味を持つことがあります。 typographical 的にも相互作用します。 にも関わらず結合クラスが等しいので、 正準再順序付けで入れ替えられてしまいます。 そこで CGJ で抑制できます。 具体的には <lamed, patah, hiriq, finalmem> と <lamed, hiriq, patah, finalmem> の区別のために <lamed, patah, CGJ, hiriq, finalmem> のように書きます。 >>4

[12] この説明の通りであるなら、それは正準結合クラスの欠陥なのでは... 正規化はデータを破壊する危険な操作ということです。

[1] 通常結合文字二重ダイアクリティカルマークはかなり外側に表示されます。 その他のダイアクリティカルマークと併用しようとしても、 内側に表示されてしまいます。 二重ダイアクリティカルマークに対してダイアクリティカルマークを表示させたいとき、 CGJ が使えます。 >>164 結合文字

[2] U+0075 U+0361 U+0301 U+0069 は、 uiu の上に ' がつき、 それと i の2文字が で覆われます。

[3] U+0075 U+0361 U+034F U+0301 U+0069 とすると、 ui の2文字が で覆われ、その上の中央に ' がつきます。 >>164

[16] どうにも1つの文字に機能を盛りすぎのように見えますし、 UCA での用例は特定のアルゴリズムの内部挙動の制御のためだけに1つの文字を割り当てるという贅沢な感もあります。

処理

[7] CGJ は、 General_Category = Mn, 正準結合クラス = 0結合文字であって、 format control character ではありません。 >>4

[8] 正準結合クラス 0 のため、 正準再順序付けによって CGJ をまたいだ結合文字の順序変更は行われません。 >>4 つまり通常なら NFC などの正規化で整列されてしまう結合文字の順序を維持したい時に使うことが出来ます。

[10] 従って CGJ は、 例外的な処理またはレンダリングのために通常なら区別されない結合文字の順序を区別したいとき、 使うことができます。 >>4

[17] UCA において CGJ を含む列に違う重みを持たせるよう tailor する、 例えば <c, h> と <c, CGJ, h> で違う重みとすることができますが、 非推奨 (not recommended) です。 >>4

レンダリング

[9] CGJ は、 可視的なグリフを持ちませんし、 前後の文字に直接的な書式付け効果を与えません。 >>4

[18] 古い実装は、 CGJ で連結された複数の書記素クラスターを、 囲み結合文字の適用に関して1つの単位として扱います。 >>4 現在はこれは推奨されていません。 囲み結合文字

[19] 「ch」を囲んで丸付き記号にするような用途が想定されていたのでしょうか。 代替手段は提供されていないようです。

関連

[20] ZWJ とは違って続け字合字には影響しません。 >>4

[21] WORD JOINER とは違って改行には影響しません。 >>4

メモ

[23] UTC #181 properties feedback & recommendations - Google Docs - 24224-utc181-properties-recs.pdf, , https://www.unicode.org/L2/L2024/24224-utc181-properties-recs.pdf#page=19