4. PostScript の使用

4.1. PostScript とは

PostScript とは、アドビが開発したページ記述言語です。一般の制御コード が(紙面上)シーケンシャルに制御コードを処理していくのに対して、紙面上のど こに何を置くと言うように処理します。置くものは、文字に限らず、図形やビッ トマップも可能です。

詳しく知りたい方は、工学書のコーナーに電話帳級の本が2冊置いてあるので すぐにわかるでしょう。通常は、PostScript プリンタに対して使用します。

4.2. GhostScript とは

GhostScript とは、man ページから言葉を借りれば PostScript のエミュレー タです。PostScript とて、結局はビットイメージに展開しているだけですから、 ビットイメージが印字できるプリンタ(普通出来ないプリンタは無いでしょう)な らエミュレートが可能なわけです。例えば ESC/P を PCPR201 にエミュレートす ることも勿論可能ですが、それをやらないのはメリットが無いからです。逆に言 うと、わざわざエミュレートをすると言うのは、それだけ価値があるということ です。

その価値とは、TeX 等の印字や価格面等だと思います。TeX では dvi 形式の ファイルから印字することも可能ですが、EPS 等を取り込んでいる場合には、や はり PostScript で印字するほうが便利です。価格面でも、PostScript プリン タを買うのに比べ、はるかに安い価格で環境を構築できます。特に Color PostScript は非常に高価ですが、Canon や EPSON 等のインクジェットと組み合 わせることにより、非常に安価に Color PostScript を実現できます。

4.3. GhostScipt の動作

GhostScript の動作は単純です。

                      PostScript
                          ↓
                 GhostScript にて処理
                          ↓
    各種プリンタ制御コード/画像フォーマットに変換

これだけなのです。面倒なのは、各種プリンタ制御コード/画像フォーマット に変換に変換する時の設定/指定です(設定/指定は次の節でやります)。 JE-0.9.7z に収録された GhostScript の、主な出力デバイスを次に示します。

これらは、gs -h で確認できます。

静的に組み込まれたもの

   x11         S X Window System
   dmprt       P dviprt 用のコンフィグレーションファイルを利用した印字

動的に組み込まれたもの

   bj10v       P Canon BJ10系
   bjc600j     P Canon BJC600 用カラー対応(610 の 720dpi は不明)
   dj505j      P HP Desk Jet 505
   epag        P EPSON ESC/Page
   linux       S linux console
   lips        P Canon LIPS
   lips2       P Canon LIPS II
   lips3       P Canon LIPS III
   mjc180      P EPSON MJ800C/700V2C/900C/5000C 等のカラー 180dpi
   mjc360      P EPSON MJ800C/700V2C/900C/5000C 等のカラー 360dpi
   mjc720      P EPSON MJ800C/700V2C/900C/5000C 等のカラー 720dpi
   pr150       P PC-PR150
   tiffg3      S TIFF G3 FAX

dmprt が使用できるので、ほとんどのプリンタは使用できると思います。

4.4. GhostScript + lpr による印字

GhostScript は、プリンタが即理解できるコードを生成しますから、直接スペ シャルファイルに入力しても印字は出来ます。しかし、これではスプーリングも できませんし効率良く使用できないと思います。ですから、GhostScript を lpr のフィルタとして使用します。

ここでは、True Type フォントを用いて、BJ10VLite + dmprt と LP1700 + epag で印字する例を紹介します。なお、GhostScript は JE-0.9.7z に収録され たものを使用します。

共通設定(その一)BJ10 or LP1700の設定 → 共通設定(その二) の順で作業し ます。

4.4.1. 共通設定(その一)

まず共通設定として、GhostScript が使用する日本語フォントの設定を行ない ます。

kconfig.ps の設定

GhostScript は kconfig.ps により、どの日本語フォントを 使用するか決定します。kconfig.ps は、/usr/local/lib/ghostscript/kanji 以下に作成するシン ボリックリンクです(もちろんコピーしても構いませんが、それはださいですよ ね:-)。/usr/local/lib/ghostscript/kanji 以下には、 zeit.psvflib.ps 等 のファイルがあり、使用するものにリンクを張ります。

ここでは、vflib.ps を使用します。vflib.ps とは、広島大学の角川さんが作成された、ベクトルフォントをビット マップデータに変換するライブラリ VFlib を使用するものです。

よって、次のようにシンボリックリンクを張ります。

   # cd /usr/local/lib/ghostscript/kanji
   # ln -s vflib.ps kconfig.ps

vfontcap の設定

VFlib を使用することを設定したので、こんどは VFlib が使用するフォント の設定をします。つまり、

    GhostScript → VFlib → 各種ベクトルフォント

のようになっていて、GhostScript がみているのは VFlib だけなのです。

さて、VFlib が使用するフォントは、/etc/vfontcap ファイルで設定します。vfontcap の 70 行目付近の ff を次のように修正します。この例では、フォン トが /home/sys/fonts2/ 以下にある 場合ですから、各自の環境にあわせてパスを設定して下さい。

   ### TRUETYPE FONT (Windows fonts)
   r-microsoft-mincho|MicroSoft mincho:\
           :ft=truetype:\
           :ff=/home/sys/fonts2/msmincho:  ← ここと
   r-microsoft-gothic|Microsoft gothic:\
           :ft=truetype:\
           :ff=/home/sys/fonts2/msgothic:  ← ここね

