Yamamoto's Laboratory
練習
dvipdfmx

はじめに

pdf は デジタルドキュメント のデファクトスタンダードです.多くの場合,LaTeX で作成した文書も pdf での提出が求められます.少し以前のように,dvi あるいは PostScript(PS) で配布するようなことはほとんどありません.ここでは,dvi ファイルを pdf に変換する dvipdfmx について説明します.

インストール

dvipdfmx

二通りの方法でインストールすることができます.どちらを選択するかは,元の LaTeX のインストール方法に依存します.

CTAN

CTAN で TeX Live をインストールすると,dvipdfmx は自動的にインストールされます.

apt-get

apt-get を使って,インストールすることもできます.dvipdfmx は,texlive-base に含まれます.以下のコマンドでインストールします.

$ sudo apt-get  install  texlive-base

フォント

フォントをインストールディレクトリーは,コマンド「kpsewhich -show-path="truetype fonts"」で表示させることができます.私の環境 (Ubuntu 14.04, CTAN TeX Live 2015) では,以下のとおりです.

$ kpsewhich -show-path="truetype fonts"
.:/home/yamamoto/.texmf-config/fonts/truetype//:/home/yamamoto/.texmf-var/fonts/truetype//:/home/yamamoto/texmf/fonts/truetype//:/etc/texmf/fonts/truetype//:!!/var/lib/texmf/fonts/truetype//:!!/usr/local/share/texmf/fonts/truetype//:!!/usr/share/texmf/fonts/truetype//:!!/usr/share/texlive/texmf-dist/fonts/truetype//:/home/yamamoto/.texmf-config/fonts/opentype//:/home/yamamoto/.texmf-var/fonts/opentype//:/home/yamamoto/texmf/fonts/opentype//:/etc/texmf/fonts/opentype//:!!/var/lib/texmf/fonts/opentype//:!!/usr/local/share/texmf/fonts/opentype//:!!/usr/share/texmf/fonts/opentype//:!!/usr/share/texlive/texmf-dist/fonts/opentype//:/usr/share/fonts//

複数のパスがコロン「:」で区切られ,指定されています.パスの前に二重ビックリマーク「!!」があるパスは検索対象外です,パスの終わりが二重スラッシュ「//」はサブディレクトリーも検索対象です(詳細は,Installing LaTeX packages).

ここでは,IPA フォントを,「/usr/share/texmf/fonts」にフォントをインストールします.

IPA フォントには,「IPAフォント」と「IPAexフォント」の二通りがあります.それらの違いや選択の基準については,「IPA フォントか、IPAex フォントか」に詳しい考察があります.筆者は,以下の手順で IPA フォントをインストールしました.

  1. IPA フォントを格納するディレクトリー「IPA」を作ります.
    $ sudo  mkdir  /usr/share/texmf/fonts/truetype/
    ディレクトリーの名前は任意です.
  2. IPAフォント ダウンロードページのページの TTF ファイルの 4書体パック(Ver.003.03) をクリックします.すると「IPAfont00303.zip」がダウンロードされます.
  3. ダウンロードしたディレクトリーに移動し,解凍します.
    $ unzip  IPAfont00303.zip
    すると,ディレクトリー「IPAfont00303」が作成されます.その中に,6個のファイルがあります.
  4. 解凍されたディレクトリーに移動します.そして,最初に作成した ディレクトリーに IPA フォントをコピーします.
    $ cd  IPAfont00303/
    $ sudo  cp  *.ttf  /usr/share/texmf/fonts/truetype/
  5. フォント情報を更新します.
    $ sudo  mktexlsr
  6. フォントを確認します.「ipam.ttf」では次のようになります.
    $  kpsewhich  ipam.ttf
    /usr/share/texmf/fonts/truetype/ipam.ttf
    
    インストールと設定に問題が無い場合,フォントへのパスが表示されます.「ipag.ttf」でも同様です.

設定

マップファイル

フォント埋め込み

フォントが埋め込まれた pdf を作成するためには,設定が必要です.ここでは,IPA フォントを設定します.他のフォントを使う場合でも同じようにします.

フォントの指定

