next_group up previous
: TOP page : 9月分

TEX からのPDF生成

榎本歩

平成13年4月14日

はじめに

現在、TEX からPDFファイルを生成するにはいくつかの方法が ありますが、その一つはdvipsでPostScriptファイルを生成したのち、 GhostscriptでPDFファイルを作成するやり方です。

ここでは、この方法の問題点と、(十分ではありませんが)回避方法に ついて説明します。

問題点

GhostscriptでPDFファイルを作成する場合、


  ps2pdf <ファイル名>
とします。TEX + dvipsで生成したPostScriptファイルでも同様です。 しかし、通常の日本語版ディストリビューションに付属のGhostscriptでは、 このやり方だと日本語フォントがビットマップの埋め込みになってしまいます。

Ghostscriptの日本語化

Ghostscriptで日本語フォントを扱う手法には、以下のようにいくつかあります。

  1. gs5.5 + VFlib
  2. gs6.5 + Type 0 日本語フォント
  3. gs6.5 + CID日本語フォント
  4. gs6.5 + gs-cjkパッケージ + 日本語TrueTypeフォント

現在の多くの日本語版ディストリビューションは1番目の方法を とっています。これは、現在GPLでリリースされているGhostscriptは Ver5.5までのためです。

これらのうち2番目の方法を利用することで、不十分ながら、きれいな PDFファイルを作ることができました。以下、この環境を構築する手順を 説明します。

インストール手順

Ghostscript 6.5 のインストール

私は試してはいませんが、ここで利用するType 0 の日本語フォントは、 「素の」Ghostscript 6.0以上と組み合わせることが できると思います。 しかし、現在Ghostscriptの国際化に関する新しいプロジェクトとして 上記の gs-cjk が存在し、version 6.5 を対象としたパッチが リリースされています。そこで、まずこのパッチをあてたGhostscript 6.5を インストールすることにします。

下記「フォントのインストール」以降の作業のためだけなら、配布されているGhostscript 6.5のRPM パッケージ(gs-cjkパッチはあたっていない)を利用できます。 ただし、インストール先のディレクトリと フォントのサーチパスに注意する必要があると思います。

注意 Ghostscript 6.5 のライセンス条件はGPLではありません。 Aladdin Free Public License が適用され、商業的な再配布が制限されています。 詳細は 原文を 参照してください。

用意するもの

まず、Ghostscriptのソースアーカイブです。 CTAN にあります。

gs-cjkパッケージは、プロジェクトのWebページからたどれます。

Type 0 の日本語フォントパッケージはB.H.Far氏のWebページから取得できます。

説明の都合上、手作業で行なうファイル変更をパッチの形式にしてみました。

コンパイル

まず、展開します。

$ SRCDIR=`pwd`
$ tar zxvf ghostscript-6.50.tar.gz
$ tar zxvf ghostscript-6.50jpeg.tar.gz -C gs6.50
$ tar zxvf ghostscript-6.50libpng.tar.gz -C gs6.50
$ tar zxvf ghostscript-6.50zlib.tar.gz -C gs6.50
$ tar zxvf gs6.50-cjk-M1-R2.tar.gz
$ cd gs6.50
$ ln -s jpeg-6b jpeg
$ ln -s libpng-1.0.8 libpng
$ ln -s zlib-1.1.3 zlib

次に、gs-cjkパッケージに含まれるドキュメントに従ってパッチを 適用します。


