GSUBルックアップの参照順

  • 複数のGSUBフィーチャを同時に適用したときに(あるいは複数のプロセスを有するGSUBフィーチャを適用したときに)グリフを置換していく順序は、フォント内部のルックアップ・インデックスで定義されている。下図は、欧文フォント(Minion Pro)の例。


  • 欧文フォントのそれは、見るからにややこしい調整をしているかんじだが、日本語フォントの場合、たいていは単純にフィーチャ・タグのアルファベット順となっている。下図は、ヒラギノProN*1


  • このルックアップの参照順は、置換結果にどのような影響をおよぼすのだろう。というわけで、クイズ。InDesignで下図のような等幅半角字形(hwid)、等幅三分字形(twid)、等幅四分字形(qwid)が混在した文字列(フォントは小塚Pr6N)を全選択し、文字パネルメニューの「OpenType機能」で欧文イタリック(ital)と上付き文字(sups)の両方にチェックを付けたらどうなる?


  • 正解は、下図のとおり。当てた人がいたらすごいが、当たるわけがないと思う。


  • 小塚Pr6Nでは、グリフが置換される際のGSUBルックアップの参照順はアルファベット順なので、hwidはitalとsupsよりも前に、twidはitalとsupsよりも後に、qwidはitalの後・supsの前に参照される。その結果、どんな順序でグリフが置き換えられていくのかを示したのが、下図。hwid、twid、qwidは目立つように赤字にした。グレーの矢印は、順番の影響などによって(直前のグリフのCIDによって)フィーチャが効いていない箇所*2


  • この結果のうちどれがベターなのかはよくわからないが、どれかに揃っていたほうがわかりやすいんじゃないかとは思う。

*1:fracの行の意味が気になる人がいるかもしないが、今回はこの部分には深入りしない。大ざっぱに言えば、ルックアップ7、ルックアップ8の順に参照され、ルックアップ6はルックアップ8から間接的に参照されるということ(だと思う)。

*2:「2」の例と「4」の例における最後のsupsの効きかたの違いは、順番の影響ではなくルックアップの内容によるもの(supsテーブルのターゲットに等幅半角字形は含まれているが等幅四分字形は含まれていない)。