dvipdfmx で使われる和文フォントは,dvipdfmx 用のマップファイル「$TEXMF/fonts/map/dvipdfm/base/cid-x.map」に書かれています.ディレクトリーの変数は,コマンド「kpsewhich -var-value TEXMF」で調べることができます.そんなことをしなくても,コマンド「kpsewhich cid-x.map」を使うと容易にファイルのパスは分かります.私の場合,「/usr/share/texmf-texlive/fonts/map/dvipdfmx/cid-x.map」となっていました.% 記号で始まっている行は,コメント行です.dvipdfmx で,フォント埋め込みに関係する行は以下の通りです.

%% Ryumin and GothicBBB found in PostScript printers:
rml  H Ryumin-Light
gbm  H GothicBBB-Medium
rmlv V Ryumin-Light
gbmv V GothicBBB-Medium

rml と rmlv は明朝体,gbm と gbmv はゴシック体を表します.H と V は,横書きと縦書きを表します.デフォルトの「Ryumin-Light」と「GothicBBB-Medium」は,(株)モリサワの高価なフォントです.普通の人はこれらのフォント持っていないので,フォントが埋め込まれない pdf ができあがります.表示するときに適当なフォントに置き換えられます.したがって,pdf 表示用のソフトウェアーによって,文字の形が異なります.

先ほどインストールした IPA フォントを埋め込んだ pdf を作成するためには,マップファイル「cid-x.map」を以下のように変更します.

%% Ryumin and GothicBBB found in PostScript printers:
rml  H ipam.ttf
gbm  H ipag.ttf
rmlv V ipam.ttf
gbmv V ipag.ttf

以上でフォントの指定は,完了です.これで,IPA フォントが埋め込まれた pdf が作成されます.

ここでは,元のフォントマップファイル「cid-x.map」を変更しましたが,別ファイルにすることも可能です.その場合は,-f オプションを使い,コマンド「dvipdfmx -f フォントマップファイル(*.map) dviファイル(*.dvi)」で pdf を作成します.その具体例が「フォントを埋め込まない」に書かれています.

使い方

pdf作成

もっとも単純な使い方は,dviファイルを指定するだけです.たとえば,

$ dvipdfmx hogehoge.dvi

とすると,pdf ファイルが作成されます.フォントが埋め込まれるか,埋め込まれないかは設定ファイル「cid-x.map」次第です.

WARNING が出た場合

pdf に変換する課程で,「** WARNING ** Failed to load AGL file "pdfglyphlist.txt"...」や「** WARNING ** Failed to load AGL file "glyphlist.txt"...」という WARNING が出ることがあります.できあがった pdf は問題ありません.気持ち悪いので,対策をした方が良いでしょう.

必要なファイルをダウンロードします.

$ wget  ftp://core.ring.gr.jp/pub/text/TeX/ptex-win32/current/dvipdfm-w32.tar.xz

ダウンロードしたファイルを解凍します.

$ tar  Jxvf  dvipdfm-w32.tar.xz

ワーキングディレクトリーを移動します.

$ cd  share/texmf-dist/fonts/map/agl

ファイル「glyphlist.txt」と「glyphlist.txt」をディレクトリー「/etc/texmf/dvipdfmx/」にコピーします.

$ sudo  cp  glyphlist.txt  pdfglyphlist.txt  /etc/texmf/dvipdfmx/

以上で,「glyphlist.txt」と「glyphlist.txt」に関する WARNING は消えます.

オプション

dvipdfmx には,様々なオプションがあります.オプションは,「dvipdfmx -h」で表示されます.

$ dvipdfmx  -h

バージョン dvipdfmx-20090708 では,以下のオプションを使えます.デフォルトの値は,設定「/usr/share/texlive-base/dvipdfmx.cfg」に書かれています.

dvipdfmx のオプション.括弧[]内の値はデフォルト値.
オプション 動作
-c 色指定を無視します (白黒印刷用).
-d number 10進数の桁数を指定します (範囲:0-5) [2].
-f filename フォントマップファイルの設定.引数はファイル名 [cid-x.map].
-g dimension Annotation "grow" amount [0.0in]
-l 出力紙を横長にします.
-m number Set additional magnification
-o filename Set output file name [dvifile.pdf]
-p papersize Set papersize [a4]
-q Be quiet
-r resolution Set resolution (in DPI) for raster fonts [600]
-s pages Select page ranges (-)
-t Embed thumbnail images of PNG format [dvifile.1]
-x dimension Set horizontal offset [1.0in]
-y dimension Set vertical offset [1.0in]
-z number Set zlib compression level (0-9) [9]
-v 変換過程を詳しく出力します.
-vv 更に,詳しく出力します.
-C number Specify miscellaneous option flags [0]:
0x0001 reserved
0x0002 Use semi-transparent filling for tpic shading command,instead of opaque gray color. (requires PDF 1.4)
0x0004 Treat all CIDFont as fixed-pitch font.
0x0008 Do not replace duplicate fontmap entries.
0x0010 Do not optimize PDF destinations.
Positive values are always ORed with previously given flags.
And negative values replace old values.
-D template PS->PDF conversion command line template [none]
-E Enable DVIPDFM emulation mode
-K number Encryption key bits [40]
-O number Set maximum depth of open bookmark items [0]
-P number Set permission flags for PDF encryption [0x003C]
-S Enable PDF encryption
-V number Set PDF minor version [4]

