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』対応」という要素が加わり、三重に呪われた事態となるのだが、その話は近いうちに別のエントリで。
- 今回のエントリは、以前に「InDesignにおける引用符の謎の挙動についての文字コード的なまとめ」で書いたことについて、より一般的な視点から考えてみたという側面もあるので、興味のある方はそちらも参照していただきたい。