日本語フォントの埋め込み


ここで記述する方法は、updmapが使われ始めた頃の古い方法です。最新のTeXディストリビューションに含まれるupdmapにはフォント埋込の設定をするマップファイルの生成が簡単になっています。
MacTeXについては、こちらのページをご参照ください。



texのソースファイルをタイプセットするとdviファイルができます。dviファイルには表示や印刷される文字(アルファベット、日本語とも)は入っていません。それぞれのフォントの「大きさの情報」(tfm=tex font metricファイルにある)だけが入っていて、それを表示や印刷するとき、或いは、psファイルやpdfファイルに変換するときに、それぞれのアプリケーション(dvipsやdvipdfmxなどのdviware)が必要なフォントのデータを入れてプリンタに送ったり、ps/pdfファイルに変換します。
但し、日本語フォントについてはフォントの全てのデータを入れるわけでなくプリンタやOSが使っているフォントを出力の際に利用することがあります(デフォルトはそうです)。しかし、これでは文書を作ったパソコンと異なる環境でプレゼンや出力をすると期待通りの結果にならないこと(文字化けなど)が起こりますので、フォントを埋め込んでおくと安心です。
ここではMac OS Xを例にとり、dvipdfmxとdvipsで日本語フォントを埋め込むための設定法を解説します。日本語フォントはOS標準のヒラギノフォントを想定していますが、その他のtype-1やOpenTypeのPostscript Fontでも同様に出来るはずです。
pdfファイルにフォントが埋め込まれているかどうかは、Adobe Readerでそのファイルを開いて、「文書のプロパティ/フォント」で確かめることができます。

ここで紹介する方法の適用はあくまで自己責任でお願いします。作業中あるいはその後で不具合が生じても当方は一切責任を負いません。
/usr/local/share/texmfディレクトリ以下にある設定ファイルのみを扱いますので、それらのファイルの編集法を知らない方にはお薦めしません。おかしいと思ったら、texmfディレクトリを削除してTeX (pTeX)を再インストールしてください。


以下では、updmapを用いたdvips及びdvipdfmx用のmap fileの生成法を説明します。

updmapを使うと異なる複数のdviware用に一括してfont mapを作ることができます。以前は、それぞれのdviware毎に異なるフォーマットの設定ファイルを書く必要がありましたが、最近はupdmapで一括生成できます。お使いのシステムでupdmapが利用できるかどうかは実行ファイルである、/usr/local/bin/updmap /usr/local/bin/updmap-sys またはその設定ファイルである /usr/local/share/texmf/web2c/updmap.cfg があるかどうかでわかります。
updmapを利用しないシステムでの設定法はこちらを参照してください。


するべきことはタイプセットして作成されたdviファイルにある日本語の標準書体の明朝体(tfm名はrml)とゴシック体(gbm)をヒラギノフォントに置き換えるような設定に変更することです。但しpTeXのバージョンによっては設定ファイルの名称や場所が異なるかも知れませんので下記の設定項目のあるファイルを編集してください。

1. フォントファイルの確認
まず埋め込むフォントを /usr/local/share/texmf/fonts/ 以下のディレクトリに置きます。
井上氏のパッケージをインストールすると自動的に opentype というディレクトリが作られ、そこに以下のようなOS添付のフォント・ファイルへのシンボリック・リンクが置かれています。

HiraKakuPro-W3.otf -> /System/Library/Fonts/ヒラギノ角ゴ Pro W3.otf
HiraKakuPro-W6.otf -> /System/Library/Fonts/ヒラギノ角ゴ Pro W6.otf
HiraKakuStd-W8.otf -> /System/Library/Fonts/ヒラギノ角ゴ Std W8.otf
HiraMaruPro-W4.otf -> /System/Library/Fonts/ヒラギノ丸ゴ Pro W4.otf
HiraMinPro-W3.otf -> /System/Library/Fonts/ヒラギノ明朝 Pro W3.otf
HiraMinPro-W6.otf -> /System/Library/Fonts/ヒラギノ明朝 Pro W6.otf

他のパッケージを使っていて同様のリンクが無い場合は、
/usr/local/share/texmf/fonts/opentype
などのディレクトリを作り、そこに上記と同じシンボリック・リンクを置いてください。(ディレクトリ名はopentypeでなくても可。)
その後で、root権限またはsudoで、mktexlsrをします。

