日本語を印刷したいよね、やっぱり


SlackWareのときは、PJEという素晴しいパッケージ集があって、何もわからなくても取りあえず言われたとおりに入れればghostscriptも使えて、日本語のファイルも印刷することができていた。テキスト・ファイルを直接は印刷できなかったけど、a2psなどでpostscriptなファイルに変換してやりさえすればよかったので、特に不都合でもなかったしね。

だが、残念ながら今の時点では赤帽5.1用のPJEはαレベル(もうβくらいかな?)だし、PJEは非常によく考えられて作られているので、入れるとなるとPJEの一部分だけを入れるというのはあまり気が進まない。PJEなりに想定している、全体を通してのライブラリのバージョンなどがあるのだろうし…

というワケで、JRPMから既存のパッケージ(といってもつい最近putされたglibc用のだけど)をもらってきて入れてみることにした。手を入れるまえの環境は、もともと赤帽5.1のCD-ROMに入っていた rhs-printfilters-1.44-2.i386.rpm をそのまま使って、HP Deskjet 694C というプリンタで、これまたもともと入っていた ghostscript-3.33-8.i386.rpm と ghostscript-fonts-4.0-5.i386.rpm を使って英語のファイルは印刷できていた。

もらってきたのは ghostscript-5.10jp-1.src.rpm と VFlib2-2.24.0-0.5.src.rpm というパッケージで、VFlibというのはVector Font Libraryの略だ。ghostscript などからベクトル・フォントを使えるようにしてくれるライブラリね。XサーバにVFlibを組み込むなど、いろいろ派生したものもあるようだが、最近ではVFlib、VFlib2、VFlib3などと複数のバージョンが出回っていて、互換性がなかったり、対応するアプリがそれぞれ違っていたりなど、一言で言ってなんだかよ〜わからん。あんまり関わりたくないぞ(笑) まぁオレ的にはXサーバはもうX-TTで決まりなので、今後はghostscriptがらみでしか使うことはなかろうと思う。

昔のVFlibでは、市販のTrueTypeフォント集などを使って、あらかじめ変換ツールなどでVFlib用にフォントデータを用意しておくなどのヤヤコシイ作業や設定が欠かせないものだったのだが、最近のVFlibではついにFreeTypeライブラリを取り込んで、TrueTypeフォントを直接使えるようになった。X-TTですでにTrueTypeフォントを日常使っているオレとしては都合のよい話だ。が、オレが今使っている(たぶん今のところX-TTの標準なんじゃないかと思うんだけど)FreeTypeライブラリはver 1.1だ。で、またまたヤヤコシイことに、VFlibにもFreeType 1.0ベースなものとFreeType 1.1なものが両方流通しているんだよね(笑) もちろんオレとしてはFreeType 1.1じゃないと困るので、VFlib2のほうを持ってきたというわけ。

オレだって、いつでも何でもかんでも自分でmakeしてるワケぢゃないので、取りあえず最初はバイナリのパッケージを入れてみた。だけど、なんだかちゃんと動かないんだよね。オレのところだけなのかも知れないけど… なにやら、libttf.soが見つからない、などと言われちゃうのだ。だもんで、結局またしても自分でmakeしてみたよ。

すると、libVFlib2.so.24 は確かに libttf.so.2 つまり FreeType 1.1 のシェアド・ライブラリをリンクするようになっていた。こっちは問題なさそうなので、JRPMからもらってきたバイナリをそのまま使うことにしたんだけど、ghostscript-5.10jp のほうでは、特に libttf について何もしていないんだよね。libVFlib2.so.24 にすでに libttf がスタティックにリンクされているのを前提にしているのかのようだ。だから、gs そのものは直接は ibttf.so には依存していないのかも知れないが、libVFlib2.so が依存しているため、実行時にエラーになってしまっているらしい。

結局、

--- gs5.10/unix-gcc.mak.orig	Thu Sep 24 14:19:12 1998
+++ gs5.10/unix-gcc.mak	Thu Sep 24 14:18:17 1998
@@ -145,7 +145,7 @@
 # what its name is.
 # See gs.mak and make.txt for more information.
 
-SHARE_LIBPNG=0
+SHARE_LIBPNG=1
 LIBPNG_NAME=png
 
 # Define the directory where the zlib sources are stored.
@@ -157,7 +157,7 @@
 # what its name is (usually libz, but sometimes libgz).
 # See gs.mak and make.txt for more information.
 
-SHARE_ZLIB=0
+SHARE_ZLIB=1
 #ZLIB_NAME=gz
 ZLIB_NAME=z
 
@@ -2536,6 +2536,7 @@
 ttfont.dev: $(INT_MAK) $(ECHOGS_XE) type42.dev
 	$(SETMOD) ttfont -include type42
 	$(ADDMOD) ttfont -ps gs_mro_e gs_wan_e gs_ttf
+	$(ADDMOD) ttfont -lib ttf
 
 # Type 42 (embedded TrueType) support
 type42read_=zchar42.$(OBJ) zcharout.$(OBJ) zfont42.$(OBJ)

などというパッチをでっち上げてmakeし直してみた。

ldd gs して見ると、

        libttf.so.2 => /usr/lib/libttf.so.2 (0x40003000)
        libVFlib2.so.24 => /usr/lib/libVFlib2.so.24 (0x4001c000)
        libXt.so.6 => /usr/X11R6/lib/libXt.so.6 (0x4003c000)
        libSM.so.6 => /usr/X11R6/lib/libSM.so.6 (0x4007f000)
        libICE.so.6 => /usr/X11R6/lib/libICE.so.6 (0x40087000)
        libXext.so.6 => /usr/X11R6/lib/libXext.so.6 (0x4009b000)
        libX11.so.6 => /usr/X11R6/lib/libX11.so.6 (0x400a8000)
        libpng.so.2 => /usr/lib/libpng.so.2 (0x4013f000)
        libm.so.6 => /lib/libm.so.6 (0x4015c000)
        libc.so.6 => /lib/libc.so.6 (0x40175000)
        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00000000)