さらに、TrueType フォントの場合にはインデックスファイルが必要になりま す。フォントが存在するパス(例では /home/sys/fonts2/ )に移動したら、

   # ttindex msmincho.ttc
   # ttindex msgothic.ttc

を実行してインデックスファイルを作成します。フォントが Windows3.1 の場合 には、拡張子が ttc ではなく、ttf になります。

次に、160 行目付近の次の部分をコメントアウトします。

   # zeit-maru
   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-gothicMH:
   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-gothicMH:
   bmin:\
           :fc=zeit-mincho:
   bgoth:\
           :fc=zeit-gothicMH:

こんどは、209 行目付近の # TrueType から *次の行以降* のコメントを外します。

   # TrueType
   #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:

以上で共通設定(その一)は完了です。ここでテストをしてみましょう。

/usr/local/lib/ghostscript 以下に移動して、次のコマンド を実行してみて下さい。

X Window System の場合

   gs article9.ps

Linux のコンソールの場合

   gslx article9.ps

画面上に日本国憲法が表示されればOKです。もしうまく行かない場合、which gs として、どこの gs を実行しているか チェックして下さい。JE の gs は、 /usr/local/bin/gs(gslx) です。

Canon BJ10VLite + dmprt driver

dmprt は dviprt の設定ファイルを利用するドライバです。この設定ファイルは、 /usr/local/lib/prtcfg/ 以下にあります。 cfgsrc のサブディレクトリがありますが、前者は後者をバイナリ変換した ものです。筆者は変換が面倒なので、src (ソース)を利用しています。このファイルを利用することは、 /usr/local/lib/ghostscript/dmp_site.ps で設定します。

dmp_site.ps には、

   /printer (/usr/local/lib/prtcfg/src/bj_10v48.src)
とだけ書いておけば、一応動きます。しかし、これだけでは大抵印字がずれる ので、オフセットやマージンも定義します。
   /margin  [ 3.675 mm 12.7 mm 0.0 mm 0.0 mm ]
   /offset  [ 0.0 mm -4.0 mm ]
ですから、3 行もあれば十分でしょう。

dmp_site.ps が修正できたら、フィルタを作成します。 フィルタは /usr/local/lib/gsf に、次のように作成すると 良いでしょう。作成後 chmod 755 とするのを忘れないで 下さい。

   #!/bin/sh
   /usr/local/bin/gs -q -dNOPAUSE -sDEVICE=dmprt -r360 \
   -sPAPERSIZE=a4 -sOutputFile=- -
   exit 0
2 行目の -r360 は、解像度(dpi)ですから、プリンタにあわせて 決定します。

EPSON LP1700 + epag driver

この組合せでは、GhostScript 組み込まれたドライバがそのまま使用できます から、次のように /usr/local/lib/gsf でフィルタを作成し、 chmod 755 として おきます。

   #!/bin/sh
   /usr/local/bin/gs -q -dNOPAUSE -sDEVICE=epag -r300 \
   -sPAPERSIZE=a4 -sOutputFile=- -
   exit 0

4.4.2. 共通設定(その二)

残るは lpr の設定です。3.1 章, 3.2 章で説明したとおり、printcap とスプールディレクトリを作成します。

printcap の設定

/etc/printcap に、次のリストを追加します。記述するとき、 既に ps のプリンタ名(エントリ)が無いことも確認して下さい。

   1     ps|gs|GhostScript printer:\
   2             :lp=/dev/lp1:sh:mx#0:\
   3             :if=/usr/local/lib/gsf:\
   4             :sd=/var/spool/lpr/ps:\
   5             :lf=/var/spool/lpr/ps/lpr-error:

スプールディレクトリの作成

スプールディレクトリを作成します。

   # mkdir /var/spool/lpr
   # mkdir /var/spool/lpr/ps
作成したら、3.3 章と同様に lpc を実行して下さい。

4.4.3. テスト印字

全ての設定が終ったので、テスト印字をします。さきほどと同様に /usr/local/lib/ghostscript 以下に移動して、次のコマンド を実行してみて下さい。

   # lpr -Pps article9.ps

これで、共通設定(その一)の画面と同様に、日本国 憲法がプリンタから出力されます。

うまく印字されない場合、gs -h を起動して、ドライバー がサポートされているか確認して下さい。JE-0.9.7z の GhostScript では、次のよう になります。

   Ghostscript version 2.6.2 (4/19/95)
   Copyright (C) 1990-1995 Aladdin Enterprises, Menlo Park, CA.
   Usage: gs [switches] [file1.ps file2.ps ...]
   Available devices:
       x11 dmprt
   Dynamic modules:
       bit       bj10v     bj10vh    bjc600j   bjc600jc  bmp16     bmp16m   
       bmp256    bmpmono   cdj560    dj505j    dj505jc   epag      escp     
       escpc     jj100     linux     lips      lips2     lips3     mag16    
       mag256    mjc180    mjc360    mjc720    pbm       pbmraw    pcx16    
       pcx256    pcxgray   pcxmono   pgm       pgmraw    ppm       ppmraw   
       pr150     tiffg3    x11       dfaxhigh  dfaxlow   以下省略