互換分解

互換分解

[2] 互換性等価性 (compatibility equivalence) は、 正準等価性に加え、全角半角上付き書体などの差異も無視した文字等価性です。 互換等価性を保ちつつできるだけ基本的な基底文字結合文字の列に分解する操作を互換分解 (compatibility decomposition) といいます。

仕様書

文字カテゴリー HasCompat (PRECIS)

[8] PRECIS文字カテゴリー HasCompat は、 互換性等価性を持つ文字を表します。 >>7

[9] HasCompat は、 toNFKC を適用すると異なる値となる符号位置と定義されています。 >>7

[10] IDNA2008Unstablecase folding と組み合わせた定義を使っています。

互換分解の破壊性

[11] Unicode正規化は破壊的です。 文字列を異なる意味の文字列に不可逆的に変換する操作です。 互換分解Unicode正規化の破壊性の主要な発生源です。 従って、利用者入力など事前にその性質を確定できない文字列に適用してはなりません。 Unicode正規化

[4] 正準等価性に対しては正準分解正準結合がありますが、 互換性等価性に対しては互換分解しかありません。 互換分解によって失われる情報はいかなる意味でも後から復元できないからです。

[6] Vertical_Orientation半角文字全角文字で全然違っています。 そのため互換分解すると縦書きでの表示方法の情報も失われてしまいます。

[1] HIRAGANA DIGRAPH YORIより にするような分解はやりすぎではないか? 麿麻呂に分解するのと何が違う?

互換分解の不完全性

[12] Unicode互換分解は必ずしも一貫した形で定められていません。 同じような構造の文字であるにも関わらず、あるものには互換分解があり、 あるものには互換分解がない、ということがあります。

[16] 上付きラテン文字結合文字になっているようなケースには基本的に互換分解が定められていないようです。 結合文字互換分解というものがあまり想定されていないのでしょうか。

[17] 比較的新しく追加された文字には互換分解が定められていないことが多いようです。 互換分解で表されるような文字は新規追加しづらい風潮がありそうで (追加しないとはっきり決まっているのかまでは不明)、 Unicode 開発初期だったら互換分解付きになっていそうなものでも、 互換分解されるような文字ではなく独立した新規の文字として必要なものだという理由付けと共に提案されがちなのかもしれません。

[13] 従って何らかの用途に互換分解が便利そうに見えても、 本当にそれで適切かは慎重に検討が必要です。

[15] 互換分解の結果の文字列中に更に正準分解できる文字が含まれることがあります。

[14] 関連: 丸付き文字, , 発音区別符付き仮名

関連

[3] 互換分解NFKCNFKD で使われています。

メモ