Adobe-Japan1-5全文字を出力した際右へのはみ出し

Adobe-Japan1-5全文字を出力した際右へのはみ出し

- DUYA AYUD の投稿
返信数: 3
otfが使えるようになったのでAdobe-Japan1-5全文字を奥村先生の美文書作成入門のように出力してみようと思いlongtable環境を用いて50個ずつ横に並べたところ、ところどころ謎の空白が入り表の右へはみ出てしまいました。しかし特にOverfullなどのエラーは出ないので原因がわかりません。
自分の出力したPDFでは9700,9750,12050の段が横に飛び出ております。

またdvipdfmxを実行するときに** WARNING ** CMap has higher supplement number than CIDFont: Ryumin-Light
** WARNING ** Some chracters may not be displayed or printed.
と出はしてますが自分では今回の件には無関係と判断しております。

原因がお分かりになる方は教えてください。
DUYA AYUD への返信

Re: Adobe-Japan1-5全文字を出力した際右へのはみ出し

- Z. R. の投稿
** WARNING ** CMap has higher supplement number than CIDFont: Ryumin-Light
** WARNING ** Some chracters may not be displayed or printed.

この警告は、ほとんど全ての場合に無害なのですが、今回のケースでは珍しく関係あるようです ;-)

(少し難しい話になります。)

(p)TeX での TFM (JFM も含む)に記載された字幅は、実際のフォントのものと一致させる必要があります。AJ1-5 のグリフ集合には固定幅(全角、半角、三分角、四分角)とプロポーショナル幅のものがありますが、OTF パッケージの和文フォント(otf-cjmr-h)においては、「固定幅のものは正しい字幅、プロポーショナル幅のものは(対応できないので)全角幅」になっています。

一方、PDF に記載されるフォントの字幅については、もしフォントの埋込を行ったのであれば、そのフォントの実際の字幅に一致するのですが、「Ryumin-Light」のような「名前を書いてフォント非埋込にする」指定の場合は、dvipdfmx はその「名前」に対応する字幅のテーブルを持っていてそれが用いられることになります。そして実はここで指定されている値も OTF パッケージと同じく「固定幅のものは正しい字幅、プロポーショナル幅のものは全角幅」という方針に従っています。これだと字幅の不整合は起こらないはずです。

ここで問題になるのは、「Ryumin-Light」は AJ1-0 にしか対応しないフォントである(と dvipdfmx が決めている)ことです。このため、Ryumin-Light の字幅テーブルには CID 8283 番を超えるグリフのデータがないので、結果的に、既定である全角幅とみなされます。幅がずれてしまうのはこれが原因です。そして、例の警告はこの現象が起こる可能性を注意するためのもののようです。

(要するに: OTF パッケージで dvipdfmx でのフォント設定を Ryumin-Light/GothicBBB-Medium に設定した状態では、三分幅/四分幅のグリフについては、変換後の PDF では正常な組版にならない ということです。)

以上のことより、対処法としては、名前を書いてフォント非埋込にする」フォントで、AJ1-5 以上に対応したものを指定することになります。現状の dvipdfmx だと「KozMinProVI-Regular」が「非埋込」の AJ1-6 対応フォントとして使えます。従って、cid-x.map 中の otf-cjmr-h の対応フォント指定を KozMinProVI-Regular に変更する(あるいは、文書のプレアンブルに

\AtBeginDvi{\special{pdf:mapline otf-cjmr-h Identity-H KozMinProVI-Regular}}

を指定する)と全てのグリフが正しい字幅で出力されることになります。

※ ただし、TeX システムから見える場所に本物の KozMinProVI-Regular.otf がある場合は、上記の設定はこれの埋込だと見なされてしまいます。この場合、別のグリフの字幅が化けることになります(理由を考えてみてください)。この理由で「KozMinProVI-Regular」が非埋込として使えない場合は、代わりに「KozMinPro-Regular」を使えばよいでしょう。これは AJ1-4 までの対応ですが、AJ1-5 の範囲では字幅の問題は起こらないようです。

Z. R. への返信

Re: Adobe-Japan1-5全文字を出力した際右へのはみ出し

- DUYA AYUD の投稿
丁寧なご説明をありがとうございます。
cid-x.mapのotf-cjmr-hの対応フォント指定をKozMinProVI-Regularに変更するという方法で無事出力できました。

今※以下の理由を考えてみてはいるのですが根本的に埋込と非埋込の違いがよくわかっていません。
KozMinProVI-Regularが持つ固有の字幅がTeXの指定と一致しない?とか安直なことを考えてみたりしていますが…
少なくとも自分はTeXシステム内にフォントは置いていません(初期から変更なし)しAdobeのフォルダをみてもKozMinPr6N-Regular.otfしか持っていないようです。

もう少し書籍を読んだりして考えてみます。

返信が遅くなり申し訳ありませんでした。