などと表示されて、ちゃんと libtty.so.2 と ibVFlib2.so.24 がリンクされるようになっているように見える。ついでに libpng と zlib もシェアドにするようにして見た、んだけど、あれぇ? png しかシェアドになってねぇじゃん。

でも、まぁ gs に libttf がないぞと文句を言われなくなったからいいや(笑) べつに凝ったことしたいワケじゃなし。

で、最終的には

VFlib2-2.24.0-0.5.i586.rpm
VFlib2-VFjfm-2.24.0-0.5.i586.rpm
VFlib2-devel-2.24.0-0.5.i586.rpm

をJRPMからもらってきて入れ、

ghostscript-5.10jp-2glibc.i386.rpm (自分でパッチあてたやつ)
ghostscript-fonts-5.10jp-1.noarch.rpm 

で、もともと入っていた赤帽ghostscriptを置き換えた。

さて、これで準備完了、ってワケにもいかなくて、VFlibで使うフォントの設定をしてやらなくちゃならない。/etc/vfontcap にゴソゴソ書くのだ。いろいろなフォントが指定によってはかなり自由に使えるのだろうが、取りあえず日本語が印刷できりゃいいや(なげやり)としか思っていないので、適当に MS Gothic と MS Mincho だけ使えるように設定してみた。

まず、vfontcap の先頭にある min と goth を変更する。

min:\
        :fc=zeit-mincho:
goth:\
        :fc=zeit-gothic:

などと、zeit のフォントを使うことになっているが、そんなもな入ってないので

min:\
        :fc=microsoft-mincho:
goth:\
        :fc=microsoft-gothic:

とし、さらに

### TRUETYPE FONT (Windows fonts)
r-microsoft-mincho|MicroSoft mincho:\
        :ft=truetype:\
        :ff=/usr/local/share/fonts/truetype/msmincho:
r-microsoft-gothic|Microsoft gothic:\
        :ft=truetype:\
        :ff=/usr/local/share/fonts/truetype/msgothic:

となっていたのを

### TRUETYPE FONT (Windows fonts)
r-microsoft-mincho|MicroSoft mincho:\
        :ft=freetype:\
        :ff=/usr/X11R6/lib/X11/fonts/ttf/msmincho.ttc:
r-microsoft-gothic|Microsoft gothic:\
        :ft=freetype:\
        :ff=/usr/X11R6/lib/X11/fonts/ttf/msgothic.ttc:

に変更した。この :ft= という部分に freetype:\ と指定することだけが忘れてはいけない点だね。で、:ff= には X-TT で使うためにインストールしたフォントをそのまま指定した。実際にはオレは普段は DynaLAB の丸文字フォントを使っているので、最初はそっちを指定してみたんだけど、ためしに印刷したらあまりにもバカっぽい印刷結果だったんでヤメたんだ(笑) 日本国憲法とか印刷して、ヘナヘナと力が抜けちゃったぜ。最後に TeX を使う人なら

### for ASCII jTeX
###
min|min5|min6|min7|min8|min9|min10|min12|min17|Mincho Font:\
        :fc=zeit-mincho:
goth|goth5||goth6|goth7|goth8|goth9|goth10|goth12|goth17|Gothic Font:\
        :fc=zeit-gothic:
tmin|tmin5|tmin6|tmin7|tmin8|tmin9|tmin10|tmin12|tmin17|Mincho Font:\
        :fc=zeit-mincho:
tgoth|tgoth5||tgoth6|tgoth7|tgoth8|tgoth9|tgoth10|tgoth12|tgoth17|Gothic Font:\
        :fc=zeit-gothic:
bmin:\
        :fc=ricoh-heisei-bold-mincho:
bgoth:\
        :fc=ricoh-heisei-bold-goth:

となっているのを

###--------------------------
### for ASCII jTeX
###
min|min5|min6|min7|min8|min9|min10|min12|min17|Mincho Font:\
        :fc=microsoft-mincho:
goth|goth5||goth6|goth7|goth8|goth9|goth10|goth12|goth17|Gothic Font:\
        :fc=microsoft-gothic:
tmin|tmin5|tmin6|tmin7|tmin8|tmin9|tmin10|tmin12|tmin17|Mincho Font:\
        :fc=microsoft-mincho:
tgoth|tgoth5||tgoth6|tgoth7|tgoth8|tgoth9|tgoth10|tgoth12|tgoth17|Gothic Font:\
        :fc=microsoft-gothic:
bmin:\
        :fc=microsoft-mincho:
bgoth:\
        :fc=microsoft-gothic:

などと変更しないとダメなんじゃないかと思う。TeX ってなんつ〜か、南斗108派みたいにいろいろありすぎて、なんだかワケワカなのでこれから使い込むようになるとは思えないし、どうでもいいや(笑)

こうして設定した ghostscript + VFlib で作った ps ファイルだけど、日本語なものでもそのまま、もとから入っていた gv 3.5.8-4 で見ている。文書のタイトルが日本語だと文字化けしちゃうけど、肝心なpsファイルの中身は何の不都合もなく表示できてるし、そのまま印刷すれば綺麗に出る。PDF も読めた。一応、日本語PDFも読めるはずなんだけど、考えてみたら日本語のPDFなんて手元にひとつもないのでテストしてない(笑)

まぁ、モジラからもきっちり印刷できてるし、日本語テキストもa2psでバッチリだから良しとしよう。


メール 戻る