2. cid-x.map ファイルの編集
/usr/local/share/texmf/fonts/map/dvipdfm/base/ または /usr/local/share/texmf/fonts/map/dvipdfmx/base/ にある cid-x.map を編集します。
このファイルをエディタ(emacsなど)で開き、 rmlgbmの項目のある行を捜します。そこを以下のように書きかえます。
%% Ryumin and GothicBBB found in PostScript printers:

rml H Ryumin-Light
HiraMinPro-W3.otf
gbm H GothicBBB-Medium
HiraKakuPro-W6.otf
rmlv V Ryumin-Light
HiraMinPro-W3.otf
gbmv V GothicBBB-Medium
HiraKakuPro-W6.otf
3. updmap の実行

管理者権限またはsudoにより、
> updmap-sys
を実行します。(updmapを実行すると、自分(ユーザ)のホーム・ディレクトリの.texmf-varディレクトリ以下にmap fileが作られます。)
これにより、

/usr/local/share/texmf/fonts/map/dvipdfm/updmap/kanjix.map

gbm H HiraKakuPro-W6.otf
gbmv V HiraKakuPro-W6.otf
rml H HiraMinPro-W3.otf
rmlv V HiraMinPro-W3.otf

が、
/usr/local/share/texmf/fonts/map/dvips/updmap/psfonts.map

gbm HiraKakuPro-W6-H
gbmv HiraKakuPro-W6-V
rml HiraMinPro-W3-H
rmlv HiraMinPro-W3-V


という項目が書き込まれます。
もしこのような項目が書き込まれない場合はupdmapがうまく動作していない可能性があります。お使いのシステムによってはupdmapにパッチを当てる必要があるかも知れませんので、井上氏の解説を参考にしてください。

4. フォントの埋め込みがうまく行かないときにチェックすること
マップ・ファイルが生成されない
  • updmap-sysではなくupdmapを実行していないか
  • 上記のようにupdmapcid-x.mapに対応しているか
マップ・ファイル(kanjix.map)は生成されている
  • マップ・ファイルがdvipdfmxのフォント・サーチ・パスの位置にあるか
    そのためにはフォント・サーチ・パスを保持する環境変数を調べるために
    $ kpsewhich --expand-var '$TEXFONTMAPS'
    または
    $ kpsewhich --expand-path '$TEXFONTMAPS'
    をターミナルで実行する。その結果に/usr/local/share/texmf/fonts//または/usr/local/share/texmf/fonts/map/dvipdfm/updmap/が含まれているか。
    含まれていなければ/usr/local/share/texmf/web2c/texmf.cnfの設定を見直す。そこに
    TEXFONTMAPS = .;$TEXMF/{fonts/map,dvips,dvipdfm}//
    なる記述があるのに上記の出力がおかしいときは
    $ kpsewhich --expand-var '$TEXMF'
    も実行してみる。それがおかしければtexmf.cnfを修正。
  • マップ・ファイルが2つ以上ないか
    実際に遭遇した例としては、以下の2つのケースのように$TEXFONTMAPSのより前のパスに正しく設定されていないkanjix.mapファイルが存在する場合ということがあった:
    • updmap-sysではなくupdmapを実行した結果、/Users/foo/.texmf-var/fonts//kanjix.mapファイルができてしまった。上記のkpsewhichの結果、ユーザディレクトリにある/Users/foo/.texmf-var/fonts///usr/local/share/texmf/fonts//より先にあった。
      従って、cid-x.mapを修正してupdmap-sysを実行して/usr/local/share/texmf/fonts/map/dvipdfm/updmap/に正しいkanjix.mapが生成されても、.texmf-var以下にある修正されていないフォント・マップを読み込んでしまう。
    • dvipsによって出来たpsファイルをAcrobat Distillerでpdfに変換したときに気がついたこと。
      updmap-sysにより、/usr/local/share/texmf/fonts/map/dvips/updmap/psfonts.mapに変更が反映されている。
      しかし/usr/local/share/texmf/fonts/map/dvips/ptex/psfonts_jp.mapに、Ryumin-LightGothicBBBを使う設定があったためにそれが優先されてしまいフォントの埋め込みが出来ていなかった。アルファベット順に先に来るディレクトリを探した結果だろう。dvips/ptex/psfonts_jp.maprml, gbmなどの行をコメント・アウト(行頭に%を付ける)して回避した。

研究関連のページに戻る
ホームに戻る