Adobe Illustrator CS2のグリフ置換の問題(総論)

'jp83'タグ用のグリフ集合は229文字からなるが、このなかに(「松」と「枩」のように)異体字のペアが存在する場合、Illustrator CS2は'jp83'タグを適用された文字を、「その異体字のほうのJIS83字形」に置換してしまうようだ。

  • この記述は間違いではないが、事態の一部しか言い当てていない。より包括的に言うと、「Illustrator CS2では、あるフィーチャー・タグ'xxxx'用のグリフを含む『全異体字(aalt)』グループ内の文字に'xxxx'タグを適用すると、'xxxx'タグの影響を受けないはずの文字まで'xxxx'グリフに置換される」というようなことになっているようだ。という説明ではあまりにもわかりにくいので、以下、例を挙げてみる。
  • たとえばウマヤという文字には、文字コードのレベルでは「厩」と「廐」と「廏」の3種類がある。Adobe-Japan1-6は9種類のウマヤ・グリフを含み、それぞれが文字コードにぶら下がる構造となっている(下図)。これら9種類のグリフが「ウマヤの全異体字(aalt)グループ」を構成している。


  • 漢字のグリフ置換にかかわるフィーチャー・タグは、すべて「文字コード」のレベルにおいて適用される。「厩(U+53A9)」「廐(U+5ED0)」「廏(U+5ECF)」のうち、'jp83'タグによってCID=13412に置換されるべきなのは、言うまでもなく「厩(U+53A9)」のみである。
  • が、Illustrator CS2では、「厩(U+53A9)」だけでなく「廐(U+5ED0)」や「廏(U+5ECF)」まで、'jp83'タグを適用するとCID=13412に置換されてしまう。したがって'jp83'タグに話を限定しても、このバグの影響を受ける文字は、昨日のエントリで挙げた5組10文字にとどまらない。件の10文字は、「2種類の異体字が'jp83'タグ用のグリフ集合に属して相互に影響を受ける特殊なケース」と考えるべきだろう。
  • 例を挙げても一向にわかりやすくならなかったような気もするので、シンプルな結論めいたことを述べておくなら、Illustrator CS2では、漢字系のタグをテキスト全体に適用していけない。たとえば、拡張新字体を排除する目的でテキスト全体に「エキスパート字形」を適用したりすると、「注」が「註」になったり、「麺」が「麪」になったり、わけのわからないことになるだろう。
  • ちなみに、「付けなくてもいいタグを勝手に付ける」というIllustrator CS2の不思議な仕様が、このような不吉な事態の背景となっているのは疑いないと思うが、その話は機会があれば後日。