LIPS II+/III/IVc/IV 対応 Ghostscript デバイスドライバ
このソフトウェアは Ghostscript 5.10/5.50 用のデバイスドライバとして作られています。
デバイスドライバとしてラスター版デバイスの lips2p、lips3、lips4c、lips4 デバイスと、
ベクター版デバイスの lips4v、lips4vc が含まれています。
(ベクター版デバイスに関しては Ghostscript 5.10 での使用はあまり推奨しません。
詳しくは、1. パスのクリッピング処理時のメモリ不足(システムメモリフル エラー)を参照して下さい。)
制御言語との対応は次のようになっています。
- LIPS II+
- lips2p.dev
- LIPS III
- lips3.dev
- LIPS IVc, LIPS IV (モノクロ)
- lips4.dev
- LIPS IVc, LIPS IV (24 bit RGB カラー)
- lips4c.dev
- LIPS IV (1〜12 bit 可変 グレースケール)
- lips4v.dev
- LIPS IV (1〜36 bit 可変 RGB カラー)
- lips4vc.dev
インデックス
このソフトウェアの配布条件は 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>にお願いします。
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 lips4vc.dev
- 給紙方法の選択に対応
- ラスターイメージの圧縮に対応
- パネル表示変更に対応
- 両面印刷ユニットに対応 (LIPS IV のみ)
- n 面印刷機能に対応 (LIPS IV のみ)
- トナー濃度調節機能に対応 (LIPS IV のみ)
- トナー節約機能に対応 (LIPS IV のみ)
次のプリンタはサポートしていません。
600dpi 印字や 1200dpi 印字を行う場合は, プリンタに搭載されている内蔵
メモリの容量に注意して下さい。
これは内蔵メモリの容量が少ない場合に、
プリンタがデータ量の多さに対応できず自動的に解像度を落して印字させるからです
(印字データに依存するので一概には言えません)。
この処理が行われると, 印字解像度が変わる他に 2 点のデメリットがあります。
- 印字に時間がかかることが多い(内部処理を 2 度行っている?)
- ラスタデータを印字する場合は単純に間引くようで、
グレーの部分が白っぽく/黒っぽくなったりなどして所望の印字が得られないことがある
これらを避けるためにも、搭載メモリに見合った解像度での印字をお勧めします。
高解像度で印字を行うために必要なメモリ容量は、
「プリンタ機能マニュアル」へ `印字保証メモリ' として書かれています。
出力用紙サイズや両面印字の有無によって変化する点も注意して下さい。
- Ghostscript のソースディレクトリに
gdevlips.c 、gdevl4r.c、 gdevl4v.c、gdevlips.h をコピーします。
- Ghostscript 5.50 の場合は gdevlips.mak を contrib.mak に追加します。
例:
cat gdevlips.mak >>contrib.mak
- Ghostscript 5.10 の場合は 510lips.mak を Makefile に追加します。
例:
cat 510lips.mak >>makefile
- Makefile の DEVICE_DEVS にデバイスとその機能に述べられるのデバイスのうち必要なものを記述します。
- B4、B5、B6 サイズなどの用紙を扱う場合は gs_statd.ps にパッチをあてます。
- Ghostscript 5.50 の場合は gs_statd.dif パッチをあてます。
- Ghostscript 5.10 の場合は 510statd.dif パッチをあてます。
例:
patch <gs_statd.dif
- Ghostscript をコンパイルし、インストールします。
ラスター版ドライバ
- lips2p.dev
- LIPS II+ のコードを出力します。(1bit・2階調モノクロ)
- lips3.dev
- LIPS III のコードを出力します。(1bit・2階調モノクロ)
- lips4.dev
- LIPS IVc/LIPS IV のコードを出力します。(1bit・2階調モノクロ)
- lips4c.dev
- LIPS IVc/LIPS IV のコードを出力します。(24bit・カラー)
ベクター版ドライバ
- lips4v.dev
- LIPS IV のコードを出力します (1〜12 bit・グレー)
- lips4vc.dev
- LIPS IV のコードを出力します (1〜36 bit・カラー)
以下にかかれているオプションは PostScript ファイルの中のオペレータでも変更されることがあります。
lpd のフィルターとして使う場合はこの中で -sDEVICE、
-r のみを指定するとよいでしょう。
-sUserName は好みで指定して下さい。
- -sDEVICE
- 出力するデバイスの変更に使用します。最低限これだけは指定して下さい。
- -sPAPERSIZE
- 出力する用紙サイズの変更に使用します
- -dManualFeed
- 給紙トレイから給紙する場合に使用します
- -dCasset
- 給紙するトレイ/カセットを指定する場合に使用します
- -dNumCopies
- 印刷部数を指定する場合に使用します
- -r
- 解像度を指定する場合に使用します
- -sUserName
- プリンタのパネルに表示する文字を変更する場合に使用します
- -dDuplex
- 両面印刷する場合に使用します
- -dTumble
- 両面印刷する場合にとじ方向を変更する場合に使用します
- -sMediaType
- LBP-2160 (LBP-2040 も?)で出力する用紙の種類を指定するために使用します。
- -dOutputFaceUp
- LBP-2160 (LBP-2040 も?)でフェイスアップトレイに出力するために使用します。
- -dNup
- N 面印刷をする場合に使用します
- -dPJL
- PJL を出力する場合に使用します
- -dTonerDensity
- トナー濃度調節をする場合に -dPJL とともに使用します
- -dTonerSaving
- トナー節約をする場合に -dPJL とともに使用します
このドライバを使用するためには -sDEVICE オプションでデバイスを変更する必要があります。それぞれ次のように指定します。
- -sDEVICE=lips2p
- lips2p デバイスを使用します
- -sDEVICE=lisp3
- lips3 デバイスを使用します
- -sDEVICE=lips4
- lips4 デバイスを使用します
- -sDEVICE=lips4c
- lips4c デバイスを使用します
- -sDEVICE=lips4v
- lips4v デバイスを使用します
- -sDEVICE=lips4vc
- lips4vc デバイスを使用します
従来のgdevlips4-1.2.0では用紙カセットにA4、用紙トレイにレターサイズの紙が
あると指定してあっても関係なしに出力されてしまいます。
このドライバでは-sPAPERSIZEオプションかsetpagedeviceオペレータによって
指定したサイズを用紙方向も含めて正しく扱うことができます。
また、任意の用紙サイズにも対応しています。
ただし、機種によって対応する用紙サイズに制限がありますのでどの用紙サイズが使えるかは使用しているプリンタの説明書を参照して下さい。(例えば、A4 機である LBP-450 では A3 の用紙では出力できませんし、LBP-2160 では官製はがきには対応していません。
このドライバを用いた場合、次のオプションが指定されたとき
プリンタに正しく用紙サイズの情報が送られます。
- -sPAPERSIZE=a3
- A3
- -sPAPERSIZE=a4
- A4
- -sPAPERSIZE=a5
- A5
- -sPAPERSIZE=letter
- レター
- -sPAPERSIZE=legal
- リーガル
- -sPAPERSIZE=ledger
- レジャー
また、Ghostscript の gs_statd.ps にパッチをあてることにより、
次のオプションでそれぞれの用紙サイズの情報がプリンタに送られます。
(Ghostscript 標準の Bサイズは ISOのBサイズであって
JISのBサイズではないことに注意して下さい。)
- -sPAPERSIZE=b4
- B4
- -sPAPERSIZE=b5
- B5
- -sPAPERSIZE=b6
- B6
- -sPAPERSIZE=postcard
- 官製はがき
- -sPAPERSIZE=envyou4
- 洋形4号(封筒)
任意の用紙サイズは次のようにして指定します。
- -gnumber1xnumber2
- -dDEVICEWIDTH=number1 と-dDEVICEHEIGHT=number2
を指定した場合も意味は同じです。
それぞれピクセル単位で用紙の幅(number1)と
高さ(number2)を指定して下さい。
官製はがきサイズより小さいサイズや A3 サイズより大きなサイズは LIPS の規格上
印刷できないことになっているので、そのようなサイズが指定された場合は
処理を行ないません。(エラーになります)
-dManualFeedオプションによるMPトレイ(給紙トレイ)からの給紙と
-dCassetオプションによる給紙カセットの選択に対応しました。
デフォルトでの給紙は自動選択になります。また、-dManualFeedオプションでの
指定は-dCassetによる指定よりも優先することに注意して下さい。
次のようなオプションを指定することでMPトレイ(給紙トレイ)から
給紙できます。
-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 搭載プリンタではそのようにしたほうがよいでしょう。
複数部印刷において高速に処理されるようになりました。gdevlips4-1.2.0では
2ページの文書を3部作る時、6ページ分のデータが必要でしたがこのドライバでは
2ページ分のデータで6ページ印刷されます。
コマンドラインでは、-dNumCopies=numberとして
印刷部数numberを指定して下さい。numberの最大値は255です。
lips2p.dev では デフォルトの -r240 (-r240x240) つまり 240 dpi しか指定出来ません。
また、lips3.dev では デフォルトの -r300 (-r300x300) つまり 300 dpi しか指定出来ません。
それ以外の解像度を指定するとエラーとなります。
lips4c.dev、lips4.devでは
-r解像度 で解像度を変更することができます。
ただし、次のような条件がありますが、基本的に 300、600、1200 dpi 以外を指定するのはあまり意味がないです。
(BJC-680J/BJC-880J で 360 dpi で出力する場合を除く)
lips4.dev、lips4c.dev、lips4v.dev、lips4vc.dev ではデフォルトは600 dpiで60〜600 、1200 dpiが指定できます。
LIPS IV で 高解像度 (600 dpi、1200 dpi) 印字を行なう場合は LISP IV 出力における高解像度印字に関する注意を読んで下さい。
もし内蔵メモリが足りないようでしたら -r300 として 300 dpi で印刷することを
おすすめします。
[備考]現在(1999年1月16日)のところ、
1200 dpi で出力可能なプリンタは LBP-840/LBP-850 しか発売されていません。
プリンタのステータス表示部に表示するコメントを-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
LIPS IVプリンタの中には両面印刷ユニットを装備できるものがありますが、
その機能が使えます。とじ方は2種類選択できます。
この機能に関係するのは Duplex と Tumble です。
Ghostscript のオプションとして両面印刷を指定する場合には次のような
オプションを使って下さい。
また、片面印刷を指定する場合には次のようなオプションを使って下さい。
両面印刷をするときとじ方向を長辺とじか短辺とじを指定できます。
デフォルトでは長辺とじです。短辺とじを指定する場合には次のような
オプションを使って下さい。
片面印刷時にこのオプションを指定しても意味はありません。
この両面印刷機能に関して、
私は両面印刷ユニットを持っていないので実際に動作するかどうかは
わかりません。(規格上は動作するはずです。)
LBP-2160(もしかしたら、LPB-2040も?) では普通紙、厚紙、OHP、光沢フィルムに対応していますが、
適切なコマンドを出力しないとトナーの定着に不都合が生じます。
次のオプションを用いてそれぞれの用紙に出力してください。
なお、普通紙以外を指定すると自動的に給紙トレイから給紙されるようになります。
- -sMediaType=PlanePaper
- 普通紙
- -sMediaType=CardBoard
- 厚紙
- -sMediaType=OHP
- OHP
- -sMediaType=TransparencyFilm
- OHP
- -sMediaType=GlossyFilm
- 光沢フィルム
LPB-2160 では通常のフェイスダウントレイの他にフェイスアップトレイへの出力をサポートしています。次のオプションによりフェイスアップトレイに出力することができます。
もしかしたら、LPB-2040 でも使用できるかもしれません。
[警告]これは 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、lips4vc ではビットマップフォントをダウンロードすることにより、同じ文字が繰り返しでてくる場合、より高速に印刷できるようにすることができます。特に英語の論文などではこの効果は絶大です。
しかし、LIPS IV の制約によりクリッピング処理を行なう場合、少しでもクリッピング領域内にある文字はクリッピング領域外の部分があったとしても丸々描かれてしまうという不具合があります。
クリッピング領域を使いこなした図形を描くような場合はこのオプションは使わない方がよいです。
しかしながら、クリッピング領域で文字カットしながら描くという処理は行なわないユーザの方が多いと思います。
また、18 point 以下のキャラクターしかダウンロードは行ないません。
次のオプションを使うことにより、フォントのダウンロードが可能です。
[警告]これは非公開機能を使っているため、使用には十分に注意して下さい。対応していない機種もあります。
少なくとも LIPS IV 搭載機種では全てのデバイス(lips*.dev)で、
この機能が使えるようです。
次のオプションを使うことにより PJL を出力します。
PJL を出力することによりプリンタの LIPS モードへの切替を制御できます。
しかしながら、LASER SHOT の LIPS モードの自動認識はかなり優秀なので必ずしも
このオプションを使う必要はありません。
また、PJL を用いることにより、トナー濃度調節機能やトナー節約機能を Ghostscriptドライバで用いることができるようになります。
次のオプションを使うことにより、トナー濃度調節が可能です。
- -dPJL -dTonerDensity=n
- n は 0 から 8, 0 はパネルの設定。数字が大きいほど濃くなります。
次のオプションを使うことにより、トナー節約が可能です
逆に次のオプションを使うことにより、トナー節約をしないことが可能です
- -dPJL -dTonerSaving=false
何も指定しない場合はプリンタのパネル設定に従います。
Netatalk や CAP を用いて Ghostscript + gdevlips を用いる場合、
通常 LaserWriter 8 や Adobe PS などのプリンタドライバを使用しますが、
プリンタ記述ファイルで適正なものを書けば上記のオプションは全て Macintosh
から指定できるようになります。
また新たにプリンタ記述ファイルを書かなくても既存のものを利用すればかなりのことができます。
また、Ghostscript ドライバの中には LaserWrite 8 の出力する Landscape が回転できないものがありますが、
このドライバではきちんと回転して正常に出力するようになっているので、その点は御安心下さい。
例としてCanon LASER SHOT LBP-730PS用のプリンタ記述ファイルを用いた場合、
変更なしで次の機能が利用できます。
- ページサイズ変更(A3〜はがき)
- 手差し印刷と自動印刷の切替え(1ページ目とそれ以降のページの出力方法を
変更する機能も使える)
- 解像度変更(600dpi、300dpi)
- 複数部印刷
- 両面印刷(長辺とじ、短辺とじ)
給紙方法選択オプションのうち-dManualFeedオプションはPostScript言語の作法に
従っていますが、-dCassetオプションはそうではないので注意して下さい。
-dCasset を用いるように PPD を記述すれば使えるようになると思います。
gdevlisp-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)
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
ここにリストされているバグは作者が把握しているバグです。
これ以外のバグがないという意味ではないので注意して下さい。
ここにリストされている以外でバグを発見しましたら
作者まで報告をお願いします。
[lips4v.dev、lips4vc.dev]
矩形以外のパスで多少複雑なクリッピング処理しただけでプリンタがメモリ不足に陥る。
例えば Tgif で円をパターンフィルして出力した PostScript ファイルでこの現象がみられる。
これは Ghostsciprt 5.10 が出力するクリッピングパスが効率悪いことと、
LIPS IV のパスクリッピング処理がメモリーを食い過ぎるために起こります。
※このバグは Ghostscript 5.50 ではパスのクリッピング処理が効率よくなったために多少ましになっています。
また、キヤノンによると MaxiMem 搭載機ではクリッピングに関するメモリー効率も良くなっているそうなのでこの問題は解決されているかもしれません。(未確認)
PostScript では幅がゼロのパスをフィルしたときも描かれなければならないが、描かれない。
LIPS IV では描かれない仕様です。
※Ghostscript に附属の zeroline.ps を印刷するとこのバグが分かります。
移動距離 0 のパスをストロークした時、setlinejoin が 1 (Round join)
のときなにも描かれない。
PostScript ではこのとき円が描かれなければなりませんが、LIPS IV では
描かれない仕様になっています。
※Ghostscript に附属の zeroline.ps を印刷するとこのバグが分かります。
線の接合部で、setlinecap で 2 (Projecting square cap) を指定した時、パスをクローズ
した部分の線接合がうまくいかない。また、クローズする座標がパスの原点から
引き伸ばした方向にずれる。
LIPS IV のバグです。
※Ghostscript に附属の lines.ps を印刷するとこのバグが分かります。
線の接合部でsetlinecap で 1 (Round cap) を指定して、setlinejoin で 2 (Bevel join)を指定したとき、
パスをクローズした部分の線接合は 「ベベル(切り落とし)」 にならなければいけないところ「丸」になってしまう。
LIPS IV のバグです。
※Ghostscript に附属の lines.ps を印刷するとこのバグが分かります。
LIPS IV の制限で線の太さの上限は 0.85 インチとなっています。
PostScript にはそのような制限がないので、出力の違いが出てしまいます。
また、Ghostscript の ベクタードライバのバグにより縦横のスケールが異なる場合、
線の太さが違ってきてしまいす。
rectstroke オペレータを使った場合で縦と横の太さが違う場合も正常に描かれません。(縦と横の太さが同じになってしまいます。)
破線のパターンに 0 が含まれている場合、このドライバでは描かれません。
破線のパターンに 0 が含まれている場合のオペレータの挙動はどうなっているのか
Red Book に書いてないので私には分かりません。誰か教えて下さい。
多分、Ghostscript のバグです。lips4vc ではこのバグは見られません。
ラスター版デバイスは Ghostscript が作る、ページとほぼ同じ大きさの1枚のビットマップを印刷するデバイスです。
LIPS の命令としては主にラスター・イメージ描画命令しか使っていません。
それに対してベクター版デバイスはより高機能な LIPS の命令を使って印刷するデバイスです。
それぞれに長所と短所があるので使い分けて下さい。
ベクター版デバイスが LIPS の命令として使っているのは次のとおりです。
- 描画条件設定
- 図形描画属性設定
- 線幅指定命令
- 線接続指定命令
- マイタ・リミット指定命令
- 先端形状指定命令
- ライン・カラー指定命令
- 塗りつぶしカラー指定命令
- 多角形描画モード指定命令
- パターン登録
- 図形描画
- イメージ描画
- イメージ領域確保命令1
- イメージ領域確保命令2
- 単色イメージ・カラー指定命令
- イメージ描画命令
- パス構築
- パス構築開始命令
- パス構築終了命令
- サブパス開始命令
- パス・ポリライン命令
- パス・クローズ命令
- パス・プレイ
- パス・ストローク命令
- パス・フィル命令
- パス・ストローク・フィル命令
- パス・クリッピング命令
- パス平滑度指定命令
上記のような機能によってベクター版デバイスはラスターデバイスと比較すると次のような特徴があります。(多少の例外はあります。)
- プリンタ側の必要メモリ量が少なくてすむ場合がある
- 圧縮を行なっていないにも関わらず、データ量が小さい。
- 印刷時間が短縮される場合がある。特に lips4c と lips4vc を比較すると圧倒的な差がでる。
- 印字領域をメモリに確保しなくていいので、 Ghostscript の起動時間が非常に短い。また Ghostscript 自体の使用メモリ量も少ない。
- ラスター版デバイスは印刷速度の律速段階が I/O にあるが、
ベクター版はプリンタ内部の描画ルーチンにあるため、
高速な CPU を搭載しているプリンタほど速くなる。
作りません。より正確にいうと作れません。
Ghostscript の High-level drawing を実装するには図形描画にパスを使う
必要がありますが、LIPS II+/III にはパスの機能がありません。
Ghostscript の High-level bitmap imaging を実装するには任意の角度のイメージの回転/変形操作を使う必要がありますが、LIPS II+/III にはその機能がありません。
lbp2030.dev は lips4c.dev と出力する内容が同じになったので廃止しました。
lips4c デバイスが同様のものになります。
しかしながら、Color LASER SHOT で出力する場合は ベクトル版デバイスの lips4vc.dev
で出力するほうが 10 倍以上速いと思います。
*fig.dev は dvipr でしか用いられません。また、dvipr 自体はすでに時代遅れの
ソフトウェアになりつつあります。
よってサポートしないことにしました。
LIPS IV 機の場合 -r300 オプションをつけて解像度を 300 dpi (クイック)
にすると速くなります。(当然画質は落ちます)
LIPS IV 機で 600 dpi 印刷する場合は lips4 ドライバを用いるのが良いでしょう。
lips4v ドライバを使っても速度的なメリットはありません。
LIPS IV 機で 1,200 dpi 印刷する場合は lips4v.dev を使ったほうが
速いかもしれませんが、私は使ったことないので分かりません。
Color LASER SHOT でカラー印刷する場合は lips4c.dev でなく
lips4vc.dev を使った方が高速に出力できます。
(しかし、ベクター版ドライバは制限が多いので注意してください。)
使えません。
インストールのところで述べられているように、gs_statd.ps にパッチをあてて下さい。
Ghostscript 標準の Bサイズは ISOのBサイズであって JISのBサイズではありません。
Ghostscript ではデバイスの名前は1から8文字と決まっています。
また、アンダースコア(_)以外の記号は使えないことになっています。
PSUtils というソフトウェアに含まれる psnup を用います。
PSUtils は PostScript ファイルの中から特定のページを抽出したり、
ページの並びを変更したりできるコマンド群です。
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 は次のところから得られます。
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 サイズにします。
このドライバのデフォルトのマージン設定は上下左右とも 5 mm になっています。
BJC-680J/BJC-880J は上マージンが 2 mm、下マージンが 8 mm ですので修正する
必要があります。
マージンの値はプリンタの「有効印字領域」で決まります。
この「有効印字領域」の値はそれぞれのプリンタのマニュアルを参照して下さい。
オフセットはプリンタには個体差があるのでそれぞれのプリンタごとに調整します。
オフセットの調整方法には次の二つがあります。
- プリンタのパネル設定の「縦補正」「横補正」の機能を用いる
- Ghostscript で .HWMarigns/Margins オペレータで調整する。
Ghostscript でマージンの値を変更したい場合は、附属の align.ps を印刷してその印刷された内容に従って次のような内容をファイル margins.ps などと名前をつけたファイルに記入してください。単位は 1/72 inch となっています。
% .HWMargins オペレータの引数は、左、下、右、上のマージンである
% Margins オペレータの引数はそれぞれ、x 方向、y 方向のオフセットである
<<
/.HWMargins [14.1732 14.1732 14.1732 14.1732] /Margins [0 0]
>> setpagedevice
そして、Ghostscript を起動するたびにこの margins.ps を呼び出して下さい。
例えば次のようにします。
gs -q -dSAFER -dNOPAUSE -sDEVICE=lips4 -sOutputFile=- margins.ps -
伊藤祥晴氏には圧縮ルーチン部分の提供、スーパーファイン LIPS のテストなどを手伝っていただきました。
また、LISP IV 出力における高解像度印字に関する注意も伊藤氏が書かれた文書です。
二木紀行氏にはプログラミング上の相談にのっていただきました。
またベクター版デバイスの品質向上に協力していただきました。
このソフトウェアの改善に関して、以下の方々から貴重な意見をいただきました。
太田芳彦、石丸哲也、山口一郎、伊藤直史、竹野茂治、成松宏、熊谷正朗、山内仁、 寺川愛印(敬称略)
- PostScript Language Reference Manual SECOUND EDITION, Adobe Systems Incorporated
- プログラマーズマニュアル ソフトウェア概説書 4.1, Canon
- プログラマーズマニュアル ソフトウェア概説書 4.2, Canon
- プログラマーズマニュアル コマンドリファレンス 4.1, Canon
- プログラマーズマニュアル コマンドリファレンス 4.2, Canon
- プログラマーズマニュアル クックブック 4.1, Canon
- プログラマーズマニュアル クックブック 4.2, Canon
Last modified: Mon Mar 1 23:05:43 JST 1999
千葉大学薬学部薬品物理化学研究室 大森紀人
<URI:mailto:ohmori@p.chiba-u.ac.jp>