(home)

dvipdfa

平田さんの dvipdfmの日本語化 *1 によって,TeXを使って非常に高品質な日本語PDFを作れるようになりました. このdvipdfmの唯一の難点は,日本語文字列の含まれたEPSファイルの扱いです. EPSファイルは,ghostscriptによってPDFに変換されてから取り込まれますが, この変換で日本語文字列はビットマップになります.

つまり,dvipdfmというよりはghostscript側の問題ですが,このように文字列 がビットマップになってしまうと,Acrobat Readerでの表示が非常に醜くなり ますし,生成時の解像度に依存するため,後の印刷を考えても好ましくありま せん.

もちろん,フォントのヒンティングやテキストの検索を考えれば, `ghostscriptそのものを修正する',`CIDフォントにして埋め込む',というこ とをすべきですが,ここではghostscriptのepswriteを利用し,ひたすらアウ トラインに変換します.こうすることで文字としての情報はなくなりますが, Acrobat Readerで綺麗に見えるPDFになります.

以前に行なっていたshowオペレータを再定義する方法については dvipdfa (old method)を参照してください

gnu-gs-7.05でCIDフォントとして日本語を埋め込んだPDFを生成できる場合 は,eps2pdf.plなどでPDFを作った後,replacejfontsを使うことをお勧めしま す(dvipdfmはincludegraphicsでPDFファイルを取り込むことが可能です). replacejfontsについてはreplacejfonts,jps2pdf (旧 replacekochi)を参照してください

なお,動作は角藤さんによって提供されている日本語ghostscript 7.04 (wapi版)バイナリ, RedHat Linux上のghostscript 6.51,自分でコンパイルし たghostscript 6.53で確認しています.もちろんありとあらゆるEPSでうまく いく保証はありませんが,ghostscriptで解釈できるものであれば,大抵通る と思います.

目次

更新情報

インストール

以下のものをダウンロードして適当な場所に置きます.Windowsの場合は dvipdfa-win32を,その他の場合はdvipdfaをダウンロードしてください.また, いずれの場合もdvipdfa-gsexec.plをダウンロードして適当な場所に置きます. 置いた場所に応じてdvipdfa/dvipdfa-win32内のDVIPDFAGSEXECを変更してくだ さい.また,必要に応じてPERLやGSなどの変数も変更します.

なお,多少の変更でActivePerlなどでも利用できると思いますが,Windowsに ついてはCygwinでの動作のみを確認しています.

dvipdfa
`-D'オプションの指定をしてdvipdfmを呼び出すシェルスクリプト.
dvipdfa-win32
dvipdfaのWindows版.`-D'オプションへの指定が異なるだけ.
dvipdfa-gsexec.pl
dvipdfa/dvipdfa-win32から呼ばれるperlスクリプト.

使い方

通常のdvipdfmと同じように使います.

$ dvipdfa foo.dvi

仕組みと問題点

ghostscriptのepswriteは,ある程度以上大きな文字についてはアウトライン を塗るコードを出力し,小さな文字についてはヒンティングを考慮してビット マップに変換します.画像としての品質を考えれば正しい振る舞いですが,と にかくアウトラインにして欲しいときには不都合です.そこで,dvipdfaでは, まず元のEPSを拡大したものをepswriteデバイスで処理します.その結果を今 度は同じスケールで縮小し,それをpdfwriteデバイスで処理します.こうして, ほとんどの文字をアウトライン化できるのです.

残念ながら所詮はスケーリングによってごまかしているだけなので,十分に小 さな文字を使えばやはりビットマップになってしまいます.根本的には ghostscriptに変更を加える必要がありますが,そこまで手をかけるなら,次 の別解のような正攻法の処理を考えるべきかもしれません.

別解

CIDフォントにして埋め込む

これはこのページにある内容とは別の(まともな)やり方になりますが,gs 7.xであれば,日本語CIDフォントを埋め込んだPDFを作ることができます.こ の設定については角藤さんの CID Font in GS を参照してください.

そのまま使うには起動が遅いのが難ですが,この点についてはバッチで各 EPSファイルをPDFファイルに変換するようなPostScriptコードを作ってそれを 使い,生成されたPDFをincludegraphicsするようにすればよいでしょう.

tgif2tex

tgifについては,PSfrag相当のことをdviドライバに依存しない形でやってく れる tgif2tex というツールがあります.

PSfragと同様,文字と図形の前後関係はうまく処理できませんが(文字が常に 前),数式なども簡単に扱え,しかもPSfragのように置き換えの指定をせずに (直接図形の中に記述するだけで)済みます.

作者

中丸 幸治


*1土村さんによる最終版のミラーサイト. 現在の開発は dvipdfm-cjk に移行