GNU/Aladdin Ghostscript の料理方法

postscript 互換 Ghostscript を料理しましょう。

最終更新日 : 1999 年 01 月 06 日


  1. 材料
    • 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 ]

  2. 材料の入手
    ソース・コードを入手しないと話になりませんので、誰かにもらうかお買い物に行 きましょう。
    下記の場所や雑誌の付録から入手してください。
    日本語化で色々な方法があるようですが、今回は単純に漢字フォントを使用して日本語化し ようと思いますです。なぜなら 5.50 用の日本語パッチと呼ばれるものが見つからなかったからなんですけどね。あと、 VFlib を使用しようかとも思ったのですが、よくわからない (^^; ので、そのうち試してみます。 current version は 5.50 ( 1998/12/16 現在 ) のようです。
  3. 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 程度 ) パスしました。手順はいっしょみたいなので、早い通信環境の方はこちらをどうぞ。

  4. 下拵え
    ソースを解凍して準備します。
  5. # 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

  6. 料理開始
    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

  7. さぁ、盛り付け
    /usr/local へインストールします。 /usr/usc/install を使用しないとエラーになるので、 Makefile を編集してからおこないます。
  8. # vi Makefile
    INSTALL = install -c

    INSTALL = /usr/ucb/install -c
    # make install

  9. 盛り合わせ
    フォントをインストールしましょうか。
    # 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

  10. 味見
    さっそく動かしてみましょ。最初は画面でプレビューしてみましょう。
    最初にフォントなどがインストールされている場所を環境変数 GS_LIB で設定してからね。 ( Makefile で GS_LIB_DEFAULT で設定されているはずなんだけどなぁ。設定しないと動かないよ。 )
    先程、ついでに解凍した Postscript ファイルで試してみまます。

  11. # 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 に組み込んでね。

  12. 覚え書き
    これで作成した 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

  13. 疑問
    料理してみて以下の疑問がありました。誰か教えて。
    • Makefile 内の GS_LIB_DEFAULT って何に効くんでしょ。実行する時は GS_LIB が必要なようですし...
    • 漢字で大きなフォントを扱ったり、やたらフォントが変わるような文書だとエラーになってしまうようです。う〜ん。
    • xv のマニュアルを展開しようとすると途中でエラーになってしまいました。どうもページが切り替わるときにエラーになる Postscript データがあるようです。

  14. プリンタ・フィルタの設定
    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
    #

  15. 後片付け
    ソース・コードなどはバックアップしておいて作業した生ごみは必要がなければ消 してしまいましょう。
    # 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


[ Solaris 料理コーナー ] [ トップページ ]

BEKKOAME//INTERNET で公開していたページです。
作成: 1998 年 10 月 02 日〜 Copyright (C) 1998-1999 Katsauki Shimizu <katsuaki-s @_nifty.com> All rights reserved.

access counter