- 材料
- Solaris[ developper ]以上ががインストールされたコンピュータ。
今回は Solaris2.6 / Ultra5 を素材にしました。
- GNU/Aladdin Ghostscript のソース・コード
- 漢字フォント
- プリンタドライバなど
- GNU gcc の実行環境
- GNU gzip の実行環境
- GNU patch の実行環境
- path は [ /bin /usr/bin /usr/sbin /usr/ccs /usr/ccs/bin /usr/openwin/bin
/usr/openwin/bin/xview /usr/local/bin . ]
- LD_LIBRARY_PATH は [ /usr/openwin/lib /usr/local/lib ]
- 材料の入手
ソース・コードを入手しないと話になりませんので、誰かにもらうかお買い物に行
きましょう。
下記の場所や雑誌の付録から入手してください。
日本語化で色々な方法があるようですが、今回は単純に漢字フォントを使用して日本語化し
ようと思いますです。なぜなら 5.50
用の日本語パッチと呼ばれるものが見つからなかったからなんですけどね。あと、 VFlib
を使用しようかとも思ったのですが、よくわからない (^^; ので、そのうち試してみます。
current version は 5.50 ( 1998/12/16 現在 ) のようです。
ftp://ftp.win.or.jp/pub/graphics/ghostscript/ggs550/ から Ghostscript
本体を取得しました。
- ghostscript-5.50.tar.gz ( 2826251 bytes )
- ghostscript-5.50gnu.tar.gz ( 11838 bytes )
- ghostscript-5.50jpeg.tar.gz ( 613261 byte )
- ghostscript-5.50libpng.tar.gz ( 225386 byte )
- ghostscript-5.50zlib.tar.gz ( 168463 bytes )
- ghostscript-fonts-other-5.50.tar.gz ( 799962 bytes )
- ghostscript-fonts-std-5.50.tar.gz ( 1444863 bytes )
http://www.flatout.org/~daisuke/Linux/gs/gs.html より日本語パッチ
gs510j20.tar.gz ( 789461 bytes ) を取得しました。 ghostscript 5.10
用の日本語パッチですが、この中からプリンタドライバを拝借します。どっかにドライバだ
けまとめて保存されているのでしょうか ? 今回は Canon の LIPS
での出力を考慮します。ドライバに関する場所は 緑色で書いてありますので、他のドライバに置き換えるか必要なけ
れば無視してください。
http://www.citics.saitama-u.ac.jp/ftp/pub/lecture/gs/ から gs5.50.kanji.tar.gz
( 5463103 bytes ) を取得しました。和田研フォントというのも
http://www.citics.saitama-u.ac.jp/ftp/pub/lecture/gs/ から wadalab-PFA.tar.gz
を取得できるようです。こっちの方がきれいなんだそうですが、大きいので ( 全部で
13MByte 程度 )
パスしました。手順はいっしょみたいなので、早い通信環境の方はこちらをどうぞ。
- 下拵え
ソースを解凍して準備します。
# cd /usr/local/compile
# gzip -dc ghostscript-5.50.tar.gz | tar xvf -
# gzip -dc ghostscript-5.50gnu.tar.gz | tar xvf -
# gzip -dc ghostscript-5.50jpeg.tar.gz | tar xvf -
# mv jpeg-6b gs5.50/jpeg
# gzip -dc ghostscript-5.50zlib.tar.gz | tar xvf -
# mv zlib-1.1.3 gs5.50/zlib
# gzip -dc ghostscript-5.50libpng.tar.gz | tar xvf -
# mv libpng-1.0.2 gs5.50/libpng
Canon LIPS のドライバを設定します。ついでに後でテストするための日本語の Postscript も解凍しておきましょ。何かテスト用を持っているなら必要ないですよん。
# gzip -dc gs510j20.tar.gz | tar xvf - drivers kanji
# cd drivers/gdevlips4-1.2.0
# cp gdevlips4.c ../../gs5.50
# cp gdevlips4.mak ../../gs5.50
# cd ../..
ghostscript のディレクトリに移動します。
# cd gs5.50
- 料理開始
Makefile のテンプレートが沢山用意されていますので、それを使用します。 gcc を使用しますが、
unixansi.mak の方がいいみたいね。 Solaris 用に若干 Makeifle を編集します。
そしたら make ね。
出力デバイスに LIPS を採用するようにすると、 lips3 というのがマルチプルデファインになってしまうんです。どうしましょ ... という事でどうせ contrib.mak にある lips3 は使用しないので、こちらを lipsx なんて名前に変更して回避しちゃいましょ。 (^^;
# cp unixansi.mak Makefile
# cat gdevlips4.mak >> Makefile
# vi Makefile
#CC=some_C_compiler
↓
CC=gcc
XCFLAGS=
↓
XCFLAGS=-DSVR4
#XLIBDIRS=-L/usr/openwin/lib -R/usr/openwin/lib
↓
XLIBDIRS=-L/usr/openwin/lib -R/usr/openwin/lib
XINCLUDE=-I/usr/local/X/include
↓
XINCLUDE=-I/usr/openwin/include
EXTRALIBS=
↓
EXTRALIBS=-lnsl -lsocket
prefix = /usr/local
↓
GS_DOT_VERSION=5.50
prefix = /usr/local
datadir = $(prefix)/share
↓
datadir = $(prefix)/lib
gsdir = $(datadir)/ghostscript
↓
gsdir = $(datadir)/gs
GS_LIB_DEFAULT=$(gsdatadir):$(gsdir)/fonts
↓
GS_LIB_DEFAULT=$(gsdtadir):$(gsdatadir)/fonts:$(gsdatadir)/kanji:$(gsdir):$(gsdi
r)/fonts:/$(gsdir)/kanji
DEVICE_DEVS1=
↓
DEVICE_DEVS1=lips3.dev lips3fig.dev lips4.dev lips4fig.dev lips4c.dev lips4cfig.dev lbp2030.dev
# vi contrib.mak
lips3.dev: $(lbp8_) page.dev
↓
lipsx.dev: $(lbp8_) page.dev
$(SETPDEV) lips3 $(lbp8_)
↓
$(SETPDEV) lipsx $(lbp8_)
# vi gdevlbp8.c
private dev_proc_print_page(lips3_print_page);
↓
private dev_proc_print_page(lipsx_print_page);
gx_device_printer far_data gs_lips3_device =
↓
gx_device_printer far_data gs_lipsx_device =
prn_device(prn_std_procs, "lips3",
↓
prn_device(prn_std_procs, "lipsx",
1, lips3_print_page);
↓
1, lipsx_print_page);
static const char lips3_init[] = {
↓
static const char lipsx_init[] = {
static const char lips3_end[] = {
↓
static const char lipsx_end[] = {
lips3_print_page(gx_device_printer *pdev, FILE *prn_stream)
↓
lipsx_print_page(gx_device_printer *pdev, FILE *prn_stream)
{ return can_print_page(pdev, prn_stream, lips3_init, sizeof(lips3_init),
↓
{ return can_print_page(pdev, prn_stream, lipsx_init, sizeof(lipsx_init),
lips3_end, sizeof(lips3_end));
↓
lipsx_end, sizeof(lipsx_end));
# ln -s ./obj/arch.h arch.h
# make
- さぁ、盛り付け
/usr/local へインストールします。 /usr/usc/install
を使用しないとエラーになるので、 Makefile を編集してからおこないます。
# vi Makefile
INSTALL = install -c
↓
INSTALL = /usr/ucb/install -c
# make install
- 盛り合わせ
フォントをインストールしましょうか。
# mkdir -p /usr/local/lib/gs/5.50
# cd /usr/local/lib/gs/5.50
# gzip -dc /usr/local/compile/ghostscript-fonts-std-5.50.tar.gz | tar xvf -
# gzip -dc /usr/local/compile/ghostscript-fonts-other-5.50.tar.gz | tar xvf -
# cp /usr/local/compile/gs5.50/Fontmap.Sol /usr/local/lib/gs/5.50
# gzip -dc /usr/local/compile/gs5.50.kanji.tar.gz | tar xvf -
# cp Fontmap Fontmap.org
# cp Fontmap.kanji Fontmap
- 味見
さっそく動かしてみましょ。最初は画面でプレビューしてみましょう。
最初にフォントなどがインストールされている場所を環境変数 GS_LIB で設定してからね。 ( Makefile で GS_LIB_DEFAULT で設定されているはずなんだけどなぁ。設定しないと動かないよ。 )
先程、ついでに解凍した Postscript ファイルで試してみまます。
# setenv GS_LIB /usr/local/lib/gs/5.50:/usr/local/lib/gs/5.50/fonts
# cd /usr/local/compile/kanji
# gs allkanji.ps
Aladdin Ghostscript 5.50 (1998-9-16)
Copyright (C) 1998 Aladdin Enterprises, Menlo Park, CA. All rights reserved.
This software comes with NO WARRANTY: see the file PUBLIC for details.
Loading NimbusMonL-Regu font from /usr/local/lib/gs/5.50/fonts/n022003l.pfb... 1972316 613758 1309088 23855 0 done.
ほら、見えたでしょ ?
じゃ、今度は pdf ファイルに変換してみましょ ... か。
gs -q -dNOPAUSE -sDEVICE=pdfwrite -sPAPERSIZE=a4 -sOutputFile=allkanji.pdf allkanji.ps -c quit
これでできた allkanji.pdf を Adobe Acrobat Reader のある環境に持って行って見てみましょ。見えるでしょ ?
今度は、追加したデバイス Canon LIPS4 で出力してみましょう。
gs -q -dNOPAUSE -sDEVICE=lips4 -sPAPERSIZE=a4 -sOutputFile=allkanji.lips allkanji.ps -c quit
これで出来たファイルをプリンター ( Canon LBP ) に送ってみましょ。当然他のフィルターが当たらない出力でね。
# lp -d raw allkanji.lips
ちゃんと出力されたでしょ ? 必要ならフィルターとして lp に組み込んでね。
- 覚え書き
これで作成した Ghostscript がサポートするデバイスは以下のようになっているはずです。きっと ( Makefile より )
- x11 x11alpha x11cmyk x11mono
- deskjet djet500 laserjet ljetplus ljet2p ljet3 ljet4
- cdeskjet cdjcolor cdjmono cdj550 pj pjxl pjxl300
- uniprint
- bj10e bj200 bjc600 bjc800
- faxg3 faxg32d faxg4
- jpeg jpeggray pcxmono pcxgray pcx16 pcx256 pcx24b
- pbm pbmraw pgm pgmraw pgnm pgnmraw pnm pnmraw ppm ppmraw
- tiffcrle tiffg3 tiffg32d tiffg4 tifflzw tiffpack
- tiff12nc tiff24nc
- psmono psgray bit bitrgb bitcmyk
- pngmono pnggray png16 png256 png16m
- pdfwrite pswrite epswrite pxlmono pxlcolor
- lips4 lips4fig lips4c lips4c lips4c
- mjc180 mjc360 mjc720 mjc720
- 疑問
料理してみて以下の疑問がありました。誰か教えて。
- Makefile 内の GS_LIB_DEFAULT って何に効くんでしょ。実行する時は GS_LIB が必要なようですし...
- 漢字で大きなフォントを扱ったり、やたらフォントが変わるような文書だとエラーになってしまうようです。う〜ん。
- xv のマニュアルを展開しようとすると途中でエラーになってしまいました。どうもページが切り替わるときにエラーになる Postscript データがあるようです。
- プリンタ・フィルタの設定
Postcript to LIPS IV という条件でプリンタのフィルタとして登録してみましょ。プリンタのフィルタに関して詳しくは、 lp の料理方法 を見てね。
プリンタ名は gsl にします。接続ポートはプリンタポートなので /dev/bpp0 ( /dev/ecpp0 ) ですもん。
# lpstat -t
# lpadmin -p gsl -v /dev/ecpp0
# lpadmin -p gsl -T unknown
# lpadmin -p gsl -o nobanner
# accept gsl
# enable gsl
# lpstat -t
フィルタの記述子とフィルタのスクリプトを作成します。
フィルタの記述子は /etc/lp/fd で、フィルタ本体は /usr/lib/lp/local に作成します。 ghostscript 本体は /usr/local/bin ね。
# cd /etc/lp/fd
# vi gstolips.fd
#ident "@(#)gstolips.fd 1.0 99/01/06 "
Input types: postscript
Output types: gstolips
Printer types: unknown
Printers: any
Filter type: fast
Command: /usr/lib/lp/local/gstolips
# chown lp gstolips.fd
# chgrp lp gstolips.fd
# cd /usr/lib/lp/local
# vi gstolips
#!/bin/sh
#
# for Canon LIPS printer ghostscript filter
#
GS_LIB=/usr/local/lib/gs/5.50:/usr/local/lib/gs/5.50/fonts
export GS_LIB
PATH=.:/bin:/usr/bin:/usr/sbin:/usr/local/bin
export PATH
#
/bin/rm -f /tmp/gstolips_1
/bin/cat - > /tmp/gstolips_1
#
/usr/local/bin/gs -q -dNOPAUSE -sDEVICE=lips4 -sPAPERSIZE=a4 -sOutputFile=/tmp/gstolip
s_2 /tmp/gstolips_1 -c quit
#
/bin/cat /tmp/gstolips_2
#
/bin/rm -f /tmp/gstolips_1
/bin/rm -f /tmp/gstolips_2
exit 0
# chown lp gstolips
# chgrp lp gstolips
# chmod 755 gstolips
フィルタを登録します。
# lpadmin -p gsl -I gstolips
# lpfilter -f gstolips -F /etc/lp/fd/gstolips.fd
#
印刷してみましょ。
# lp -d gsl test.ps
#
- 後片付け
ソース・コードなどはバックアップしておいて作業した生ごみは必要がなければ消
してしまいましょう。
# cd /usr/local/compile
# rm -r ghostscript-5.50.tar.gz ghostscript-5.50gnu.tar.gz ghostscript-5.50jpeg.tar.gz ghostscript-5.50libpng.tar.gz ghostscript-5.50zlib.tar.gz ghostscript-fonts-other-5.50.tar.gz ghostscript-fonts-std-5.50.tar.gz gs5.50.kanji.tar.gz gs510j20.tar.gz drivers kanji gs5.50
|