# LIPS & ESC/Page & NPDL 対応 Ghostscript デバイスドライバ

このソフトウェアは Ghostscript 5.10/5.50 用のデバイスドライバとして作られています。

デバイスドライバとしてラスター版デバイスの lips2p、lips3、bjc880j、lips4、 escpage、lp2000、npdl デバイスと、 ベクター版デバイスの lips4v が含まれています。

各機種とデバイスの対応は、LIPS 対応プリンタと出力デバイス、 ESC/Page 対応プリンタと出力デバイス、 NPDL 対応プリンタと出力デバイスを見て下さい。

## インデックス

- 配布条件
- gdevlips4-1.2.0 との違い
- epag-3.08 との違い
- gdevnpdl-1.5 との違い
- LIPS 対応プリンタと出力デバイス
- ESC/Page 対応プリンタと出力デバイス
- NPDL 対応プリンタと出力デバイス
- 対応していないプリンタ
- インストール
- 使用方法/使用オプション
  - LIPS・ESC/Page・NPDL 共通オプション
    - デバイス変更
    - デフォルトページサイズ変更
    - 複数部印刷
    - 解像度変更
    - 両面印刷
    - 白黒反転印刷
  - ESC/Page のみのオプション
    - RIT (輪郭補正機能) をオフにする
  - LIPS のみのオプション
    - モノクロとカラー出力の切替え
    - 給紙方法の選択
    - パネル表示変更
    - 用紙種類設定
    - フェイスアップトレイの出力
    - n 面印刷
    - フォントダウンロード
    - PJL 出力
      - トナー濃度調節
      - トナー節約
  - Netatalk・CAP と Ghostscript + gdevlips
- LIPS IV 出力における高解像度印字に関する注意
- 変更履歴
- バグ
  - npdl.dev
    - 1. 印刷位置がずれる
    - 2. 両面印刷できない
  - bjc880j.dev
    - 1. ランドスケープ回転時に印刷位置がちょっとずれる
  - lips4v.dev
    - 1. パスのクリッピング処理時のメモリ不足 (システムメモリフル エラー)
    - 2. 幅がゼロのパスをフィルしたとき何も描かれない
    - 3. 移動距離 0 のパスの扱い
    - 4. Projecting square cap のバグ
    - 5. Round cap のバグ
    - 6. 線の太さが違う
    - 7. 破線のパターンが描かれない
    - 8. lips4v ドライバでカラーでパターンを描いた場合色がおかしいことがある
- FAQ
  - プリンタの出力は速くならないの?
  - プリンタの内蔵フォントは使えないの?
  - B4 または B5 サイズの用紙指定がうまくいかないんだけど
  - n 面印刷をするには、どうしたらいいの?
  - 用紙サイズの拡大、縮小印刷をするにはどうするんですか?
  - 印刷位置を調整するにはどうしたらいいですか?
  - ラスター版デバイスとベクター版デバイスの違いは?
  - LIPS IV 以外ドライバのベクター版は作らないの?
  - lbp2030.dev はどこいったの?
  - lips3fig、lips4cfig、lips4fig がないんだけど
  - どうして LIPS II+ 対応ドライバは lips2+ や lips2plus という名前じゃないの?
- 謝辞
- 参考文献

## 配布条件

このソフトウェアの配布条件は GNU General Public License (GPL) Ver.2 に準じます。

また、このドライバの一時配布先は当面 <URI:http://www.bukka.p.chiba-u.ac.jp/~ohmori/> とします。

このソフトウェアに関しての問い合わせは大森紀人 <URI:mailto:ohmori@p.chiba-u.ac.jp>にお願いします。

## gdevlips4-1.2.0 との違い

lips3.dev lips4c.dev lips4.devに関して、gdevlips4-1.2.0 での次のような不具合が 直っています。

- 上マージンが印字限界の 5mm まで印刷できるようになった。(gdevlips4-1.2.0 では63/300インチ(約10.3mm))
- マージン変更に対応
- ページサイズ変更に対応。出力できないページサイズにはちゃんとエラーを返す。
- 解像度変更に対応。出力できない解像度にはちゃんとエラーを返す。
- プリンタの白紙を出力しない設定がきちんと反映される。
- BJC-880J でA4より大きい用紙に印刷するとき「20 ページ オーバー」のエラーが発生する問題の解決

また次のような機能が追加されています。

- 出力の高速化
  - Ghostscript の処理の高速化
  - プリンタの出力の高速化
  - 複数部印刷時の高速化
- デバイスの追加
  - LIPS II+ に対応
  - LBP-840/LBP-850 のスーパーファイン LIPS (1,200 dpi)に対応
  - ベクター版デバイス lips4v.dev
- 給紙方法の選択に対応
- ラスターイメージの圧縮に対応
- パネル表示変更に対応
- 両面印刷ユニットに対応 (LIPS IV のみ)
- n 面印刷機能に対応 (LIPS IV のみ)
- トナー濃度調節機能に対応 (LIPS IV のみ)
- トナー節約機能に対応 (LIPS IV のみ)

## epag-3.08 との違い

ESC/Page ドライバ部分は epag-3.08 をベースに若干のバグフィックスをしました。 さらに複数部印刷を効率的に出力できるようにしました。白黒反転印刷に対応しました。 また、epag-3.08 はかなりエラー処理が甘いのでそこにも手を入れてあります。

ESC/Page 用のデバイスが二つに増えているのは Ghostscript の仕様に合わせるためです。 逆にいうと epag-3.08 は Ghostscript の仕様に合っていません。 (例えば LP-1700S では epag-3.08 では -r600 オプションを指定しただけでは 600 dpi 印刷が正常にできません。)

## gdevnpdl-1.5 との違い

このドライバに含まれる npdl.dev は gdevnpdl-1.5 に次のような機能が追加されています。

- 印刷速度の高速化
- はがきサイズのサポート
- ランドスケープのサポート
- 複数部印刷時にコピーモードを使い高速に印刷できる
- 白黒反転印刷に対応

また、解像度のデフォルトが 240 dpi になっているところが異なります。 (gdevnpdl-1.5 では 400 dpi)

## LIPS 対応プリンタと出力デバイス

LIPS 対応プリンタと出力デバイス名/解像度のリストです。 これは、あくまでも規格上出力できるものをリストしただけで、全てのプリンタで実際に出力できることを確認したわけではないので注意して下さい。

