半角濁点の編集上の扱いについて

結合文字ではない半角片仮名の濁点(U+FF9E)が、カーソル移動/削除で前の文字と一まとめになる現象とその理由について。IVSも同じ扱いだということです。
8
exeal(犬) @exeal_

ちなみに書記素の判定を、素の UAX #29 だけでやるとインド語群の nukta とかでコケる。

2011-03-27 21:44:18
vyv03354 @vyv03354

@monokano NFKCで「ド」になりますよ? 半角濁点はU+3099と互換等価です。U+309Bではありません。

2011-03-28 19:37:06
ものかの @monokano

あー! しまったぁあ! ご指摘猛烈感謝です!! RT @vyv03354: @monokano NFKCで「ド」になりますよ? 半角濁点はU+3099と互換等価です。U+309Bではありません。

2011-03-28 19:45:39
ものかの @monokano

『半角カナ2文字「ド」を全角1文字「ド」にするUnicode正規化は存在しない』は正しいです。NFKCでは『基底文字+結合文字の2文字「ド」』になります(Cなのにさらに合成されて全角1文字「ド」にならないのが面白いですね)。 @vyv03354 @query1000

2011-03-28 21:07:10
ıɥɔıɐʇ ɐʇɐqɐʍɐʞ @kawabata

「ド」は、NFKCでは「ド」になるはずです…あれ、Emacsのucs-normalizeはならないなぁ。バグかな。 RT @monokano:『半角カナ2文字「ド」を全角1文字「ド」にするUnicode正規化は存在しない』は正しいです。@vyv03354 @query1000

2011-03-28 23:08:10
ものかの @monokano

@kawabata: なるはず…と言われれば、はずですよねえ。でもOSXのAPIを利用した自作ソフトでは合成済み文字のド「U+30C9」にはなりません。バグ?w http://t.co/jHMqmYk @vyv03354 @query1000

2011-03-28 23:26:34
ものかの @monokano

【緩募】「ド」をNFKCで正規化すれば「FF84 FF9E > 30C8 3099 > 30C9」になりそうなものなのに、なぜか「30C8 3099」にはなるけど「30C9」にならない理由。

2011-03-28 23:40:17
UTF-8はBOMなしでって言ったよね? @moji_memo

@monokano なるはずですよね。なんでだろ。ここのテストページでは1文字の「ド」になります。 http://bit.ly/fqrenh @query1000 @kawabata @vyv03354

2011-03-28 23:46:24
ものかの @monokano

@moji_memo そのテストページ良いですね。ん〜ライブラリの違い? @query1000 @kawabata @vyv03354

2011-03-29 00:04:38
窮狸校正所 @mori_taksi

@mori_tacsi CotEditoでもやっぱりできませんね。ものかのさんのと同じライブラリなんでしょう。 @usamik26 http://twitpic.com/4ebaf9

2011-03-29 00:31:48
拡大
ものかの @monokano

@mori_tacsi こっちでも確認しました。CotEditorのNFKCも合成済み文字になってくれませんね〜

2011-03-29 00:38:16
小形克宏 @ogwata

@monokano UnicodeCheckerでは、U+FF84 と U+FF9EをNFKCすると U+30C9となりますね。 http://twitpic.com/4ebhub @kawabata @query1000 @vyv03354

2011-03-29 00:54:53
拡大
ıɥɔıɐʇ ɐʇɐqɐʍɐʞ @kawabata

ucs-normalizeのNFKCのバグは特定しました。が、これは一部 Unicode.org にも責がある気が… @monokano さんの使ったライブラリはApple謹製ですか?それともソースコード公開のフリーソフト?ひょっとしたら私と同じ場所でミスをしているかもしれない。

2011-03-29 01:10:33
ものかの @monokano

@kawabata Apple謹製のCFStringでやってます。

2011-03-29 01:17:06
ıɥɔıɐʇ ɐʇɐqɐʍɐʞ @kawabata

だとしたら、ちょっと内部動作は分からないんですね。私は高速化のための最適化処理で、一部ミスりました。問題なのは、Unicodeから提供されている適合性テストスイートではこのミスは検出できない点です。 RT @monokano Apple謹製のCFStringでやってます。

2011-03-29 01:22:05
ものかの @monokano

@kawabata 内部動作は分かりません。しかしどうやらCFStringのバグくさいですね。UnicodeChecker.appはNSStringでやっていて、そっちだと正常な結果になるようです。

2011-03-29 01:34:53