Adobe Illustratorの字形パレットが危険な理由

  • Adobe Illustrator(CS2およびCS3で確認)の字形パレットで「表示:現在の選択文字の異体字」としたとき、表示される情報が不吉だ。
  • 「夢」という字を入力して選択し、字形パレットで情報を見ると「U+68a6 SJIS:9aeb 異体字#0(aalt0)」と表示されている。が、「U+68a6」も「SJIS:9aeb」も「梦」であって「夢」ではない。Illustratorの字形パレットは「夢」を『「梦」の0番目の異体字』として扱っているということなのだろうが、一体何のためにそんな回りくどいことを?


  • たとえば、Unicode符号値と直接対応しておらず、'jp78'や'trad'などのタグでは表現することのできないCID=13934(ぐにゃっと曲がる「直」)などを'aalt'タグで表現するというのならわかるし、InDesignもそうしている。しかし「夢」は、このような微妙な例ではまったくない。


  • インプット・メソッドからIllustratorに入力した「夢」をコピーしてエディタなどにペーストすると、当然だが「夢」を渡すことができる。一方、字形パレットをダブルクリックして入力した「夢」をコピーしてエディタに渡すと、「梦」に化けてしまう。
  • 「夢」は決して特殊な例ではない。たとえば、JIS X 0208の漢字ブロックの先頭から(小塚明朝 Pro R 4.001で)「異体字のあるもの」を10文字拾って「亜唖逢穐悪芦鯵圧扱虻」とエディタで入力し、Illustratorにコピーし、1文字ずつ選択して「表示:現在の選択文字の異体字」とした字形パレットで、そのグリフ自体をダブルクリックしてみる。文字パレットでダブルクリックしたのは「そのグリフ自体」だから、見た目はまったく変わらず「亜唖逢穐悪芦鯵圧扱虻」だが、データは変化している。これをコピーしてエディタに戻すと、10文字中8文字が別の字に変わっている(下図。after欄のピンク地の文字が化けている)。Illustratorの「書き出し」メニューからテキストとして保存した場合も結果は同様である。


  • 類似の問題はInDesignにもあるが、InDesignは「もともとUnicode符号値と直接対応している文字でも、別の文字に'aalt'タグを付けて表現する」などという不思議なことまではしていない。Illustratorの字形パレットは、前回のエントリで言及した問題も含めて、現状では利用する際にかなり注意を要するものだと思う。