機種 | デバイス名 | 解像度 (dpi) | 備考
--- | --- | --- | ---
LBP-B406S | lips2p | 240x240
lips3 | 300x300 | 拡張RAM及び拡張ROMの増設が必要
LBP-B406D | lips2p | 240x240
lips3 | 300x300 | 拡張RAM及び拡張ROMの増設が必要
LBP-B406E | lips3 | 300x300
LBP-B406G | lips3 | 300x300
LBP-B406E II | lips3 | 300x300
LBP-B406G II | lips3 | 300x300
LBP-A404 | lips2p | 240x240
lips3 | 300x300 | 拡張RAM及び拡張ROMの増設が必要
LBP-B404E | lips3 | 300x300
LBP-A404G II | lips3 | 300x300
LBP-A404F | lips3 | 300x300
LBP-A405Jr. | lips3 | 300x300
LBP-A304E | lips3 | 300x300
LBP-A304E II | lips3 | 300x300
LBP-A304G II | lips3 | 300x300
LBP-A309G II | lips3 | 300x300
LBP-310 | lips3 | 300x300
LBP-320 | lips3 | 300x300
LBP-320Pro | lips3 | 300x300
LBP-730 | lips4 | 300x300, 600x600
lips4v | 300x300, 600x600 | MaxiMem 非対応なのでパスクリッピング時のメモリ不足に注意
LBP-720 | lips4 | 300x300, 600x600
lips4v | 300x300, 600x600 | MaxiMem 非対応なのでパスクリッピング時のメモリ不足に注意
LBP-450 | lips4 | 300x300, 600x600
lips4v | 300x300, 600x600 | MaxiMem 非対応なのでパスクリッピング時のメモリ不足に注意
LBP-830 | lips4 | 300x300, 600x600
lips4v | 300x300, 600x600 | MaxiMem 非対応なのでパスクリッピング時のメモリ不足に注意
LBP-430 | lips4 | 300x300, 600x600
lips4v | 300x300, 600x600
LBP-930 | lips4 | 300x300, 600x600
lips4v | 300x300, 600x600
LBP-750 | lips4 | 300x300, 600x600
lips4v | 300x300, 600x600
LBP-740 | lips4 | 300x300, 600x600
lips4v | 300x300, 600x600
LBP-930EX | lips4 | 300x300, 600x600
lips4v | 300x300, 600x600
LBP-850 | lips4 | 300x300, 600x600, 1200x1200 | 1200 dpi 時は lips4v のほうがいい?
lips4v | 300x300, 600x600, 1200x1200
LBP-840 | lips4 | 300x300, 600x600, 1200x1200 | 1200 dpi 時は lips4v のほうがいい?
lips4v | 300x300, 600x600, 1200x1200
LBP-2030 | lips4 | 300x300, 600x600 | カラー出力は -dBitsPerPixel=24 オプションで。(このドライバでは非常に遅いです。)
lips4v | 300x300, 600x600 | カラー出力は -dBitsPerPixel=24 オプションで。MaxiMem 非対応なのでパスクリッピング時のメモリ不足に注意
LBP-2160 | lips4 | 300x300, 600x600 | カラー出力は -dBitsPerPixel=24 オプションで。(このドライバでは非常に遅いです。)
lips4v | 300x300, 600x600 | カラー出力は -dBitsPerPixel=24 オプションで。
LBP-2040 | lips4 | 300x300, 600x600 | カラー出力は -dBitsPerPixel=24 オプションで。(このドライバでは非常に遅いです。)
lips4v | 300x300, 600x600 | カラー出力は -dBitsPerPixel=24 オプションで。
BJC-880J | bjc880j | 360x360 | カラー出力は -dBitsPerPixel=24 オプションで。(非常に遅いです。)
BJC-680J | bjc880j | 360x360 | カラー出力は -dBitsPerPixel=24 オプションで。(非常に遅いです。)

## ESC/Page 対応プリンタと出力デバイス

ESC/Page 対応プリンタと出力デバイス名/解像度のリストです。 これは、あくまでも規格上出力できるものをリストしただけで、全てのプリンタで実際に出力できることを確認したわけではないので注意して下さい。

機種 | デバイス名 | 解像度 (dpi) | 備考
--- | --- | --- | ---
LP-7000 | lp2000 | 240x240
LP-7000G | lp2000 | 240x240
LP-2000 | lp2000 | 300x300
LP-3000 | lp2000 | 300x300
LP-1500 | escpage | 300x300
LP-1500S | escpage | 300x300
LP-8000 | escpage | 300x300
LP-8000S | escpage | 300x300
LP-8000SE | escpage | 300x300
LP-8000SX | escpage | 300x300
LP-1000 | escpage | 300x300
LP-1600 | escpage | 300x300, 600x600
LP-1700 | escpage | 300x300, 600x600
LP-1700S | escpage | 300x300, 600x600
LP-1800 | escpage | 300x300, 600x600
LP-800 | escpage | 300x300, 600x600
LP-8200 | escpage | 300x300, 600x600
LP-8300 | escpage | 300x300, 600x600
LP-8300S | escpage | 300x300, 600x600
LP-8400 | escpage | 300x300, 600x600
LP-8500 | escpage | 300x300, 600x600
LP-8600 | escpage | 300x300, 600x600
LP-9000 | escpage | 300x300, 600x600
LP-9200 | escpage | 300x300, 600x600
LP-9200S | escpage | 300x300, 600x600
LP-9200SX | escpage | 300x300, 600x600
LP-9300 | escpage | 300x300, 600x600
LP-9600 | escpage | 300x300, 600x600
LP-8000C | escpage | 300x300, 600x600 | カラー出力はできません

## NPDL 対応プリンタと出力デバイス

NPDL 対応プリンタと出力デバイス名/解像度のリストです。 これは、あくまでも規格上出力できるものをリストしただけで、全てのプリンタで実際に出力できることを確認したわけではないので注意して下さい。

機種 | デバイス名 | 解像度 (dpi) | 備考
--- | --- | --- | ---
PC-PR1000 | npdl | 240x240 | 白黒反転印刷(-dNegativePrint)に非対応
PC-PR2000 | npdl | 240x240 | 白黒反転印刷(-dNegativePrint)に非対応
PC-PR1000/2 | npdl | 240x240 | 白黒反転印刷(-dNegativePrint)に非対応
PC-PR2000/2 | npdl | 240x240
PC-PR2000/4 | npdl | 400x400
PC-PR4000/4 | npdl | 400x400
PC-PR3000PS/4F | npdl | 400x400 | PostScript にも対応
PC-PR1000/4 | npdl | 400x400
PC-PR3000PS/4 | npdl | 400x400 | PostScript にも対応
PC-PR4000E/4 | npdl | 400x400
PC-PR1000E/4R | npdl | 400x400
PC-PR1000E/4 | npdl | 400x400
PC-PR1000FX/4 | npdl | 400x400
PC-PR2000/4R | npdl | 400x400
PC-PR2000/4W | npdl | 400x400
PC-PR2000/6W | npdl | 600x600
PC-PR1000E/4W | npdl | 400x400
MultiWriter 1000EW (PC-PR1000EW) | npdl | 400x400
MultiWriter 2000E (PC-PR2000E) | npdl | 400x400
MultiWriter 2000FW (PC-PR2000FW) | npdl | 600x600
MultiWriter 2000NW (PC-PR2000NW) | npdl | 400x400
MultiWriter 2200NW2 (PC-PR2200NW2) | npdl | 400x400
MultiWriter 2400 (PC-PR2400) | npdl | 400x400
MultiWriter 2000X (PC-PR2000X) | npdl | 600x600
MultiWriter 2200X (PC-PR2200X) | npdl | 600x600
MultiWriter 2400X (PC-PR2400X) | npdl | 400x400
MultiWriter 2200X2 (PR-L2200X2) | npdl | 600x600
MultiWriter 2200XE (PR-L2200X2) | npdl | 600x600
MultiWriter 2000X2 (PR-L2000X2) | npdl | 600x600
MultiWriter 1400X (PR-L1400X) | npdl | 600x600
MultiWriter 6050 (PC-L6050A) | npdl | 400x400, 600x600
MultiWriter 4050 (PR-L4050) | npdl | 400x400, 600x600
MultiWriter 2050 (PR-L2050) | npdl | 600x600
MultiWriter 2250 (PR-L2250) | npdl | 600x600
MultiWriter 2650 (PR-L2650) | npdl | 600x600
MultiWriter 2650E (PR-L2650E) | npdl | 600x600

## 対応していないプリンタ

次のプリンタはサポートしていません。

- LIPS I/LIPS II プリンタ
- Windows Printing System (WPS)専用プリンタ
  - Canon LBP-210
  - Canon LBP-220
  - Canon LBP-220Pro
  - NEC MultiWriter 1000LW(PC-PR1000LW)
  - NEC MultiWriter 1100(PR-L1100)
- Canon LBP-310/LBP-320/LBP-320Pro のイメージモード(LIPS III では出力可能)
- Canon BJC-680J/BJC-880J 以外のインクジェットプリンタ
- EPSON LP-5000 (古すぎ)

## インストール

1. Ghostscript のソースディレクトリに gdevespg.c、 gdevl4r.c、 gdevl4v.c、gdevlips.c、gdevlips.h、 gdevlprn.c、gdevlprn.h、gdevnpdl.c をコピーします。(要するに *.c *.h をコピーします。)

             例:
             cp *.c *.h "Ghostscript のディレクトリ"

2. Ghostscript 5.50 の場合は gdevlips.mak を contrib.mak に追加します。

             例:
             cat gdevlips.mak >>contrib.mak

3. Ghostscript 5.10 の場合は gdevlips.mak を Makefile に追加します。

             例:
             cat gdevlips.mak >>makefile

4. Makefile の DEVICE_DEVS にデバイスとその機能に述べられるのデバイスのうち必要なものを記述します。
5. B4、B5、B6 サイズなどの用紙を扱う場合は gs_statd.ps にパッチをあてます。

             例:
              patch <gs_statd.dif

