その文字はなぜInDesignでロックされてしまうのか

  • InDesignでテキストを選択して書体を変更しようとしたとき、下図のような火星語のアラートが表示されることがある。選択範囲内に「変更後のフォントにはないグリフ」が使われていた場合、ロックがかかるのは納得できるが、「あるはずのグリフなのに書体が変更できない」ということも珍しくない。今回は、その原因について書いてみようと思う。


  • InDesignにおける'aalt'を利用したグリフ指定は、一言で言えば、「親字のUnicode値」プラス「異体字番号」でグリフを特定する仕組みである。
  • たとえば「ヒラギノ角ゴシック Pro W3」で「返」と入力して選択し、InDesignの字形パレットで「選択された文字の異体字を表示」とすると、下図のようになる。


  • この5つのグリフが「返」を含む'aalt'グループだが、このうちInDesignが「親字」として利用するのは直接Unicode値と対応している文字のみである。下図以降では、この「親字になれる文字」を水色地で示す。


  • 下図は親字以外をCID順に並べて異体字番号を振ったもの。この'aalt'グループには親字になれる文字が2つあるので、1つのグリフについて2種類の冗長な表現方法が存在することとなる。そして、InDesignには「1つの'aalt'グループ中に、直接Unicode値と対応している文字が複数あるとき、CID値が最も大きいものを親字にする」という不思議なルールがある。下図の例では、U+8FD4(CID=3622)よりもU+FA24(CID=18760)のほうがCID値が大きいので、こちらが親字として優先される。このルールに基づいて表現される子グリフが、下図黄色地。


  • というわけで、この'aalt'グループにおけるグリフ指定の内部的な表現を改めてまとめると、下図のようになる。各グリフの左側に記されているのが、字形パレットをダブルクリックしてグリフを入力したときの内部的な表現。各グリフ右側のグレーの文字は、可能だが例外的な状況でしか出現しない、潜在的な表現方法である。


  • 次に、「小塚ゴシック Pro EL」(4.002)で、これらのグリフについて見てみる。小塚ProはAdobe-Japan1-4フォントなので、上図の5つのグリフのうち下から2つは含んでいない。そして、残りの3つのグリフのうち、小塚Proでは(ヒラギノとの'aalt'テーブルの系統の違いにより)「返」を含む'aalt'グループのメンバーは2つだけ(下図水色地が親字で黄色地が子グリフ)で、CID=8632は孤立している(下図グレー地)。


  • 上図の3つのグリフについて、グリフ指定の内部的な表現を下図にまとめた。CID=8632には対応するUnicode値が(間接的にも)ないので、CID直接指定となる。


  • さて、「返の旧字体(二点しんにょう形)」の内部的な表現は、小塚Proでは「8FD4 aalt 1」だが、'aalt'グループの異なるヒラギノProでは、「8FD4 aalt 1」は別のグリフを指す。このため、小塚Proで「返の旧字体」を入力して書体をヒラギノProに変更すると文字化けする、というのがInDesign 2.0の動作だった(下図ピンク地が文字化け)。この動作は、CS以降のInDesignでも、オプションキーとコマンドキーを押しながら書体を変更(オーバーライド)すると再現する。以下、すべての図で細いほうが小塚Pro、太いほうがヒラギノPro。


  • 逆にヒラギノProから小塚Proへの書体変更では、下図のように(小塚Proには含まれていない)U+FA24を親字とするグリフが、InDesign 2.0ではゲタに化ける(下図)。CS以降での再現方法は同様。


  • CS以降のInDesignでは、このような「'aalt'テーブルの違いによる文字化け」への対策がなされている。これは、「親字は変更することなく、異体字番号を変更して調整する」というものであるようだ。下図では、いちばん下のグリフ(返の旧字体)で、小塚プロの「U+8FD4 aalt 1」が書体変更後には「U+8FD4 aalt 2」となっているのがポイント。このグリフを普通にヒラギノProで入力すれば「U+FA24 aalt 3」となるはず。ここで前述の「潜在的な表現方法」が使われている。


  • CS以降のInDesignにおける調整では、親字は変更されない。このため、文字化けを防ぐことには成功しているものの、本来は必要のないロックがかかって書体を変更できないという場合がしばしばある。
  • 下図における3つのグリフは、いずれも小塚Proに存在する。しかし「返」以外の2つのグリフでは、ヒラギノProの内部表現で親字となっているU+FA24が小塚Proには含まれず、したがって異体字番号のみによる調整では通用しない。このため、ヒラギノProから小塚Proに変更しようとするとロックされてしまう(仮にオーバーライドしても、InDesign 2.0と同様、ゲタに化けるだけ)。小塚Proでこのグリフを使うためには、あらかじめ書体を小塚Proとした上で入力しなければならない。


  • そのようなわけで、冒頭の図に掲げた金星語のアラートに遭遇した場合、言われた通りにオーバーライドしてもあまりいいことはないと思う。