IVSの実装は難しい (LibreOfficeを中心に)

IVS (Ideographic Variation Selector)は漢字の後ろに置く独立した不可視の文字なので、アプリがうまく扱ってくれないと意図せぬ文字化けを引き起こしてしまう懸念があります。最新のLibreOfficeやAdobe Illustratorでもまだ対策は完全ではないようです。
28
前へ 1 2 ・・ 5 次へ
狩野宏樹 @KAN0U

@0guma @monokano ルビの機能をいろいろ試していたらアプリが落ちました。いろいろバグが潜んでいそうな雰囲気がありますね。

2014-07-10 11:36:05
ものかの @monokano

@KAN0U @0guma 直そうとするとかなりローレベルなところで改修が必要になるのかもしれませんね…

2014-07-10 11:43:25
小熊善之 @0guma

@KAN0U @monokano 下手に「利用可能」だとうっかり使って大変なことになりそうですね……。

2014-07-10 11:43:29
狩野宏樹 @KAN0U

@0guma @monokano さすがにルビ付き文字列を置換したらルビは消える(当然か)。ルビ編集メニューで「対象文字列」が編集できてしまうのは地雷ですね。ルビ掛け範囲を狭めようと1文字削ると本文から消えてしまう。IVSをコピペで戻してやろうとしたらサロゲートがくっつきましたw

2014-07-10 12:00:33

ご意見ご感想など

Naruhiko Ogasawara @naru0ga

これはちゃんと仕様を理解してる人がバグ報告しないとつらいと思うなあ。報告しても直らない(直せない)可能性が高いので、詳しい人がパッチ書くのが一番なんだけどねぇ。むむむ togetter.com/li/690890#c153…

2014-07-10 12:50:25
Naruhiko Ogasawara @naru0ga

「実装してる人がユースケースを正しく理解していない可能性が高い」という指摘があったけど、ならなおのことバグを報告しても正しい実装になるとは限らないわけでして

2014-07-10 12:56:08
tani @turakitani

@naru0ga 入力とか表示とかだけなら簡単そうだけど、検索とか置換とかソートとかで、死にそうって想像してましたが、やっぱその通りなんすねー。ルビまでは想像してませんでしたが。他にもなんか地雷がありそう

2014-07-10 13:03:56
Naruhiko Ogasawara @naru0ga

@turakitani デスヨネー。削除一発で問題が出るのはどうよって気もしますが、ぼくも含めてだれもテストしてなかったんだからしかたがない。まだなんか隠れてそうですよね

2014-07-10 13:07:16
Yuta Hanayama @yutahanayama

@naru0ga 以前、仕事でIVS対応したことがありますが、検索がregexライブラリ任せで、ライブラリの中には手が出せず、検索の対応は断念した記憶が。検索用抽象レイヤー、実体レイヤー、描画用レイヤーの三層構造にして……とか色々考えたものの、恐ろしく保守性が悪く断念。

2014-07-10 13:28:59
Naruhiko Ogasawara @naru0ga

@yutahanayama そーですねー。素人的に考えても処理があちこちに分散しそうで非常にコワイところですねえ。あと既存のライブラリの対応も、確かに悩ましいですね

2014-07-10 13:30:39

四九六々(縦書き用) @496_

大変そう。IVSとかサロゲートペアあたりは最初から考えておかないと死ぬ可能性大だからね。

2014-07-10 12:36:24
四九六々(縦書き用) @496_

IVSの編集のあり方ってどこかで明確にされてたっけ? その辺が不足してるのが根本的な原因なのかな。

2014-07-10 12:43:12
小熊善之 @0guma

これは確かにありそう。「どう動くのが望ましいか」を明確化/明文化する方が先かも知れぬ。 QT @496_ IVSの編集のあり方ってどこかで明確にされてたっけ? その辺が不足してるのが根本的な原因なのかな。

2014-07-10 13:17:23
小熊善之 @0guma

国が行政システムで文字情報基盤を使うって言ってるんだから、IVS文字列の編集時の挙動についても統一したルールづくりは必要だよな。 ……とか書いておけばIPA辺り動いてくれんかな。(他人任せ)

2014-07-10 13:45:26

IVSに限らず結合文字は難しい

あかね @akane_neko

IVSのアプリケーションへの実装ってさ 二つの文字コードを読んだ後、一文字分もどって字形を確定する 検索された文字の後ろのコードまで読んでそこにVSがあるかどうか判断する 二文字分読んだ上で、その間にカーソル入れてよいかどうか判断する とか考えると、めちゃくちゃめんどくさそうだ

2014-07-10 14:06:00
小熊善之 @0guma

@akane_neko 文字にはSelectorがあるものと仮定して、IVS込みで一文字として扱うように設計して、IVSがない文字には「NULL IVS」がついているとでもすればいいんじゃないか?

2014-07-10 17:47:21
小熊善之 @0guma

どうせメモリは腐るほどあるんだ! 文字が全部オブジェクトだっていいじゃないか!

2014-07-10 17:48:02
あかね @akane_neko

@0guma いまから作るアプリならそれでよさそうなんですが、既存のアプリのIVS対応だとややこしそうだなと。(InDesignやIllustratorの実装っぷりをみるに…)

2014-07-10 17:49:09
小熊善之 @0guma

@akane_neko 一から作りなおそう!(白目)

2014-07-10 17:54:47
狩野宏樹 @KAN0U

@akane_neko 欧文の「f」1文字表示するにも次の文字がf,i,lでない(flやffiの先頭文字ではない)ことを確認しないといけませんし、ÁをAと́に分けて入力した時にはAの直後にカーソルは移動できないので、文字合成とか分解はIVS以前から普通に使われている基盤技術なんです。

2014-07-10 18:09:33
あかね @akane_neko

@KAN0U なるほど。それじゃIVSの実装でIllustratorやInDesignがどうにも不具合のある実装具合になっちゃってるのはどこらへんに原因があるんでしょう?IVSはここが難しいってのはどこですか?

2014-07-10 18:15:57
狩野宏樹 @KAN0U

@akane_neko IVSが厄介なのは「default ignorable」であることでしょう。ちゃんと置換されているのか、フォントが未対応なのでデフォルト字形のままなのか、間違ったシーケンス(漢字以外とか1文字に2個つくとか未登録シーケンスとか)が無視されているのか見えない

2014-07-10 18:31:00
前へ 1 2 ・・ 5 次へ