HOWTO make Ghostscript 5.10 with VFlib
What's New
- '98/1/29公開のFreeType version 1に対応して、記載を変更しました。
- FreeType対応の方法を追加 ['98/1/25]
- Postscript Fontsをprecompileするための手順を追加しました ['98/1/15]。
■ソースからビルドするには
以下のファイルを入手する必要があります。(emx/gccの動作環境が既に整ってなければなりません。)
- jpeg-6a.zip, lpng096.zip, zlib104.zipはftp:ftp://ftp.riken.go.jp/pub/tex-archive/support/ghostscript/3rdparty/から
- gs510sr1〜3.zip: ftp://ftp.riken.go.jp/pub/tex-archive/support/ghostscript/gs510/より。
- 鈴木大輔 (daisuke@jaist.ac.jp)様の「Aladdin ghostscript 5.03 日本語化
パッチキット v1.4 」gs510j11.tar.gzは前述の通りのところより。
- VFlib-2.22-PL8.tar.gz, VFlib-2.22-Patch9, VFlib-2.22-Patch10は、
広島大学のサイト
にあります。
- GhostscriptのmakefileはGNUのmake.exeはそのままでは使ません。IBMのnmake.exeが必要ですので、手元にない方はnmakew.zipを手に入れて下さい。
- link386.exeを導入してない方はOS/2 WarpのシステムCDROM等から導入しておいて下さい。
ビルドの手順の概要は次の通りです。
- 最初にvflib.libを作成します。展開してパッチをあてたら、このmakefileを使用してコンパイルして下さい。
GNU make でオーケーです。vflib.libがうまく生成されればしめたものです。万が一、
どうしてもうまくいかない時はこれ [VFlib.lzh]を持っていって下さい。
- gs510sr1〜3を解凍し、そのソースディレクトリ(\gs5.10)にて、鈴木様のパッチを展開して下さい。
ファイルサイズゼロのものができていると思います。これはsymbolic linkの名残り
です。実体は、"> tar ztvf gs510j11.tar.gz | more "などとして、"->"を含む行を見ると判明します。必要な実体はdriversディレクトリのものなので、それらをソースディレクトリにコピーします。めんどうかと思いますので、このsymbolic.cmdをソースディレクトリで実行すると実体がコピーされます。
- 次に、zlib104.zip, lpng096.zip, jpeg-6a.zipの展開。zlib104.zipのみはディレクトリを作らないので、"zlib"というディレクトリを作成して、そこに展開します。他は"\gs5.10"でそのまま。もしも、zlib-104.tar.gzを入手した場合は、ディレクトリが作成されます。
以下の名称変更をして下さい。
libpng-0.96→libpng.
zlib-1.0.4 → zlib(zlib*.tar.gzの時にのみ)
- gs510j11.diffという鈴木大輔様のパッチが既に展開されているずですね。"> patch -p1 --ignore-whitespace < gs510j11.diff "とすると沢山のファイルが修正され
os2.mak というメイクファイルも修正されます。これは、私が作成した差分を取り入れたものです。鈴木様に差分を送付したとろ、嬉しいことに取り入れていただけました('97/12/06)。
次いで、ソースから生成された、ないしはここからダウンロードして解凍したVFlib.libとVF.hをソースディレクトリにコピー。
- os2.makをmakefileにコピーしたものか、あるいは"makefile=makefile"の行を
"makefile=os2.mak"にしたものをeditorでオープン。"#@@"を行頭に含む行は、修正の余地があるところです。私が自分の環境のものをそのまま鈴木様に送ってしまったため、そのままではプリンターはBJC 600j(400)しか使えない設定になっていますので、必要なデバイスを指定して下さい。デフォルトのディレクトリは修正しなくても、環境変数等で設定できるのでそのままでもかまいません。まさかと思いますが、Intel 386のマシンで動作させる方は、"-m486"を"-m386"に修正のこと。参考までに、ほとんどすべてのdevicesを使用する設定にしているメイクファイルはこれです。行頭に"DEVICE_DEVS1〜15"があるところを、ご自分のプリンター、変換したい画像形式などの必要に応じて修正のこと。
なお、makefile (os2.mak) の修正にあたっては以下のファイルの記載を参考にしてください。
- devices.txt:DEVICE_DEV* のドライバについて。
- make.txt:コンパイルについて
- Aladdin EnterprisesのCOPYRIGHTをお読み下さい。日本語対応化という改変を行うのわけですから、誰がいつどのようなmodificationをしたのかを表示するように、ソースを修正しなければなりません。修正の対象は、gscdef.cの37行の"# define GS_COPYRIGHT\"の次の行で宜しいかと思います。ここにあるバイナリーパッケージのgsos2.exeは一応私がいつどのような改変をしたか表示するようになっています。
- "> nmake" or ">nmake -f os2.mak"!!
★ポストスクリプトフォントの precompile
通常の場合とほとんど変わりませんが、gsos2.exeが既に動作していなければなりません。したがって、ソースディレクトリに存在する(もともとの)Fontmapが読まれますので、後述の様に御自分のマシンの環境に適合したFontmapをソースディレクトリにおかないといろいろとめんどうなことがおこると思います(環境変数を設定してあっても、カレントディレクトリが最初に読み込まれるから)。
詳細はfonts.txtに記載がありすのでお読みください。メモリがたくさんあれば、メリットは大きいでしょう。欧文フォントの表示が格段に速いです。
-
- 私が'98/1/15にビルドした時のはこれです。実のところ、"FEATURE_DEVS="に"ccfonts.dev"を追加しただけで、プリンタドライバなどはすべて取り込む設定のままです。
- cfonts.makを私はこのようにしました。Helveticaだけはどうしても C ソースに変換できなかったです。"@@"を含む行が変更部分です。これは34種類の標準ポストスクリプトフォントを precompileするようになっていますので、めったに使用しないのはコメントアウトした方がいいかも知れません。Times, Helvetica, Courierで十分でしょうね。
- Helveticaのみだめなので、int.makの該当部分を変更しました。#@@はオリジナルの行です。
#@@ ccfonts4_=0hvr.$(OBJ) 0hvro.$(OBJ) 0hvb.$(OBJ) 0hvbo.$(OBJ)
→ccfonts4_=0hvro.$(OBJ) 0hvb.$(OBJ) 0hvbo.$(OBJ)
#@@ccfonts4=hvr hvro hvb hvbo
→ccfonts4=hvr hvro hvb hvbo
- *.pfa/pfb から C ソースへの変換には、font2cというスクリプトを使用しますが、font2c.cmdは含まれてないので、このfont2c.cmd"を書き換えて使用することをすすめます。元はfont2c.batで、このファイルがソースディレクトリに存在するために、知らずにメイクすると、DOSが起動してエラーになりますので、削除等しておかねばなりません。このfont2c.cmdで -sFONTMAP=Fontmap.jsawa"と指定しているのは、こうしないとソースディレクトリのFontmapを読んでしまうからです。このFontmap.jsawaはFontmap.OS2を元にして、OS/2に付属するType 1 fonts に加えてAdobe Acrobat Reader for OS/2に付属するものも使えるようにしたものです。フォントの実体(*.pfa/pfb)が、環境GS_LIBで指定するディレクトリに存在することをご確認ください。
- 以上の準備ができましたら、メイク。34種も取り込んだら、link386 /exepack:2, rc -x1とDaikokuさんに教えていただいたように最適化をしても、なんとgsdll2.dllは2.3メガバイトにもなってしまいました。私はさっそく従来のものに換えて使っています。快適、快適!!
★フォントの実体が読み込まれているかは、gsviewなら"m"とタイプするか、メニューから選択して([file]→[show messages])、で確認できます。
Loading Helvetica font from C:/PSFONTS\helv.pfb... 2795212 1339614
1320184 12564 0 done.
私の場合はこのように、Helveticaのみは c ソースに変換できなかっので、フォントが読み込まれています。もしもTimes-Italicなど34種類に含まれるフォントが読みこれているメッセージがでているとしたら、Fontmapの記載、環境変数(ないしGhostscriptのconfiture)に問題があるかのはずです。このFontmapですと、Times-RomanをTimesRomanと別名定義するなど余計なフォントを読まないようにしてありますので、大丈夫だと思います。ちなみに、HV____.pfbなどとアンダーバーを含むフォントはAcrobat Reader付属のものです。
もしも、Helveticaと内蔵の34種類以外のフォントを使わないならば、Fontmapは
/Times-Roman /TimesRoman ;
/Helvetica (hlv.pfb) ;
の2行だけでオーケーだと思います。
■ FreeType対応とするには
松田さんのページhttp://itohws03.ee.noda.sut.ac.jp/~matsuda/VFlib-FT/より、
- VFlib-FT1.0.diff.gz
- gs5-kfftype.tar.gz
- gs5-kfftype-patch1.diff
- gs5-kfftype-patch2.diff
FreeTypeの本家http://www.freetype.org/download.htmを経由して
- ft10full.zip or ft_10.zip
をダウンロード。
- ft*.zip を展開して、test/ にて
" make -f arch/os2/makefile.emx" (emx/gcc)
lib/に移動して、"emxomf -o ttf.lib libttf.a" としてttf.libに変換。
- VFlibの作成
- VFlib*.diffの適用:makefileに対する修正もありますが、パッチはうまくいかないので、その部分のみカットして適用した方がいいです。その上で、makefileの部分についてこのmakefileを修正。_VF.hのみうまくいかないことがあるのでチェックのこと。参考までに、修正ずみのはこれ [makefile.ft]です。
- patchを適用
- ttf.libをVFlib/srcにコピー。
- make !
- gs5**.tar.gzを展開して、gs5**patch1,2を適用
*.c はgs5.10のソースディレクトリにコピー
kanji/*.ps は後で、VFlibオリジナルのものと交換。
kfftype.makの内容を, GS source directoryのint.makに反映。
変更済のはvflib.lzhに入ってます。
- VFlib.lib, ttf.lib, VF.hをgs5.10ソースディレクトリにコピー
- OS/2用の makefileの FEATURE DEVS に`kfftype.dev'を追加
Compiler Optionに ' -L../freetype/lib -lttf
-I../freetype/lib' などと追加。
私の場合は、`CO='に追加しています。
link386.exe のオプションに`$(GS_SOURCE_DIR)\ttf.lib'を追加。
vflib.lzhに同梱した`makefile.all.ft'は以上の変更を加えたものです。
- nmakeでメイク。
- TESTするには、FreeType関連のドキュメントに従い、
kconfig.*やvfontcapを適切に設定のこと。
GSVIEWの[configure ghostscript]の項で、-sKCONFIG=kconfig.ft
でフリータイプの機能を使用、 =kconfig.ps で従来の方法と
切り替えるのが便利だと思います。参考までに、私の kconfig.ftを
同梱しました。思うに、vfontcapはそのまんまでいいようです。
■ 謝辞
VFlibを開発された角川裕次氏、ghostscript 5.10のVFlib対応のパッチセットを
公開して下さった鈴木 大輔氏、FreeTypeのパッチを開発・とりまとめられた
松田 一朗氏ほか、ハッカーの皆様に敬意を表します。