IVSと正規化について

基本的に時間順ですが、風間さんと小形さんのやりとりは最後にまとめています。
8
小形克宏 @ogwata

Java 6はIVSを無視(ignore)しない。「Java 6 でIVSを比較すると何が起こるか」yanok.net http://yanok.net/2011/01/java-6-ivs.html

2011-01-13 13:21:45
おこめ/つなもり @okomeki

@ogwata 正規化したらどうなるんでしょね…java.text.Normalizer

2011-01-13 13:29:12
小形克宏 @ogwata

IVSは正規結合クラスが「0」なので正規化されません。UAX#15“UNICODE NORMALIZATION FORMS” http://bit.ly/ewA64D RT @okomeki: @ogwata 正規化したらどうなるんでしょうね…

2011-01-13 14:15:32
小形克宏 @ogwata

IVSは正規結合クラスが「0」なので正規化されません。UAX#15“UNICODE NORMALIZATION FORMS” http://bit.ly/ewA64D RT @okomeki: @ogwata 正規化したらどうなるんでしょうね…

2011-01-13 14:15:32
UTF-8はBOMなしでって言ったよね? @moji_memo

@ogwata Unicode正規化の影響を受けないということとCanonical_Combining_Classが0だというのは別の話では?

2011-01-13 15:08:03
UTF-8はBOMなしでって言ったよね? @moji_memo

@ogwata Canonical_Combining_Classが0であることはstable code pointの必要条件だけど十分条件ではないってことかと。(Unicode正規化で置換されちゃう)互換漢字だってCanonical_Combining_Classは0ですよね。

2011-01-13 15:30:55
小形克宏 @ogwata

@moji_memo あ、なるほど。ではIVSはどんな条件により適用除外になるのですか?

2011-01-13 15:35:44
小形克宏 @ogwata

@moji_memo 最初てっきりComposition Exclusion Tableにあるのかと思ったのですが、ここにはIVSは入ってないんですね。

2011-01-13 15:51:40
UTF-8はBOMなしでって言ったよね? @moji_memo

@ogwata Composition Exclusion Tableに入っていると、Unicode正規化で置換されちゃいますよ。

2011-01-13 15:53:38
ものかの @monokano

@ogwata @moji_memo IVSがそもそもUnicode正規化の対象外なのだと思います。互換漢字を統合漢字にする合成除外とは違って、IVSを基底文字だけにするのならVSを削除しちゃえばいいだけですし。

2011-01-13 15:54:09
小形克宏 @ogwata

@monokano あ、そうだった、Composition(合成)ですねw

2011-01-13 15:56:50
小形克宏 @ogwata

@monokano その規定は、UAX#15 のどこになるのでしょう?

2011-01-13 15:57:48
小形克宏 @ogwata

@moji_memo いや、ちょっとまって、Composition Exclusion Table = 合成除外表ですよね? なんか勘違いしているのかな、おれ。

2011-01-13 15:59:55
UTF-8はBOMなしでって言ったよね? @moji_memo

@ogwata @monokano わざわざ例外規定を設けるまでもなく、単純にUnicode正規化で置換される条件を満たしていないってことだと思いますけど。

2011-01-13 16:02:07
ものかの @monokano

@moji_memo @ogwata そうです、「分解マッピングにVSがない」ってことです。

2011-01-13 16:03:45
ものかの @monokano

@moji_memo @ogwata ありゃ、「VSに分解マッピングがない」ですね。互換漢字が統合漢字になるのは分解マッピングでそう置換されるからです。合成除外は置換ではなく、いったん分解されたらもう合成されない(元に戻らない)ということですよね。

2011-01-13 16:25:06
小形克宏 @ogwata

@monokano ええと、UnicodeData.txtの第5カラム(左から6番目のカラム)が空白なので、IVSには分解マッピングがない、ということでしょうか?

2011-01-13 16:49:46
ものかの @monokano

「結合文字列の互換合成」ってあったっけ?

2011-01-13 17:53:06
ものかの @monokano

@moji_memo あざす! まさしく上から3番目が「結合文字列を互換合成」ですね! ちゃんと分解マッピングを積み重ねた結果になってます。IVSの互換合成はこれとは違って、基底文字を変えずにVSを削除するだけ…分解マッピングを使わない互換合成…びみょう〜w

2011-01-13 18:20:13
UTF-8はBOMなしでって言ったよね? @moji_memo

そんなわけで、「分解マッピングフィールドが空欄ならUnicode正規化で置換されない」というのも、常に真だとは限らないんですよね。

2011-01-13 18:05:44
師茂樹 MORO Shigeki @moroshigeki

@ogwata CETは、分解はしてもいいけど(合成を認めると互換性に問題が起きるから)合成してはいけない文字の表ですよ。

2011-01-13 18:25:03
ものかの @monokano

「IVSはUnicode正規化で互換合成されない。なぜなら、現在どの文字の分解マッピングにもVSが使われていないから」こんな感じかな〜

2011-01-13 19:21:42
小形克宏 @ogwata

なるほど、ちょっと前の方で確かに「rendering」の語がありますね。RT @kazuhiro_kazama: @ogwata 彼は勘違いしていると思います. http://d.hatena.ne.jp/kazama/20110113/p1

2011-01-13 17:02:06