6. Ghostscript をコンパイルし、インストールします。

### デバイスとその機能

#### ラスター版ドライバ

lips2p.dev
  LIPS II+ のコードを出力します。
lips3.dev
  LIPS III のコードを出力します。
bjc880j.dev
  LIPS IVc (BJC-680J/880J 用)のコードを出力します。カラー出力にも対応しています。
lips4.dev
  LIPS IV のコードを出力します。カラー出力にも対応しています。
lp2000.dev
  ESC/Page のコードを出力します。(LP-2000/LP-3000/LP-7000/LP-7000G 用です。)
escpage.dev
  ESC/Page のコードを出力します。対応機種はESC/Page 対応プリンタと出力デバイスを参照のこと。
npdl.dev
  NPDL のコードを出力します。対応機種はNPDL 対応プリンタと出力デバイスを参照のこと。

#### ベクター版ドライバ

lips4v.dev
  LIPS IV のコードを出力します。カラー出力にも対応しています。

## 使用方法/使用オプション

以下にかかれているオプションは PostScript ファイルの中のオペレータでも変更されることがあります。 lpd のフィルターとして使う場合はこの中で -sDEVICE、 -r のみを指定するとよいでしょう。

### LIPS・ESC/Page・NPDL ドライバ共通オプション

-sDEVICE
  出力するデバイスの変更に使用します。最低限これだけは指定して下さい。
-sPAPERSIZE
  出力する用紙サイズの変更に使用します
-dNumCopies
  印刷部数を指定する場合に使用します
-r
  解像度を指定する場合に使用します
-dDuplex
  両面印刷する場合に使用します
-dTumble
  両面印刷する場合にとじ方向を変更する場合に使用します
-dNegativePrint
  白黒反転印刷ができます。

### ESC/Page ドライバのみのオプション

-dRITOff
  RIT (輪郭補正機能)をオフにする場合に使用します

### LIPS ドライバのみのオプション

-dBitsPerPixel
  LIPS IV においてモノクロとカラー出力を切替えるために使用します
-dManualFeed
  給紙トレイから給紙する場合に使用します
-dCasset
  給紙するトレイ/カセットを指定する場合に使用します
-sUserName
  プリンタのパネルに表示する文字を変更する場合に使用します
-sMediaType
  LBP-2160 (LBP-2040 も?)で出力する用紙の種類を指定するために使用します。
-dOutputFaceUp
  LBP-2160 (LBP-2040 も?)でフェイスアップトレイに出力するために使用します。
-dNup
  N 面印刷をする場合に使用します
-dPJL
  PJL を出力する場合に使用します
-dTonerDensity
  トナー濃度調節をする場合に -dPJL とともに使用します
-dTonerSaving
  トナー節約をする場合に -dPJL とともに使用します

### LIPS・ESC/Page・NPDL ドライバ共通オプション

#### デバイス変更

このドライバを使用するためには -sDEVICE オプションでデバイスを変更する必要があります。それぞれ次のように指定します。

-sDEVICE=lips2p
  lips2p デバイスを使用します
-sDEVICE=lips3
  lips3 デバイスを使用します
-sDEVICE=bjc880j
  bjc880j デバイスを使用します
-sDEVICE=lips4
  lips4 デバイスを使用します
-sDEVICE=lips4v
  lips4v デバイスを使用します
-sDEVICE=lp2000
  lp2000 デバイスを使用します
-sDEVICE=escpage
  escpage デバイスを使用します
-sDEVICE=npdl
  npdl デバイスを使用します

#### デフォルト用紙サイズ変更(デフォルト:A4サイズ)

このドライバでは-sPAPERSIZEオプションかsetpagedeviceオペレータによって 指定したサイズを用紙方向も含めて正しく扱うことができます。 ただし、機種によって対応する用紙サイズに制限がありますのでどの用紙サイズが使えるかは使用しているプリンタの説明書を参照して下さい。(例えば、A4 機である LBP-450 では A3 の用紙では出力できませんし、LBP-2160 では官製はがきには対応していません。)

また、`-sPAPERSIZE` オプションはデフォルトの用紙サイズを変更するだけです。 用紙サイズを固定したい場合は `-dFIXEDMEDIA` オプションとともに用いて下さい。

次のオプションが指定されたときすべてのドライバで プリンタに正しく用紙サイズの情報が送られます。 (ただし、B サイズと官製はがきは付属のパッチをあてること)

`-sPAPERSIZE=a3`
  A3
`-sPAPERSIZE=a4`
  A4
`-sPAPERSIZE=a5`
  A5
`-sPAPERSIZE=b4`
  B4
`-sPAPERSIZE=b5`
  B5
`-sPAPERSIZE=letter`
  レター
`-sPAPERSIZE=postcard`
  官製はがき

LIPS と ESC/Page のドライバでは次のサイズにも対応しています。

`-sPAPERSIZE=legal`
  リーガル
`-sPAPERSIZE=ledger`
  レジャー
`-sPAPERSIZE=b6`
  B6

LIPS のドライバのみ次のサイズに対応しています。

`-sPAPERSIZE=envyou4`
  洋形4号(封筒)

任意の用紙サイズは次のようにして指定します。

`-g` number1 `x` number2
  `-dDEVICEWIDTH=`number1 と`-dDEVICEHEIGHT=`number2 を指定した場合も意味は同じです。 それぞれピクセル単位で用紙の幅(number1)と 高さ(number2)を指定して下さい。

LIPS ドライバに関しては官製はがきサイズより小さいサイズや A3 サイズより 大きなサイズは LIPS の規格上印刷できないことになっているので、 そのようなサイズが指定された場合は処理を行ないません。(エラーになります)

#### 複数部印刷(デフォルト:1部)

このドライバでは複数部印刷においてプリンタのコピーモードを使用し、高速に印刷されます。

コマンドラインでは、`-dNumCopies=`numberとして 印刷部数numberを指定して下さい。numberの最大値は 次のようになっています。これ以上の値を指定しても最大値の部数しか印刷されません。

LIPS、ESC/Page プリンタ
  255
NPDL プリンタ
  99

#### 解像度変更(デフォルトは下記)

`-r` 解像度 オプションで解像度を変更することができます。

lips2p
  240
lips3
  300
bjc880j
  60〜360 (デフォルト 360 dpi)
lips4
  60〜600、1200 (デフォルト 600 dpi)
lips4v
  60〜600、1200 (デフォルト 600 dpi)
lp2000
  60〜300 (デフォルト 300 dpi)
escpage
  60〜600 (デフォルト 300 dpi)
npdl
  160、200、240、400、600 (デフォルト 240 dpi)

LIPS IV で 高解像度 (600 dpi、1200 dpi) 印字を行なう場合は LIPS IV 出力における高解像度印字に関する注意を読んで下さい。 もし内蔵メモリが足りないようでしたら -r300 として 300 dpi で印刷することを おすすめします。

[備考]現在(1999年4月15日)のところ、LIPS IV で 1200 dpi で出力可能なプリンタは LBP-840/LBP-850 しか発売されていません。

#### 両面印刷(デフォルト:パネル設定)

プリンタの中には両面印刷ユニットを装備できるものがありますが、 その機能が使えます。とじ方は2種類選択できます。 この機能に関係するのは Duplex と Tumble です。

Ghostscript のオプションとして両面印刷を指定する場合には次のような オプションを使って下さい。

- `-dDuplex`

また、片面印刷を指定する場合には次のようなオプションを使って下さい。 現在のところ NPDL ドライバは片面印刷には対応していません。

- `-dDuplex=false`

##### とじ方向 (デフォルト: 長辺とじ)

両面印刷をするときとじ方向を長辺とじか短辺とじを指定できます。 デフォルトでは長辺とじです。短辺とじを指定する場合には次のような オプションを使って下さい。 片面印刷時にこのオプションを指定しても意味はありません。 現在のところ NPDL ドライバは短辺とじには対応していません。

- `-dTumble`

#### 白黒反転印刷 (デフォルト: 反転しない)

lips4.dev(モノクロのみ)、lp2000.dev、escpage.dev、npdl.dev(NPDL (level2)対応機種のみ) に限り次のオプションを入力することで白黒を反転させることができます。