日本語フォントが埋め込みついて

ここでは,日本語フォントを埋め込む/埋め込まない pdf の作成方法と埋め込みの確認方法を示します.

フォントを埋め込む

日本語フォントを埋め込んだ pdf を作成するためには,「設定 (フォント埋め込み)」に示したように,(1)フォントをインストール,(2)設定ファイル「cid-x.map」の編集が必要です.そして,コマンド「dvipdfmx dviファイル(*.dvi)」を実行します.

フォントを埋め込まない

日本語フォントを埋め込まないと軽い(ファイルサイズの小さい) pdf になります.いろいろな方法で,そのようなファイルの作成は可能です.お手軽な方法は,(1)元の「cid-x.map」を「not_embeded.map」というようなファイル名にコピーし,(2)次のように編集します.

%% Ryumin and GothicBBB found in PostScript printers:
rml  H !ipam.ttf
gbm  H !ipag.ttf
rmlv V !ipam.ttf
gbmv V !ipag.ttf

フォント名の前にびっくりマーク (!) を付けるだけです.これを元の,cid-x.map と同じ場所に保存します.そして,設定を反映挿せるために,コマンド「sudo mktexlsr」を実行します.設定は,以上の通りです.

dvi ファイル「hoge.dvi」からフォントを埋め込まない pdf の作成は,次のコマンドの通りです.

$ dvipdfmx  -f  not_embeded.map  hoge.dvi

オプション -f でフォントマップファイルを指定するだけです.

フォント埋め込みのチェック

Adobe Reader を使う方法

Adobe Reader を使うと,pdf のフォントの埋め込み状態のチェックができます.ファイルを Adobe Reader で開き,メインメニューの ファイル(F)プロパティ(E) を選択すると,文書のプロパティのダイアログが現れます.フォントのタブを選択すると,埋め込みフォントの確認ができます.以下の図のように (埋め込みサブセット),あるいは (埋め込み) と表示があるとフォントは埋め込まれています.何も表示が無い場合は,フォントは埋め込まれていません.

Adobe Reader でフォントの埋め込みを確認
Adobe Reader の文書のプロパティ.フォントの埋め込み状態が確認できる(図をクリックすると拡大).

pdffonts を使う方法

コマンド「pdffonts」を使うこともできます.Windows 系の OS は分かりませんが,Ubuntu ではこのコマンドが使えます.以下は,「hoge.pdf」を検査した結果です.

$ pdffonts hoge.pdf
name                          type            emb sub uni object ID
----------------------------- --------------- --- --- --- ---------
MGQWLQ+CMR10                  Type 1C         yes yes no       4  0
Ryumin-Light-Identity-H       CID Type 0      no  no  no       6  0

三列目の「emb」がフォンと埋め込み状態を示しています.フォント「MGQWLQ+CMR10」は yes となっていますので,埋め込まれています.一方,フォント「Ryumin-Light-Identity-H」は,埋め込まれていません.

ページ作成情報

参考資料

  1. THE DVIPDFMx PROJECT.dvipdfmxの開発元です.
  2. Kodama's tips page(DVIから作成する PDF のフォント埋め込み)」には,PDF のフォント埋め込みについて分かりやすい記述があります.
  3. Ubuntu Linux 11.04 - LaTeX環境」を設定の参考にしました.
  4. glyphlist.txt」と「glyphlist.txt」に関する WARNING 対策は,「Ubuntu Linux 11.04 - LaTeX環境」を参考にしました.
  5. 日本語フォントの設定については,「日本語フォントのセットアップ」が参考になります.

更新履歴

2006年頃 ページの新規作成
2015年02月26日 インストールと設定を修正.
2015年03月18日 全面改訂


no counter