[2] 互換性等価性は、 正準等価性に加え、全角・半角、上付き、書体などの差異も無視した文字の等価性です。 互換等価性を保ちつつできるだけ基本的な基底文字と結合文字の列に分解する操作を互換分解といいます。
HasCompat
(PRECIS)[8]
PRECIS
の文字カテゴリー
HasCompat
は、
互換性等価性を持つ文字を表します。
>>7
[9]
HasCompat
は、
toNFKC
を適用すると異なる値となる符号位置と定義されています。
>>7
[11]
Unicode正規化は破壊的です。
文字列を異なる意味の文字列に不可逆的に変換する操作です。
互換分解は
Unicode正規化の破壊性の主要な発生源です。
従って、利用者入力など事前にその性質を確定できない文字列に適用してはなりません。
[4] 正準等価性に対しては正準分解と正準結合がありますが、 互換性等価性に対しては互換分解しかありません。 互換分解によって失われる情報はいかなる意味でも後から復元できないからです。
[6]
Vertical_Orientation
が半角文字と全角文字で全然違っています。
そのため互換分解すると縦書きでの表示方法の情報も失われてしまいます。
[1]
HIRAGANA DIGRAPH YORI
を より
にするような分解はやりすぎではないか?
麿
を麻呂
に分解するのと何が違う?
[12] Unicode の互換分解は必ずしも一貫した形で定められていません。 同じような構造の文字であるにも関わらず、あるものには互換分解があり、 あるものには互換分解がない、ということがあります。
[16] 上付きのラテン文字が結合文字になっているようなケースには基本的に互換分解が定められていないようです。 結合文字の互換分解というものがあまり想定されていないのでしょうか。
[17] 比較的新しく追加された文字には互換分解が定められていないことが多いようです。 互換分解で表されるような文字は新規追加しづらい風潮がありそうで (追加しないとはっきり決まっているのかまでは不明)、 Unicode 開発初期だったら互換分解付きになっていそうなものでも、 互換分解されるような文字ではなく独立した新規の文字として必要なものだという理由付けと共に提案されがちなのかもしれません。
[13] 従って何らかの用途に互換分解が便利そうに見えても、 本当にそれで適切かは慎重に検討が必要です。