- -dNegativePrint

### ESC/Page ドライバのみ対応のオプション

#### RIT (輪郭補正機能)をオフにする (デフォルト: RIT を使う)

escpage.dev に限り次のオプションを使うことにより RIT (Resolution Improvement Technology、輪郭補正機能)をオフにすることができます。

通常は RIT はオンのまま使えばよいですが、パターン塗りつぶしなので意図した印刷結果と違うものが出力される場合はこの機能を使って RIT をオフにしてください。

- -dRITOff

### LIPS ドライバのみ対応のオプション

#### モノクロとカラー出力の切替え(デフォルト:モノクロ)

このオプションは bjc880j、lips4、lips4v のみ対応しています。

`-dBitsPerPixel=`numberオプションによりモノクロと カラー出力の切替えができます。

##### bjc880j、lips4

-dBitsPerPixel=1
  モノクロ出力 (デフォルト)
-dBitsPerPixel=24
  カラー出力

##### lips4v

-dBitsPerPixel=8
  モノクロ出力 (デフォルト)
-dBitsPerPixel=24
  カラー出力

#### 給紙方法の選択(デフォルト:自動選択)

このオプションは LIPS のデバイスのみ対応しています。

-dManualFeedオプションによるMPトレイ(給紙トレイ)からの給紙と -dCassetオプションによる給紙カセットの選択に対応しました。 デフォルトでの給紙は自動選択になります。また、-dManualFeedオプションでの 指定は-dCassetによる指定よりも優先することに注意して下さい。

##### MPトレイ(給紙トレイ)からの給紙

次のようなオプションを指定することでMPトレイ(給紙トレイ)から 給紙できます。

- `-dManualFeed`

##### 給紙カセットの選択

このオプションは LIPS のデバイスのみ対応しています。

`-dCasset=`numberオプションまたは`-DCasset=` numberにより給紙カセットを 選択できます。 numberの指定は次のようになります。これら以外の数値を指定すると エラーになります。

-1
  給紙カセットの選択をするコマンドを出力しない
0
  自動給紙
1
  手差し給紙(MPトレイ)
2
  下段カセット給紙
3
  上段カセット給紙
10
  MPトレイ(手差し給紙に相当)
11
  カセット1
12
  カセット2
13
  カセット3
14
  カセット4
15
  カセット5
16
  カセット6
17
  カセット7

-dCasset=-1 は -dCasset=0 では自動給紙が働かない場合に用いて下さい。 (少なくとも LBP-A405Jr. では用いる必要があるようです)

プログラマーズマニュアル 4.2 によると支障のない限り"0"または"10"〜"17"を用いて下さいということなので LIPS IV 搭載プリンタではそのようにしたほうがよいでしょう。

#### パネル表示変更(デフォルト:Ghostscript)

このオプションは LIPS のデバイスのみ対応しています。

プリンタのステータス表示部に表示するコメントを-dUserNameオプションを 用いて動的に表示することができるようになりました。これによって Ghostscriptを印刷のフィルターとして使っている場合、 次のようなインプットフィルターを使うことによって印刷時にユーザ名を プリンタのステータス表示部に表示できるようになります。

    #!/bin/sh

    user=/dev/null

    #
    # Get username from filter parameters
    #
    while [ $# != 0 ]
    do  case "$1" in
        -n)   user=$2 ; shift ;;
        *)    ;;
        esac
        shift
    done

    gs -q -sDEVICE=lips4 -dSAFER -dNOPAUSE -sUserName=$user -sOutputFile=- -

    exit 0

#### 用紙種類指定

このオプションは LBP-2160 (もしかしたら LBP-2040も?)に対応しています。

LBP-2160(もしかしたら、LPB-2040も?) では普通紙、厚紙、OHP、光沢フィルムに対応していますが、 適切なコマンドを出力しないとトナーの定着に不都合が生じます。 次のオプションを用いてそれぞれの用紙に出力してください。 なお、普通紙以外を指定すると自動的に給紙トレイから給紙されるようになります。

`-sMediaType=PlanePaper`
  普通紙
`-sMediaType=CardBoard`
  厚紙
`-sMediaType=OHP`
  OHP
`-sMediaType=TransparencyFilm`
  OHP
`-sMediaType=GlossyFilm`
  光沢フィルム

#### フェイスアップトレイの出力

このオプションは LBP-2160 (もしかしたら LBP-2040も?)のみに対応しています。

LPB-2160 では通常のフェイスダウントレイの他にフェイスアップトレイへの出力をサポートしています。次のオプションによりフェイスアップトレイに出力することができます。

もしかしたら、LPB-2040 でも使用できるかもしれません。

- -dOutputFaceUp

### n 面印刷 (デフォルト: パネル設定)

このオプションは LIPS IV のデバイスのみ対応しています。

[警告]これは LIPS IV の非公開機能を使っているため、使用には十分に注意して下さい。対応していない機種もあるかもしれません。 また、psnup でうまくいく PostScript ファイルの場合は、psnup を使いましょう。 psnup を使うほうが全ての面で優れています。 この機能は基本的には psnup でうまくいかない PostScript ファイルに使って下さい。 詳しくは FAQ の「 n 面印刷をするには、どうしたらいいの? 」を読んで下さい。 また、搭載メモリ量により、「システムメモリ フル」などのエラーになる可能性もあるかもしれません。

次のオプションを使うことにより、n 面印刷が可能です。

-dNup=1
  1 面印刷 (デフォルト)
-dNup=2
  2 面印刷
-dNup=4
  4 面印刷

[作者からの助言]この機能で 4 面印刷をする場合、300 dpi と 600 dpi の出力に明らかな差はないので、300 dpi に解像度を落すとより速く出力できます。2 面印刷においてはこの限りではありません。 1,200 dpi と 600 dpi の差はどうなっているか分かりません。

#### フォントダウンロード(デフォルト: しない)

このオプションは lips4v のみ対応しています。

ベクター版デバイス lips4v ではビットマップフォントをダウンロードすることにより、同じ文字が繰り返しでてくる場合、より高速に印刷できるようにすることができます。特に英語の論文などではこの効果は絶大です。 しかし、LIPS IV の制約によりクリッピング処理を行なう場合、少しでもクリッピング領域内にある文字はクリッピング領域外の部分があったとしても丸々描かれてしまうという不具合があります。 クリッピング領域を使いこなした図形を描くような場合はこのオプションは使わない方がよいです。 しかしながら、クリッピング領域で文字カットしながら描くという処理は行なわないユーザの方が多いと思います。

また、18 point 以下のキャラクターしかダウンロードは行ないません。

次のオプションを使うことにより、フォントのダウンロードが可能です。

- `-dFontDL`

#### PJL 出力 (デフォルト: 出力しない)

[警告]これは非公開機能を使っているため、使用には十分に注意して下さい。対応していない機種もあります。 少なくとも LIPS IV 搭載機種では全てのデバイス(lips*.dev)で、 この機能が使えるようです。

次のオプションを使うことにより PJL を出力します。 PJL を出力することによりプリンタの LIPS モードへの切替を制御できます。 しかしながら、LASER SHOT の LIPS モードの自動認識はかなり優秀なので必ずしも このオプションを使う必要はありません。

- `-dPJL`

また、PJL を用いることにより、トナー濃度調節機能やトナー節約機能を Ghostscriptドライバで用いることができるようになります。

##### トナー濃度調節 (デフォルト: パネル設定)

次のオプションを使うことにより、トナー濃度調節が可能です。

`-dPJL -dTonerDensity=n`
  n は 0 から 8, 0 はパネルの設定。数字が大きいほど濃くなります。

##### トナー節約 (デフォルト: パネル設定)

次のオプションを使うことにより、トナー節約が可能です

- `-dPJL -dTonerSaving`

逆に次のオプションを使うことにより、トナー節約をしないことが可能です

- `-dPJL -dTonerSaving=false`

何も指定しない場合はプリンタのパネル設定に従います。

#### Netatalk・CAP と Ghostscript + gdevlips

