InDesignで引用符はなぜ呪われているのか

  • 前回のエントリでも触れたが、InDesignにはプロポーショナル(やイタリックや半角)の引用符を縦組みにするとグリフが正しく回転しないという、よく知られた問題が存在する(下図)。今回は、この問題について詳しく見てみようと思う。


  • InDesignは、「ある文字を縦組みの際に回転するかどうか」を、Unicodeの符号位置を基準として決定しているものと思われる。たとえば、U+0021 EXCLAMATION MARKなら回転するし、U+FF01 FULLWIDTH EXCLAMATION MARKなら回転しない(下図)。


  • だが、Unicodeの符号位置を基準とする方法は、ユーザによるグリフ置換が行われている場合には、うまく機能するとは限らない。たとえばU+0021 EXCLAMATION MARKに'fwid'タグを適用して全角グリフとした場合は、見た目は(置換なしの)U+FF01と同じCID+642であるにもかかわらず、親字の符号位置(U+0021)に従い、縦組みでは回転する(下図、黄色地)。


  • ただし上図は、かなり不自然な例ではある。U+0021を全角に置換した上で平仮名と組み合わせたり(黄色地)、U+FF01をプロポーショナルに置換した上で(置換なしの)ラテン文字と組み合わせたり(ピンク地)といったことを、普通はやらない。したがって感嘆符では、縦組みにおける回転は、あまり問題にならない。
  • 一方、引用符の場合、歴史的な事情により、Unicodeではプロポーショナルと全角を区別することができない。このため、たとえばリュウミンProでプロポーショナルの引用符が必要な場合、グリフ置換を利用せざるを得ず、「縦組みで回転しない」という問題が発生する(下図)。


  • Adobe-Japan1-5以降(正確にはAPGS以降)のフォントでは、引用符のUnicodeマッピングが変更された。リュウミンの場合、引用符はProでは全角、Pr5またはPr6ではプロポーショナルとなる(下図)。


  • この変更によって、AJ15以降のcmapを用いたフォント(モリサワフォントならPr5またはPr6)では、グリフ置換を行っていない「素」の状態でも、引用符の縦組みにおいて問題が顕在化するようになった(下図)。


  • ここまでのまとめ。InDesignにおける「縦組み回転問題」の根本的な原因は、Unicodeベースの(固定された)縦組み回転テーブルにある。問題が発生するのは引用符に限らないが、(UnicodeにFULLWIDTH文字の存在しない)引用符で顕在化しやすい。また、Pr5/Pr6フォントの引用符はcmapの変更を経ているため、以前のcmapを前提とした縦組み回転テーブルと相性が悪く、より問題が目立ちやすい。という意味で、二重に呪われている。
  • さらにシングル引用符では、「Unicodeの符号位置とCIDの『2対1』対応」という要素が加わり、三重に呪われた事態となるのだが、その話は近いうちに別のエントリで。