$ cat ../gs6.50-cjk-M1-R2/*.patch | patch -p0 -b

Makefileはテンプレートをコピーしますが、 Xのライブラリのパス指定を修正する 必要がありました。


$ cp src/unix-gcc.mak Makefile
$ patch < ../Makefile.diff
$ make
$ su
# make install
# cd /usr/local/share/ghostscript
# tar zxvf $SRCDIR/ghostscript-fonts-std-6.0.tar.gz
# tar zxvf $SRCDIR/ghostscript-fonts-other-6.0.tar.gz

ここで、CIDフォントかTrueTypeフォントをインストールするのが gs-cjkパッケージの本来の使い方です(フォントインストール手順は パッケージ内のドキュメントに解説されています)。 しかし、その状態でps2pdfによって PDFファイルを作成すると、日本語はあいかわらずビットマップフォントが 埋め込まれてしまいます。

そこで、PostScriptの古い多バイトフォント形式であるType 0 の日本語 フォントをインストールしてみます。

Type 0 日本語フォントのインストール

B.H.Far氏の解説 (ここでは、Ghostscriptを日本語化する手法がいくつか紹介されています) に従って作業します。 ただし、パッケージに付属のFontmapファイルは、Solaris の Display PostScriptフォントの存在を仮定していますので、 日本語フォントの定義部分のみ を既存のファイルに追加する形にします。

また、上記の解説に従ってメインの Fontmapファイルを変更 します。


# SRCDIR=`pwd`
# cd /usr/local/share/ghostscript
# tar zxvf $SRCDIR/gs6.0.kanji.tar.gz
# rm -rf lib
# cd 6.50/lib
# cp Fontmap.GS Fontmap.kanji
# cat $SRCDIR/Fontmap.kanji.add >>Fontmap.kanji
# patch < $SRCDIR/Fontmap.diff

これで、冒頭の


  ps2pdf <ファイル名>
によるPDFへの変換を行えば、日本語にベクトルフォントを使った PDFファイルが生成されます。

残る問題点

この方法で、DVIファイルからビットマップフォントを使わない PDFファイルを作ることができます。したがって、画面上での拡大、 高解像度プリンタでの印刷で Adobe Acrobat に(あまり)劣らない結果 を得ることができます。

しかし、次のような問題点が残ります。

  1. 日本語フォントは基本的に埋め込まれる
  2. Type 0 の日本語フォントは既にobsoleteである
  3. 縦書きに対応していない(フォントの問題?)

おわりに

Ghostscript周辺の状況は、現在かなりのスピードで変化している ようです。今後、それらを可能な範囲でフォロウし、より手軽に 高品質のPDFを得られないか試してみたいと思っています。

また、DVIファイルから直接PDFを生成する方法もあるので、 それについても、挑戦してみる予定です。

なお、ここで試した方法はいずれも、Ghostscriptの国際化に 尽力されている方々がWeb上に公開されている成果を たどったものです。 これらの有用なプロダクトを開発し、公開されている開発者の みなさまに感謝します。

参考URL

[1]
Ghostscript

http://www.ghostscript.com/

[2]
gs-cjk プロジェクト

http://www.gyve.org/gs-cjk/

[3]
Ghostscript日本語化

http://www.cit.ics.saitama-u.ac.jp/~far/howto/

[4]
TeXからPostScript及びPDFを作るときのコツ

http://tsk-www.ss.titech.ac.jp/~ryutaroh/tex-ps-pdf/

追記

2001.4.24
定例会後、インストール手順を追記しようと思い、ずっと いじってました。

2001.4.24
欧文フォントについて

ここでは欧文フォントについては触れていませんでしたが、参考URL[4]で でも述べられているように、TEX 標準のComputer Modernフォントは本来 METAFONTで生成されるビットマップフォントです。 ただ、現在ではPostScriptのType 1 形式のものが配布されており、例えばVineでは インストール時にTEX を選択すると、 cmpskit-3-3 パッケージとして自動的にインストール されます。

したがって、上記の手順で Ghostscript 6.5 をインストールし、dvipsの出力を 処理するためには、このComputer Modern フォントの設定を追加してやる必要が あります。

一方、TEX で Computer Modern を使わないこともできます。Vine Plus の txfontsパッケージ をインストールし、TEX ソースコードのプリアンブルに\usepackage{txfonts} を入れれば、欧文フォントにPostScriptの標準フォントを使います。

2001.4.24
Ghostscript 7.0 / 6.51

2001年4月24日現在、既に Ghostscript 7.0 がリリースされています。そして、 このversion 7.0 に上記のgs-cjkパッチを無理矢理適用しても日本語が 扱えるようです。

実際に試してみると、一部のパッチがリジェクトされます。しかし、手作業で字面 だけつじつまを合わせるとコンパイルは通るようになり、CIDフォントを インストールすると日本語の表示もできました。

そして、この状態で ps2pdf を行うと、日本語CIDフォントを埋め込んだ PDFファイルが生成されます。これはフォントも全てベクトルフォントであり、 インストールする日本語CIDフォントを選べば、クオリティの点でも Acrobat Distiller に負けないものだと思います。 が、このPDFファイル、Acrobat Readerで読めません。Ghostscript自身と、 xpdfでは読むことができます。

私の設定が間違っているのかもしれません(6.5を対象にしたパッチを無理に あてている時点で明かに間違っていますが:-)。

また、Ghostscriptの配布元のWebページによれば、GPL版のGhostscriptとして 近く6.51が出るそうです。これにgs-cjkが追従するか、取り込まれるかすれば、 各ディストリビューションのGhostscript利用状況もだいぶ変ってくるのでは ないでしょうか。商用ディストリビューションのフォントを利用して、 Acrobat Distiller なみにPDFファイルを簡単に生成できるようになると 嬉しいのですが...

この文書について...

TEX からのPDF生成

この文書はLaTeX2HTML 翻訳プログラム Version 99.1 release (March 30, 1999)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds,
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

日本語化したもの( 99.1 release + JA patch 3.0 (September 15, 1999) 版)

Copyright © 1998, 1999, Kenshi Muto, Debian Project.

を用いて生成されました。

コマンド行は以下の通りでした。:
latex2html -split 0 -no_auto_link -html_version 4.0 rep-200104.tex.

翻訳は Ayumu ENOMOTO によって 平成13年4月25日 に実行されました。


next_group up previous
: TOP page : 9月分
Ayumu ENOMOTO 平成13年4月25日