Netatalk や CAP を用いて Ghostscript + gdevlips を用いる場合、 通常 LaserWriter 8 や Adobe PS などのプリンタドライバを使用しますが、 プリンタ記述ファイル(PPD ファイル)で適正なものを書けば上記のオプションは全て Macintosh から指定できるようになります。 また新たにプリンタ記述ファイルを書かなくても既存のものを利用すればかなりのことができます。

また、Ghostscript ドライバの中には LaserWrite 8 の出力する Landscape が回転できないものがありますが、 このドライバではきちんと回転して正常に出力するようになっているので、その点は御安心下さい。

例としてCanon LASER SHOT LBP-730PS用のプリンタ記述ファイルを用いた場合、 変更なしで次の機能が利用できます。

- ページサイズ変更(A3〜はがき)
- 手差し印刷と自動印刷の切替え(1ページ目とそれ以降のページの出力方法を 変更する機能も使える。ただし、この機能は LIPS ドライバのみ)
- 解像度変更(ただし Ghostscript のオプションに-dFIXEDRESOLUTION=false をつけること)
- 両面印刷(長辺とじ、短辺とじ)

給紙方法選択オプションのうち-dManualFeedオプションはPostScript言語の作法に 従っていますが、-dCassetオプションはそうではないので注意して下さい。 -dCasset を用いるように PPD を記述すれば使えるようになると思います。

## 変更履歴

### gdevlips-2.3.2 (1999/5/18 release)

- [npdl.dev]両面印刷のサポート

### gdevlips-2.3.1 (1999/5/16 release)

- [escpage.dev]-dRIP オプションによる解像度補正機能制御のサポート(デフォルトではオンになります)。これは三岩さんから情報をいただきました。
- [npdl.dev]-dNegativePrint オプションによる白黒反転印刷のサポート

### gdevlips-2.3.0 (1999/5/10 release)

- NPDL 制御言語に対応したデバイス npdl.dev の追加
- [lips4c.dev, lips4vc.dev]それぞれ lips4.dev lips4v.dev に統合しました。 -dBitsPerPixel=24 オプションでカラーに切り替わります。
- [lp2000.dev, escpage.dev, lips4.dev]-dNegativePrint オプションによる白黒反転印刷のサポート

### gdevlips-2.2.1 (1999/4/28 release)

- [lp2000.dev, escpage.dev] 機種によっては印刷される座標がずれてしまう バグの修正

### gdevlips-2.2.0 (1999/4/8 release)

- ESC/Page 制御言語に対応したデバイス lp2000.dev、escpage.dev の追加
- [lips2p、lips3、lips4]出力アルゴリズムを成松氏のものを用いるようにした。 (若干高速になる?)

### gdevlips-2.1.2 (1999/3/1 release)

- LBP-2160 用の機能拡張によりLBP-840 で両面印刷や二面印刷が働かないバグの修正。(寺川さんからの報告)

### gdevlips-2.1.1 (1999/2/23 release)

- [lips4、lips4c、lips4v、lips4vc] 山内＠岡山県立大さんに LBP-2160 の様々な用紙出力に対応するパッチをいただいたので取り込んだ。 また、LBP-2160 のフェイスアップトレイ出力に対応する -dOutputFaceUp オプションが追加された。

### gdevlips-2.1.0 (1999/2/13 release)

- [lips4v、lips4vc] パスに対するクリッピングが正常にはたらかないバグの修正
- [lips4v、lips4vc] 多角形の内部を塗りつぶす場合、非ゼロ巻数法がデフォルトになっていないバグの修正
- [lips4v、lips4vc] モノクロ画像でパターンフィルなどした場合 1〜7 ドット画像がずれるバグの修正
- [lips4v、lips4vc] 透過/白の組合せでパターンフィルなどした場合透過な部分と白の部分の処理が逆になっているバグの修正
- [lips4v、lips4vc] known bug の記述を追加

### gdevlips-2.0.12 (1999/2/11 release)

- [lips4v、lips4vc] イメージ処理を行なうとクラッシュしたり正常に描かれないバグの修正
- [lips4v、lips4vc] 矩形に対する角丸め命令や角切り落とし命令などが働かないバグ修正

### gdevlips-2.0.11 (1999/2/9 release)

- [lips4v、lips4vc] gdevlips-2.0.10 のバグフィックス。文字などを描くとコアダンプするバグを修正。

### gdevlips-2.0.10 (1999/2/9 release)

- [lips4v、lips4vc] 複雑なイメージ処理を行なうと、コアダンプするバグを修正。また、画像の色がおかしくなるバグと画像がずれて描かれるバグを修正

### gdevlips-2.0.9 (1999/2/8 release)

- [lips4v、lips4vc] gdevlips-2.0.8 の変更において Hi-Level bitmap Imaging で一度に複数ラインを扱うときに最初のラインしか描かれないバグを入れ込んでしまったのでそれを修正。

### gdevlips-2.0.8 (1999/2/7 release)

- [lips4v、lips4vc] 全てのビットマップルーチンが圧縮に対応
- [lips4v、lips4vc] 画像の右端に1本余計な線が描かれるバグを修正

### gdevlips-2.0.7 (1999/2/4 release)

- [lips2p、lips3、lips4] いったん圧縮して、圧縮後の結果が悪い場合は圧縮されていないものを用いるというアルゴリズムを導入。 その結果、lips2p、lips3 デバイスで圧縮率がかなり向上した。 圧縮したために印刷スピードが遅くなるということもかなりの割合で避けられる。 このアルゴリズム導入に伴い -dCompress オプションは廃止された。

### gdevlips-2.0.6 (1999/1/30 release)

- [lips4c] gdevlips-2.0.4 のバグ対策で出力がそれ以前のもの比べて 3 倍以上大きくなってしまうので、もっと出力が小さくなるように調整した。

### gdevlips-2.0.5 (1999/1/28 release)

- [lips2p、lips3、lips4]圧縮(-dCompress) の設定のときのバグ(gdevlips-2.0.1 に混入)。正常に描かれなかった。

### gdevlips-2.0.4 (1999/1/16 release)

- [lips4c] 圧縮を行なう設定のときに、VMError が出たりコアダンプしたりすることがあるバグの修正

### gdevlips-2.0.3 (1999/1/11 release)

- [lips4v、lips4vc] RGB 3 plane×4 bit のデータを処理するときラスターが 1 dot ずつずれていってしまうことがあるバグの修正 (LIPS の仕様書の記載ミス)
- [lips4v、lips4vc] 一部のルーチンが圧縮に対応 (1 bit のデータのみ)

### gdevlips-2.0.2 (1999/1/8 release)

- ベクター版デバイス lips4v lips4vc の復活
  - [lips4v、lips4vc]setflat オペレータを使用すると曲線がガタガタするバグの修正
  - [lips4v、lips4vc]キャラクターが正常に描かれないバグの回避
  - [lips4v、lips4vc]画像補正を行った場合のバグ修正

### gdevlips-2.0.1 (1998/11/30 release)

- [lips2p、 lips3]オプションが正常に機能しなかったり、余計な文字が印刷されるバグの修正(gdevlips4-19981015 で入りこんだバグ)
- [lips2p、lips3、lips4]ちょっと高速化(余計な処理が入っていた)
- [lips4c]解像度のデフォルトを 600 dpi にした。
- 自動給紙が働かない LASER SHOT に対応するオプション -dCasset=-1 の追加
- [全デバイス]PJLを出力するオプション -dPJL の追加。 lips4.dev ではデフォルトでは PJL を出力しないようにした。 トナー節約機能やトナー濃度調節機能は -dPJL オプションを指定しないと 使えないようになりました。

### gdevlips-2.0.0 (1998/11/16 release)

- ベクター版デバイス lips4v lips4vc の廃止(PDL のバグのため)

### gdevlips-2.0.0pre1 (1998/10/10 release)

- バージョン番号のつけかたを変更した
- [全デバイス]マージン変更に対応
- l4vmono → lips4v、l4vcolor → lips4vc に名称変更
- [lips4v lips4vc]フォントのダウンロード機能に対応(ただし制限あり)
- [lips4v lips4vc]マイタリミットが正常に機能しないバグの修正
- [lips4v lips4vc]一部の機種で起こる文字や画像が消える LIPS IV のバグを回避した

### gdevlips4-19981104 (release 27)

