IVSの実装は難しい (LibreOfficeを中心に)
【改訂】 Unicodeの合成除外とHFS+の正規化 第2版 tama-san.com/?p=3336 誤った情報を修正し、あわせて全面的に見直しました。でもやっぱり分かりにくい…
2014-07-10 18:17:10@akane_neko @KAN0U Adobeのアプリはその基礎技術に完全対応できているわけではなくて、とくに結合文字列の実装にずっと問題を抱えていますよね(だからペースト時にとにかくNFCを適用しちゃう)
2014-07-10 18:23:52@KAN0U @monokano なるほど。お二人の話を総合すると「もともとそういった処理が苦手な上に」「IVSはその状態があってるのかどうか判断が難しい」ので実装がなかなかうまくいってない。ということですか…。
2014-07-10 18:40:04(IVS 実装する場合、2文字として扱うより、1つのグリフオブジェクトとして扱った方が良い気がするけど、後付けだと難しいんだろうなぁ)
2014-07-10 18:50:24@monokano @akane_neko Wordとかでは一旦結合したクラスターは一塊りになって途中にカーソルを入れるたぐいの操作ができなくなるんですが、Adobeアプリの場合、できてしまう場合があるんですね。IVSに 限らず、アイヌ語の仮名でもルビを振ると字間が空いてしまう。
2014-07-10 18:50:29@monokano @akane_neko 証拠写真。CS6/Win8です。テキストはU+30C8,U+309Aの繰り返しと改行。2行目は「ト」だけ選択してルビをつけた例。3行目は半濁点まで含めた2文字にルビをつけていますが同症状。 pic.twitter.com/HM01TQORtw
2014-07-10 18:58:34@KAN0U @monokano 今のところIVSの実装が一番うまくできてるのはWordですか?(アイヌ語の例、とかがサクッとでてくるのが、さすが狩野さんだわぁ…)
2014-07-10 19:02:09@akane_neko @monokano Wordもよく知りませんし比較対象のアプリもなおさら知らないので分かりません。(「ト゚」についてはJISX 0213がUnicodeに追加申請して認めてもらえなかった文字を選んでいるだけで、日本語の鼻濁音「か゚」が例でもよかったんですが
2014-07-10 19:13:19@akane_neko @KAN0U @monokano Wordも2010 on Windows 7にIVSぶちこむと……。 pic.twitter.com/idABPNIAdj
2014-07-10 20:12:29@akane_neko @KAN0U @monokano Wordpadだと……。 pic.twitter.com/uItbDldMZy
2014-07-10 20:13:28@akane_neko @KAN0U @monokano なぜかNotepadだと、こう。 pic.twitter.com/gnR6Td22GC
2014-07-10 20:14:06Unicodeにおける「1文字」の概念は規格本文の2.11節と、UAX#29 の "extended_grapheme_cluster" を参照。一応、正規表現も定義されている。
2014-07-11 12:52:41ずいぶん昔だけど、Emacsでカーソルの移動・挿入・削除の影響範囲としての「1文字」を決める際には、合成文字とかは無関係なコンソール上でも動くこと、IVSやインド系文字のOpenType等の有無を考慮して、中間吸収層として auto-composition-mode を導入した。
2014-07-11 12:56:19間違えた。Emacsの auto-composition-mode の導入はOpenTypeの出現より前だった。その後、OpenType対応がこれのお陰でスムーズになったのだった。中核は font-shape-gstring や、composition_reseat_it 関数。
2014-07-11 13:03:36昨日のIVSの話題で気になったんだけどICU Regular ExpressionsってIVS対応してるのかな(調べろよ自分
2014-07-11 13:16:16Illustrator CC 2014のIVS対応、確認漏れがあったので今確認。[編集>検索と置換...]で基底文字を検索すると「基底文字だけ選択される」ことが判明。その状態で削除するとVSが取り残され、直前に文字があればそこにVSが付く。
2014-07-10 00:55:05やっほー! “@monokano: Illustrator CC 2014のIVS対応、確認漏れがあったので今確認。[編集>検索と置換...]で基底文字を検索すると「基底文字だけ選択される」ことが判明。その状態で削除するとVSが取り残され、直前に文字があればそこにVSが付く。”
2014-07-14 00:52:08@moji_memo @JunTajima こういうところにも対応させるのは相当難しいんでしょうねえ。それに本当に完全対応したとしても、やっぱりこわい。
2014-07-14 02:17:37@JunTajima @monokano いやいや、IVSの理屈をちゃんと知っている人でも死んでしまうでしょうこれは。
2014-07-14 22:20:42@moji_memo @JunTajima おそらく現時点で最もIVS対応の完成度が高いNSTextViewの場合、「葛 葛󠄀 葛󠄁」(845B 845B+E0100 845B+E0101)を対象に「葛」(845B)を検索すると、検出されるのは1文字目の845Bだけです。(続
2014-07-14 22:50:05@moji_memo @JunTajima IVS対応としてはこれが理想であるものの、一方で「他の同じグリフで表示されている箇所が検出されない」という問題が起こってしまいます。IVS完全対応は問題がなくなることを意味しないんですよね。
2014-07-14 22:50:30