TeX: utf/otf package and dvipdfmx

(Japanese only; this topic talks about the problem that the dvipdfmx causes an error if a target tex source contains characters which cannot be coded as MS932 (a.k.a. Shift_JIS) )

年末に書店へ行ったら、奥村晴彦著「[改訂第4版]LaTeX2e美文書作成入門」が並べてあったので、買ってきました。第2版から買い続けているものの、未だに細かいところでアップデートが行われているので、買っておいて損はないと思います。

今回の改版は、私の感じたところでは、PDF関係やUnicode関係が主な変更点だと思います。
(大学院時代に Macヒラギノを埋め込んで「すげーきれいだー」とか悦に入ってたのを思い出す)

残念ながら、今現在でも「utf/otf パッケージとdvipdfm(x) を使って、 Unicode でしか表現できない文字を PDF 出力する」のは簡単ではないようです。少なくともこの「美文書作成入門」のCD-ROMから単純にインストールしただけでは PDF 出力できません(dvipdfmxがエラーを吐く)。以下の問題があります。
(「美文書作成入門」から Windows XP 環境にインストールした場合)

  1. dvipdfmxに、Unicode 用のフォントエンコーディングファイルがない
  2. dvipdfmxのフォントマップ(map)には、Unicode 文字列を表現するためのフォントが "KozMinPro-Regular-Acro.otf" と指定されているが、このフォントは TEXMF ディレクトリにインストールされない

まず (1) の問題に対処します。
(以下の例は、すべてのソフトウェアをデフォルト位置にインストールした場合の例です。インストール位置を変更している場合は読み替えてください)

対処方法 (1)

Adobe Reader 付属の CMap ファイルは再配布可能ということなので、コピーしてもライセンス上の問題は発生しないと思います。

続いて (2) ですが、こちらは二つの対処法があります。おすすめは「フォントを埋め込まない方法」です。理由はライセンス上の問題が発生しにくいことと、できあがった PDF ファイルが軽くなることです。

対処方法 (2a) フォントを埋め込まないように map ファイルを作る

  • リュウミンライトと中ゴシックBBB を指定した map ファイル(TeX Wiki の dvipdfm 向けフォント埋め込みなしサンプル)を c:\usr\local\share\texmf-local\fonts\map\dvipdfm\local\cid-x-local.map として保存する。
  • 以下のいずれかの方法をとる

    • dvipdfmx 実行時に、毎回 dvipdfmx -f cid-x-local.map foo.tex と指定する
    • C:\usr\local\share\texmf\dvipdfm\config\dvipdfmx.cfg の最後に "f cid-x-local.map" という行を追加する

対処方法 (2b) フォントを texmf ディレクトリに用意する

  1. Adobe Reader 8をインストールする。(脆弱性が発見されているので Adobe Reader 7 はダメ!
  2. C:\Program Files\Adobe\Acrobat 7.0\Resource\CIDFont の中身を C:\usr\local\share\texmf-local\fonts\opentype 以下にコピー(もしくはシンボリックリンク)する。

    • fonts ディレクトリ以下はデフォルトでは存在しないので、ディレクトリを作っておく。
    • そのときファイル名は"KozMinPro-Regular-Acro.otf" のように指定する(このファイル名は dvipdfmx を動かしたときに出るエラーから見つけてもよいし、C:\usr\local\share\texmf\fonts\map\dvipdfm\base\cid-x.map の記述を直接見てもよい)。

これで小塚明朝を埋め込んだ PDF を dvipdfmx を使って生成できます。ただし、Adobe Reader 付属のフォントは埋め込み用途を想定していないとのことなので(参考)、実用上は、ライセンス的に問題のないフォント(Mac OS X にプリインストールのヒラギノなど)を埋め込み用に使う必要がありそうです。