- Ghostscript 5.10 用の Makefile の記述に誤りがあり、コンパイルできない不具合を修正した(伊藤@群馬大さんの報告)

### gdevlips4-19981017 (release 26)

- [lips2p lips3 lips4] ラスターイメージ処理のバグ修正。 右端のラスタが抜けたり、ひどい場合 1 ライン丸々描かれないことがあった。

### gdevlips4-19981015 (release 25)

- [lips4 l4vmono l4vcolor] n 面印刷機能・トナー濃度調節機能・トナーセーブ機能の追加

### gdevlips4-19981012 (release 24)

- [l4vmono] パターンなどが薄い色になったり消えてしまうバグの修正

### gdevlips4-19981009 (release 23)

- [l4vmono l4vcolor] 矩形の回転がうまくいかないバグの修正
- [l4vmono l4vcolor] 文字に色がつかないことがあるバグの修正

### gdevlips4-19981006 (release 22)

- [l4vmono l4vcolor] 矩形を描いた後の図形が描かれないバグの修正

### gdevlips4-19981005 (release 21)

- [l4vmono l4vcolor] 奇数偶数法でパスを塗りつぶす処理が非ゼロ巻数法で行なわれるようになっているバグを直した
- [l4vmono l4vcolor] マイタリミットの指定方法が間違っていた。
- [lips4c] BJC-680J/BJC-880J について「20 ページ オーバー」のエラーが発生する問題の解決
- Ghostscript 5.50 の配布と同様にドキュメントを全て HTML にした。
- Ghostscript 5.10 対応ドライバと Ghostscript 5.50 対応ドライバを同梱
- lips4g、lips3fig、lips4fig、lips4cfig ドライバの廃止
- その他細かいバグフィックス

### gdevlips4-19980924 (release 20)

- Ghostscript 5.50 対応にしたときのバグフィックス
- スーパーファイン LIPS (1200 dpi) 対応のためのテスト

### gdevlips4-19980922 (release 19)

- Ghostscript 5.50 対応。

### gdevlips4-19980908 (release 18)

- [lips2p, lips3, lips4] 高速に出力できるアルゴリズムを採用した。

### gdevlips4-19980904 (release 17)

- [lips4c, lips4, lips4g] 画像を分けて転送する時空行が先頭に来ると 期待した出力されない LIPS IV の仕様を回避するため、-dcRowBuf のデフォルト を 0 にした。
- [l4vmono, l4vcolor] 画像反転バグの修正
- [l4vmono, l4vcolor] 1bit・モノクログラフィックでマスク処理を行なう場合、 何もでないことがあるバグの修正
- [l4vmono, l4vcolor] 線の太さが 720 dpi を想定して描かれていたので 600 dpi で 1.2 倍の太さになってしまうバグを修正。その他の解像度にも対応
- [l4vmono, l4vcolor] 600dpi 以外で点線がおかしいバグを修正
- [l4vmono, l4vcolor] 矩形を効率良く描けるようにした。

### gdevlips4-19980822 (release 16)

- グレースケールの画像を含んだ PostScript ファイルで画像が白黒反転してしまう 問題の解決
- TeX で EPS を含んだ DVI ファイルをドラフト出力したときに描かれる矩形が おかしくなる LIPS IV の仕様を回避して問題を解決

### gdevlips4-19980821 (release 15)

- [l4vmono l4vcolor] 円などを正常にパターンフィルできない問題の解決。 lips4v_copy_mono と lips4v_copy_color 関数にバグがあった。
- [l4vmono l4vcolor] 線の太さが微妙に太くなってしまうことがある問題の解決

### gdevlips4-19980729 (release 14)

- -sOutputFile=foo%d.xyz の形式で出力ファイルを指定した場合にコアダンプするバグの解決
- gdevlips4-19980707 の変更で lips4cfig、lips4fig が出力できなくなった バグの解決
- [l4vmono、l4vcolor] pswrite 等のデバイスが組み込まれていないと コンパイルできない問題の解決
- [l4vmono、l4vcolor] 文字のマスク処理がおかしい問題の解決

### gdevlips4-19980716 (release 13)

- gdevlips4-19980707 で gdevlips.mak がおかしいためにコンパイルできない 不具合を修正した。

### gdevlips4-19980707 (release 12)

- LIPS IV で High-level drawing と High-level bitmap imaging を行なうベクターデバイス である l4vmono l4vcolor デバイスを追加した。

### gdevlips4-19980704 (release 11)

- lips4c、lips4、lips4g、lips4cfig、lips4fig デバイスにおいて、 正常 に出力できないバグがあった。(文法間違い。)

### gdevlips4-19980623 (release 10)

- lips4* デバイスの圧縮方法をデルタ圧縮に変更した。例外的にlips4.dev での tiger.ps の圧縮率は良くないが、ほとんどの場合以前のドライバよりも 圧縮率が高くなる。
- lips4* デバイスで gdevepag Ver. 3 のように -dcRowBuf オプションで ラスターイメージを分割するようにした。これにより、lips4c、lips4cfig の ラスターイメージをまとめて送れるようになった。
- lips4* デバイスでも非圧縮(-dCompress=false)が使えるようになった。 (主にデバッグ用)
- 配布条件が GPL Ver.2 になった。

### gdevlips4-19980612 (release 9)

- lips2p デバイスで LIPS II+ に対応
- lbp2030 デバイスを lips4c デバイスに統合 (600 dpi で出力するときは、-r600 オプションをつけること)
- lips4g デバイスで LIPS IV のグレースケール(8 bit = 256 階調)に対応
- ファイル名を 8.3 形式に変更
  - gdevlips4.c → gdevlips.c
  - gdevlips4.h → gdevlips.h

### gdevlips4-19980429 (release 8)

- lips3fig デバイスがコアダンプする問題の解決
- lips3 デバイスで圧縮・非圧縮を-dCompressオプションで切替えられるようにした。

### gdevlips4-19980413 (release 7)

- 付属のgs_statd.psを使うとGhostscriptがインタラクティブモードで 起動できないバグを修正(石丸さんからの報告)。 -sPAPERSIZE=executive オプションは使用できなくなる
- lbp2030 でデフォルトが 360 dpi になっていたのを 600 dpi に修正
- lips4c、lips4cfig でラスターイメージの圧縮をサポート (というよりもlbp2030とのコードの共通化)
- 両面印刷でとじ位置を変更できるようになった。 (-dFlipBindingオプション)
- 用紙サイズに途中のページで変更がない場合は、 ページ・フォーマット選択命令は一回だけ発行するようにした。 これは各ページごとにページ・フォーマット選択命令を発行すると 印字効率が低下するためである
- 上記と同様に両面印刷命令・給紙モード命令も途中で変更がない場合は、 一回の発行しか行なわないようにした。

### gdevlips4-19980403 (release 6)

- LIPS IV の圧縮方式をバイトランレングス圧縮法からパックビッツ (TIFF)圧縮法に変更したため圧縮率が上がり、使用メモリー量が 減った。 これは伊藤祥晴さんがfjに投稿したgdevlips4-1.2.0へのパッチ<605qpt$f50$1@kuma.fastnet.or.jp>から マージした。
- プリンタのステータス表示部に表示するコメントを動的に変更することが できるようになった。
- モノクロ印刷においてビットマップスムージング処理をON/OFFできるようになった。
- カラー印刷において高精細イメージ処理をON/OFFできるようになった。

### gdevlips4-19980401-2 (release 5)

- 両面印刷の設定についてデフォルトではプリンタ側の設定を使うようにした。

### gdevlips4-19980401 (release 4)

- 給紙カセットの選択に対応した。
- 両面印刷に完全対応した。

### gdevlips4-19980331-2 (release 3)

- 公開時にDEFAULT_HEIGHT_10THS_A4のところにDEFAULT_WIDTH_10THS_A4をいれて しまったためデフォルトサイズがA4横xA4横になるという致命的なバグがあった。
- 任意の用紙サイズの指定にバグがあった。

### gdevlips4-19980331 (release 2)

