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

IVS (Ideographic Variation Selector)は漢字の後ろに置く独立した不可視の文字なので、アプリがうまく扱ってくれないと意図せぬ文字化けを引き起こしてしまう懸念があります。最新のLibreOfficeやAdobe Illustratorでもまだ対策は完全ではないようです。
28
小熊善之 @0guma

本日の発見:LibreOffice WriterでIVS付き文字の後ろでBackSpaceを押すと、IVSだけが消える

2014-07-09 18:07:09
小熊善之 @0guma

@0guma 誰だこんな仕様で実装した奴は……。

2014-07-09 18:08:41
狩野宏樹 @KAN0U

@0guma むしろそれより、IVS付き漢字の後ろで←キーを押したときに漢字とIVSの間にカーソルが入ってしまわないか、IVSのついた漢字を文字列置換したときにIVSがちゃんと消えるか、ということのほうが気になりますね。(検索文字列にIVSがついていた時、マッチはどうすべきか…)

2014-07-09 18:37:19

Illustrator CC 2014の場合

ものかの @monokano

Illustrator CC 2014のIVS対応、確認漏れがあったので今確認。[編集>検索と置換...]で基底文字を検索すると「基底文字だけ選択される」ことが判明。その状態で削除するとVSが取り残され、直前に文字があればそこにVSが付く

2014-07-10 00:55:05
Chihiro Fukazawa @query1000

豪快!w RT @monokano: Illustrator CC 2014のIVS対応、確認漏れがあったので今確認。[編集>検索と置換...]で基底文字を検索すると「基底文字だけ選択される」ことが判明。その状態で削除するとVSが取り残され、直前に文字があればそこにVSが付く。

2014-07-10 01:16:35
ものかの @monokano

@query1000 @happyscript @koikekaisho イラレさんのIVS対応はかなり頑張ってるので、擁護したいところなんですけど…「基底文字だけ選択」と「基底文字+VSを選択」の見分けができないのでなおさらこわいですねー

2014-07-10 01:23:04
ものかの @monokano

@happyscript @query1000 @koikekaisho さらに発見。IVSの(表示されているグリフの)中央から右側をダブルクリックすると「VSだけ選択」。そして中央から左側をダブルクリックすると「条件によって基底文字だけ選択」。実装の難しさが垣間見えますねー

2014-07-10 01:45:54

LibreOfficeでの実験結果

小熊善之 @0guma

@KAN0U 適当な字で実験してみました。 ①カーソルはBaseCharacterとVSの間に入り込んだりはせず、←も→も普通に動く pic.twitter.com/MsHC8rM8c3

2014-07-10 09:53:36
拡大
小熊善之 @0guma

@KAN0U 実験環境はWindows 7 SP1 + LibreOffice 4.2.5.2。

2014-07-10 09:55:05
小熊善之 @0guma

@KAN0U ②検索について ②-1.BCを検索ボックスに入れると、BCのみとIVS付きの両方が検索文字としてヒットする ②-2.IVS付き文字を検索ボックスに入れると、検索ボックスの表示がおかしくなるが、検索では当該IVS付き文字のみがヒットする。

2014-07-10 09:56:47
小熊善之 @0guma

@KAN0U ③置換。 ③-1.BCのみを検索対象にして置換を実行すると、BCのみ/IVS付きの両方の字が置換された ③-2.IVS付き文字を検索対象にして置換を実行すると、IVS付きの字のみが置換された

2014-07-10 10:00:37
ものかの @monokano

@0guma @KAN0U こちらで試したところ、BCのみ検索で選択状態になったところを「deleteキーで削除するとBCのみ削除される」「置換ボタンで置換するとBCのみ置換される」…VSも一緒に選択されたり置換されたりといったことは見られませんでした。

2014-07-10 10:27:26
小熊善之 @0guma

@monokano @KAN0U これはVSだけが残ったってことですか?

2014-07-10 10:37:03
ものかの @monokano

@0guma @KAN0U ですです。残ったVSは直前の文字にくっつきます

2014-07-10 10:38:35
小熊善之 @0guma

@monokano @KAN0U なるほど。私は一文字でやってたから分らなかったのか。

2014-07-10 10:40:35
小熊善之 @0guma

@monokano @KAN0U あー、確かに、やってみたらそうなったわ。VSだけが取り残されて置換後の文字にくっついてる。

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

@monokano @KAN0U 最初にやったのはこんな感じだった。これだとVSが残ってるのかどうか分らなかった。 pic.twitter.com/BfroYE2GoX

2014-07-10 10:51:39
拡大
小熊善之 @0guma

@monokano @KAN0U そこでこんな風にしてみた。検索文字列も置換文字列もBC。すると見事にVSが残ってしまっているのがわかった。 pic.twitter.com/tiaQwrJGxP

2014-07-10 10:52:15
拡大
小熊善之 @0guma

@monokano @KAN0U 検索文字列がBCのみの場合は、BCの部分にしかマッチさせず、VSは取り残されてしまうのがLibreOfficeの仕様ということか。

2014-07-10 10:54:19
ものかの @monokano

@0guma @KAN0U 「IVSを常に1文字扱いする実装」は、めちゃくちゃ難しいんでしょうね~

2014-07-10 10:58:39
小熊善之 @0guma

@monokano @KAN0U 確かに非常に面倒くさそうだけど、これは単に実装側がきちんとユースケースを把握していなかったんじゃないかという気がする……。

2014-07-10 11:03:18
狩野宏樹 @KAN0U

@0guma @monokano Mac版(4.2.5.2)でも「文蓮󠄀文蓮󠄁」の「蓮」を空文字列に置換すると「文󠄀文󠄁」になりました。ルビをつけるとひどいことになりますpic.twitter.com/72fMfK1VbF

2014-07-10 11:13:01
拡大
1 ・・ 5 次へ