- 60dpiより粗いサイズを処理できないようにした。(LIPSの規格のため)
- lips3では300dpi、lips4cでは360dpi、lips4とlbp2030では600dpiより細かい サイズを処理できないようにした。(LIPSの規格のため)
- 封筒の洋形4号サイズがおかしかったので直した。
- 修正した gs_stad.ps を附属した。

### gdevlips4-19980330 (release 1)

- lips3, lips4, lips4c, lbp2030
  - 上マージンが 63/300 inch (約10.3 mm)であったのを 5 mm (lips4c は 8 mm) にした。
  - ページサイズ変更に完全対応した。
  - トレイ給紙と自動給紙の切替えに対応した。
  - 複数部印刷に対応した。
- lips4
  - ラスターイメージの圧縮に対応した。
  - 両面印刷ユニットに対応した。
- lips3
  - ラスターイメージの圧縮に対応した。

## LIPS IV 出力における高解像度印字に関する注意

600dpi 印字や 1200dpi 印字を行う場合は, プリンタに搭載されている内蔵 メモリの容量に注意して下さい。

これは内蔵メモリの容量が少ない場合に、 プリンタがデータ量の多さに対応できず自動的に解像度を落して印字させるからです (印字データに依存するので一概には言えません)。 この処理が行われると, 印字解像度が変わる他に 2 点のデメリットがあります。

- 印字に時間がかかることが多い(内部処理を 2 度行っている?)
- ラスタデータを印字する場合は単純に間引くようで、 グレーの部分が白っぽく/黒っぽくなったりなどして所望の印字が得られないことがある

これらを避けるためにも、搭載メモリに見合った解像度での印字をお勧めします。 高解像度で印字を行うために必要なメモリ容量は、 「プリンタ機能マニュアル」へ `印字保証メモリ' として書かれています。 出力用紙サイズや両面印字の有無によって変化する点も注意して下さい。

## バグ

ここにリストされているバグは作者が把握しているバグです。 これ以外のバグがないという意味ではないので注意して下さい。

ここにリストされている以外でバグを発見しましたら 作者まで報告をお願いします。

### [npdl.dev]

#### 1. 印刷位置がずれる

制御言語 NPDL では出力位置の設定が機種依存になっています。 機種によって印刷可能範囲が異なるので印刷位置がずれてしまいます。 印刷位置を調整するにはどうしたらいいですか? を参考にして調整するか、ソースファイルを直接いじって直してください。

#### 2. 片面印刷や両面印刷時に短辺とじで印刷できない

NPDL 用のドライバでは現在のところ片面印刷はできません。 これは NPDL の仕様書に片面印刷するためのコマンドが記載されていないことと、私が両面印刷できる NPDL 搭載プリンタが使える環境にないためです。 同様の理由で両面印刷時に短辺とじで印刷できません。

両面印刷できる NEC MultiWriter (NPDL(Level2) 搭載プリンタ) をお持ちのかたは 両面印刷を制御するコマンド(片面印刷コマンドや短辺とじにするコマンド)を教えていただけるとこのドライバに組み込むことができます。御協力よろしくお願いします。

### [bjc880j.dev]

#### 1. ランドスケープ回転時に印刷位置がちょっとずれる

他の LIPS のドライバでは上下左右のマージンが均一なのでランドスケープは そのまま回転してやれば印刷位置があいますが、 BJC-680J、BJC-880J ではマージンが違うので少しずれてしまいます。 回転時に厳密に位置を計算すればずれない?

### [lips4v.dev]

#### 1. パスのクリッピング処理時のメモリ不足 (システムメモリフル エラー)

矩形以外のパスで多少複雑なクリッピング処理しただけでプリンタがメモリ不足に陥る。 例えば Tgif で円をパターンフィルして出力した PostScript ファイルでこの現象がみられる。

これは Ghostsciprt 5.10 が出力するクリッピングパスが効率悪いことと、 LIPS IV のパスクリッピング処理がメモリーを食い過ぎるために起こります。

※このバグは Ghostscript 5.50 ではパスのクリッピング処理が効率よくなったために多少ましになっています。 また、キヤノンによると MaxiMem 搭載機ではクリッピングに関するメモリー効率も良くなっているそうなのでこの問題は解決されているかもしれません。(未確認)

#### 2. 幅がゼロのパスをフィルしたとき何も描かれない

PostScript では幅がゼロのパスをフィルしたときも描かれなければならないが、描かれない。

LIPS IV では描かれない仕様です。

※Ghostscript に附属の zeroline.ps を印刷するとこのバグが分かります。

#### 3. 移動距離 0 のパスの扱い

移動距離 0 のパスをストロークした時、setlinejoin が 1 (Round join) のときなにも描かれない。

PostScript ではこのとき円が描かれなければなりませんが、LIPS IV では 描かれない仕様になっています。

※Ghostscript に附属の zeroline.ps を印刷するとこのバグが分かります。

#### 4. Projecting square cap のバグ

線の接合部で、setlinecap で 2 (Projecting square cap) を指定した時、パスをクローズ した部分の線接合がうまくいかない。また、クローズする座標がパスの原点から 引き伸ばした方向にずれる。

LIPS IV のバグです。

※Ghostscript に附属の lines.ps を印刷するとこのバグが分かります。

#### 5. Round cap のバグ

線の接合部でsetlinecap で 1 (Round cap) を指定して、setlinejoin で 2 (Bevel join)を指定したとき、 パスをクローズした部分の線接合は 「ベベル(切り落とし)」 にならなければいけないところ「丸」になってしまう。

LIPS IV のバグです。

※Ghostscript に附属の lines.ps を印刷するとこのバグが分かります。

#### 6. 線の太さが違う

LIPS IV の制限で線の太さの上限は 0.85 インチとなっています。 PostScript にはそのような制限がないので、極端に太い線を描くときに 出力の違いが出てしまいます。

また、Ghostscript の ベクタードライバのバグにより縦横のスケールが異なる場合、 線の太さが違ってきてしまいす。

rectstroke オペレータを使った場合で縦と横の太さが違う場合も正常に描かれません。(縦と横の太さが同じになってしまいます。)

#### 7. 破線のパターンが描かれない

破線のパターンに 0 が含まれている場合、このドライバでは描かれません。

破線のパターンに 0 が含まれている場合のオペレータの挙動はどうなっているのか Red Book に書いてないので私には分かりません。誰か教えて下さい。

#### 8. lips4v ドライバでグレースケール出力するときにカラーパターンを描いた場合色がおかしいことがある

多分、Ghostscript のバグです。カラー出力 (-dBitsPerPixel=24) ではこのバグは見られません。

## FAQ

### プリンタの出力は速くならないの?

LIPS IV 機の場合 -r300 オプションをつけて解像度を 300 dpi (クイック) にすると速くなります。(当然画質は落ちます)

LIPS IV 機で 600 dpi 印刷する場合は lips4 ドライバを用いるのが良いでしょう。 lips4v ドライバを使っても速度的なメリットはありません。

LIPS IV 機で 1,200 dpi 印刷する場合は lips4v.dev を使ったほうが 速いかもしれませんが、私は使ったことないので分かりません。

Color LASER SHOT でカラー印刷する場合は lips4.dev でなく lips4v.dev を使った方が高速に出力できます。 (しかし、ベクター版ドライバは制限が多いので注意してください。)

### プリンタの内蔵フォントは使えないの?

使えません。

### n 面印刷をするには、どうしたらいいの?

PSUtils というソフトウェアに含まれる psnup を用います。 PSUtils は PostScript ファイルの中から特定のページを抽出したり、 ページの並びを変更したりできるコマンド群です。

PSUtils は次のところから得られます。

- <URI:http://www.dcs.ed.ac.uk/home/ajcd/psutils/>

psnup は次のように使います。より詳しいことはマニュアルを読んで下さい。

`psnup -2 [infile[outfile]]`
  2 ページを 1 ページにまとめて印刷します
`psnup -4 [infile[outfile]]`
  4 ページを 1 ページにまとめて印刷します
`psnup -8 [infile[outfile]]`
  8 ページを 1 ページにまとめて印刷します

ただし、psnup でうまくいかない PostScript ファイルもあります。 そのような場合に LIPS IV に限り、-dNup オプションにより 2 面印刷と 4 面印刷が可能です。 しかし、これは非公開機能を使っていたり、印字速度が遅いという問題がありますので可能な限り psnup を用いましょう。

### 用紙サイズの拡大、縮小印刷をするにはどうするんですか?

PSUtils に含まれるコマンド psresize を用います。

PSUtils は次のところから得られます。

- <URI:http://www.dcs.ed.ac.uk/home/ajcd/psutils/>

psresize は A3・A4・A5・レター・リーガルや任意のサイズに対応しています。 下記にいくつか使用例を挙げます。くわしくはマニュアルを参照して下さい。

`psresize -q -PA4 -pletter in.ps > out.ps`
  A4 サイズをレターサイズにします。
`psresize -q -PA3 -pA4 in.ps > out.ps`
  A3 サイズを A4 サイズにします。
`psresize -q -W729 -H1032 -w516 -h729 in.ps > out.ps`
  B4 サイズを B5 サイズにします。

NPDL 搭載プリンタの中には指定された用紙がホッパ(給紙カセット)にない場合で、 縮小印刷可能な用紙サイズはある場合、縮小印刷されるものもあります。

### 印刷位置を調整するにはどうしたらいいですか?

印刷位置がずれてしまう場合は、次の方法のうちどれかを用いて調整します。 なお、Ghostscript の原点は用紙の左上ですので左上からの印刷位置があうように調整してください。

1. プリンタのパネル設定の「縦補正」「横補正」の機能を用いる
2. Ghostscript の PageOffset オペレータで調整する。

プリンタのパネル設定の「縦補正」「横補正」の機能を用いる場合、Ghostscript の他に印刷するソフトウェアを使うとそのソフトウェアでも補正が効いてしまうので注意が必要です。

Ghostscript で印刷位置を変更したい場合は、ファイル /usr/local/etc/offset.ps などと名前をつけたファイルを作って次のような内容を記述します。

    <<
    /PageOffset [0.0 0.0]
    >> setpagedevice

次にこのファイルの [0.0 0.0] となっている部分にずらしたい長さを記述します。 単位はポイント(1/72 inch、約 0.35 mm)です。例えば右に 3 mm、上に 1.5 mm 印刷位置をずらしたい場合は、

    3.0 × 25.4 ÷ 72 ＝ 8.5039...
    1.5 × 25.4 ÷ 72 ＝ 4.2519...

なので、

    <<
    /PageOffset [8.5 -4.25]
    >> setpagedevice

と記述します。

そして、Ghostscript を起動するたびにこの offset.ps を呼び出して下さい。 例えば次のようにします。

    gs -q -dSAFER -dNOPAUSE -sDEVICE=lips4 -sOutputFile=- offset.ps -

### B4 または B5 サイズの用紙指定がうまくいかないんだけど

インストールのところで述べられているように、gs_statd.ps にパッチをあてて下さい。 Ghostscript 標準の Bサイズは ISOのBサイズであって JISのBサイズではありません。

### ラスター版デバイスとベクター版デバイスの違いは?

ラスター版デバイスは Ghostscript が作る、ページとほぼ同じ大きさの1枚のビットマップを印刷するデバイスです。 LIPS の命令としては主にラスター・イメージ描画命令しか使っていません。 それに対してベクター版デバイスはより高機能な LIPS の命令を使って印刷するデバイスです。 それぞれに長所と短所があるので使い分けて下さい。

ベクター版デバイスが LIPS の命令として使っているのは次のとおりです。

- 描画条件設定
  - クリッピング命令
  - 描画論理設定命令
- 図形描画属性設定
  - 線幅指定命令
  - 線接続指定命令
  - マイタ・リミット指定命令
  - 先端形状指定命令
  - ライン・カラー指定命令
  - 塗りつぶしカラー指定命令
  - 多角形描画モード指定命令
- パターン登録
  - 線パターン登録命令2
- 図形描画
  - 矩形描画命令
  - 多角形描画命令2
- イメージ描画
  - イメージ領域確保命令1
  - イメージ領域確保命令2
  - 単色イメージ・カラー指定命令
  - イメージ描画命令
- パス構築
  - パス構築開始命令
  - パス構築終了命令
  - サブパス開始命令
  - パス・ポリライン命令
  - パス・クローズ命令
- パス・プレイ
  - パス・ストローク命令
  - パス・フィル命令
  - パス・ストローク・フィル命令
  - パス・クリッピング命令
  - パス平滑度指定命令

上記のような機能によってベクター版デバイスはラスターデバイスと比較すると次のような特徴があります。(多少の例外はあります。)

- プリンタ側の必要メモリ量が少なくてすむ場合がある
- 圧縮を行なっていないにも関わらず、データ量が小さい。
- 印刷時間が短縮される場合がある。特に lips4 と lips4v のカラー出力を比較すると圧倒的な差がでる。
- 印字領域をメモリに確保しなくていいので、 Ghostscript の起動時間が非常に短い。また Ghostscript 自体の使用メモリ量も少ない。
- ラスター版デバイスは印刷速度の律速段階が I/O にあるが、 ベクター版はプリンタ内部の描画ルーチンにあるため、 高速な CPU を搭載しているプリンタほど速くなる。

### LIPS IV 以外ドライバのベクター版は作らないの?

作りません。より正確にいうと作れません。 ベクター版ドライバを作るためには PDL が PostScript に近い機能をもって いなければいけませんが、LIPS II+、LIPS III、LIPS IVc、ESC/Page、NPDL では機能が足らないので作れないのです。

### lbp2030.dev はどこいったの?

lbp2030.dev は lips4.dev のカラー出力と出力する内容が同じになったので廃止しました。 しかしながら、Color LASER SHOT で出力する場合は ベクトル版デバイスの lips4v.dev で出力するほうが 10 倍以上速いと思います。

### lips3fig、lips4cfig、lips4fig がないんだけど

*fig.dev は dvipr でしか用いられません。また、dvipr 自体はすでに時代遅れの ソフトウェアになりつつあります。 よってサポートしないことにしました。

### どうして LIPS II+ 対応ドライバは lips2+ や lips2plus という名前じゃないの?

Ghostscript ではデバイスの名前は1から8文字と決まっています。 また、アンダースコア(_)以外の記号は使えないことになっています。

## 謝辞

伊藤祥晴氏には圧縮ルーチン部分の提供、スーパーファイン LIPS のテストなどを手伝っていただきました。 また、LIPS IV 出力における高解像度印字に関する注意も伊藤氏が書かれた文書です。

二木紀行氏にはプログラミング上の相談にのっていただきました。 またベクター版デバイスの品質向上に協力していただきました。

成松宏氏作の Ghostscript ドライバ epag-3.08 のコードから出力アルゴリズム部分と用紙サイズ決定部分を利用させていただきました。

渡部修氏作の Ghostscript ドライバ gdevnpdl-1.5 のコードをもとに npdl ドライバを作成させていただきました。

斎藤英夫氏の Ghostscript ドライバ gdevnpdl-1.5 への 両面印刷対応パッチを利用させていただきました。

このソフトウェアの改善に関して、以下の方々から貴重な意見をいただきました。

太田芳彦、石丸哲也、山口一郎、伊藤直史、竹野茂治、熊谷正朗、山内仁、 寺川愛印、三岩幸夫(敬称略)

## 参考文献

1. PostScript Language Reference Manual SECOUND EDITION, Adobe Systems Incorporated
2. LASER SHOT プログラマーズマニュアル ソフトウェア概説書 4.1, Canon
3. LASER SHOT プログラマーズマニュアル ソフトウェア概説書 4.2, Canon
4. LASER SHOT プログラマーズマニュアル コマンドリファレンス 4.1, Canon
5. LASER SHOT プログラマーズマニュアル コマンドリファレンス 4.2, Canon
6. LASER SHOT プログラマーズマニュアル クックブック 4.1, Canon
7. LASER SHOT プログラマーズマニュアル クックブック 4.2, Canon
8. ESC/Page リファレンスマニュアル 第4版, EPSON
9. EPSON Remote モード(P) リファレンスマニュアル, EPSON
10. 日本語ページプリンタ言語 NPDL(Level2) リファレンスマニュアル (PC-PRNPDL2-RM Rev.02), NEC

Last modified: Mon May 10 01:03:52 JST 1999