(57)【特許請求の範囲】
【請求項１】
１回の走査で２バンド分の黒プリントデータをプリント可能な、黒インクをプリントするための複数のノズルが前記走査の方向とは異なる方向に配列された黒ノズル列と、１回の走査で１バンド分のカラープリントデータをプリント可能な、前記黒インクとは異なるカラーインクをプリントするための複数のノズルが前記走査の方向とは異なる方向に配列されたカラーノズル列とを、順方向及び逆方向へ走査させながらプリントデータのバンドをプリントするプリント方法であって、
プリントデータのバンドに含まれる黒プリントデータ以外のカラープリントデータを前記順方向及び逆方向の両方の走査でプリントする工程と、
前記プリントデータに含まれる黒プリントデータを前記順方向及び逆方向のいずれか一方の走査でプリントする工程とを有し、
前記黒プリントデータをプリントする工程において、２バンド分の黒プリントデータを１回の走査で同時にプリントすることを特徴とするプリント方法。
【請求項２】
前記２バンド分の黒プリントデータがプリントされる走査中に、１バンド分のカラープリントデータがプリントされることを特徴とする請求項１に記載のプリント方法。
【請求項３】
前記プリントデータのバンドに含まれる黒プリントデータを格納する工程を更に有し、
前記黒プリントデータをプリントする工程において、次のバンドのプリントデータに含まれる黒プリントデータと、前記格納された黒プリントデータとを１回の走査で同時にプリントすることを特徴とする請求項１または２に記載のプリント方法。
【請求項４】
前記格納された黒プリントデータは、前記逆方向の走査で前記カラーノズル列にのみによりプリントされる前回のバンドに含まれることを特徴とする請求項３に記載のプリント方法。
【請求項５】
前記黒プリントデータをプリントする工程において、前記黒プリントデータは前記順方向の走査でプリントされることを特徴とする請求項１乃至４のいずれかに記載のプリント方法。
【請求項６】
コンピューターで読み出し可能な媒体に格納され、１回の走査で２バンド分の黒プリントデータをプリント可能な、複数のノズルが前記走査の方向とは異なる方向に配列された黒ノズル列と、１回の走査で１バンド分のカラープリントデータをプリント可能な、複数のノズルが前記走査の方向とは異なる方向に配列されたカラーノズル列とを順方向及び逆方向へ走査させながら、プリントデータのバンドをプリントさせるためのコンピューターで実行可能な処理工程であって、
プリントデータのバンドに含まれる黒プリントデータ以外のカラープリントデータを前記順方向及び逆方向の両方の走査でプリントさせるための処理を行う第１の処理工程と、
前記プリントデータに含まれる黒プリントデータを前記順方向及び逆方向のいずれか一方の走査でプリントさせるための処理を行う第２の処理工程とを有し、
前記第２の処理工程では、２バンド分の黒プリントデータが１回の走査で同時にプリントされるように処理を行うことを特徴とするコンピューターで実行可能な処理工程。
【請求項７】
前記２バンド分の黒プリントデータがプリントされる走査中に、１バンド分のカラープリントデータをプリントさせるための処理を行う第３の処理工程を更に有することを特徴とする請求項６に記載のコンピューターで実行可能な処理工程。
【請求項８】
前記プリントデータのバンドに含まれる黒プリントデータを格納する工程を更に有し、
前記第２の処理工程において、前記プリントデータの次のバンドのプリントデータに含まれる黒プリントデータと、前記格納された黒プリントデータとを１回の走査で同時にプリントさせるための処理を行うことを特徴とする請求項６または７に記載のコンピューターで実行可能な処理工程。
【請求項９】
前記格納された黒プリントデータは、前記逆方向の走査で前記カラーノズル列のみによりプリントされる前回のバンドに含まれることを特徴とする請求項８に記載のコンピューターで実行可能な処理工程。
【請求項１０】
前記第２の処理工程において、前記黒プリントデータを前記順方向の走査でプリントさせる為の処理を行うことを特徴とする請求項６乃至９のいずれかに記載のコンピューターで実行可能な処理工程。
【請求項１１】
順方向及び逆方向でプリントデータのバンドをプリントするためのシステムであって、
１回の走査で２バンド分の黒プリントデータをプリント可能な、黒インクをプリントするための複数のノズルが前記走査の方向とは異なる方向に配列された黒ノズル列と、１回の走査で１バンド分のカラープリントデータをプリント可能な、前記黒インクとは異なるカラーインクをプリントするための複数のノズルが前記走査の方向とは異なる方向に配列されたカラーノズル列とを前記順方向及び逆方向へ走査させながら前記プリントデータのバンドをプリントするプリントユニットと、
コンピュータで実行可能な処理工程を格納するメモリと、
前記メモリに格納された処理工程を実行するためのプロセッサーであって、（１）前記プリントデータのバンドに含まれる黒プリントデータ以外のカラープリントデータを前記順方向及び逆方向の両方の走査でプリントさせるためのコンピューターで実行可能な第１の処理工程と、（２）前記プリントデータに含まれる黒プリントデータを前記順方向及び逆方向のいずれか一方の走査でプリントさせるための、コンピューターで実行可能な第２の処理工程を実行するためのプロセッサーとを有し、
前記第２の処理工程では、２バンド分の黒プリントデータが１回の走査で同時にプリントされるように処理を行うことを特徴とするシステム。
【請求項１２】
前記プロセッサーは、前記２バンド分の黒プリントデータがプリントされる走査中に、１バンド分のカラープリントデータをプリントさせるためのコンピューターで実行可能な第３の処理工程を更に実行することを特徴とする請求項１１に記載のシステム。
【請求項１３】
前記プロセッサーは、（１）プリントデータのバンドに含まれる黒プリントデータを格納し、（２）次のバンドのプリントデータに含まれる黒プリントデータと、格納された黒プリントデータとを１回の走査で同時にプリントさせるためのコンピューターで実行可能な工程を実行することを特徴とする請求項１１または１２に記載のシステム。
【請求項１４】
前記格納された黒プリントデータは、前記逆方向の走査で前記カラーノズル列のみによりプリントされる前回のバンドに含まれることを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記プロセッサーは、前記黒プリントデータを前記順方向の走査でプリントさせるためのコンピューターで実行可能な工程を実行することを特徴とする請求項１１乃至１４のいずれかに記載のシステム。
【請求項１６】
請求項１乃至５のいずれかに記載のプリント方法を実現するためのコンピューターで実行可能なプログラムコードを保持する記憶媒体。
【請求項１７】
請求項１乃至５のいずれかに記載のプリント方法を実現するためのコンピューターで実行可能なプログラムコード。
【請求項１８】
１回の走査で複数バンド分の黒プリントデータをプリント可能な、黒インクをプリントするための複数のノズルが前記走査の方向とは異なる方向に配列された黒ノズル列と、１回の走査で１バンド分のカラープリントデータをプリント可能な、前記黒インクとは異なるカラーインクをプリントするための複数のノズルが前記走査の方向とは異なる方向に配列されたカラーノズル列を順方向及び逆方向へ走査させながら、プリントデータのバンドをプリントするプリント方法であって、
プリントデータのバンドに含まれる黒プリントデータ以外のカラープリントデータを前記順方向及び逆方向の両方の走査でプリントする工程と、
前記プリントデータに含まれる黒プリントデータを前記順方向及び逆方向のいずれか一方の走査でプリントする工程とを有し、
前記黒プリントデータをプリントする工程において、複数バンド分の黒プリントデータを１回の走査で同時にプリントすることを特徴とするプリント方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は両方向プリントを行うことのできるプリント方法、システム、コンピューターで実行可能な処理工程及び記憶媒体に関し、更に詳しくは、プリントしようとするデータが黒プリントデータ以外のデータを含むかどうかの判断に基づいて、両方向プリントまたは一方向プリントを選択的に実行するプリント方法、システム、コンピューターで実行可能な処理工程及び記憶媒体に関する。
【０００２】
【従来の技術】
従来のシリアルプリントシステムでは、記録媒体をプリントユニットで走査しながら画像を記録媒体上にプリントする。走査中、プリントユニットは受信したプリントデータに基づいてインクを記録媒体上に置き、一走査を終える毎に、プリントユニットに対して相対的に記録媒体を行送りするといった動作を全ページ分のプリントデータがプリントされ終わるまで繰り返す。
【０００３】
一方向シリアルプリントでは、プリント中、プリントユニットは記録媒体の一方の端であるホーム端（通常左端）からその反対側の端（通常右端）まで走査し、反対側の端に到達すると、ユニットはプリントを行わずにホーム端まで戻る。両方向プリントはこの動作とは異なり、プリントユニットが記録媒体の反対側の端からホーム端へ戻る間もプリントを行う。従って、一方向プリントでは、両方向プリントよりも１ページをプリントするのに余計に時間がかかっていた。
【０００４】
しかし、両方向プリントは一方向プリントに比べてスループットは良いものの、いくつかの欠点がある。最も顕著なものとしては、逆方向走査中にプリントされたデータは、順方向走査中にプリントされたデータと異なる品質を有していることが多いことである。この差の原因として、いくつかの要因が挙げられる。例えば、順方向走査におけるプリントユニットのプリント開始端が、逆方向走査ではプリントユニットのプリント終了端となるため、順方向でプリントされたデータと逆方向でプリントされたデータとの品質の差を無くすには、プリントユニットのプリント素子は非常に左右対称でなければならない。また、プリントユニットは順方向走査中に記録媒体から所定距離離れた位置にあるが、振動やその他機構的要因により逆方向走査中の距離とは異なる場合がある。
【０００５】
更に、インクジェットプリントシステムの場合、所望位置に向けて吐出されたインク滴は小さな「サテライト」滴を伴う場合が多く、順方向走査中では所望位置に吐出されたインク滴と重なることが多いが、逆方向走査中は逆方向走査の方向に所望位置を過ぎた位置にプリントされてしまう。また、このようなサテライト滴による画像の順方向プリント部分及び逆方向プリント部分の差は、光学濃度の高いインクを用いた場合に、最も顕著である。
【０００６】
【発明が解決しようとする課題】
本発明は上記問題点を鑑みてなされたものであり、両方向プリントにより起きる画像のグラデーションを最小に押さえながら、迅速にデータをプリント媒体にプリントするプリント方法、システム、コンピューターで実行可能な処理工程及び記憶媒体を提供することを目的とする。
【０００７】
【課題を解決するための手段】
上記問題点を解決するために、本発明における１回の走査で２バンド分の黒プリントデータをプリント可能な、黒インクをプリントするための複数のノズルが前記走査の方向とは異なる方向に配列された黒ノズル列と、１回の走査で１バンド分のカラープリントデータをプリント可能な、前記黒インクとは異なるカラーインクをプリントするための複数のノズルが前記走査の方向とは異なる方向に配列されたカラーノズル列とを、順方向及び逆方向へ走査させながらプリントデータのバンドをプリントするプリント方法は、プリントデータのバンドに含まれる黒プリントデータ以外のカラープリントデータを前記順方向及び逆方向の両方の走査でプリントする工程と、前記プリントデータに含まれる黒プリントデータを前記順方向及び逆方向のいずれか一方の走査でプリントする工程とを有し、前記黒プリントデータをプリントする工程において、２バンド分の黒プリントデータを１回の走査で同時にプリントする。
【０００８】
また、本発明における１回の走査で２バンド分の黒プリントデータをプリント可能な複数のノズルが前記走査の方向とは異なる方向に配列された黒ノズル列と、１回の走査で１バンド分のカラープリントデータをプリント可能な複数のノズルが前記走査の方向とは異なる方向に配列されたカラーノズル列とを順方向及び逆方向へ走査させながら、プリントデータのバンドをプリントさせるための、コンピューターで読み出し可能な記録媒体に記録されるコンピューターで実行可能な処理工程は、プリントデータのバンドに含まれる黒プリントデータ以外のカラープリントデータを前記順方向及び逆方向の両方の走査でプリントさせるための処理を行う第１の処理工程と、前記プリントデータに含まれる黒プリントデータを前記順方向及び逆方向のいずれか一方の走査でプリントさせるための処理を行う第２の処理工程とを有し、前記第２の処理工程では、２バンド分の黒プリントデータが１回の走査で同時にプリントされるように処理を行う。
【０００９】
更に、本発明における順方向及び逆方向でプリントデータのバンドをプリントするためのシステムは、１回の走査で２バンド分の黒プリントデータをプリント可能な、黒インクをプリントするための複数のノズルが前記走査の方向とは異なる方向に配列された黒ノズル列と、１回の走査で１バンド分のカラープリントデータをプリント可能な、前記黒インクとは異なるカラーインクをプリントするための複数のノズルが前記走査の方向とは異なる方向に配列されたカラーノズル列とを前記順方向及び逆方向へ走査させながら前記プリントデータのバンドをプリントするプリントユニットと、コンピュータで実行可能な処理工程を格納するメモリと、前記メモリに格納された処理工程を実行するためのプロセッサーであって、（１）前記プリントデータのバンドに含まれる黒プリントデータ以外のカラープリントデータを前記順方向及び逆方向の両方の走査でプリントさせるためのコンピューターで実行可能な第１の処理工程と、（２）前記プリントデータに含まれる黒プリントデータを前記順方向及び逆方向のいずれか一方の走査でプリントさせるための、コンピューターで実行可能な第２の処理工程を実行するためのプロセッサーとを有し、前記第２の処理工程では、２バンド分の黒プリントデータが１回の走査で同時にプリントされるように処理を行う。
【００１０】
上記構成によれば、プリント速度と、プリント品質とを好ましく兼ね合わせることができる。
【００１１】
本発明の好適な一態様によれば、前記２バンド分の黒プリントデータがプリントされる走査中に、１バンド分のカラープリントデータがプリントされ、前記プロセッサーは、前記２バンド分の黒プリントデータがプリントされる走査中に、１バンド分のカラープリントデータをプリントさせるためのコンピューターで実行可能な第３の処理工程を更に実行する。
【００１２】
また、本発明の好適な一態様によれば、前記プリントデータのバンドに含まれる黒プリントデータを格納する工程を更に有し、前記黒プリントデータをプリントする工程において、次のバンドのプリントデータに含まれる黒プリントデータと、前記格納された黒プリントデータとを１回の走査で同時にプリントする。また、前記プロセッサーは、（１）プリントデータのバンドに含まれる黒プリントデータを格納し、（２）次のバンドのプリントデータに含まれる黒プリントデータと、格納された黒プリントデータとを１回の走査で同時にプリントさせるためのコンピューターで実行可能な工程を実行する。
【００１３】
また、本発明の好適な一態様によれば、前記格納された黒プリントデータは、前記逆方向の走査で前記カラーノズル列にのみによりプリントされるバンドに含まれる。
【００１４】
更に、本発明の好適な一態様によれば、前記黒プリントデータをプリントする工程において、前記黒プリントデータは前記順方向の走査でプリントされ、前記プロセッサーは、前記黒プリントデータを前記順方向の走査でプリントさせるためのコンピューターで実行可能な工程を実行する。
また、別の構成によれば、１回の走査で複数バンド分の黒プリントデータをプリント可能な、黒インクをプリントするための複数のノズルが前記走査の方向とは異なる方向に配列された黒ノズル列と、１回の走査で１バンド分のカラープリントデータをプリント可能な、前記黒インクとは異なるカラーインクをプリントするための複数のノズルが前記走査の方向とは異なる方向に配列されたカラーノズル列を順方向及び逆方向へ走査させながら、プリントデータのバンドをプリントするプリント方法であって、プリントデータのバンドに含まれる黒プリントデータ以外のカラープリントデータを前記順方向及び逆方向の両方の走査でプリントする工程と、前記プリントデータに含まれる黒プリントデータを前記順方向及び逆方向のいずれか一方の走査でプリントする工程とを有し、前記黒プリントデータをプリントする工程において、複数バンド分の黒プリントデータを１回の走査で同時にプリントする。
【００１５】
【発明の実施の形態】
本実施の形態においては、以下に示すセクションに分けてそれぞれ詳細に説明する。
【００１６】
１．０  機械的構成
１．１  構成
１．２  クリーニング
１．３  インクカートリッジ
１．４  プリントヘッド構成
１．５  プリントモード
【００１７】
２．０  電気的構成
２．１  システムの構造
２．２  システムの機能
２．３  制御ロジック
２．４  一般的動作
【００１８】
３．０  プリンタソフトウエアの構造
３．１  オペレーティングシステム
３．２  初期化
３．３  タスク
３．４  割り込みハンドラ
３．５  周期ハンドラ
３．６  ホストコンピューターの入出力コマンド
３．６．１  制御コマンド
３．６．２  設定コマンド
３．６．３  メインテナンスコマンド
【００１９】
４．０  自動給紙制御
４．１  ＡＳＦ、行送り及び排紙速度の選択
４．２  給紙成功可否の早期判定
４．３  給紙中のプリントヘッドのメインテナンス
【００２０】
５．０  キャリッジの制御
５．１  マージン及び方向の制御
５．１．１  プリンタドライバの初期動作
５．１．２  プリント制御動作
５．２  自動インク吐出及びサテライティング制御
【００２１】
６．０  ヘッド位置合わせに基づくプリンタ制御
【００２２】
７．０  デュアルヘッド多色印刷
【００２３】
８．０  予備吐出とパルス幅変調
８．１  予備吐出制御
８．１．１  予備吐出のタイミング
８．１．２  実施例
８．２  パルス幅変調制御
【００２４】
９．０  複数のインクを用いたカラー印刷
【００２５】
１０．０  状態に基づくプリンタ制御
１０．１  状態取得
１０．２  にじみの低減
１０．３  スミヤ（こすれ汚れ）の低減
１０．４  自動給紙（ＡＳＦ）速度
１０．５  予備吐出のタイミング
１０．６  手差し給紙の遅延
１０．７  清掃速度
１０．８  圧縮モード
【００２６】
＜１．０  機械的構成＞
本セクションでは、本発明の実施の形態におけるプリンタの機械的配置と機能について説明する。
【００２７】
＜１．１  構成＞
図１は、本実施の形態のプリンタと接続して用いられるコンピューター機器の外観図である。コンピューター機器１は、ホストプロセッサー２を含む。ホストプロセッサー２は、パーソナルコンピュータ（以下、「ＰＣ」と呼ぶ。）であってもよく、特に、マイクロソフト（登録商標）ウィンドウズ９５などのウィンドウ環境で動作可能な、ＩＢＭ社のＰＣコンパチブルコンピュータが好ましい。コンピューター機器１は、カラーモニタなどのディスプレイ４、テキストデータやユーザコマンドなどを入力するためのキーボード５、ポインティングデバイス６を有する。ポインティングデバイス６は、ディスプレイ４上のオブジェクトを指し示し、操作するためのマウスが好ましい。
【００２８】
また、コンピューター機器１は、ハードディスク８やフロッピーディスクインタフェース９などのコンピューター可読メモリ媒体を有する。フロッピーディスクインタフェース９は、コンピューター機器１がフロッピーディスクに保持されているデータやアプリケーションプログラムなどの情報にアクセスできる手段を提供する。同様に、コンピューター機器１にＣＤ−ＲＯＭインタフェース（不図示）を付加してもよく、その場合、コンピューター機器１はＣＤーＲＯＭインタフェースを介して、ＣＤーＲＯＭに保持された情報にアクセスすることができる。
【００２９】
ディスク８は様々なデータと共にアプリケーションプログラムを保持し、ホストコンピューター２はこのプログラムを用いてファイルを作成したり、作成したファイルをディスク８上で操作・保持したり、ディスプレイ４によりこれらのファイルをオペレーターに示したり、プリンタ１０によりこれらのファイル中のデータをプリントしたりする。ディスク８は、上述した通り、好ましくはウィンドウズ９５などのウィンドウオペレーティングシステムの、オペレーティングシステムも保持している。デバイスドライバもディスク８に保持されている。デバイスドライバの内、少なくとも一つはプリンタ１０のファームウエアに対するソフトウエアインタフェースを提供するプリンタドライバである。ホストプロセッサー２とプリンタ１０間のデータ交換について、以下に詳細に説明する。
【００３０】
本発明の好適な実施の形態においては、プリンタ１０はマルチヘッドシリアルプリンタである。従って、本発明はマルチヘッドシリアルプリンタに限るものではないが、マルチヘッドシリアルプリンタである場合を例にとって説明を行う。
【００３１】
図２及び図３は、それぞれプリンタ１０の前面および後面斜視図である。物理的な構成として、本実施の形態におけるプリンタ１０は、１９９７年１１月１７日出願の米国特許出願第０８／９７２，１１３号の「異なる解像度でのマルチヘッド印刷」に開示されたプリンタに類似したものである。
【００３２】
図２及び図３に示すように、プリンタ１０は、筐体１１、アクセスドア１２、自動給紙部１４、自動給紙アジャスター１６、手差し給紙部１７、手差し給紙アジャスター１９、排紙口２０、排紙トレイ２１、トレイ受２２、インジケーターライト２３、電源ボタン２４、再スタートボタン２６、電源部２７、電源コード２９、パラレルポートコネクタ３０を有する。
【００３３】
筐体１１は幅約４９８ｍｍ、奥行き約２７１ｍｍ、高さ約２１９ｍｍであり、画像を記録媒体に印刷する、後述するプリンタエンジンを含むプリンタ１０の内部動作部を内包する。筐体１１はアクセスドア１２を有し、アクセスドア１２はユーザがプリンタ１０の内部作業部、特にプリンタ１０に取り付けられたプリントカートリッジの交換または置き換えのために、プリントカートリッジにアクセスすることができるように、手動で開閉することができる。
【００３４】
アクセスドア１２の上部にはインジケーターライト２３、電源ボタン２４、再スタートボタン２６を備えたフロントパネルが備え付けられている。電源ボタン２４により、ユーザはプリンタ１０の電源をオン／オフすることができる。また、他の追加機能も電源ボタン２４を利用することができる。例えば、プリンタ１０のスピーカー（不図示）がビープ音などの音を発するまで電源ボタン２４を押し続けることにより、テストプリント機能を選択することができる。テストプリント機能が選択されると、プリンタ１０はテストパターンを印刷する。
【００３５】
再スタートボタン２６は、エラーが起こった後にオペレーターが印刷動作を再スタートさせるためのものである。また、再スタートボタン２６を他の機能を実行させるために使用することもできる。例えば、プリンタ１０のスピーカーがビープ音を発するまで再スタートボタン２６を押し続けることにより、プリントヘッドクリーニング機能が実行される。
【００３６】
なお、プリンタ１０は様々な連続ビープ音を発生することができる。これらビープ音のそれぞれにより、用紙切れ、紙詰まりなどの異なるタイプのエラーを示すことができる。
【００３７】
インジケーターライト２３は、１つのライトパイプ（光導体）と、緑色の発光ダイオード（以下、「ＬＥＤ」と記す。）と、オレンジ色のＬＥＤとからなる。インジケーターライト２３は、プリンタ１０の動作状態をユーザに示すものである。具体的には、このインジケーターライト２３が消えているときには、プリンタ１０の電源が入っていないことを示し、緑色に点灯している（すなわち、緑色のＬＥＤが動作している）ときには、電源が入れられて、印刷の準備ができていることを示す。また、緑色に点滅しているときには、例えば電源投入中であるなど、プリンタの状態を示す。
【００３８】
インジケーターライト２３がオレンジ色に点灯する場合もあり、その場合、オペレーター呼び出しエラーなど、リカバリー可能なエラーがプリンタ１０で起こったことを示す。リカバリー可能なエラーは、用紙切れ、紙詰まり、プリンタ１０に取り付けられたカートリッジの欠陥、カートリッジ交換中などを含む。プリンタ１０のスピーカーから発せられるビープ音の数により、リカバリー可能なエラーの種類を判断することも可能である。インジケーターのＬＥＤがオレンジ色に点灯し続けたときにビープ音の数を数えることにより、ユーザはどのようなエラーが起きたかを判断し、対処することができる。
【００３９】
インジケーターライト２３がオレンジ色に点滅している時には、サービス呼び出しエラーなど、重大なエラーがプリンタ１０に起きたことを示す。重大エラーの種類は、オレンジ色のライトが何回点滅したかを数えることにより判断することができる。
【００４０】
また、図２及び図３に示すように、自動給紙部１４もプリンタ１０の筐体１１に含まれる。自動給紙部１４はプリンタ１０の媒体供給部のことである。すなわち、自動給紙部１４は、プリンタ１０が画像を印刷するための記録媒体を保持する。この場合、プリンタ１０は様々な種類の記録媒体に画像を印刷することが可能である。記録媒体の種類としては、普通紙、高解像度用紙、透明媒体、光沢紙、光沢フィルム、バックプリントフィルム、布、Ｔシャツ転写紙、バブルジェット用紙、カード類、パンフレット用紙、バナー（長尺）紙、厚紙等があるが、これらに限られるものではない。
【００４１】
自動給紙部１４は、約１３ｍｍ厚の記録媒体スタックを保持することができる。その場合、自動給紙部１４は６４ｇ／ｍ２密度の紙であれば約１３０枚、または封筒であれば約１５枚を保持することができる。印刷中は、自動給紙部１４に重ねられた媒体が１枚ずつプリンタ１０に給紙される。特に、プリンタ１０のローラー（後述）が、自動給紙部１４から記録媒体を１枚ずつ取り出してプリンタ１０に給紙する。このようにして１枚ずつ供給された記録媒体は、ローラー間の「Ｊ」字型経路を通り、図２に示す排紙口２０から排出される。
【００４２】
自動給紙部１４は自動給紙アジャスター１６を有する。自動給紙部１４に供給される様々なサイズの記録媒体に合わせて、自動給紙アジャスター１６を横方向に動かすことができる。自動給紙部１４は、自動給紙部１４に供給された記録媒体を支えるために自動給紙部１４から延長する支え板３１を有する。使用しないときには、支え板３１は図２に示すように自動給紙部１４のスロット内に格納される。
【００４３】
用紙は、図３に示す手差し給紙部１７から１枚ずつプリンタ１０に供給することも可能である。この手差し給紙部１７も、プリンタ１０の媒体供給部である。本実施の形態においては、手差し給紙部１７は少なくとも６４ｇ／ｍ ２から５５０ｇ／ｍ２の密度と、０．８ｍｍ厚を有する媒体に対応することができる。手差し給紙部１７から供給される用紙は、プリンタ１０内のローラーを介して真っ直ぐに排紙口２０へ向かう。また、自動給紙部１４と同様に、手差し給紙部１７は手差し給紙アジャスター１９を有する。手差し給紙アジャスターを横方向にスライドさせることにより、ユーザは手差し給紙部１７が対応できる記録媒体のサイズを変更することができる。
【００４４】
手差し給紙部１７及び自動給紙部１４使用することにより、プリンタ１０は様々な異なるサイズの記録媒体に画像を印刷することができる。サイズとしては、レターサイズ、リーガルサイズ、Ａ４、Ａ３、Ａ５、Ｂ４、Ｂ５、タブロイドサイズ、＃１０封筒、ＤＬ封筒、バナーサイズ、ワイドバナーサイズ、ＬＴＲフルブリード(full bleed)サイズなどがあるが、これらに限定されるものではない。また、既成サイズ以外の記録媒体をプリンタ１０で使用することもできる。
【００４５】
上記の通り、媒体は排紙口２０からプリンタ１０を通り排紙トレイ２１に排紙される。排紙トレイ２１は、プリンタ１０から排紙される媒体を支える、バネにより支えられたフラップを有し、このフラップはより多くの媒体が積み重ねられるに従って、下方向へ動く。使用されないときは、図２に示すように、排紙トレイ２１はプリンタ１０のトレイ受２２内に収納される。
【００４６】
電源コード２９はプリンタ１０を外部ＡＣ電源に接続する。電源部２７は、外部電源から供給されるＡＣ電力を変換し、変換した電力をプリンタ１０に供給するために用いられる。パラレルポート３０はプリンタ１０をホストプロセッサー２に接続する。パラレルポート３０は好ましくはＩＥＥＥ１２８４に準拠した両方向ポートであり、後述のセクション３．０で説明するデータ及びコマンドがプリンタ１０とホストプロセッサー２との間でやりとりされる。
【００４７】
図４及び図５は、それぞれプリンタ１０の後面及び前面の切取斜視図である。図４に示すように、プリンタ１０は自動給紙部１４または手差し給紙部１７からプリンタ１０を介して排紙口２０へ記録媒体を搬送する、上述の自動給紙ローラー３２を有する。自動給紙ローラー３２は媒体搬送中は、図４の矢印３２ａが示すように反時計回りに回転する。
【００４８】
ラインフィードモータ３４は自動給紙ローラー３２の回転を制御する。ラインフィードモータ３４と自動給紙ローラー３２の動作関係を示す図４の構成は、説明のために簡略化して描かれたものである。動作関係については、図５Ａ及び図５Ｂを参照して詳細に後述する。ラインフィードモータ３４は、９６ステップの２相パルスモータを含み、回路基板３５から受け取った信号コマンドに応じて制御される。ラインフィードモータ３４は４段階電流制御のモータドライバにより駆動され、その４段階は、好ましくは、最大電流の０％、４０％、７０％、１００％である。
【００４９】
本実施の形態においては、ラインフィードモータ３４が最大速度で動作した場合、プリンタ１０内で記録媒体を秒速２３８ｍｍで搬送するように自動給紙ローラー３２を回転させることができる。プリンタ１０の主要モード動作においては、ラインフィードによる解像度は（１／７２０）インチ／パルス（２−２相）、１４４０ｄｐｉモードでは、（１／１４４０）インチ／パルス（１−２相）である。プリントモードについては、詳細に後述する。
【００５０】
図５に示すように、プリンタ１０はデュアルカートリッジプリンタであって、２つのプリントヘッド（カートリッジ１つにつきヘッド１つ）を使って画像を印刷する。特に、これらのカートリッジはお互いのプリントヘッドが水平方向にオフセットするように、カートリッジホルダ３７ａ及び３７ｂに隣り合わせに保持されることが好ましい。図４に示すキャリッジモータ３９は、回路基板３５からの信号コマンドに応じて、カートリッジホルダ３７ａ及び３７ｂの動きを制御する。具体的には、キャリッジモータ３９はベルト４０の動きを制御し、これによりベルト４０はキャリッジ４１に沿ったカートリッジホルダ３７ａ及び３７ｂの動きを制御する。すなわち、キャリッジモータ３９はベルト４０を双方向に動かし、これによりカートリッジホルダ３７ａ及び３７ｂも双方向に動かされる。こうすることにより、プリンタ１０は左から右、右から左へのどちらの方向にも画像を印刷することができる。
【００５１】
キャリッジモータ３９は、９６ステップの２相パルスモータからなり、（９／３６０）インチ／パルスのキャリッジ解像度を有する。キャリッジモータ３９は、４段階電流制御のモータドライバにより駆動される。プリンタ１０が標準のデフォルトモードである３６０ｄｐｉで印刷をしている場合、キャリッジモータ３９は、カートリッジホルダ３７ａ及び３７ｂがキャリッジ４１に沿って秒速２２．５インチで動くように駆動される。秒速２２．５インチは、プリントヘッドヒートパルス周波数６．５１ＫＨｚに対応する。プリンタ１０が３６０ｄｐｉドラフトモードで印刷をしている場合、キャリッジモータ３９は、カートリッジホルダ３７ａ及び３７ｂがキャリッジ４１に沿って秒速２７．５インチで動くように駆動される。秒速２７．５インチは、プリントヘッドヒートパルス周波数１０．０ＫＨｚに対応する。これに対して、プリンタ１０が７２０ｄｐｉモードで印刷をしている場合、キャリッジモータ３９は、カートリッジホルダ３７ａ及び３７ｂがキャリッジ４１に沿ってデフォルト速度の秒速１３．８インチ（１０．０ＫＨｚ）で動くように駆動される。
【００５２】
カートリッジホルダ３７ａ及び３７ｂはプリンタ１０において、インクカートリッジ４３ａおよび４３ｂ（それぞれプリントヘッドを有し、インクを保持するための着脱可能な１つ以上のインクタンクを有することができる）を保持するために使用される。代表的なインクカートリッジについては、セクション１．３で図６を参照して後述する。
【００５３】
図５において、プリンタ１０は予備吐出受４２ａ及び４２ｂ、ワイパー４４ａ及び４４ｂ、インククリーニング機構４５を有することが好ましい。インククリーニング機構４５は、ホーム位置４６に備え付けられており、回転ポンプ（不図示）と、プリントヘッド接続キャップ４７ａ及び４７ｂとを有する。プリントヘッド接続キャップ４７ａ及び４７ｂは、プリントヘッドのクリーニング中やプリンタ１０の電源が切られている時などのその他の時に、カートリッジホルダ３７ａ及び３７ｂに取り付けられたカートリッジのプリントヘッドそれぞれに接続し、プリントヘッドを保護する。
【００５４】
ラインフィードモータ３４はインククリーニング機構４５の回転ポンプを駆動して、プリントヘッド接続キャップ４７ａ及び４７ｂのいずれかに接続したプリントヘッドから余分なインクを吸引する。インクは１回につき１つのカートリッジから吸引することが好ましい。
【００５５】
ワイパー４４ａ及び４４ｂは、カートリッジのプリントヘッドから余分なインクを拭き取るために、キャリッジモータ３９により駆動されるブレードなどを有する。ワイパー４４ａ及び４４ｂは、所定の状態となった場合には、プリントヘッドに接触するように持ち上げられる。例えば、プリントヘッドにより所定数のドットを印刷した後に、ワイパー４４ａ及び４４ｂは持ち上げられる。
【００５６】
図５Ａは、自動給紙ローラー３２及びインククリーニング機構４５の動作のための、ラインフィードモータ３４及びキャリッジモータ３９の相互動作を示す。図５Ａに示すように、ラインフィードモータ３４はギヤ１６０，１６１，１６２を介してラインフィードローラー１６５を駆動する。クラッチ部１４０はラインフィードローラー１６５によりギヤ１５０，１５１を介して駆動される。クラッチ部１４０及び制御ロッド１４１は、ラインフィードモータ３４及びキャリッジモータ３９と共動して、クラッチ部１４０が以下に示す複数の位置のいずれかの位置に来るように駆動する。すなわち、（１）通常印刷のための中間位置、（２）自動給紙部の動作のための位置、（３）インククリーニング機構の動作のための位置のいずれかである。
【００５７】
図５Ａに示すように、キャリッジモータ３９はベルト４０を駆動してカートリッジホルダ３７ｂをキャリッジ４１に沿って直線移動させる。カートリッジホルダ７ｂがホームポジション４６を過ぎてキャリッジ４１の右端方向へ動くことで、制御ロッド１４１の尖形端をクラッチ部１４０から離すように、カートリッジホルダ３７ｂはクラッチ部１４０から離れる方向に制御ロッド１４１を並進させることができる。その後、ラインフィードモータ３４は、自動給紙ローラー３２またはインククリーニング機構４５のいずれかを駆動するために、クラッチ部１４０が新しい位置で再度かみ合うように所定の方向へ所定量回転する。
【００５８】
図５Ｂは、自動給紙ローラー３２の動作またはインククリーニング機構４５の動作のために供給された、クラッチ部１４０と周辺ギヤの詳細図である。クラッチ部１４０は、制御ロッド１４１の尖形端と係合する独立した相互排他的な２つのスロット１４５及び１４６と、ギヤ１５０及び１５１を介してラインフィードローラー１６５により回転されるギヤ１４７と、ギヤ１４７により回転されるギヤ１４８とを有する。ギヤ１４８はクラッチ部１４０の駆動ギヤで、中間位置で自由に回転するか、インククリーニング機構４５の清掃ポンプ（不図示）の駆動中であれば入力ギヤ１５２に係合し、自動給紙ローラー３２の駆動中であればギヤ１５３に係合する。
【００５９】
クラッチ部１４０の中間動作中は、クラッチ部１４０のスロット１４５が、制御ロッド１４１に係合する。この位置では、ギヤ１４８はギヤ１５２及び１５３の両方から外れ、これにより、インククリーニング機構４５及び自動給紙ローラー３２が動作しないようにする。インククリーニング機構４５の動作中は、クラッチ部１４０のスロット１４６が制御ロッド１４１に係合し、これにより、ギヤ１４８が入力ギヤ１５２に係合するように偏らせる。入力ギヤ１５２はこの状態でインククリーニング機構４５を動作させてプリントヘッドから余分なインクを除去する。自動給紙ローラー３２の動作中は、制御ロッド１４１はクラッチユニット１４０の前面板１６７上に直接位置し、これにより、ギヤ１５３〜１５６を介して自動給紙ローラー３２を駆動するようにギヤ１４８がギヤ１５３に係合するように偏らせる。
【００６０】
図５Ｃは自動給紙ローラー３２を駆動させるように、クラッチ１４０を係合させる場合の詳細なステップを示す。図５Ｃに示すように、まず、ステップＳ５０１ではクラッチ部１４０を遊離する。これは、キャリッジ容器３７ｂをホームポジション４６を通り過ぎるように動かすことにより、制御ロッド１４１がクラッチ１４０から遊離される。次のステップＳ５０２で、ラインフィードモータ３４を順方向に動かし、ギヤ１５３〜１５６を介して自動給紙ローラー３２を駆動するように、クラッチ部１４０のギヤ１４８をギア１５３に係合させる。ステップＳ５０３では、カートリッジホルダ３７ｂをホームポジション４６の左側に動かし、制御バネ１４２が制御ロッド１４１にクラッチ部１４０の前面板１６７の方向に偏向させるようにする。ステップＳ５０４では、ラインフィードモータ３４は順方向に駆動され、これにより自動給紙ローラー３２が回転する。この後、ステップＳ５０６においてクラッチ部１４０の中間スロット１４５を制御ロッド１４１に合わせるように、ラインフィードモータ３４を反対方向に駆動する。こうすることにより、自動給紙ローラー３２をラインフィードモータ３４から遊離する。クラッチ部１４０を中間位置に戻すように、制御ロッド１４１は中間スロット１４５に係合するようにバネ１４２により偏向させられる（ステップＳ５０７）。
【００６１】
図５Ｄは、インククリーニング機構４５を駆動するようにクラッチ部１４０を係合させる場合の動作を示す。図５Ｄに示すように、ステップＳ５５１では、クラッチ部１４０を遊離する。これは、カートリッジ 容器３７ｂをホームポジション４６を通過するように動かすことにより、制御ロッド１４１をクラッチ部１４０から遊離させる。次のステップＳ５５２において、クラッチ部１４０のスロット１４６を制御ロッド１４１の位置に合わせするように、ラインフィードモータ３４を逆方向へ回転させる。これにより、インククリーニング機構４５を駆動するために、クラッチ１４０のギヤ１４８を入力ギヤ１５２に係合させることができる。ステップＳ５５３ではカートリッジホルダ３７ｂをホームポジションの左側まで動かし、制御バネ１４２が制御ロッド１４１を偏向させて、クラッチ部１４０のスロット１４６に係合する。ステップＳ５５４では、ラインフィードモータ３４は逆方向に１／４回転して、プリントヘッド接続キャップ４７ａ及び４７ｂがプリントヘッドに係合するように上に上げる。ステップＳ５５５では、ラインフィードモータ３４を逆方向に半回転し、これによりインククリーニング機構４５の回転ポンプがプリントヘッドの余分なインクを除去する。プリントヘッド接続キャップ４７ａ及び４７ｂは、ステップＳ５５６でラインフィードモータ３４が逆方向に１／４回転することにより下へ下げられる。カートリッジホルダ３７ｂをホームポジション４６を通りすぎる用に動かして、クラッチユニット１４０から制御ロッド１４１を遊離させることにより、クラッチ部１４０はステップＳ５５７で中間位置に戻される。そして、ラインフィードモータ３４は、ステップＳ５５８において、クラッチ部１４０の中間スロット１４５を制御ロッド１４１の位置に合わせるように、順方向に回転する。
【００６２】
この後、ステップＳ５５９においてカートリッジホルダ３７ｂはホームポジション４６の左側に動かされ、これにより制御ロッド１４１がスロット１４５に係合し、クラッチ部１４０は中間位置に戻る。
【００６３】
＜１．２  クリーニング＞
プリンタ１０は、マニュアルクリーニング機能を有し、フロントパネルを介して実行される。例えば、マニュアルクリーニングは、プリンタ１０が２秒間ビープ音を発し続けるまで再スタートボタン２６を押し続けることにより、実行させることができる。マニュアルクリーニングの実行に移ったことを示すために、インジケーターライト２３が点滅をする。そして印刷処理中の記録媒体は排紙口２０から排紙される。インククリーニング機構４５は、カートリッジホルダ３７ａ及び３７ｂに保持されたインクカートリッジのプリントヘッドを、例えばインクを吸引したり、拭き取るなどして、クリーニングする。吸引及び拭き取られたインクは、不用インク貯蔵領域に蓄えられる。その後、インジケーターライト２３は点滅を止め、エラーが何も起こっていなければ点灯する。不用インクエラーが起こった場合、例えば、不用インク貯蔵領域が容量限界近くになった場合、オレンジ色のＬＥＤが点灯してインジケーターライト２３を照らし、プリンタ１０はビープ音を６回鳴らす。
【００６４】
＜１．３  インクカートリッジ＞
ここで説明するプリンタは、複数の異なるタイプのインクを保持するために着脱可能なインクタンクを有するインクカートリッジを使用することができる。
【００６５】
図６は、カートリッジホルダ３７ａ（図５参照）に取り付けるインクカートリッジ４３ａの構成を示す。インクカートリッジ４３ｂはインクカートリッジ４３ａと同様の構成を有する。従って、説明を簡略化するために、ここではインクカートリッジ４３ａのみについて説明する。
【００６６】
図６に示すように、インクカートリッジ４３ａはプリントヘッド５１と、インクタンク５２と、カートリッジホール５４とを有する。なお、本発明は着脱式インクタンクを含まず、インク全部を内部に蓄えるインクカートリッジに適用することも可能である。
【００６７】
インクタンク５２は、インクカートリッジ４３ａから取り外すことができ、プリンタ１０が画像を印刷するときに使用するインクを貯蔵する。特に、インクタンク５２はカートリッジ４３ａ内に挿入され、図６に示す矢印５６の方向に引くことで取り外すことができる。インクタンク５２はカラーインク（シアン、マゼンタ、イエロー）及び／または黒インクを貯蔵することができる。これについては詳細に後述する。プリントヘッド５１は複数のノズル（不図示）を有し、印刷中は、インクタンク５２からインクを吐出する。カートリッジホール５４は、インクカートリッジ４３ａが定位置に保たれるように、カートリッジホルダ３７ａのピン（不図示）に係合する。
【００６８】
一般的には、プリンタ１０は様々な異なるタイプのカートリッジを用いて動作することができる。例えば、プリンタ１０は染料ベースの黒インクを蓄えるカートリッジを用いることができ、垂直方向にノズルを１２８本を並べたプリントヘッドを有するカートリッジを使用することができる。このようなカートリッジの一例として、キャノンＢＣ−２０カートリッジがある。顔料黒インクを蓄えた、同様のカートリッジを使用してもよい。そのようなカートリッジの一例として、キャノンＢＣ−２３カートリッジがある。一般的には、染料ベースの黒インクは、記録媒体に対する浸透性が高く、反対に顔料ベースの黒インクは、記録媒体に対する浸透性が低い（全く浸透しないものもある）。
【００６９】
プリンタ１０は、カラーインクカートリッジを用いて動作することもできる。例えば、プリンタ１０はシアン、マゼンタ、黄色、黒のインクを蓄え、垂直方向にノズル１３６本を並べたインクカートリッジを用いて動作することができる。そのようなカートリッジでは、ノズル２４本でシアンのインクを印刷し、ノズル２４本でマゼンタのインクを印刷し、ノズル２４本で黄色のインクを印刷し、ノズル６４本で黒のインクを印刷する。このようなカートリッジの一例として、キャノンＢＣ−２１（ｅ）カートリッジがある。
【００７０】
プリンタ１０に用いることのできるインクカートリッジの別の例としては、光学的濃度の低い（例えば「フォト」）インクを蓄え、垂直方向にノズルを１３６本並べたものがある。このようなカートリッジも上述のカラーカートリッジと同様のノズル構成をしている。このようなカートリッジの一例としては、キャノンＢＣ−２２カートリッジがある。
【００７１】
＜１．４  プリントヘッド構成＞
次に本実施の形態において使用されるカートリッジのプリントヘッドの物理的構成について説明する。図７は、プリンタ１０が、ノズル１２８本をほぼ垂直に並べたプリントヘッド６１を含む場合のノズル構成の拡大正面図である。それぞれのノズルと、隣のノズルとの間隔は狭い。このような構成は単色（例えば黒）印刷に適している。プリントヘッドが記録媒体を横切って進むに従って、すべてのノズルを１度にではなく、素早く連続的にノズルからインクを吐出することで垂直線を印刷することがことができるように、ノズルをわずかに傾斜して並べるのが好ましい。素早く、連続的にノズルからインクを吐出するために必要なパワーと制御の要件は、一度にインクを吐出する場合に比べてかなり削減することができる。傾斜を付ける場合の好ましい並べ方の一例としては、解像度３６０ｄｐｉで、垂直１６ノズル毎に、水平方向に１画素分シフトするように傾けたものがある。
【００７２】
プリントヘッド６２は１３６のノズルを有し、そのうち２４のノズルは好ましくは黄色インク用、２４のノズルは好ましくはマゼンタインク用、２４のノズルは好ましくはシアンインク用、そして６４のノズルは好ましくは黒インク用であり、わずかな傾斜をもって縦方向に重なるように並べられている。それぞれ色のノズルグループは、他の色のノズルグループから垂直方向に８ノズル分、離れている。また上記と同様に、解像度３６０ｄｐｉで、垂直方向１６ノズル毎に水平方向に１画素分シフトするようにわずかに傾斜している。
【００７３】
＜１．５  プリントモード＞
プリンタ１０は、ホストプロセッサー２（図１参照）からプリンタ１０に対して発行されるコマンドを用いて設定される異なるモードで処理を行うことができる。これらのモードでは、プリンタ１０に取り付けられたカートリッジは異なるサイズのインク滴を吐出し、異なる解像度の画像を形成することができる。プリンタ１０が対応可能なモードは、プリンタ１０に取り付けられたカートリッジのタイプに一部依存する。すなわち、あるタイプのプリントヘッドは、大きいインク滴や小さいインク滴など、異なる大きさのインク滴を吐出することができるが、別のタイプのカートリッジのプリントヘッドで１種類の大きさのインク滴しか吐出できないものもある。
【００７４】
上述の通り、異なる動作モードにより異なる解像度の画像を形成するために、異なるサイズのインク滴を利用する。すなわち、インクジェットプリンタは、ページ上にドットを形成することで画像を作るため、形成された画像の解像度は、形成されるドット数と、これらの形成されたドットの並び具合とに一部依存する。本実施の形態のプリンタでは、上述のように、大きいインク滴または小さいインク滴のいずれかを用いて、様々な異なる解像度で画像を形成することができる。
【００７５】
なお、印刷中のドット配置と並び方には、印刷に用いる紙のタイプにより幾分制限がある。具体的には、通常紙であれば３６０ｄｐｉ画素当たり小さいインク滴を最大で４滴吸収することができ、高解像度紙（以下、「ＨＲ−１０１」と呼ぶ。）であれば３６０ｄｐｉ画素当たり小さいインク滴を最大で６滴吸収することができる。
【００７６】
＜２．０  電気的構成＞
セクション１．０で説明したように、プリンタ１０は複数のプリントヘッドを、黒−黒、黒−カラー、カラー−カラー、カラー−フォトなど、異なる組み合わせで使用することができ、異なる解像度（例えば、１８０ｄｐｉ、３６０ｄｐｉ、７２０ｄｐｉ）でいろいろなプリントモードを実行することができる。また、プリントヘッドの組み合わせは、テキストモード、テキスト及びカラーモード、カラー及び高画質カラーモードなど、異なるプリントモードに応じて変更することができる。この結果、異なるモードでのプリントタスクは、プリントヘッドの組み合わせ、記録媒体、及び印刷の質に基づいて変化する、複雑な処理を必要とする。図１に示す情報処理システムでは、プリントヘッドの構成や、プリントヘッドの位置の合わせ具合等に関係するプリンタパラメータがプリンタ１０に格納されており、プリンタ１０により得られるデータに基づいてホストプロセッサー２に送られる。好ましくは、ホストプロセッサー２のプリンタドライバは、異なるプリントモードに応じて複雑なプリントデータの処理とプリンタの設定を行い、プリンタには指示されたコマンド列を送ることにより、印刷の実行を簡素化することができる。
【００７７】
＜２．１  システムの構造＞
図８はホストプロセッサー２及びプリンタ１０の内部構成を示すブロック図である。図８に示すように、ホストプロセッサー２はコンピューターバス７１にインタフェースしたプログラム可能なマイクロプロセッサーなどの中央処理装置７０を含む。また、コンピューターバス７１には、ディスプレイ４にインタフェースするためのディスプレイインタフェース７２と、プリンタ１０に双方向通信線７６を介してインタフェースするためのプリンタインタフェース７４と、フロッピーディスク７７にインタフェースするためのフロッピーディスクインタフェース９と、キーボード５にインタフェースするためのキーボードインタフェース７９と、ポインティングデバイス６にインタフェースするためのポインティングデバイスインタフェース８０とが接続されている。ディスク８はオペレーティングシステム８１を格納するためのオペレーティングシステム領域と、アプリケーション８２を格納するためのアプリケーションシステム領域と、プリンタドライバ８４を格納するためのプリンタドライバ領域とを含む。
【００７８】
ランダムアクセスメインメモリ（ＲＡＭ）８６は、コンピューターバス７１にインタフェースし、これによりＣＰＵ７０はメモリー保持内容にアクセスする。例えば、ディスク８のアプリケーション領域８２に保持されたアプリケーションプログラムに関連する命令列などの、アプリケーションプログラム命令列を実行する場合、ＣＰＵ７０はこれらのアプリケーション命令列をディスク８（またはネットワークやフロッピーディスクインタフェース９等を介してアクセス可能な他の媒体）からＲＡＭ８６にダウンロードし、ＲＡＭ８６に格納した命令列を実行する。ＲＡＭ８６は、本実施の形態によれば、以下に詳しく説明するようにプリンタドライバ８４により使用されるプリントデータバッファを提供する。なお、ウィンドウオペレーティングシステム環境下で可能な標準ディスクスワップ技術では、上述のプリントデータバッファを含むメモリーのセグメントをディスク８へ及びそこからスワップすることができる。ホストプロセッサー２の読み出し専用メモリ（ＲＯＭ）８７は、スタートアップ命令列や、キーボード５操作のための基本入出力オペレーティングシステム（ＢＩＯＳ）列などの不変命令列を保持する。
【００７９】
図８に示し、また、上述したように、ディスク８はウィンドウオペレーティングシステムのプログラム命令列や、グラフィックアプリケーションプログラム、描画アプリケーションプログラム、デスクトップパブリッシングアプリケーションプログラムなどの様々なアプリケーションプログラムのためのプログラム命令列を保持する。また、ディスク８は、指示されたアプリケーションプログラムの制御により、ディスプレイ４に表示したりプリンタ１０により印刷するカラー画像ファイルを保持する。ディスク８は、マルチレベルＲＧＢカラー主要値をディスプレイインタフェース７２に供給するやり方を制御するカラーモニタドライバを他のドライバ領域８９に保持する。プリンタドライバ８４は白黒及びカラー印刷両方のためにプリンタ１０を制御し、プリンタ１０の構成に基づいて出力するプリントデータを供給する。プリントデータはプリンタ１０に送られ、また、制御信号はプリンタドライバ８４の制御の下、通信線７６に接続されたプリンタインタフェース７４を介して、ホストプロセッサー２とプリンタ１０間でやりとりされる。他のデバイスドライバも、ホストプロセッサー２に接続されたネットワークデバイスやファクシミリ装置等の様々なデバイスに適切な信号を供給するために、ディスク８に保持されている。
【００８０】
普通は、ディスク８に保持されたアプリケーションプログラム及びドライバは、これらのプログラムやドライバを元々保持している他のコンピューター可読媒体からディスク８にユーザによりまずインストールしなければならない。通例、プリンタドライバを保持するフロッピーディスクや、ＣＤ−ＲＯＭ等の他のコンピューター可読媒体をユーザが購入し、そのプリンタドライバを公知の技術でディスク８にインストールすることで、プリンタドライバがディスク８上にコピーされる。また、ファイルサーバーやコンピューター掲示板からダウンロードすると言ったように、ユーザが不図示のモデムインタフェースやネットワークを介してプリンタドライバをダウンロードすることも可能である。
【００８１】
また、図８に示すように、プリンタ１０は、バス９７に接続された、プログラム可能なタイマや割り込み制御部を有する８ビットまたは１６ビットのマイクロプロセッサー等のＣＰＵ９１と、ＲＯＭ９２と、制御ロジック９４と、Ｉ／Ｏポート部９６とを搭載した回路基板３５を含む。また、制御ロジック９４には、ＲＡＭ９９が接続されている。制御ロジック９４は、ラインフィードモータ３４、ＲＡＭ９９のプリント画像バッファ記憶領域、ヒートパルスの生成、及びヘッドデータのためのコントローラーを含む。また、制御ロジック９４は、プリントエンジン１０１のプリントヘッド１００ａ及び１００ｂのノズル、キャリッジモータ３９、ラインフィードモータ３４へは制御信号を、プリントヘッド１００ａ及び１００ｂにはプリントデータを供給し、プリントエンジン１０１からＩ／Ｏポート部９６を介してプリントヘッド１００ａ及び１００ｂの位置合わせのための情報を受け取る。ＥＥＰＲＯＭ１０２はＩ／Ｏポート部９６に接続しており、プリントヘッド構成やプリントヘッド位置合わせパラメータなどのプリンタ情報のための不揮発メモリとなる。ＥＥＰＲＯＭ１０２はプリンタ、ドライバ、プリントヘッド、プリントヘッドの位置合わせ、カートリッジ内のインクの状態などを特定するパラメータも保持し、これらのパラメータはプリンタ１０の動作パラメータをホストプロセッサー２に通知するために、ホストプロセッサー２のプリンタドライバ８４に送られる。
【００８２】
Ｉ／Ｏポート部９６はプリントエンジン１０１に接続されており、プリントエンジンでは、プリントヘッド対１００ａ及び１００ｂ（それぞれカートリッジホルダ３７ａ，３７ｂに保持されていてもよい）がＲＡＭ９９内のプリントバッファからのプリントデータを用いて印刷をしながら、記録媒体を走査することで記録を行う。制御信号を交換し、プリントデータ及びプリントデータアドレスを受信するために、制御ロジック９４も通信線７６を介してホストプロセッサー２のプリンタインタフェース７４に接続されている。ＲＯＭ９２は、フォントデータ、プリンタ１０を制御するために用いられるプログラム命令列、及びプリンタの動作のための不変データを格納する。ＲＡＭ９９は、プリントヘッド１００ａ及び１００ｂのためにプリンタドライバ８４により定義されるプリントバッファにプリントデータを格納し、またプリンタの動作のための他の情報も格納する。
【００８３】
プリントエンジン１０１のプリントヘッド１００ａ及び１００ｂはインクカートリッジに対応しており、それぞれカートリッジホルダ３７ａ及び３７ｂに保持されている。１０３として参照されるセンサーはプリントエンジン１０１内に配置構成されており、プリンタ状態を検知したり、温度や印刷に影響を与える他の数量を測定したりする。特に、回路基板３５上に搭載された温度センサー１０３ａは、周辺環境温度を測定する。摂氏で±３度内の誤差で温度を測定する低精度のサーミスタが温度センサー１０３ａに適している。カートリッジホルダ３７ａ及び／または３７ｂ内の光センサー（例えば、自動位置合わせセンサー）は、自動位置合わせのために印刷濃度とドット位置とを計測する。センサー１０３はまた、アクセスドア１２の開閉状態や記録媒体の有無等の他の状態を検知するために、プリントエンジン１０１内に配置されている。更に、プリントヘッドの温度を計測するために、サーミスタを含むダイオードセンサーがプリントヘッド１００ａ及び１００ｂに設置されており、計測した温度はＩ／Ｏポート部９６に送られる。
【００８４】
Ｉ／Ｏポート部９６は、電源ボタン２４及び再スタートボタン２６などのスイッチ１０４からの入力を受け取り、インジケーターライト２３を点灯するために制御信号をＬＥＤ１０５に送ったり、また、ブザー１０６、ラインフィードモータ３４やキャリッジモータ３９にそれぞれラインフィードモータドライバ３４ａ及びキャリッジモータドライバ３９ａを介して制御信号を送信したりする。上述の通り、ブザー１０６はスピーカーであってもよい。
【００８５】
図８では、プリンタ１０の個々の構成要素は分離され、お互いに区別されて示されているが、これらの構成要素のいくつかを１つに組み合わせることが好ましい。例えば、制御ロジック９４をＡＳＩＣのＩ／Ｏポート９６と組み合わせることで、プリンタ１０の機能の相互接続を簡素化することができる。
【００８６】
＜２．２  システムの機能＞
図９は、ホストプロセッサー２とプリンタ１０間の相互作用を示すハイレベルレベル機能ブロック図である。図９に示すように、プリント命令がディスク８のアプリケーション領域８２に保持された画像処理アプリケーションプログラム８２ａから指示されると、オペレーティングシステム８１はプリンタドライバ８４を呼び出すグラフィックデバイスインタフェースを指示する。プリンタドライバ８４はこれに応じてプリント命令に対応したプリントデータを生成し、このプリントデータをプリントデータ保持部１０７に保持する。プリントデータ保持部１０７は、ＲＡＭ８６やディスク８内にあってもよく、また、オペレーティングシステム８１のディスクスワッピング操作を通して、プリントデータ保持部をＲＡＭ８６に当初保持し、ディスク８へ及びそこからスワップするようにしてもよい。次に、プリンタドライバ８４はプリントデータ保持部１０７からプリントデータを取得し、そのプリントデータをプリンタインタフェース７４を介して双方向通信線７６へ、更にプリンタ制御部１１０を介してプリントバッファ１０９へ送信する。プリントバッファ１０９はＲＡＭ９９内にあり、プリンタ制御部１１０は、図８に示す制御ロジック９４と、ＣＰＵ９１により実現されるファームウエア内にある。プリンタ制御部１１０はホストプロセッサー２から受信したコマンドに対応して、プリントバッファ１０９内のプリントデータを処理し、また、記録媒体上に画像を記録するために、プリントエンジン１０１へ適切なプリントデータ及びその他の制御信号を提供するために、ＲＯＭ９２（図８参照）に保持された命令に基づいてプリントタスクを行う。
【００８７】
プリントバッファ１０９は、プリントヘッド１００ａ及び１００ｂのいずれか一方により印刷を行うためのプリントデータを保持する第１領域と、プリントヘッド１００ａ及び１００ｂの他方により印刷を行うためのプリントデータを保持する第２領域とを有する。それぞれのプリントバッファ領域は、関連づけられたプリントヘッドの印刷位置の数に対応した格納領域を有する。これらの格納領域は、印刷用に選択された解像度に応じて、プリンタドライバ８４により定義される。また、それぞれのプリントバッファ領域は、プリントヘッド１００ａ及び１００ｂを印刷速度になるまで加速する間に、プリントデータを転送するための格納領域を更に含む。プリントデータはホストプロセッサー２のプリントデータ保持部１０７から、プリンタドライバ８４によりアドレス制御されるプリントバッファ１０９の格納領域に転送される。その結果、次のスキャンのためのプリントデータは、ヘッドの加速中及び現在のスキャン印刷中の両方の間に、プリントバッファ１０９の空き領域領域に挿入される。
【００８８】
＜２．３  制御ロジック＞
図１０は図８に示す制御ロジック９４及びＩ／Ｏポート部９６のブロック図である。上述の通り、Ｉ／Ｏポート部９６を制御ロジック９４に含んでもよい。図１０において、内部バス１１２はプリンタＣＰＵ９１と通信を行うためにプリンタバス９７に接続している。バス１１２は、例えばＩＥＥＥ１２８４プロトコルに基づく通信などの双方向通信を実行するために、双方向通信線７６に接続されているホストコンピューターインタフェース１１３と接続されている。これにより、双方向通信線７６もまた、ホストプロセッサー２のプリンタインタフェース７４と接続することになる。ホストコンピューターインタフェース１１３は、バス１１２と、プリントバッファ１０９（図８及び図９を参照）を含むＲＡＭ９９を制御するためのＤＲＡＭバスアービター／コントローラー１１５とに接続している。データデコンプレッサ１１６は、バス１１２とＤＲＡＭバスアービター／コントローラー１１５との間に接続され、処理中にプリントデータを伸長する。また、バス１１２には、図８に示すラインフィードモータドライバ３４ａに接続するラインフィードモータコントローラー１１７と、シリアル制御信号及びヘッドデータ信号をプリントヘッド１００ａ及び１００ｂのそれぞれに供給する画像バッファコントローラー１１８と、プリントヘッド１００ａ及び００ｂのそれぞれにブロック制御信号とアナログヒートパルスを供給するヒートパルス生成部１１９とがつながれている。キャリッジモータの制御は、ラインフィードモータ３４とキャリッジモータ３９が同時に動作できるように、Ｉ／Ｏポート部９６とキャリッジモータドライバ３９ａとを介してＣＰＵ９１により行われる。
【００８９】
制御ロジック９４は、ＣＰＵ９１で使用するためにホストプロセッサー２からコマンドを受信し、ホストコンピューターインタフェース１１３及び双方向通信線７６を介して、プリンタ状態及びその他の応答信号をホストプロセッサー２に送信するように動作する。プリントデータ及びホストプロセッサー２から受信したプリントデータのプリントバッファメモリアドレスは、ＤＲＡＭバスアービター／コントローラー１１５を介してＲＡＭ９９内のプリントバッファ１０９に送られ、プリントバッファ１０９からのアドレスされたプリントデータはコントローラー１１５を介して、プリントヘッド１００ａ及び１００ｂによる印刷を行うためにプリントエンジン１０１に送られる。なお、ヒートパルス生成部１１９は、プリントデータを印刷するために必要なアナログヒートパルスを生成する。
【００９０】
図１１は、プリンタ１０のメモリー構成を示す。図１１に示すように、ＥＥＰＲＯＭ１０２，ＲＡＭ９９，ＲＯＭ９２及び制御ロジック９４のための一時格納部１２１が、単一のアドレス配置によりメモリ構成を形成している。図１１で不揮発性メモリ領域１２３として示されているＥＥＰＲＯＭ１０２はホストプロセッサー２により使用されたり、プリンタ、プリントヘッド、プリントヘッド状態、プリントヘッドのアライメント、及び他のプリントヘッドの特性値を特定するパラメータの組を保持する。ＥＥＰＲＯＭ１０２は、他にも、クリーニングを行う時間、自動位置合わせセンサーのデータなど、プリンタ１０で使用されるパラメータの組も保持する。図１１でメモリ領域１２４として示されているＲＯＭ９２は、プリンタタスクのプログラム列や、ノズルヒートパルスの生成を制御するために利用されるプリントヘッド動作温度テーブル等、プリンタ動作のための不変情報を保持する。ランダムアクセスメモリ領域１２１は制御ロジック９４のための一時的な動作情報を保持し、ＲＡＭ９９に対応するメモリ領域１２６はプリンタタスクのための可変動作データの格納領域と、プリントバッファ１０９とを含む。
【００９１】
＜２．４  一般的動作＞
図１２は、図８のブロック図に示す情報処理システムの一般的な動作を示すフローチャートである。ステップＳ１２０１においてプリンタ１０の電源が投入されると、ステップＳ１２０２においてプリンタ１０は初期化される。セクション３．２で詳述するが、初期化中は、ＣＰＵ９１、制御ロジック９４及びシステムタイマが初期状態に設定される。更に、プリンタ１０のＲＯＭ９２、ＲＡＭ９９及びＥＥＰＲＯＭ１０２がチェックされ、ＣＰＵ９１の割り込みリクエストレベルが、プリンタ１０への電力供給時に決められる。プリンタ１０がオン状態にセットされると、ＥＥＰＲＯＭ１０２はプリンタドライバ８４により読み出され、プリンタのリセットや、システムタイマに基づくプリントヘッドのクリーニングが必要であるか否かの判断といった制御タスクがプリンタＣＰＵ９１により開始される。また、ステップＳ１２０２での初期化処理では、データ圧縮モードを選択し、プリントヘッド１００ａ及び１００ｂへのヒートパルス及びバッファ制御を定義し、プリントバッファ１０９をクリアし、更にプリンタ１０の状態を示すメッセージを表示する。
【００９２】
次にステップＳ１２０３において、プリントヘッドの構成が変わったと判断されると、プリンタドライバ８４は、ヘッドの構成及び並び方に関するプリンタの計測値に基づいてプリンタＣＰＵ９１により得られるデータから、プリンタパラメータを算出する。位置合わせシステムに関しては、１９９７年７月２８日に出願された米国特許出願第０８／９０１，５６０号の「印刷装置のための自動位置合わせ装置」に詳しく説明されている。
【００９３】
ステップＳ１２０３終了後はステップＳ１２０４に進み、プリンタ１０がオンライン状態であるかどうかを判断する。一旦プリンタ１０がオンライン状態であると判断されると、ステップＳ１２０５に進み、算出したプリンタパラメータをプリンタＥＥＰＲＯＭ１０２に登録する。
【００９４】
特に、プリンタ１０がオンライン状態であると判断された場合、ＥＥＰＲＯＭ１０２に格納されたプリンタパラメータは、ステップＳ１２０５でプリンタドライバ８４により登録される。パラメータはプリンタとプリントヘッドの駆動の制御のために使用される。ステップＳ１２０５では、プリンタドライバ８４がプリンタ駆動のための適切なコマンドを生成できるように、パラメータはＣＰＵ９１によってホストプロセッサー２に格納するために送信される。そのようなコマンドは図１２の点線枠内のステップで示されており、現在のプリンタ１０の確認、プリントヘッドの構成、プリントヘッドのアライメント、及びカートリッジのインクの状態を含む。
【００９５】
ステップＳ１２０５でプリンタパラメータ情報の登録が終了すると、プリントヘッドカートリッジ４３ａ、４３ｂ（図５参照）のそれぞれの状態をステップＳ１２０６で確認する。これは、アクセスドア１２が開閉されたかを確認し、１つ以上のインクカートリッジまたはインクタンクが交換されたかを検出する。もし、カートリッジまたはインクタンクが交換されている場合には、対応するプリントヘッドのクリーニング処理を行い、プリントヘッドのノズルをクリーニングする。
【００９６】
ステップＳ１２０６でカートリッジの交換処理が終了すると、ステップＳ１２０７に進み、プリントヘッドヒーター制御、自動給紙（ＡＳＦ）制御、ヘッドクリーニング制御などの処理のために、プリンタ１０から割り込みがリクエストされたか否かを判断する。割り込みリクエストが入力されると、リクエストされたプリンタ動作をステップＳ１２０８で行う。その後、処理はステップＳ１２０６に戻る。
【００９７】
ステップＳ１２０７でプリンタからの割り込みリクエストが無かった場合、ステップＳ１２０９に進み、プリンタドライバ８４がコマンド列をリクエストしたかどうかを判断する。図８に示すシステムにおいて、プリンタ１０のタスクは、プリンタ１０からのパラメータ及び状態情報に基づいて生成されたプリンタドライバ８４からのコマンドにより制御される。
【００９８】
ユーザインタフェースシーケンスが選択されるとステップＳ１２１３に移り、ユーザインタフェース処理が行われる。ユーザインタフェース画面においてキーボードやポインター入力による選択が終了すると、制御はステップＳ１２０６に戻り、プリントコマンドシーケンスを行うステップＳ１２１０に進む。
【００９９】
ステップＳ１２０９でプリントシーケンスが選択されると、ステップＳ１２１０に進み、プリンタドライバ８４はプリントヘッド構成、プリントヘッドのアライメント、媒体のタイプ及び大きさ、及びプリンタドライバ８４が保持する目的の画像情報に基づいて、コマンド列を生成する。これらのコマンドはプリンタ１０のプリンタ制御部１１０（図９参照）へ送られる。プリンタ１０では、プリンタ制御部１１０がプリンタＲＯＭ９２からコマンド及びファームウエアを受け取り、プリントエンジン１０１によるコマンドタスクを実行させる。
【０１００】
プリントコマンド列は、プリンタドライバ８４から、それぞれのプリントジョブのために定義されたプリントバッファ１０９へのプリントデータ転送を含む。プリントデータ転送はプリンタ１０の受信バッファを用いずに行われる。次のスキャンのためのプリントデータは、現行スキャンにおけるプリントヘッドの加速中に、プリントバッファ１０９中の現行スキャンの空き記憶領域に送られる。
【０１０１】
ステップＳ１２１０のコマンド列は、プリントヘッド１００ａ及び１００ｂの印刷解像度を設定するコマンドを含む。これらのコマンドは、プリントバッファ中に保持されたプリントヘッドのためのデジタルデータとプリントデータをプリントバッファから読み出す順番とに基づいて、インク滴の大きさを制御することにより設定することができる。好ましくは、プリントヘッドの解像度は個別に制御できるようにすることが好ましい。プリントバッファに保持されたデジタルデータに基づいてインク滴を吐出するインクジェットタイプのプリントヘッドでは、インク滴の大きさを制御し、プリントバッファからの読み出し順を制御することにより、解像度を制御することができるが、インク滴の大きさ及び読み出し順は、プリントヘッド個別に制御されることが好ましい。
【０１０２】
また、ステップＳ１２１０のプリントコマンド列においては、プリンタドライバ８４は隣接する画素のマルチレベル画像分析データに基づいて、注目画素を印刷する際に用いられるインクのタイプを選択する。例えば、画像中、カラー画素に取り囲まれた黒注目画素を印刷するためには染料をベースとしたインクを選択し、黒画素に取り囲まれた黒注目画素を印刷するためには顔料ベースのインクを選択する。
【０１０３】
１ページ分の印刷が終了すると、図１２のステップＳ１２１１へ進み、用紙排出コマンドに応じてプリンタ１０から印刷されたページが出力される。
【０１０４】
図１３は、印刷及びプリンタ１０の駆動のために、プリンタドライバ８４により生成されたコマンド列を示す図である。図１３に示すコマンド列は、プリンタ１０の動作を説明するための一般的な概要を示すために簡略化してある。本実施の形態の自動給紙制御等を含むより詳しいコマンド列の説明は、後述のセクション４．０で図２０を参照して詳述する。
【０１０５】
図１３のプリントコマンド列はステップＳ１３０１において、プリンタ動作をリセットするためにプリンタ制御部１１０に送信されるプリンタ初期化コマンドにより開始される。そして、給紙コマンドがプリンタ制御部１１０に入力すると（ステップＳ１３０２）、ステップＳ１３０３での給紙動作を選択し、ステップＳ１３０４で給紙を開始する。ステップＳ１３０５でプリンタ制御部１１０により給紙の終了が検知されると、給紙終了を示す信号がプリンタドライバ８４に送られ、プリントヘッド１００ａ及び１００ｂの最初のスキャンのためのプリントデータが準備される。プリンタ制御部１１０にこのスキャン準備が報告される。プリンタドライバ８４におけるプリントデータの準備については、１９９７年７月２８日に出願されている米国特許出願第０８／９０１，７１９号の「カラープリンタのためのプリントドライバ」に詳しく説明されている。ステップＳ１３０７において、スキャンのためのプリントデータが判断されない場合には、ステップＳ１３０８でプリンタドライバ８４は仮想スキップを実行する。ステップＳ１３０９でページの終了が検知されない場合は制御はステップＳ１３０７に戻り、ページ終了が検出されるまでステップＳ１３１０〜Ｓ１３１４及びＳ１３０８が実施される。
【０１０６】
ステップＳ１３１０では、正しいプリントデータを印刷するように、実際のスキップコマンドがプリンタドライバ８４からプリンタ制御部１１０に供給される。プリンタ制御部１１０は実際のスキップ動作を選択し（ステップＳ１３０３）、実際のスキップを実行する（ステップＳ１３１５）。そしてプリンタドライバ８４においてスキャン設定が行われ（ステップＳ１３１１）、プリンタ制御部１１０に通知する。次に、プリンタドライバ８４で生成されたプリントデータと、プリントデータのためのプリントバッファアドレスとがプリンタ制御部１１０に送られて、プリントバッファ１０９に格納される（ステップＳ１３１２）。そして次のスキャンがプリンタドライバ８４内で準備され、プリンタ制御部１１０に通知する（ステップＳ１３１３）。次に、プリンタドライバ８４で生成されたプリントコマンドがプリンタ制御部１１０に送られる。これに応じて、プリンタ制御部１１０はステップＳ１３１９のプリント動作を選択し、ステップＳ１３１４でプリントタスクを実行する。この後、印刷中のページの行を見失わないように、ステップＳ１３０８でプリンタドライバ８４により仮想スキップが実行される。ステップＳ１３０９で１ページ分のスキャンが終了したと判断されると、ページ排紙命令がプリンタドライバ８４からプリンタ制御部１１０へ送られる。これにより、ページ排紙処理を選択し（ステップＳ１３１６）、ページ排紙が開始される（ステップＳ１３１７）。ページ排紙が終了すると（ステップＳ１３１８）、プリンタドライバ８４には排紙完了が報告されて、処理は図１２のステップＳ１２０９へ移る。
【０１０７】
ホストプロセッサー２からプリンタ１０へ送られる２つのカラープリントヘッドを用いてカラーモードで１ページ分の印刷を行うためのコマンド列の例を、図１４の表Ａに示す。表Ａに示すように、まず、［ＵＣＴ］コマンドを用いて現在時刻が設定され、［ＲＥＳＥＴ］コマンドにより、プリンタ１０がリセットされる。また、［ＣＯＭＰＲＥＳＳ］コマンドにより、プリントデータの詰め込み処理を行うためのデータ圧縮が選択される。印刷可能領域の下部余白のサイズは［ＢＴＭ＿ＭＡＲＧＩＮ］コマンドにより選択される。プリントヘッド１００ａ及び１００ｂのプリントバッファは［ＤＥＦＩＮＥ＿ＢＵＦ］コマンドにより定義される。プリントカラーテーブルは、［ＤＥＦＩＮＥ＿ＣＯＬＯＲ］コマンドにより定義される。また、ヒートパルス及びバッファ制御テーブルは、プリントヘッド構成のカラーモード用に［ＤＥＦＩＮＥ＿ＰＵＬＳＥ］コマンド及び［ＤＥＦＩＮＥ＿ＣＯＮＴＯＬ］コマンドにより定義される。
【０１０８】
上記初期設定コマンドによりプリンタタスクが実行された後、ページまたは他の印刷媒体を供給するための給紙コマンド［ＬＯＡＤ］及び、最初のプリントヘッドスキャンの印刷位置へスキップするためのラスタースキップコマンド［ＳＫＩＰ］がプリンタ１０に送られ、プリントヘッド１００ａ及び１００ｂによる印刷のために印刷方向［ＤＩＲＥＣＴＩＯＮ］及び端部［ＥＤＧＥ］が最初のスキャンのために設定される。そして、コマンドのループがページの複数行を印刷するために、プリンタタスクを制御するために送られる。各行のためのループの最初の部分では、その行のためのスキャンパラメータ（［ＳＰＥＥＤ］，［ＳＩＺＥ］，［ＳＥＬＥＣＴ−ＰＵＬＳＥ］，［ＳＥＬＥＣＴ−ＣＯＮＴＲＯＬ］）が設定される。バッファ制御テーブル選択コマンド［ＳＥＬＥＣＴ＿ＣＯＮＴＲＯＬ］のプリンタタスクの完了を受けて、［ＢＬＯＣＫ］コマンドによりプリントデータブロックが選択され、またプリントヘッド１００ａ及び１００ｂのために決められた印刷領域に応じて、色選択コマンド［ＣＯＬＯＲ］及びデータ送信コマンド［ＤＡＴＡ］が繰り返されることで、印刷する色が選択されて送信される。
【０１０９】
そして、次のスキャンの方向及び次のスキャンのための印刷領域の左右両端位置が［ＤＩＲＥＣＴＩＯＮ］及び［ＥＤＧＥ］コマンドにより設定される。次のスキャンのための逆方向スキャンのマージンは［ＳＣＡＮ＿ＭＡＲＧＩＮ］コマンドにより設定される。現スキャンの自動トリガ遅延は、［ＡＴ＿ＤＥＬＡＴ］により設定される。このとき、最初のスキャンのための印刷を実行するために、［ＰＲＩＮＴ］コマンドがホストプロセッサー２からプリンタ１０へ送信され、次のスキャンのための印刷位置にスキップするために、［ＳＫＩＰ］コマンドが送られる。最終行が印刷されると、排紙コマンド［ＥＪＥＣＴ］がプリンタ１０に与えられて、排紙が実行される。
【０１１０】
本実施の形態の設定スキャン処理のためのコマンド列及び印刷動作例から分かるように、スキャン設定や印刷などのプリンタ動作のそれぞれは、プリントヘッドの構成及びプリントモードを考慮した上で、プリンタドライバ８４により制御される。これによりプリンタ１０により実行されるこれらのタスクは、プリンタドライバ８４によってプリンタの構造が実質的により低コストとなるように、詳細に定義される。
【０１１１】
図１２において、ステップＳ１２０９でプリンタ状態リクエストであると判断されると、ステップＳ１２１２に進み、プリンタ状態コマンド列を実行する。プリンタ状態の情報をリクエストする状態コマンドは、セクション３．６で詳細に説明する。一般には、各状態コマンドは、プリンタ動作についての情報またはプリンタ１０に保持された情報をリクエストするために、ホストプロセッサー２からプリンタ１０へ送られる。例えば、基本状態コマンド［ＢＡＳＥ−ＳＴＡＴＵＳ］は、プリンタの現在の状態をリクエストする。これに応じてプリンタ１０は以下に示す情報の内の一つを示す１バイトのデータを返す。これらの情報は、印刷状態、プリントバッファ１０９がデータを受信できるか否か、プリンタ１０が開始動作中でビジーであるか、カートリッジ交換、プリントヘッドのクリーニング、テストプリント等、またエラーまたは警告が検出されたか否かを含む。［ＨＥＡＤ］コマンドは、プリントヘッドの構成をリクエストし、［ＤＡＴＡ＿ＳＥＮＤ］コマンドは、ＥＥＰＲＯＭデータをホストプロセッサー２に返すようにリクエストをする。ステップＳ１２１２でリクエストされたデータを返し終えると、処理はステップＳ１２０６に戻る。
【０１１２】
＜３．０  プリンタソフトウエアの構造＞
プリンタ１０の機能全体の制御は、ＣＰＵ９１で実行されるそれぞれのプログラムによる影響を受ける。独立プログラムには、電源投入時に実行されるルーチン等の初期化ルーチン、ホストプロセッサー２から受信した割り込みコマンドに対応するタスク、リアルタイムハードウエア割り込みの処理をするハンドラなどの割り込みハンドラ、及びホストプロセッサー２との双方向通信に関わる制御のためのハンドラなどの周期処理を取り扱う周期ハンドラが含まれる。
【０１１３】
プリンタＣＰＵ９１は、更に独立プログラム（すなわち、初期化ルーチン、タスク、割り込みハンドラ、及び周期ハンドラ）それぞれの実行の調和をとるためのオペレーティングシステムも実行する。オペレーティングシステムは、メッセージのやりとりなどを通じたプログラム間通信や、適切なタイミングで一つのプログラムから別のプログラムに動作を切り替えるプログラム間切り替えを統括する役目をする。以下に、オペレーティングシステムの詳細を説明する。
【０１１４】
＜３．１  オペレーティングシステム＞
オペレーティングシステムは、プリンタ制御プログラムをモジュール化したり、メインテナンス、継承、及び拡張を促進するために作出されたリアルタイムオペレーティングシステム（つまり、「カーネル"kernel"」または「モニタ"monitor"」）である。このリアルタイムオペレーティングシステムは、プリエンプティブマルチタスクソフトウエア環境を提供するシステムソフトウエアであって、現在実行中のプログラムを、より優先度の高い別のプログラムへの切り替えに応じて、一時停止することができる。
【０１１５】
オペレーティングシステムは、それぞれのタイプに応じてオペレーティングシステムによって実行される、４つの異なるタイプのプログラムを動作させることができる。それらは、初期化ルーチン、タスク、割り込みハンドラ及び周期ハンドラである。初期化ルーチンは、プリンタ１０のリセット後、オペレーティングシステムの初期化を行う前にすぐに行うようにオペレーティングシステムによりスケジュールされたルーチンである。タスクは、順次実行される連続処理の通常のプログラム（「実行部」と呼ばれることもある。）である。従って、タスクは、マルチプログラミングまたはマルチ処理環境においてＣＰＵ９１により実行される仕事の単位として、オペレーティングシステムにより処理される、１以上のインストラクション列である。オペレーティングシステムがそれぞれのタスクユニット毎に処理を行うようにスケジュールすることで、あたかも同時処理が行われているように感じるのである。
【０１１６】
割り込みハンドラは、ハードウエア割り込みの受信に応じて、オペレーティングシステムにより即座に起動される（通常は短い）プログラムユニットである。周期ハンドラは割り込みハンドラと同様であるが、ハードウエア割り込みにより起動されるのではなく、オペレーティングシステムのタイマ割り込みにより起動される。
【０１１７】
プリンタ１０がリセットされた時に、ＣＰＵ９１によりまず最初に実行されるソフトウエアは、オペレーティングシステムである。ＣＰＵレジスターは予め決められた要求に従って設定され、ユーザ設定の初期化ルーチンが存在する場合には、後からそれを実行する。そして、制御はオペレーティングシステムに戻り、システム内のそれぞれのタスクを起動する。そのようなタスクの一つとして、スタートタスクがある。スタートタスクが開始されると、システムコールが発行されたり、割り込みが発生する度に、オペレーティングシステムは起動される。システムコールの実行、又は割り込みの処理を終えると、実行はオペレーティングシステムに戻り、優先度の高い実行可能なタスクを実行するように、タスクのスケジュールを組む。
【０１１８】
タスクのスケジューリングでは、現在複数の実行可能なタスクがある場合、どのタスクを実行するかの判断を行う。タスクは、割り当てられた優先度に応じてスケジュールされ、より高い優先度のタスクを他の優先度の低いタスクに先立って実行する。実行可能であっても優先度が低いために現在実行されていないタスクは、優先度に応じて準備キューに並べられる。
【０１１９】
タスクが新たに実行可能になる度に、そのタスクは準備キューの最後に並べられる。タスクが発行したシステムコールの処理から戻った時、または割り込み処理からタスクへ戻った時にスケジューリングが実行されるが、どちらの場合も新たなタスクをキューに追加したり、キューにすでに存在するタスクの優先順位を変えるようにすることができる。タスクキュー内のタスクのスケジューリングの順序は、それぞれのタスクの優先度に基づいており、最も優先度の高いタスクを現在実行可能なランタスクにする。準備キューに同じ優先度のタスクが２つ以上ある場合、どのタスクを選択するかといった判断は、キューに登録された順番に応じてなされる。
【０１２０】
オペレーティングシステムは、タスク間の通信と、タスク間の制御または同期合わせを行うための基本的な手段の一つとして、セマフォを用いる。タスク間で、メッセージを用いて通信を行ったり、データを送信したりすることもできる。メッセージはあるタスクからメールボックスに送られ、そのメッセージを受信する必要のあるタスクは、そのメッセージを得るために、メールボックスに対して受信リクエストを発行する。
【０１２１】
オペレーティングシステムは、更に、タスク間の同期合わせを行うためにイベントフラグを用いる。あるイベントに基づいてタスクを待機状態から解放する場合には、イベントフラグパターンを登録することができ、そのフラグの発生に伴って、オペレーティングシステムはそのタスクを待機状態から解放する。
【０１２２】
オペレーティングシステムによる割り込み管理は、割り込みハンドラ及び割り込み許可レベルの設定により行われる。時間管理は、システムタイマに基づいて、オペレーティングシステムが割り込みハンドラを始動させることにより実現される。
【０１２３】
周期ハンドラは、オペレーティングシステムに登録された周期ハンドラに基づいて、所定時間毎に処理を実行する。周期ハンドラは通常、所定時間毎に実行されるタスクを特定する短いプログラムである。
【０１２４】
プリンタ１０に適した初期化ルーチン、タスク、割り込みハンドラ、及び周期ハンドラについては、以下のセクションで説明する。
【０１２５】
＜３．２  初期化＞
電源立ち上げ時、制御ロジック９４の初期化、ＲＯＭ９２のチェック、ＲＡＭ９９のチェック、ＥＥＰＲＯＭ１０２のチェックなど、プリンタ１０の初期化を行うために、初期化が実行される。
【０１２６】
図１５及び１６は、ハードの電源立ち上げ手順及びソフト電源立ち上げ手順をそれぞれ示す。ここで、プリンタ１０に電力が供給されている限り、ＣＰＵ９１は、電源ボタン２４の状態に関わらず、ソフトウエアを実行する。従って、「ハード電源オン」は、プリンタ１０への初期電源供給のことを指している。このため、ユーザによる電源ボタン２４の押下は、ソフト電源オンまたはソフト電源オフの状態にするものである。これによりプリンタ１０が「オフ」されたとしても、プリンタ１０は実行中の処理（例えば、経過時間）を監視することができるため、この構成が好まれる。
【０１２７】
ハード電源オン手順を示す図１５において、初期電源供給時にステップＳ１５０１でＲＯＭのチェック、ＲＡＭのチェック、そしてＥＥＰＲＯＭのチェックなどのメモリーチェックが行われる。ステップＳ１５０２では、ソフトウエアタスクを初期化し、ステップＳ１５０３でＣＰＵ９１はソフト電源オンを待つ待機ループに入る。
【０１２８】
図１６はソフト電源オン手順を示す。ステップＳ１６０１でホームポジションへのリセット等、プリンタエンジン１０１の機械的初期化を行い、ステップＳ１６０２でセントロニクス通信タスクを含むソフトウエア制御タスクを開始し、ステップＳ１６０３でメイン処理モードを開始する。
【０１２９】
図１７はソフト電源オフ手順を示す。ステップＳ１７０１ではすべてのソフトウエアタスクを終了し、ステップＳ１７０２で待機ループに入り、その間にステップＳ１７０３でプリンタ１０は次のソフト電源オン手順を待つ。
【０１３０】
＜３．３  タスク＞
図１８は本発明の実施の形態にかかる、アプリケーションプログラム８２ａとホストプロセッサー２で実行中の他の処理及びプリンタ１０で実行中の様々なタスク間の通信を示す図である。なお、図１８に示す処理及びタスクは全てを含むものではなく、むしろ、印刷に関わる処理とタスク間の相互動作の全体像を示すものである。
【０１３１】
プリント処理のホストプロセッサー側では、アプリケーションプログラム８２ａは、オペレーティングシステム８１のグラフィカルデバイスインタフェース（ＧＤＩ）２０１と通信を行う。これに対し、ＧＤＩ２０１はプリンタドライバ８４及びスプーラー２０２と通信を行い、スプーラー２０２はルーター２０３を介してプリンタプロバイダー２０４と通信を行う。プリンタプロバイダー２０４は言語モニタ２０５、ポートモニタ２０６、プリンタ（ＬＰＴ）ポート２０７、及びセントロニクスケーブル２０８を介して、プリンタ１０と通信を行う。これら構成のそれぞれの機能について、以下に簡単に説明する。
【０１３２】
アプリケーションプログラム８２ａは、好ましくはホストプロセッサー２で作られる画像のため、または、ユーザコマンドに応じて、スキャナー等の不図示の画像入力装置からの画像入力のためのプリントジョブを生成する。このプリントジョブは、好ましくはグラフィック画像を出力するためにアプリケーションプログラム８２ａへのデバイスに依存しないインタフェースを提供するＧＤＩ２０１に送られる。これに対して、ＧＤＩ２０１はプリンタドライバ８４を利用して、プリントジョブをプリンタ固有のコマンドに変更する。
【０１３３】
プリンタドライバ８４は印刷を容易にするためにプリントデータに対して様々な処理を行う。これらの処理には、入力補正２１０、色補正２１１、出力補正２１２、二値化・色相／値処理２１３、予備吐出検知２１４、及び状態基準制御２１５が含まれる。
【０１３４】
入力補正２１０は、例えばスキャナのスキャン特性など、画像入力装置の特性に基づくプリントデータの補正を含むことが好ましい。また、入力補正２１０はガンマ補正及びＲＧＢカラー値などの加法混色カラー値からＣＭＹまたはＣＭＹＫカラー値などの減法混色カラー値への変換も行うことが好ましい。
【０１３５】
カラー補正２１１は、記録媒体のタイプ、人の色知覚、印刷された画像を観賞する光源に応じた補正を含む。出力補正２１２は、記録媒体のインク吸収限界に基づく、例えば、プリントデータの間引きにより行われる補正を含むことが好ましい。
【０１３６】
二値化・色相／値処理２１３は、異なるインクの選択及び、インクに基づく対応する色相及びカラー値データの決定を含むことが好ましい。詳細はセクション１０で後述する。予備吐出検知２１４は、印刷品質を向上するために、インクジェットノズルの予備吐出に影響を与える様々な要因の検出を行う。詳細はセクション９で後述する。状態基準制御２１５はプリンタの状態に基づいて印刷パラメータを更新するもので、セクション７で詳述する。
【０１３７】
プリントデータは、通常、プリンタ１０がデータを印刷する速度よりも速い速度で、アプリケーションプログラム８２ａ及びＧＤＩ２０１により生成される。スプーラー２０２は、図１８でスプールファイルとして示すように、ＧＤＩ２０１からのプリントデータをデータが生成される毎にプリントデータ保持部１０７に格納する。これにより、アプリケーションプログラム８２ａはプリントジョブの送信を終えることができ、そのプリントジョブが完全に印刷される前に、他のタスクを続けることができる。
【０１３８】
ルーター２０３はプリントデータをスプーラー２０２からプリンタプロバイダー２０４へ回し、プリンタプロバイダー２０４は言語モニタ２０５、ポートモニタ２０６、ＬＰＴポート２０７，及びセントロニクスケーブル２０８などの双方向通信線を介してプリンタ１０と接続する。言語モニタ２０５は、例えば言語がプリンタによりサポートされているかどうかを判断するためにプリントデータの言語をモニタする。ポートモニタ２０６はＬＰＴポート２０７へのアクセスを制御する。
【０１３９】
ホストプロセッサー２からのプリントデータは、プリンタ１０上で実行されている様々なタスクにより処理される。本発明の好適な実施の形態によれば、プリンタタスクは、それぞれのタスクがプリンタ制御の一つにそれぞれ対応するように、機能を分離するように設計されている。これらのタスクは、セントロニクスタスク２２０、直接画像コマンドタスク２２１、エンジンタスク２２２、マネージャータスク２２３を含む。
【０１４０】
セントロニクスタスク２２０はホストプロセッサー２との通信を制御する。ホストプロセッサー２から送られた文字は、文字取得処理２２５により直接画像コマンドタスク２２１へ転送される。直接画像コマンドタスク２２１からの状態、通信、コマンド（ＳＣＣ）情報は、ＳＣＣ分析処理２２６が受け取る。このＳＣＣ情報から、状態情報がホストコンピュータ２へ返される。
【０１４１】
直接画像コマンドタスク２２１はデータをセントロニクスタスク２２０から受信し、ＳＣＣ情報をセントロニクスタスク２２０に受信する。セントロニクスタスク２２０から受信したデータは分析処理２３１により分析される。そのデータがプリントデータである場合は、プリントデータ処理２３６により画像バッファ２３３に送られる。また、そのデータが制御データである場合、エンジンインタフェースコマンド処理２３７は制御データを解釈し、対応するコマンドをエンジンタスク２２２に送る。
【０１４２】
エンジンタスク２２２はプリントヘッド１００ａ及び１００ｂによる、画像バッファ２３３から読み出されたプリントデータの実際の印刷の制御を行うと共に、記録媒体の給紙及び記録ヘッドの汚れを取り除くために、ラインフィードモータドライバ３４ａ及びキャリッジモータドライバ３９ｂの駆動制御を行う。ここで、エンジンタスク２２２は、エンジン制御タスク２４１、エンジン自動給紙（ＡＳＦ）及び清掃タスク２４２、エンジンラインフィードタスク２４３、及びエンジンキャリッジタスク２４４等の他の様々なタスクを含む。
【０１４３】
エンジンタスク２２２は、例えば図１９を参照して後述するように、周期処理を制御するために周期タイマ２５１を利用する。エンジンＡＳＦ及び清掃タスク２４２、エンジンラインフィードタスク２４３、及びエンジンキャリッジタスク２４４はＡＳＦ・清掃ラインフィードモータハンドラ２５２及びキャリッジモータハンドラ２５３を利用して、ラインフィードモータドライバ３４ａ及びキャリッジモータドライバ３９ａそれぞれを制御し、記録媒体のシートを給紙し、プリントヘッド１００ａ及び１００ｂの汚れを落とす。給紙及び清掃動作は、図５Ｃおよび５Ｄを参照して上記詳述したとおりである。
【０１４４】
プリンタ１０におけるタスク間のインタフェース及び他の通信は、マネージャータスク２２３により制御され、好ましくは、メッセージ通信を調整するために不図示のメールボックスにメッセージ及びセマフォを入れることによりなされる。
【０１４５】
＜３．４  割り込みハンドラ＞
オペレーティングシステムは、周期クロック割り込みのためのハンドラなどの割り込みハンドラを内包することができるが、そのような周期的に発生するイベントは、周期ハンドラで取り扱うことも可能である。
【０１４６】
＜３．５  周期ハンドラ＞
周期ハンドラは、図１８を参照して上述したとおり、セントロニクスタスク２２０及びエンジンタスク２２２のために供給されたものである。更に、周期ハンドラは制御部タイマ処理を行う。
【０１４７】
図１９は、この周期ハンドラにおける制御部タイマ制御を示すフローチャートである。図１９に示すように、ステップＳ１９０１で１０ｍｓの割り込みを受けると、プリントヘッドの温度が７５℃を越える場合に印刷を一時中断するために、ヘッド防御制御が行われ（ステップＳ１９０２）、これによりプリントヘッドのダメージを回避する。
【０１４８】
次に更に図１９に示すように、５０ｍｓの割り込みを受けたかどうかを判断し（ステップＳ１９０３）、もし受けたならば処理は５０ｍｓ割り込みロジック処理（ステップＳ１９０４）へ進み、それぞれのヘッドに加えられた駆動パルスの量に基づいて、それぞれのヘッド温度の算出（ステップＳ１９０５）を行う。計算は、ヘッドの吐出に基づく温度上昇及び温度下降の計算に用いられるための定数を提供する、ＲＯＭ９２に予め保持されたテーブルに基づいてなされる。
【０１４９】
５０ｍｓの割り込みロジックは、セットアップタイム、プレヒートパルス、インターバル及びメインヒートパルスをプリントノズルそれぞれについて設定するために、ＲＯＭ９２に予め保持されたテーブルに基づいて、パルス幅変調制御（ステップＳ１９０６）を実行する。そして、パルスパラメータは制御ロジック９４へ送られる。次に、５００ｍｓ割り込みロジックを受け取ったか否かをステップＳ１９０７で判断する。受け取った場合、５００ｍｓ割り込みロジック（ステップＳ１９０８）は、プリントヘッドの温度を良好に保つために、周辺温度が低く、印刷が行われる前である場合に用いられるメニスカスヒータ制御を開始する（ステップＳ１９０９）。次に、１秒間の割り込みを受け取ったか否かをステップＳ１９１０で判断する。１秒割り込みのロジック（ステップＳ１９１１）は予備吐出タイマを更新し（ステップＳ１９１２）、リアルタイムの周辺温度を更新する（ステップＳ１９１３）。
【０１５０】
次に、１分の割り込みを受信したか否かをステップＳ１９１４で判断する。１分割り込みロジックは（ステップＳ１９１５）は、長期に亘る周辺温度の更新をステップＳ１９１６で開始させる。その後、ステップＳ１９１７においてこの処理からリターンする。
【０１５１】
なお、図１９に示す周期１０ｍｓ、５０ｍｓ、５００ｍｓ、１秒、１分は、単なる例であり、変更可能であることは言うまでもない。
【０１５２】
＜３．６  ホストコンピューターの入出力コマンド＞
以下に、双方向通信プリンタインタフェース７４によりホストプロセッサー２へ入出力するコマンドについて、以下に要約する。一般的に、それぞれのコマンドは１以上のパラメータを含み、いくつかのコマンド（例えば画像データ送信コマンド［ＤＡＴＡ］など）はデータも含む。
【０１５３】
状態リクエストコマンド［ＳＴＡＴＵＳ］は、プリンタ１０から双方向インタフェース７４を介して回答を引き出す一般的なコマンドである。状態リクエストコマンドを利用することにより、ホストプロセッサー２は、ＥＥＰＲＯＭ１０２の内容、アライメント、濃度センサーから得られる結果など、プリンタ１０に関する詳細な情報を得ることができる。従って、この状態リクエストコマンドについては、以下に詳しく説明する。
【０１５４】
次のセクションでは、それぞれのコマンドのニーモニックを［  ］内に示す。以下に示す簡略表記は単なる例であり、コマンドのニーモニックを構成するために用いられる実際の文字のシーケンスや組み合わせは特定されるものではなく、使用法がプリンタ側とホストプロセッサー側で共通であり、どちらか一方から送られたコマンドが、他方により解釈できる限り、どのようなものであってもよい。
【０１５５】
（３．６．１  制御コマンド）
制御コマンドは、プリンタ１０の印刷処理を制御するために用いられる。以下に、様々な制御コマンドを示す。
【０１５６】
［ＬＯＡＤ］−給紙
【０１５７】
［ＬＯＡＤ］コマンドは、給紙を実行させるが、現在給紙されている記録媒体を排紙させるものではない。このコマンドは、たとえ媒体が手動ですでに給紙されている場合であっても、プリンタ１０に必ず送られる。［ＬＯＡＤ］コマンドは記録媒体のタイプ及びサイズの特定、及び給紙モードの特定をするためのパラメータを含む。給紙モードは以下の内のいずれかである。すなわち、（１）自動給紙−通常給紙、（２）自動給紙−高速給紙、または（３）手差し給紙のいずれかである。
【０１５８】
［ＥＪＥＣＴ］−排紙
【０１５９】
このコマンドはプリントバッファに残っているすべてのデータが印刷された後に、現在給紙されている印刷媒体を排紙するものである。このコマンドでは、様々な排紙速度を設定することができる。
【０１６０】
［ＰＲＩＮＴ］−印刷実行
【０１６１】
印刷実行コマンドは、プリントバッファ内のデータを現在給紙された記録媒体上に印刷させるものである。印刷領域は、後述する［ＥＤＧＥ］コマンドの左右パラメータにより特定されるそれぞれのプリントバッファの左右端間となる。
【０１６２】
［ＣＡＲＲＩＡＧＥ］−キャリッジ動作
【０１６３】
キャリッジ動作コマンドは、コラム位置を単位としてキャリッジの位置を特定する位置パラメータを含む。このコマンドは順方向及び逆方向の動きに用いられる。
【０１６４】
［ＳＫＩＰ］−ラスタースキップ
【０１６５】
ラスタースキップコマンドは、スキップパラメータにより特定されるラスターライン数分、垂直方向に印刷位置を進めるために用いられる。［ＳＫＩＰ］コマンドの引数ゼロは、プリンタ１０にノズル数変更予備吐出処理の実行を命令するために用いられる。
【０１６６】
［ＤＡＴＡ］−画像データ送信
【０１６７】
このコマンドは、黄色（Ｙ）、マゼンタ（Ｍ）、シアン（Ｃ）または黒（ＢｋまたはＫ）のビット画像データを、コラム画像フォーマットでプリンタ１０にそれぞれ送信するために用いられる。スキャンライン１行を作るためにこのコマンドは複数回続けて発行される。ビットイメージデータは、後述するブロック［ＢＬＯＣＫ］及びカラー[ＣＯＬＯＲ］コマンドにより特定される領域に格納される。プリンタ１０は、［ＰＲＩＮＴ］コマンドを受信すると、印刷を実際に開始する。
【０１６８】
（３．６．２  設定コマンド）
設定コマンドは、プリンタ１０により実行される印刷処理の設定を特定するものである。これらのコマンドに基づいて一度設定されると、別のコマンドにより設定の変更がなされるまで、その設定が持続する。設定が供給されない場合は、デフォルトの設定にリセットされる。以下に、設定コマンドの詳細を記述する。
【０１６９】
［ＲＥＳＥＴ］−プリンタリセット
【０１７０】
モードパラメータはプリンタリセットコマンドを定義し、リセットモードを指定する。デフォルトの設定には、データ圧縮フラグ、バッファサイズ、インク滴サイズ、印刷速度、パルス制御テーブル、バッファ制御テーブル等がある。
【０１７１】
［ＣＯＭＰＲＥＳＳ］−データ圧縮選択
【０１７２】
データ圧縮選択コマンドのモードパラメータは、画像データを圧縮するか否かを指定し、非圧縮をデフォルトとする。
【０１７３】
［ＢＴＭ＿ＭＡＲＧＩＮ］−下マージン選択
【０１７４】
下マージン選択コマンドは、記録媒体の印刷領域の下マージンを特定するために用いられる。このコマンドのマージンパラメータにより、複数の下マージンサイズから１つを選択することができる。
【０１７５】
［ＤＥＦＩＮＥ＿ＢＵＦ］−プリントバッファ定義
【０１７６】
プリントバッファ定義コマンドは、ヘッドＡ及びＢそれぞれについて共通のプリントバッファ１０９のメモリサイズ及び構成を定義する。
【０１７７】
［ＤＲＯＰ］−液滴サイズ選択
【０１７８】
このコマンドは、それぞれのプリントヘッドのためにインク滴の大きさ（大小）を特定するために用いられる。
【０１７９】
［ＳＰＥＥＤ］−印刷速度選択
【０１８０】
このコマンドは、印刷速度を特定するために用いられる。
【０１８１】
［ＳＰＥＥＤ＿ＲＳＫＩＰ］−ラスタースキップの速度選択
【０１８２】
ラスタースキップの速度選択コマンドは、行送りのラスタースキップ速度を特定するために用いられる。このコマンドにより、使用可能な複数のラスタースキップ速度の内の１つを特定できる。
【０１８３】
［ＤＩＲＥＣＴＩＯＮ］−印刷方向設定
【０１８４】
このコマンドの方向パラメータは、印刷を順方向（左から右へ）で行うか、逆方向（右から左へ）で行うかを特定するために用いられる。
【０１８５】
［ＥＤＧＥ］−印刷端設定
【０１８６】
印刷端設定コマンドは、印刷位置の左端及び右端をコラム位置単位で特定する。左端は、右端より狭くしなければならない。
【０１８７】
［ＢＬＯＣＫ］−印刷ブロック選択
【０１８８】
このコマンドは、データブロックの左端及び右端を、それぞれのプリントバッファの先頭からコラム位置単位で特定するために用いられる。また、［ＢＬＯＣＫ］コマンドは、［ＤＡＴＡ］コマンド（上述）の後のビット画像が保持されている場所を特定する。
【０１８９】
［ＤＥＦＩＮＥ＿ＣＯＬＯＲ］−印刷色定義
【０１９０】
印刷色定義コマンドは、［ＤＡＴＡ］コマンドの後に格納されたビット画像データのプリントヘッドにおける位置を特定するカラーテーブルを定義するために用いられる。このコマンドは、定義するカラーテーブル、色開始位置（color start position：各色毎の最初に使用されるノズル先頭位置を示すパラメータ）、色の高さ（color height：各色のノズルで記録し搬送の上流側から何番目のノズルであるかを示すパラメータ）、及び色ずれ（color offset：各色ノズルに対応したメモリバッファ上での位置を示すパラメータ）を特定するパラメータを有する。
【０１９１】
［ＣＯＬＯＲ］ー印刷色選択
【０１９２】
このコマンドは、［ＤＥＦＩＮＥ＿ＣＯＬＯＲ］コマンドにより定義されたカラーテーブルを特定するために使用される。
【０１９３】
［ＤＥＦＩＮＥ＿ＰＵＬＳＥ］−ヒートパルステーブルの定義
【０１９４】
［ＤＥＦＩＮＥ＿ＰＵＬＳＥ］コマンドは、複数の異なるヒートパルスブロックテーブルを定義するために用いられる。パルスブロックテーブルは、プリンタ１０が後述の［ＳＥＬＥＣＴ＿ＰＵＬＳＥ］コマンドを受け取る前に定義されなければならない。
【０１９５】
［ＳＥＬＥＣＴ＿ＰＵＬＳＥ］−ヒートパルステーブルの選択
【０１９６】
ヒートパルステーブルの選択コマンドは、［ＤＥＦＩＮＥ＿ＰＵＬＳＥ］コマンドにより定義された複数のヒートパルステーブルの中から、すべてのヘッドに共通の一つのテーブルを選択するために用いられる。
【０１９７】
［ＤＥＦＩＮＥ＿ＣＯＮＴＲＯＬ］−バッファ制御テーブルの定義
【０１９８】
このコマンドは、複数の異なるプリントバッファ制御テーブルを定義するために用いられる。プリントバッファ制御テーブルは、プリンタ１０が後述の［ＳＥＬＥＣＴ＿ＣＯＮＴＲＯＬ］コマンドを受け取る前に定義されなければならない。
【０１９９】
［ＳＥＬＥＣＴ＿ＣＯＮＴＲＯＬ］−バッファ制御テーブルの選択
【０２００】
このコマンドは、プリントヘッド１００ａ及び１００ｂそれぞれのために、［ＤＥＦＩＮＥ＿ＣＯＮＴＲＯＬ］コマンドにより定義された複数のプリントとバッファ制御テーブルの中から１つずつを選択するために用いられる。
【０２０１】
［ＳＣＡＮ＿ＭＡＲＧＩＮ］−スキャンマージン設定
【０２０２】
スキャンマージン設定コマンドは、スキャンマージンを設定するために用いられる。このコマンドは、プリンタ１０が論理的にキャリッジを探せるように、１行の印刷が終わる前にプリンタ１０が受信する必要がある。
【０２０３】
［ＡＴ＿ＤＥＬＡＹ］−自動トリガ遅延設定
【０２０４】
このコマンドは、順方向及び逆方向にスキャン方向を特定し、自動トリガ遅延時間を１０μｓｅｃ刻みで最大２，５５０μｓｅｃに特定することにより、自動トリガ遅延の設定をするために用いられる。
【０２０５】
（３．６．３  メインテナンスコマンド）
メインテナンスコマンドは、プリンタ１０の印刷動作を保全するために使用され、以下に詳しく説明する。
【０２０６】
［ＲＥＣＯＶＥＲ］−ヘッドリカバー
【０２０７】
このコマンドを受信すると、プリンタ１０はクリーニング及びインク吸引処理などのヘッドリカバリーモードに入る。
【０２０８】
［ＨＥＡＤ＿ＥＸＣ］−ヘッド交換
【０２０９】
ヘッド交換コマンドは、プリンタ１０をヘッド交換モードに移行させる。ヘッド交換モードに入るときには、キャリッジは交換位置まで動く。このコマンドのパラメータは、交換すべきヘッド及び／またはインクタンクを特定する。
【０２１０】
［ＰＣＲ］−パルス制御率変換
【０２１１】
このコマンドは、パルス制御テーブルの制御率を変更するために用いられる。それぞれの制御率は、１から２００の間に設定することができ、それぞれ１％〜２００％を意味する。デフォルトでは、１００、すなわち１００％に設定されている。
【０２１２】
［ＵＣＴ］−協定世界時間
【０２１３】
このコマンドは、プリンタ１０に現在時間を設定するために用いられ、プリントジョブ開始の設定時にプリンタ１０に送らなければならない。プリンタ１０はこの時間を用いて、プリントヘッドのリカバリーを行うべきか否かを判断する。この時間値は、ホストプロセッサー２のシステムクロックに基づいて、１９７０年１月１日の深夜（００：００：００）からカウントされる秒数、すなわち協定世界時間として表現されている。
【０２１４】
［ＨＥＡＤ＿ＣＨＥＣＫ］−ヘッドチェック
【０２１５】
ヘッドチェックコマンドは、プリンタ１０に現在搭載されているプリントヘッドのタイプをチェックするために用いられる。
【０２１６】
［ＡＵＴ＿ＰＯＷＥＲ］−自動電源管理
【０２１７】
このコマンドは、プリンタ１０内の自動電源管理機能がイネーブルされているか否かを特定するために用いられる。
【０２１８】
［ＳＣＡＮ］−センサースキャン
【０２１９】
このコマンドは、自動位置合わせセンサーの値を読み込み、結果をホストプロセッサー２に送り返すために用いられる。スキャン速度、方向、解像度、及び領域が［ＳＰＥＥＤ］、［ＤＩＲＥＣＴＩＯＮ］、［ＤＥＦＩＮＥ＿ＢＵＦ］、［ＥＤＧＥ］の各コマンドにより上述の通りそれぞれ定義されている。
【０２２０】
［ＮＶＲＡＭ］−ＮＶ−ＲＡＭ制御
【０２２１】
このコマンドは、ＥＥＰＲＯＭ１０２からデータを読み込み、読んだデータをホストプロセッサー２に送り返すために用いられる。
【０２２２】
［ＳＭＥＡＲ］−スミヤ制御
【０２２３】
スミヤ制御コマンドは、湿ったインクがこすれて記録媒体が汚れること（スミヤ）を防ぐために用いられる。このコマンドは、現在のページの印刷時間を遅延させるように所定時間を設定することで、スミヤを防ぐ。
【０２２４】
［ＩＦ＿ＣＯＮＴＲＯＬ］−インタフェース制御
【０２２５】
インタフェース制御コマンドは、プリンタ１０のあるインタフェースモードがイネーブルであるか否かを特定するために用いられる。
【０２２６】
［ＳＴＡＴＵＳ］−状態リクエスト
【０２２７】
このコマンドは、プリンタ１０に状態リクエストを送るための予め固定されたコマンドとして用いられる。リクエストは、基本設定、主な状態、及び詳細な状態を得るために作成することができる。
【０２２８】
基本設定コマンドは、ホストプロセッサー２がプリンタ１０を設定するために用い、プリンタ１０からの応答を必ずしも必要としない。
【０２２９】
主状態リクエスト／応答コマンドは、通常モードにおける状態情報を得るために用いられ、基本状態［ＢＡＳＥ＿ＳＴＡＴＵＳ］、エコーコマンド［ＥＣＨＯ］、プリントヘッド構成［ＨＥＡＤ］、位置合わせセンサーの結果［ＳＥＮＳＯＲ＿ＲＥＳＵＬＴＳ］、ＥＥＰＲＯＭデータのホストへの送信［ＤＡＴＡ＿ＳＥＮＤ］、シフトバッファサイズのホストへの送信［ＢＵＦＦＥＲ＿ＳＩＺＥ］を含む。それぞれの主状態リクエスト／応答コマンドに対して、応答が自動的にホストプロセッサー２に返される。
【０２３０】
詳細な状態リクエスト／応答コマンドは、詳細な状態情報を得るために用いられる。これらのコマンドには、詳細なジョブの状態［ＪＯＢ＿ＳＴＡＴＵＳ］、詳細なビジー状態［ＢＵＳＹ＿ＳＴＡＴＵＳ］、詳細な警告状態［ＷＡＲＮＩＮＧ＿ＳＴＡＴＵＳ］、詳細なオペレーター呼び出し状態［ＯＰＥＲＡＴＯＲ＿ＣＡＬＬ］、詳細なサービス呼び出し状態［ＳＥＲＶＩＣＥ＿ＣＡＬＬ］が含まれる。状態リクエスト／応答コマンドと同様に、それぞれの詳細状態リクエスト／応答コマンドに対して、応答が自動的にホストプロセッサー２に返される。
【０２３１】
［ＰＲＥＦＩＲＥ＿ＥＸ］−予備吐出処理
【０２３２】
予備吐出処理コマンドは、インクの予備吐出を実行するために用いられる。このコマンドのパラメータにより、特定のインクヘッドに予備吐出を行わせることができる。
【０２３３】
［ＰＲＥＦＩＲＥ＿ＣＹＣ］−予備吐出周期設定
【０２３４】
予備吐出周期設定コマンドは、自動予備吐出実行の周期を設定するために用いられる。このコマンドのパラメータにより、予備吐出させる目的のヘッドを特定し、自動予備吐出周期の長さを、最長２５５秒まで秒単位で設定することができる。
【０２３５】
＜４．０  自動給紙制御＞
このセクションでは、本実施の形態のプリンタのための自動給紙制御処理について説明する。この処理では、プリンタは記録媒体シートをプリンタ内に供給し、その印刷のためのシートを、効率よく、確実に準備するように命令される。特に、本実施の形態は第１に給紙する記録媒体のタイプ、ユーザにより選択された印刷モード、及び他の印刷に関わる状態に基づいて、記録媒体をプリンタに給紙する速さを選択するためのロジックを提供することである。また、印刷中に記録媒体がプリンタ内を通過する行送り速度及び印刷後にプリンタから記録媒体を排紙する排紙速度も、同様の方法で選択することができる。また、本実施の形態では、自動給紙処理の完了に先立って、他の印刷前タスクを行うことができる自動給紙制御を提供する。最後に、本実施の形態は、給紙処理が成功したか否かを給紙終了前に判断することができる自動給紙処理手順を提供する。これにより、自動給紙処理の終了に先立って、プリンタドライバがプリンタにプリントデータを送ることができる。
【０２３６】
以下に更に詳しく説明するように、上記構成によれば、記録媒体をプリンタに給紙する最中の信頼度を向上させ、記録媒体を給紙するためにかかる時間及び記録媒体へ印刷を行うための準備として、他の印刷前タスクを完了するまでの時間を削減することができる。
【０２３７】
＜４．１  ＡＳＦ、行送り及び排紙速度の選択＞
プリンタ１０は印刷前に記録媒体をプリンタ１０に自動的に給紙する自動給紙部１４を有する。図５Ａに示すように、記録媒体シートは、ラインフィードモータ３４により駆動される自動給紙ローラー３２によりクラッチ部１４０を介して自動給紙部１４からプリンタ１０へ給紙される。記録媒体をプリンタ１０に給紙するために、自動給紙ローラー３２とラインフィードモータ３４とが係合する位置にクラッチ部１４０が来るように、カートリッジホルダ３７ａ及び３７ｂを動かす必要がある。自動給紙ローラー３２をクラッチ部１４０を介して係合させ、駆動するために必要なこれらの一連の動作は、上記セクション１．１で図５Ｃを参照して詳しく説明した。
【０２３８】
自動給紙部１４及び自動給紙ローラー３２の動作は、プリンタ１０により通信線７６を介してプリンタ１０に制御信号を送る、プリンタドライバ８４と連係して制御される。本実施の形態では、プリンタドライバ８４は、印刷に先立って、記録媒体の給紙を開始する命令をプリンタ１０に送ることが好ましい。プリンタドライバ８４からの給紙命令を受けて、プリンタ１０は、給紙コマンドで特定されたパラメータ及び状態に応じて記録媒体の給紙を開始する。図１４に示すように、給紙（［ＬＯＡＤ］）コマンドは、プリンタドライバ８４からプリンタ１０へのコマンド列の間に、プリンタ１０に記録媒体を給紙するように命令するために、用いられる。給紙（［ＬＯＡＤ］）コマンドは、給紙する記録媒体の種類及び大きさに関するパラメータをプリンタ１０に供給し、更に、自動給紙部１４を用いて記録媒体を給紙するか、または手差し給紙部１７を用いるかをプリンタ１０に知らせる。自動給紙部１４を用いる場合、給紙（［ＬＯＡＤ］）は、記録媒体をプリンタ１０に給紙するために、例えば、高速、通常速度など、複数の速度のどれを自動給紙ローラー３２が使用するかを指示する。図１４を参照して上述したとおり、スキップ（［ＳＫＩＰ］）コマンドは印刷中に記録媒体をプリンタ１０内で先に送るために用いられ、排紙（［ＥＪＥＣＴ］）コマンドは、印刷完了後に記録媒体をプリンタ１０から排紙するために用いられる。
【０２３９】
図２０は、本実施の形態において、好ましくはプリンタドライバ８４内で実行される、記録媒体を給紙し、ページ印刷することをプリンタ１０に命令する工程を示すフローチャートである。図２０において、ステップＳ２０００で処理が開始し、プリンタドライバ８４は、プリンタ１０を初期化するためにプリンタ１０にリセットコマンド（［ＲＥＳＥＴ］）を送る。プリンタドライバ８４はプリントモードと、給紙する記録媒体のタイプ、記録媒体上に印刷する画像のタイプ、及びプリンタ１０が画像を印刷する方法を定義するモードに関する状態を判断する（ステップＳ２００１）。一旦プリントモード及び状態が判断されると、プリンタドライバ８４は、記録媒体の給紙、印刷、及び排紙を行う際に用いられる適切な自動給紙速度、行送り速度、排紙速度を決定し、決定した給紙速度、行送り速度、及び排紙速度を含む給紙コマンド（［ＬＯＡＤ］）をプリンタ１０に送り、記録媒体の給紙が開始される（ステップＳ２００２）。プリンタドライバ８４はステップＳ２００３において１回目の印刷スキャンのためのプリントデータを準備し、プリントデータを準備していることをプリンタ１０に知らせる。プリンタドライバ８４によるプリントデータの準備に関しては、１９９７年７月２８日に出願された米国特許出願第０８／９０１，７１９号の「カラープリンタのためのプリントドライバ」に詳細に説明されている。ステップＳ２００４では、プリンタドライバ８４が記録媒体給紙の早期成功通知を受信したか、または給紙が完了通知を受信したかを判断する。どちらかを受信した場合には、プリンタ１０は印刷及び制御をステップＳ２００５へ進める。もし、両方とも受信していない場合には、処理はそのまま終了する。もし、このスキャンで印刷するプリントデータが無い場合には（ステップＳ２００５）、処理はステップＳ２０１６へ進み、次のスキャンのためのプリントデータが準備される。プリンタドライバ８４は、この記録媒体１ページで処理されたスキャンラインの総数に対応するように、ステップＳ２０１７で仮想スキップを行う。この記録媒体１ページ分の印刷が完了していないと判断されると（ステップＳ２０１３）、処理はステップＳ２００５に戻る。そして、当該ページの印刷が終了したと判断されるまで、ステップＳ２００５からステップＳ２０１３の処理を繰り返し実行する。
【０２４０】
また、当該スキャンで印刷する印刷データが存在する時は（ステップＳ２００５）、プリンタドライバ８４は、ユーザ入力に基づいて、以前に選択したプリンタ１０の行送り速度をオーバーライドするか否かを判断する（ステップＳ２００６）。例えば、ユーザは、「オーバーライド無し」「低速オーバーライド」、または「高速オーバーライド」のいずれかを選択し、プリンタ１０に行送り速度コマンド（［ＳＰＥＥＤ＿ＲＳＫＩＰ］）を用いて送信する。そして、スキップコマンド（［ＳＫＩＰ］）がプリンタ１０へ送られて（ステップＳ２００７）、記録媒体の位置を現在のスキャンでのプリントデータの印刷を行うための位置にするために、所定ラスターライン数分、記録媒体を進めるようにラインフィードモータ３４に命令する。プリンタドライバ８４はスキャン設定を行い、現在のスキャンでのプリントデータ（（［ＤＩＲＥＣＴＩＯＮ］、［ＥＤＧＥ］、［ＳＰＥＥＤ］、［ＳＩＺＥ］、［ＳＥＬＥＣＴ＿ＰＵＬＳＥ］、［ＳＥＬＥＣＴ＿ＣＯＮＴＲＯＬ］））の印刷準備をプリンタ１０が行えるように、スキャン設定をプリンタ１０へ送る（ステップＳ２００８）。スキャン設定パラメータをプリンタ１０に送信した後、ステップＳ２００９でプリンタドライバ８４は現行スキャン用のプリントデータを、画像データ送信コマンド（［ＤＡＴＡ］）を用いてプリンタ１０に送る。そして、プリンタドライバ８４は、ステップＳ２０１０で次のスキャン用のプリントデータを準備する。そして、記録媒体の給紙が成功したか否かを判断する（ステップＳ２０１１）。記録媒体の給紙が失敗した場合、制御はプリンタドライバ処理の最後に進む。
【０２４１】
記録媒体の給紙が成功した場合、プリンタドライバ８４は、プリントコマンド（［ＰＲＩＮＴ］）をプリンタ１０に送ることによりプリントデータの印刷を開始する（ステップＳ２０１２）。１ページ分の印刷が終了すると（ステップＳ２０１３）、プリンタドライバ８４はステップＳ２０１４で、選択した排紙速度オーバーライドを「オーバーライド無し」、［低速オーバーライド」、「高速オーバーライド」のいずれかに設定し、プリンタ１０が記録媒体を排紙するように、そのオーバーライド選択を排紙コマンド（［ＥＪＥＣＴ］）の一部として、プリンタ１０へ送る（ステップＳ２０１５）。現行ページの印刷が終了していない場合には、処理はステップＳ２００５に戻る。このようにすることにより、プリンタドライバ８４は、使用中の記録媒体のタイプと、ユーザによりリクエストされたプリントモード及び状態と、及びその他の印刷関連状態に基づいて、詳細なコマンド及びデータをプリンタ１０に供給する。
【０２４２】
図２４は、図２０のステップＳ２００２における自動給紙速度、行送り速度及び排紙速度決定にあたってプリンタドライバ８４により実行される処理手順の詳細を示すフローチャートである。まず、現行のプリントジョブについて、ユーザが記録媒体をプリンタ１０の手差し給紙部１７に給紙する手差し給紙を選択したか否かを判断する（ステップＳ２４０１）。手差し給紙が選択された場合には、プリンタドライバ８４は清掃チェックコマンドをプリンタ１０に送り、清掃チェックが終了するのを待つことにより、インククリーニング機構４５に内包される清掃ポンプ（不図示）の動作中に、ユーザが記録媒体を手差し給紙することを防ぐ。清掃ポンプが動作中でないと判断されると、ダイアログボックスをディスプレイ４上に表示し、ユーザに手差し給紙部１７に記録媒体を挿入するように促す（ステップＳ２４０３）。そして、ユーザが手差し給紙を促すダイアログボックスを確認したか否かを判断し（ステップＳ２４０４）、確認したと判断すると、処理はステップＳ２４０６に進み、手差し給紙を特定した給紙コマンド（［ＬＯＡＤ］）をプリンタ１０に送る。ユーザがディスプレイ４上に表示されるダイアログボックスを確認していない場合には、ステップＳ２４０５でプリントジョブをキャンセルする。
【０２４３】
ステップＳ２４０６において、手差し給紙コマンドがプリンタ１０に送られた後、記録媒体が適切に給紙されたか否かを判断する（ステップＳ２４０８）。適切でない場合、ユーザはプリンタから記録媒体を取り除いてもう一度挿入し、手差し給紙し直すように指示される（ステップＳ２４０９）。ユーザが手差し給紙し直しのリクエストを確認すると（ステップＳ２４０７）、処理はステップＳ２４０６に戻り、手差し給紙を特定した給紙コマンドを再度送る。ユーザが手差し給紙し直しのリクエストを確認していない場合（ステップＳ２４０７）、プリントジョブはキャンセルされる（ステップＳ２４０５）。ステップＳ２４０８では、手差し給紙コマンドの受信後に記録媒体がプリンタ１０に正しく給紙された場合、ステップＳ２４２２でリターンする。
【０２４４】
また、ステップＳ２４０１でユーザが手差し給紙を選択しなかった場合、ステップＳ２４２５で現在時刻を得る。プリンタ１０が、好ましくは日中のビジネス時間を定義する、予め決められた閾値Ｔ１とＴ２により定義される所定時間内で使用されている場合には（ステップＳ２４２３でＹＥＳ）、処理はステップＳ２４１０に進む。プリンタ１０が所定時間内で使用されていない場合には（ステップＳ２４２３でＮＯ）、プリンタドライバ８４は低速度の自動給紙コマンド、低速度行送りコマンド、及び低速度排紙コマンドを選択し、それらをプリンタ１０へ送る（ステップＳ２４１６）。これにより、印刷中にプリンタ１０で発生するノイズを低減する。これらの設定は、ユーザにより「オーバーライド無し」モードが選択されたときのデフォルトに対応する。また、プリンタ１０が所定時間内で使用されており（ステップＳ２４２３でＹＥＳ）、ユーザがドラフトまたは標準モードを設定していない場合には、プリンタドライバ８４は低給紙速度設定、低速度行送り速度設定、及び低排紙速度設定を選択し、給紙（［ＬＯＡＤ］）コマンドによりプリンタ１０へこれらの設定を送る（ステップＳ２４１６）。しかしながら、ユーザがドラフトまたは標準モードを選択していたならば、現在のプリントジョブをレギュラーモードで行うか否かを判断する（ステップＳ２４１１）。レギュラーモードが選択されていなければ、高解像度カラーモードが現在のプリントジョブで使用されているので、プリンタドライバ８４は給紙、行送り、及び排紙の速度を低速度に選択し、給紙（［ＬＯＡＤ］）コマンドを利用してそれらをプリンタ１０に送る（ステップＳ２４１６）。
【０２４５】
しかし、レギュラーモードが現在のプリントジョブに使用されているならば（ステップＳ２４１１でＹＥＳ）、どのタイプの記録媒体が現在にプリントジョブで使用されているかをプリンタドライバが８４で判断する（ステップＳ２４１２）。普通紙が使用されている場合（ステップＳ２４１２でＹＥＳ）、給紙、行送り、排紙速度として高速が選択されて、給紙（［ＬＯＡＤ］）コマンドによりプリンタ１０に送られる（ステップＳ２４１４）。しかし、現在のプリントジョブでバブルジェット用紙が使用されている場合（ステップＳ２４１３でＹＥＳ）、給紙速度として低速、行送り速度として高速、そして、排紙速度として低速が選択されて、給紙（［ＬＯＡＤ］）コマンドによりプリンタ１０に送られる（ステップＳ２４１５）。現在のプリントジョブで使用されているのが普通紙でもバブルジェット用紙でも無い場合、プリンタドライバ８４は、給紙、行送り、排紙速度として低速が選択されて、給紙（［ＬＯＡＤ］）コマンドによりプリンタ１０に送られる（ステップＳ２４１６）。給紙コマンドがステップＳ２４１４、Ｓ２４１５、Ｓ２４１６のいずれかのステップでプリンタ１０に送られると、記録媒体が適切にプリンタ１０に給紙されたか否かを判断する（ステップＳ２４１７）。適切に給紙されていない場合には、問題を正して再度給紙し直すように指示するダイアログボックスをディスプレイ４に表示する（ステップＳ２４１８）。ユーザディスプレイ４で給紙を再度行うことを選択した場合（ステップＳ２４１９）、処理はステップＳ２４１６に移り、給紙、行送り、排紙の速度として低速に設定し、プリンタに給紙（［ＬＯＡＤ］）コマンドを再度送信する（ステップＳ２４１６）。ユーザがディスプレイ４から再給紙を選択しなかった場合には、プリンタ１０上の再スタートボタン２６により再給紙を選択したかどうかを判断する（ステップＳ２４２０）。もしそうであれば、処理はステップＳ２４１６に進む。また、ユーザがディスプレイ４からもプリンタ１０からも再給紙を選択しなかった場合には、プリントジョブはキャンセルされる（ステップＳ２４２１）。ステップＳ２４１７において、記録媒体がプリンタ１０に適切に給紙されていると判断されると、処理はステップＳ２４２２に進み、リターンする。
【０２４６】
この本実施の形態の方法では、記録媒体のタイプ及び大きさ、プリントモード、過去の給紙の失敗回数、その他のモード及び状態など、与えられたプリントジョブの状態及び要求に応じて、自動給紙部１４から記録媒体を給紙するための複数の速度から１つを選択し、そして同様に行送り速度及び排紙速度の選択のためのロジックをプリンタドライバ８４内に有する。その結果、与えられたプリントジョブに適切な最高速度が、記録媒体の給紙中及び記録媒体への印刷及び記録媒体の排紙中に使われる。これにより、安定した動作を確保しながら、プリントジョブ全体にかかる時間を短縮することができる。
【０２４７】
図２５は、プリンタドライバ８４から供給されるオバーライドコマンドに基づいて排紙速度を設定するために、プリンタ１０内のＣＰＵ９１内で使用されるロジックを示すフローチャートである。ステップＳ２５０１で処理が開始され、プリンタドライバ８４から「オーバーライド無し」コマンドを受信したか否かを判断する。「オーバーライド無し」コマンドが選択されていた場合、給紙速度が現在、高速に設定されているかどうかを判断する（ステップＳ２５０４）。給紙速度が高速に設定されている場合、排紙時の行送り速度も高速に設定する（ステップＳ２５０５）。また、給紙速度が高速に設定されていない場合、排紙時の行送り速度も低速に設定する（ステップＳ２５０６）。また、ステップＳ２５０１において、「オーバーライド無し」コマンドがドライバ８４から送られていない場合には、「低速オーバーライド」が送られたかどうかを判断する（ステップＳ２５０２）。「低速オーバーライド」コマンドが送られている場合には、排紙時の行送り速度を低速に設定する（ステップＳ２５０７）。反対に、「低速オーバーライド」が送られなかった場合には、「高速オーバーライド」コマンドが送られたかどうかを判断し（ステップＳ２５０３）、送られている場合には、排紙時の行送り速度を高速に設定する（ステップＳ２５０８）。また、「オーバーライド無し」も「低速オーバーライド」も「高速オーバーライド」のいずれも送られなかった場合には、デフォルト値、好ましくは低速を排紙時の行送り速度として設定する（ステップＳ２５０９）。このようにすることにより、プリンタドライバ８４は、プリンタドライバ８４から以前に設定された排紙速度コマンドを変更するために、排紙速度オーバーライドを選択することができる。
【０２４８】
同様に、図２６は、行送り速度の以前の設定がプリンタドライバ８４により後でオーバーライドすることができることを示す、プリンタ１０のＣＰＵ９１におけるロジック処理を示すフローチャートである。ステップＳ２６０１で処理が開始され、印刷の解像度が１４４０ｄｐｉに設定されているか否かを判断する。解像度１４４０ｄｐｉがプリンタドライバ８４により選択されている場合、１４４０ｄｐｉ速度が行送り速度として選択される（ステップＳ２６０５）。しかし、解像度１４４０ｄｐｉが選択されていなければ、プリンタドライバ８４が「低速オーバーライド」を送信したかを判断し（ステップＳ２６０２）、そうであれば、行送り速度として低速が選択される（ステップＳ２６０６）。また、「低速オーバーライド」が選択されていなければ、「高速オーバーライド」が選択されているか否かを判断し（ステップＳ２６０３）、そうであれば、行送り速度として高速を選択する（ステップＳ２６０７）。もし、「高速オーバーライド」を受信していなければ、給紙速度が高速に設定されているかどうかを判断し（ステップＳ２６０４）、そうであれば、行送り速度として高速を設定する（ステップＳ２６０８）。給紙速度として高速が設定されていなければ、行送り速度として、デフォルト速度である低速を選択する（ステップＳ２６０９）。このように、プリンタドライバ８４から行送り速度を提供した後であっても、プリンタドライバ８４は行送りのためのオーバーライド設定を選択することができる。
【０２４９】
＜４．２  給紙成功可否の早期判定＞
本発明の好適な実施の形態においては、記録媒体の給紙完了に先立って、給紙が成功しそうかどうかの判断をプリンタ１０のＣＰＵ９１において行う。給紙が成功しそうであれば、プリンタ１０は、プリンタドライバ８４ができるだけ早いタイミングでプリントデータをプリンタ１０に送信開始できるように、早期給紙成功をプリンタドライバ８４に通知する。このようにすることによって、プリンタは、記録媒体の給紙が問題なく終了した後に、より迅速に印刷を開始することができる。
【０２５０】
図２１Ａはプリンタ１０の自動給紙部１４による記録媒体の給紙中にプリンタ１０のＣＰＵ９１において実施される処理を示すフローチャートであり、記録媒体の給紙に関する早期成功通知を得ることが必要な工程を含む。ステップＳ２１０１で制御が開始し、カートリッジホルダ３７ａ及び３７ｂはホームポジション４６に移動するように命令を受け、ホームポジション４６に到着すると、待機状態に入る。キャリッジ容器３７ａ，３７ｂはキャリッジモータドライバ３９ａにより駆動される。次に、今回の給紙の直前に、先に給紙されていた記録媒体が排紙されたかどうかを判断する（ステップＳ２１０２）。排紙されている場合、処理はステップＳ２１０３へ移り、排紙行送り速度から、ラインフィードモータ３４が自動給紙ローラー３２が係合できる自動給紙ピックアップ速度へ変わるまで待つ。すなわち、自動給紙ローラー３２に係合させるためのクラッチ部１４０の調整が、ラインフィードモータ３４が適切な速度になるまで行われないように、待機する。ラインフィードモータ３４が適切な速度になると、自動給紙ローラー３２が現在、初期ホームポジションにあるか否かを判断する（ステップＳ２１０４）。ホームポジションにある場合には、自動給紙動作の始めに自動給紙ローラー３２がホームポジションにあることを示すためにフラグを立てる（ステップＳ２１０６）。
【０２５１】
初期状態で自動給紙ローラー３２がホームポジションに無い場合、フラグを「偽」に設定する（ステップＳ２１０５）。次に、カートリッジホルダ３７ａ及び３７ｂは、自動給紙ローラー３２と係合するようにクラッチ部１４０まで移動するように命令を受ける（ステップＳ２１０７）。ステップＳ２１０８では再給紙フラグを「偽」に設定し、記録媒体の再給紙がまだ行われていないことを示す。次に、今回の給紙開始の前に、先に給紙された記録媒体の排紙が行われたか否かを判断する（ステップＳ２１０９）。排紙がされた場合には、処理はステップＳ２１１１に進み、排紙が行われていない場合には、図２１Ｄを参照して詳述するように様々な状態に基づいて、給紙速度を選択する。その後、自動給紙ローラー３２に動作開始を指示する（ステップＳ２１１０）。処理はステップＳ２１１１に進み、自動給紙ローラー３２が現在、ホームポジションにあるかどうかを判断する。ホームポジションにある場合には、処理はまたステップＳ２１１１に戻り、ホームポジションに位置しなくなるまで、自動給紙ローラー３２の位置を確認する。自動給紙ローラー３２が現在ホームポジションに無く、且つ、自動給紙ローラー３２がホームポジションから動作を開始したと判断されると、クラッチ部１４０は自動給紙ローラー３２を駆動するために適切に係合され、これにより、カートリッジホルダ３７ａ及び３７ｂはクラッチ１４０の近辺にある必要が無くなる。その後、カートリッジホルダ３７ａ及び３７ｂは、プリントヘッド１００ａ及び１００ｂのクリーニングを行うために、ホームポジション４６へ移動するように命令を受ける（ステップＳ２１１３）。
【０２５２】
ステップＳ２１１２において、自動給紙ローラー３２が初期状態でホームポジションに無い場合には、自動給紙ローラー３２が動作を終えるまでに十分な時間がとれるように、カートリッジホルダ３７ａ及び３７ｂは、自動給紙ローラー３２と係合するようにクラッチ部１４０に当接するように位置される。この場合、カートリッジホルダ３７ａ及び３７ｂはホームポジションに移動するように命令されないが、その代わりに、ステップＳ２１１４で自動給紙ローラー３２が現在動作中であるかどうかを判断する。動作中である場合、記録媒体の先端がプリンタ１０内で検出されたかどうかを判断する（ステップＳ２１１５）。先端が検出されていない場合、処理はステップＳ２１１４に戻り、自動給紙ローラー３２が現在動作中であるかどうかをもう一度判断する。また、ステップＳ２１１４で、例えば記録媒体給紙のために必要な動作が完了したために、自動給紙ローラー３２が現在動作していないと判断すると、処理はステップＳ２１１７に進む。また、ステップＳ２１１５で記録媒体の先端が検知されると、初期成功ロジックが実行され（ステップＳ２１１６）、給紙が完了する前に、給紙が成功する見込みを判断する。この初期成功ロジックについては図２１Ｃを参照してより詳細に後述する。初期成功ロジックの実施後（ステップＳ２１１６）、ステップＳ２１１７において自動給紙ローラー３２が初期ホームポジションから動作を開始したかどうかを判断し、ホームポジションから開始していた場合には待機状態に入り（ステップＳ２１１８）、カートリッジホルダ３７ａ及び３７ｂがホームポジション４６で停止するのを待つ。そして少なくとも良好な印刷状態を保つために、プリントヘッド１００ａ及び１００ｂに予備吐出を行うように命令する（ステップＳ２１１８）。
【０２５３】
ステップＳ２１１８での待機中には、カートリッジホルダ３７ａ及び３７ｂのホームポジション４６への移動途中に拭くために、ワイパー４４ａ及び４４ｂを通過するようにすることもできる。自動給紙動作の開始時に自動給紙ローラー３２がホームポジションに無い場合（ステップＳ２１１７でＮＯ）、ステップＳ２１１８はスキップされる。そして処理は図２１ＢのステップＳ２１１９に進み、自動給紙ローラー３２が現在動作中であるかどうかを判断する。自動給紙ローラー３２が動作中である場合には、自動給紙ローラー３２の動きが止まったと判断されるまで、処理はステップＳ２１１９に戻る。自動給紙ローラー３２の動きが止まると、処理はステップＳ２１２０に進み、自動給紙処理開始時点で、自動給紙ローラー３２かホームポジションにあったかどうかを判断する。自動給紙ローラー３２がホームポジションに無かった場合、カートリッジホルダ３７ａ及び３７ｂにホームポジション４６に戻るように命令する（ステップＳ２１２１）。そして、自動給紙ローラー３２が現在ホームポジションで止まっているかどうかを判断する（ステップＳ２１２２）。自動給紙ローラー３２が動きが止まった後もホームポジションに戻っていない場合は（ステップＳ２１２２でＮＯ）、深刻なエラーが起きているため、すべてのタスクを再開するために適切な処理を行い、エラーを記録する（ステップＳ２１２３）。自動給紙ローラー３２がホームポジションに戻っている場合には、不図示の用紙端センサーにより記録媒体の先端が検出されたかどうかを判断する（ステップＳ２１２４）。
【０２５４】
記録媒体の先端が検出された場合、先端の検出が特定のモータステップ数内でなされたか、例えば、記録媒体が自動給紙ローラー３２で滑ったなどの理由により記録媒体の給紙に必要以上の時間がかかっていないかを判断する（ステップＳ２１２５）。先端が予定時間内で検出された場合、記録媒体の先端が用紙端センサーを適切な分量過ぎたかを判断する（ステップＳ２１２６）。記録媒体が充分な分量送られていれば、記録媒体の給紙は成功しているため、給紙状態リターンフラグを「成功」に設定する（ステップＳ２１２８）。その後、自動給紙動作からリターンする。
【０２５５】
しかし、記録媒体の検出に時間がかかりすぎた場合（ステップＳ２１２５でＮＯ）または、記録媒体が充分な分量用紙端センサーを通過しなかった場合には（ステップＳ２１２６でＮＯ）、記録媒体の給紙は失敗しているため、ステップＳ２１２７に進み、その記録媒体を適切な位置に設定するためのリカバリー処理にその記録媒体を使用できるかどうかを判断する。記録媒体が６インチ以下の記録媒体、光沢紙、光沢のある写真カード、高光沢フィルムである場合にリカバリー動作を行えないようにすることが好ましい。リカバリー動作ができない記録媒体のタイプである場合には、給紙状態リターンフラグは「エラー」に設定され（ステップＳ２１３１）、全自動給紙処理からリターンする。リカバリー処理に使用できる記録媒体のタイプである場合には、処理はステップＳ２１２９のリカバリー処理に移る。このリカバリー処理は、図２１Ｅを参照して後で詳細に説明する。リカバリーによって、給紙状態リターンフラグは「成功」に設定され（ステップＳ２１２８）、全自動給紙処理からリターンする。
【０２５６】
ステップＳ２１２４では、記録媒体の先端が用紙端センサーにより検知されなかった場合、記録媒体のタイプを確認して、リカバリー処理を実施するかどうかを判断する（ステップＳ２１３２）。リカバリー処理を実行できる記録媒体のタイプではない場合、給紙状態リターンフラグは「エラー」に設定され（ステップＳ２１３１）、処理は全自動給紙処理からリターンする。リカバリー処理を実行可能な記録媒体のタイプである場合、給紙フラグを確認して（ステップＳ２１３３）、記録媒体の給紙のやり直しがこれで２回目であるかを判断する。やり直しが２回目である場合、給紙状態リターンフラグは「エラー」に設定され（ステップＳ２１３１）、処理は全自動給紙処理からリターンする。
【０２５７】
これが給紙やり直しの１回目である場合、再給紙フラグが立てられ（ステップＳ２１３４）、自動給紙ローラー３２が現在ホームポジションにあるかどうかをチェックする（ステップ２１３５）。これに応じて、ステップＳ２１３６または２１３７で自動給紙ローラー３２の現在位置に応じてホームから開始フラグが立てられる。その後、カートリッジホルダ３７ａ及び３７ｂの動きが止まるまで待ち、自動給紙ローラー３２をラインフィードローラー３４に係合させるように、カートリッジホルダ３７ａ及び３７ｂをクラッチ部１４０まで移動するように命令する（ステップＳ２１３８）。処理は図２１ＡのステップＳ２１１０に進み、上述の自動給紙処理動作を繰り返す。
【０２５８】
図２１ＢのステップＳ２１１６で触れた早期成功ロジックにより、早期成功フラグがプリンタドライバ８４に送ることができ、プリンタドライバ８４は記録媒体給紙完了前にプリントデータの送信を開始することができる。図２１Ｃは、早期成功ロジックの各工程を示す詳細フローチャートである。ステップＳ２１３９において、記録媒体の先端の検出が特定のモータステップ数内でなされたか、例えば、記録媒体が自動給紙ローラー３２で滑ったなどの理由により記録媒体の給紙に必要以上の時間がかかっていないかを判断する。記録媒体の先端が特定モータステップ数内で検出されなかった場合、給紙が成功しない可能性があるので、処理はリターンする。
【０２５９】
記録媒体の先端が所定のモータステップ数内で検出された場合、記録媒体のタイプをチェックして、上記に説明したように、リカバリー処理に使用できるタイプのものであるかどうかを判断する（ステップＳ２１４０）。記録媒体のタイプがリカバリー処理に使用できないタイプのものである場合、給紙が成功しない可能性があるので、処理はリターンする。一方、記録媒体のタイプがリカバリー処理に使用できるタイプのものである場合、早期成功フラグを立て、プリンタドライバ８４に 給紙状態リターンフラグを用いて「成功」を送信する処理のために、ＣＰＵ９１による制御を１０ｍｓ間停止する（ステップＳ２１４１）。このようにすることで、プリンタ１０のＣＰＵ９１により行われる自動給紙動作は、自動給紙部１４からの記録媒体の自動給紙を効率的に制御すると共に、早期成功指示に基づいて、給紙完了に先立ってプリンタドライバ８４によるプリントデータの送信を開始できるようにすることで、安定した動作を可能にする。従って、この構成により、記録媒体の給紙の完了から、記録媒体への画像データの印刷開始までにかかる時間を短縮することができる。
【０２６０】
図２１Ｄは図２１ＡのステップＳ２１１０において実行される工程を示すフローチャートであり、プリンタ１０のＣＰＵ９１は、プリンタドライバ８４から供給される自動給紙速度、現在の状態、及び自動給紙処理に関連するパラメータに基づいて、給紙速度を設定する。ステップＳ２１４２では、記録媒体の長さをチェックして、６インチ未満かどうかを判断する。６インチ未満の場合、記録媒体は封筒と同様に扱われ、２段階給紙処理が開始し、自動給紙ローラー３２の第１段階の動作がスタートする（ステップＳ２１４６）。２５０ｍｓ待機した後（ステップＳ２１４７）、自動給紙ローラー３２の第２段階の動作がスタートする（ステップＳ２１４８）。この処理後、リターンする。この２段階動作は、かさばった重い封筒など、小さい記録媒体の給紙を安定させることができる。
【０２６１】
記録媒体が６インチ未満でない場合には、現在設定されている給紙速度が低速であるかどうかを判断し、ホームポジションから開始フラグをチェックして自動給紙ローラー３２が元々ホームポジションにあったかどうかを判断する。さらに、再給紙フラグをチェックして、以前に記録媒体の給紙に失敗しているかどうかを判断する（ステップＳ２１４３）。上記のいずれか１つにでも該当する場合、ラインフィードモータ３４は自動給紙ローラー３２に低速で駆動するように命令する（ステップＳ２１４４）。上記のいずれにも該当しない場合には、ラインフィードモータ３４は自動給紙ローラー３２に高速で駆動するように命令する（ステップＳ２１４５）。そして、この処理からリターンする。
【０２６２】
図２１Ｅは図２１ＢのステップＳ２１２９におけるリカバリー処理の各処理の詳細を示すフローチャートである。図２１Ｅに示すリカバリー処理では、まず、自動給紙ローラー３２による給紙の際に、記録媒体が滑りすぎたかどうかを判断する（ステップＳ２１４９）。もしそうであれば、リカバリー処理はカートリッジホルダ３７ａ及び３７ｂの動きが止まるのを待って（ステップＳ２１５０）、自動給紙ローラー３２がラインフィードローラー３４に係合するように、カートリッジホルダ３７ａ及び３７ｂにクラッチ部１４０のところまで移動するように命令する（ステップ２１５１）。もし、用紙が滑りすぎていない場合、ステップＳ２１５５に進むが、あとで、詳しくここでの処理を説明する。ステップＳ２１５２では、自動給紙ローラー３２は低速度で動作を開始し、自動給紙ローラー３２が給紙動作を完了するのを待つ。次に、自動給紙ローラー３２がホームポジションで止まったかどうか判断する（ステップＳ２１５３）。ホームポジションで止まった場合、リカバリー処理はステップＳ２１５５に移る。ホームポジションで止まらなかった場合は、すべてのタスクを再スタートし、重要なエラーを記録する（ステップＳ２１５４）。
【０２６３】
リカバリー処理はステップＳ２１５５へ進んで、カートリッジホルダ３７ａ及び３７ｂにホームポジション４６に戻るように命令し、クラッチ１４０を介した自動給紙ローラー３２とラインフィードモータ３４との係合を解除する。そしてピンチローラー（不図示）の後ろに記録媒体を送るように、逆方向にラインフィードローラー１６５を回転するようにラインフィードモータ３４に命令する（ステップＳ２１５６）。そして、自動給紙ローラー３２とラインフィードモータ３４がクラッチ部１４０を介して係合するように、カートリッジホルダ３７ａ及び３７ｂにクラッチ部１４０のところへ移動するように命令する（ステップＳ２１５７）。これにより、記録媒体は、ホームポジションから回転する自動給紙ローラー３２により挟まれることになる（ステップＳ２１５８）。
【０２６４】
この後、カートリッジホルダ３７ａ及び３７ｂはホームポジション４６に移動するように命令され、これにより、自動給紙ローラー３２とラインフィードモータ３４との係合を解除する（ステップＳ２１５９）。こうして、ラインフィードモータ３４を駆動することにより、記録媒体はピンチローラーの後ろ側に巻き込まれる（ステップＳ２１６０）。その後、カートリッジホルダ３７ａ及び３７ｂは、自動給紙ローラー３２をラインフィードモータ３４に係合させるために、クラッチ１４０のところに移動するように命令される（ステップＳ２１６１）。ステップＳ２１６２で、自動給紙ローラー３２は低速で駆動を開始し、リカバリー処理は自動給紙ローラー３２が給紙動作を終了するまで待つ。そして、カートリッジホルダ３７ａ及び３７ｂはホームポジション４６に移動するように命令を受け、これにより、自動給紙ローラー３２とラインフィードモータ３４との係合は解除される（ステップＳ２１６３）。記録媒体は、その先端が１インチの７０／７２０だけ、プリントヘッド１００ａ及び１００ｂの第１のノズル位置を過ぎた位置にくるように送られる（ステップＳ２１６４）。このとき、記録媒体は印刷位置にあり、リカバリー処理からリターンする。
【０２６５】
＜４．３  給紙中のプリントヘッドのメインテナンス＞
上記説明及び図５Ａ乃至図５Ｃに示すように、キャリッジ容器３７ａ及び３７ｂの移動は、自動給紙ローラーとラインフィードローラー３４とを係合させるようにクラッチ部１４０を調整するために必要であり、これにより、自動給紙ローラー３２を駆動して、プリンタ１０に記録媒体を給紙している。従来のプリンタでは、プリントヘッドのクリーニングなど、他の印刷前タスクを行う前に記録媒体の給紙が終了するまで待機していた。このような構成では、カートリッジホルダ３７ａ及び３７ｂは記録媒体を給紙する間、自動給紙ローラー３２とラインフィードモータ３４とを係合させたり、係合を解除させるためにカートリッジホルダ３７ａ及び３７ｂを必要とする問題が給紙中に発生した場合に備えて、クラッチ部１４０の側に置かれていた。
【０２６６】
これに対し、本発明の好適な実施の形態によれば、自動給紙ローラー３２が適切な位置から自動給紙を開始したかどうかを判断し、さらに自動給紙動作が順調に進んでいるかどうかを判断する。従って、記録媒体の自動給紙が順調に進んでいる場合には、自動給紙の終了に先立って、プリントヘッドのクリーニングや保全などの印刷前タスクのためにカートリッジホルダ３７ａ及び３７ｂを使用することができる。
【０２６７】
この機能を達成するためにプリンタ１０により実施される具体的な処理は、図２１ＡのステップＳ２１１１乃至Ｓ２１１８で示す自動給紙動作により示されており、上述したとおりである。具体的には、自動給紙動作が順調に進んでいると判断された場合、図２１ＡのステップＳ２１１３において、カートリッジホルダ３７ａ及び３７ｂはホームポジション４６に戻される。処理は、カートリッジホルダ３７ａ及び３７ｂがホームポジション４６で止まるのを待つため、ホームポジション４６に戻る途中でプリントヘッド１００ａ及び１００ｂを拭く時間ができる。この後、プリントヘッド１００ａ及び１００ｂは、良好な印刷状態を保つために、予備吐出を行うように命令される（図２１ＡのステップＳ２１１８）。
【０２６８】
図２２は、プリントジョブにおいてプリンタ１０における記録媒体の最初の１枚を給紙する自動給紙処理実行中の、自動給紙ローラー３２、カートリッジホルダ３７ａ及び３７ｂ、プリントヘッド１００ａ及び１００ｂ、及びプリンタドライバ８４の機能関係を示すフローチャートである。ステップＳ２２０１で処理を開始し、ラインフィードモータの速度を図２１Ｄを参照して上述したようにして選択する。そして、プリントヘッド接続キャップ４７ａ及び４７ｂの状態をチェックして、それらが閉じているか否かを判断する（ステップＳ２２０２）。キャップ４７ａ及び４７ｂが閉じていれば、開くように命令する（ステップＳ２２０３）。その後、カートリッジホルダ３７ａ及び３７ｂはホームポジション４６へ移動するように命令され（ステップＳ２２０４）、プリントヘッド１００ａ及び１００ｂは予備吐出するように命令される（ステップＳ２２０５）。そして処理はステップＳ２２０６に戻り、キャリッジモータ３９は、自動給紙ローラー３２とラインフィードモータ３４とを係合させるためにカートリッジホルダ３７ａ及び３７ｂをクラッチ部１４０のところに移動するように命令を受ける。カートリッジホルダ３７ａ及び３７ｂは、ステップＳ２２０９で示すように、割り込みバックグラウンド処理の監視の下、移動を続ける。
【０２６９】
ステップＳ２２０７で、ラインフィードモータ３４は、自動給紙ローラー３２を介して記録媒体の給紙を開始する。ここで、給紙は、ステップＳ２２１０で示すように割り込みバックグラウンド処理の監視の下、続けられる。ステップＳ２２０８では、ステップＳ２２０９の割り込みバックグラウンド処理が、カートリッジホルダ３７ａ及び３７ｂがクラッチ部１４０のところに移動したことを示す割り込みを返すまで待機する。そして、ステップＳ２２１１に進み、キャリッジモータ３９は、カートリッジホルダ３７ａ及び３７ｂをホームポジション４６に移動するように指示され、ステップＳ２２１２ではプリントヘッド１００ａ及び１００ｂの拭き取りを監視する割り込みバックグラウンド処理を開始する。この後、自動給紙処理のための早期成功フラグがセットされているか否かを判断する（ステップＳ２２２０）。早期成功フラグが「偽」に設定されている場合、ステップＳ２２１３に進む。反対に、早期成功フラグが「真」に設定されている場合、ステップＳ２２２１乃至Ｓ２２２３に示すように、給紙状態リターンフラグをプリンタドライバ８４に送るために、ＣＰＵ９１の処理を中断する。そして、ステップＳ２２１３の直前に処理が進む。
【０２７０】
カートリッジホルダ３７ａ及び３７ｂをホームポジション４６に動かし、その間にプリントヘッド１００ａ及び１００ｂの拭き取り動作を行う割り込みバックグラウンド処理（ステップＳ２２１２）は、ステップＳ２２１３の前にカートリッジホルダ３７ａ及び３７ｂがホームポジション４６に達したことを示す割り込みを返す。そして、プリントヘッド１００ａ及び１００ｂの予備吐出がステップＳ２２１３で行われる。そしてステップＳ２２１４では、記録媒体の給紙を監視する割り込みバックグラウンド処理（ステップＳ２２１０）が記録媒体の給紙の終了を示す割り込みを返すまで待機する。
【０２７１】
記録媒体の給紙が完了したことを示す通知を受け取ると（ステップＳ２２１４）、この自動給紙処理の早期成功フラグが過去に検知されたかを判断する（ステップＳ２２１５）。早期成功フラグが過去に検知されている場合、この処理からリターンする（ステップＳ２２１９）。また、早期成功フラグが過去に検知されていない場合、ステップＳ２２１７及びＳ２２１８に示すように、給紙状態リターンフラグをプリンタドライバ８４に送るために、プリンタ１０のＣＰＵ９１の制御を中断する。そして、ステップＳ２２１９においてリターンする。このようにすることにより、給紙が順調に進んでいる場合に、カートリッジホルダ３７ａ及び３７ｂはプリントヘッド１００ａ及び１００ｂの拭き取り及び予備吐出などの印刷前タスクを、記録媒体の給紙と平行して実行することができる。従って、記録媒体給紙の完了から、印刷開始までに必要な時間を、自動給紙処理の信頼性及び遂行に有害な影響を与えることなく、短縮することができる。
【０２７２】
図２３は、プリンタ１０における自動給紙処理の実行を機能的に示すフローチャートであり、１枚の記録媒体の排紙に引き続いて記録媒体の次の１枚を給紙する場合について説明したものである。まず、前の記録媒体を排紙するために、ラインフィードモータ３４の速度を選択する（ステップＳ２３０１）。そして、ラインフィードモータ３４は、前の記録媒体の排紙を開始するように命令を受ける（ステップＳ２３０２）。この動作により、ステップＳ２３０７で示す前の記録媒体の排出を監視する割り込みバックグラウンド処理が始まる。次に、キャリッジモータ３９はカートリッジホルダ３７ａ及び３７ｂをホームポジション４６に移動するように命令を受け（ステップＳ２３０６）、この動作により、カートリッジホルダ３７ａ及び３７ｂの動きを監視する割り込みバックグラウンド処理が始まる。ここで、排紙が終了したことを示す割り込みが、前の記録媒体の排紙を監視する割り込みバックグラウンド処理から返されるまで待機し（ステップＳ２３０７）、割り込みを受け取ると、ステップＳ２３０４に進む。そして、排紙後に、次の記録媒体を給紙するか否かを判断し（ステップＳ２３０４）、しない場合には、ステップＳ２３０５でリターンする。
【０２７３】
排紙の後に、次の記録媒体の給紙を行うのであれば、現在の行送り速度が、自動給紙ローラー３２を駆動するためにクラッチ部１４０と係合するのに必要な速度と同じであるかどうかを判断する（ステップＳ２３０８）。行送り速度と同じではない場合、割り込みバックグラウンド処理を開始して、行送り速度が自動給紙ローラー３２を駆動するためにクラッチ部１４０と係合するのに必要な速度になるのを監視する（ステップＳ２３０９）。必要な速度になるまでステップＳ２３０８を繰り返し、必要な速度になったと判断されると、処理はステップＳ２３１０に進む。
【０２７４】
キャリッジモータ３９は、ステップＳ２３１０において、自動給紙ローラー３２とラインフィードモータ３４を係合させるために、カートリッジホルダ３７ａ及び３７ｂをクラッチ部１４０のところまで移動させるように命令を受ける。これを受けて、ステップＳ２３１１に示すようにカートリッジホルダ３７ａ及び３７ｂの動きは、割り込みバックグラウンド処理による制御の下、続けられる。ステップＳ２３１１のバックグラウンド処理から割り込みが返されると、ステップＳ２３１４において、割り込みバックグラウンド処理の監視をしつつ、記録媒体の給紙を進める。ステップＳ２３１２では、ステップＳ２３１１の割り込みバックグラウンド処理がカートリッジホルダ３７ａ及び３７ｂがクラッチ部１４０のところに到着し、自動給紙ローラー３２とラインフィードモータ３４が係合したことを示す割り込みを返すまで待つ。そして、ステップＳ２３１３に進み、キャリッジモータ３９はカートリッジホルダ３７ａ及び３７ｂをホームポジション４６に移動するように命令を受け、これにより、カートリッジホルダ３７ａ及び３７ｂがホームポジション４６へ移動し、その途中に、プリントヘッド１００ａ及び１００ｂの拭き取りが行われるのを監視する割り込みバックグラウンド処理（ステップＳ２３１６）が始まる。次に、早期成功フラグが自動給紙処理のために設定されているか否かを判断する（ステップＳ２３１５）。早期成功フラグが「偽」に設定されている場合にはステップＳ２３１８に進み、「真」に設定されている場合には、ステップＳ２３１７，Ｓ２３２０，Ｓ２３２１で示されるように、給紙状態をプリンタドライバ８４に送るためにプリンタ１０のＣＰＵ９１による制御を中断する。
【０２７５】
ステップＳ２３１６の、割り込みバックグラウンド処理は、カートリッジホルダ３７ａ及び３７ｂがホームポジション４６に到着したことを示す割り込みをステップＳ２３１８の前に返す。そしてプリントヘッド１００ａ及び１００ｂの予備吐出をステップＳ２３１８で行う。ステップＳ２３１９において、記録媒体の給紙を監視する割り込みバックグラウンド処理（ステップＳ２３１４）が記録媒体の給紙の完了を示す割り込みを返すまで待機する。記録媒体の給紙完了の通知を受けて（ステップＳ２３１９）、この自動給紙処理のための早期成功フラグが過去に検知されたかどうかを判断する（ステップＳ２３２２）。検知されている場合にはこの処理からリターンする（ステップＳ２３２６）。また、検知されていない場合には、ステップＳ２３２４及びＳ２３２５に示すように、給紙状態リターンフラグをプリンタドライバ８４に送信するために、プリンタ１０のＣＰＵ９１の制御を中断する（ステップＳ２３２３）。そして、ステップＳ２３２６においてリターンする。
【０２７６】
このように、図２２を参照にして上記説明した記録媒体の１枚目の給紙と同様に、信頼性及び遂行に有害な影響を与えることなく、記録媒体の給紙完了後にプリントヘッドの拭き取り及び予備吐出などの他の印刷前タスクを行うために必要な時間を短縮することができる。
【０２７７】
＜５．０  キャリッジの制御＞
このセクションでは、より速いキャリッジモータに対応するための本実施の形態のキャリッジモータ制御について説明する。
【０２７８】
＜５．１  マージン及び方向の制御＞
プリンタ１０のキャリッジモータ３９は、プリントヘッド１００ａ及び１００ｂがより高速に記録媒体を走査することで印刷速度を上げるために、通常のプリンタよりも高速なモータであることが好ましい。しかし、高速モータは動作開始時の速度が一定とならない傾向がある。速度が一定ではないために、画像が波打つなど、画質が落ちることがある。画像の波打ちは、例えば、チャートや表などの無彩色のグラフィック画像や、カラー画像等の連続画で特に目立つものである。しかし、適切にキャリッジモータを制御することで、速度のばらつきの影響を緩和することができる。
【０２７９】
簡単に説明すると、本実施の形態では、プリントデータの内容を判断し、印刷のためにプリントヘッドによる横方向走査をする際に、端部でクリティカルゾーンを用いる第１の横方向走査、または印刷でクリティカルゾーンを用いない第２の横方向走査のいずれかによりプリントデータの印刷を行うことにより速度のばらつきに対処する。第１または第２の横方向走査処理は、プリントデータに基づいて選択される。クリティカルゾーンとは、横方向走査でプリントヘッドを動かす場合に、安定しない領域のことである。
【０２８０】
好ましくは、クリティカルゾーンの大きさは速度のばらつきによる印刷の質の低下が明らかに見分けがつくようになる点と、見分けがつかなくなる点との距離に適合するように、プリントヘッドが取り付けられたプリントキャリッジの速度変化に伴う不一定さに基づいて決まる。
【０２８１】
また、現スキャンのためのプリントデータと前回のスキャンのためのプリントデータが、少なくともクリティカルゾーンにおいて連続したプリントデータであるかどうかを判断することが好ましい。現スキャンのためのプリントデータ及び前回のスキャンのためのプリントデータが連続するプリントデータではない場合、現スキャンでは、前回のスキャン方向と反対方向に第１の横方向走査処理を行って、印刷をする。現スキャンのためのプリントデータ及び前回のスキャンのためのプリントデータが連続するプリントデータである場合、現スキャンでは、前回のスキャン方向と同じ方向に第２の横方向走査処理を行って印刷をする。
【０２８２】
以下、更に詳しく説明する。図２７Ａは、孤立スキャンライン３００、連続画像３０１、及びカラー画像３０２を普通紙の記録媒体３０３上に印刷する、標準モード（つまり、ドラフトモードや、ベストモードではない）印刷のキャリッジ制御を説明するための概略図である。孤立スキャンライン３００は白領域３０５によって他の部分と分離されているもので、典型的な例としては、プリントヘッド１００ａまたは１００ｂが印刷可能な幅よりも狭いテキストなどがある。本実施の形態によれば、孤立スキャンライン３００は、スキャンマージンを追加することなく、両方向印刷３０４で印刷される。これらのスキャンラインは通常テキストであるために、速度のばらつきに起因する波打ちや、その他の画質の低下は目立ちにくい。従って、スキャンマージンの無い速い両方向印刷でも、充分に満足できる画質の画像を高速に印刷することができる。
【０２８３】
連続画像３０１は、印刷するために複数のスキャンラインを必要とする無彩色の画像であり、スキャンライン間に白領域がない。連続画像３０１の例としては、プリントヘッド１００ａまたは１００ｂが印刷可能な幅よりも広い、大きなフォントのテキスト画像や、表及びチャートを含む白黒またはグレースケール画像等がある。
【０２８４】
連続画像３０１がマージン無しの両方向印刷で印刷された場合、スキャンライン毎に記録媒体の互いに異なる反対端で、速度にばらつきが起こる。その結果、各スキャンラインの開始における速度のばらつきによる画質のゆがみが、前回及びその次のスキャンラインの垂直方向に隣り合ってゆがんでいない端部近辺で、より目立つことになる。この問題に対応するために、本実施の形態のプリンタ１０は、一方向印刷３０６を用いて連続画像を印刷する。更に、インクを記録媒体３０３に吐出する前に、モータの不安定動作の影響を無くすことができるように、それぞれのスキャンラインの前にスキャンマージン３０７を挿入する。印刷は一方向に行われるため、スキャンラインの左側に左マージン３０７のみを挿入すればよい。
【０２８５】
上記制御方法の長所は、クリティカルゾーンでの印刷を含む両方向印刷を、速度のばらつきに起因するゆがみが目立ちにくい、孤立（例えばテキスト）スキャンラインの印刷に用いることにより、印刷速度を上げている。クリティカルゾーンでの印刷を含まない一方向印刷は、連続画像のスキャンラインの印刷のために用いられるため、速度のばらつきによるゆがみが最も目立つ領域でのゆがみを緩和できる。
【０２８６】
カラー画像３０２については、図７のプリントヘッド６２などのカラープリントヘッドにより記録されるそれぞれのスキャンラインの幅は２３画素であり、これに対して、黒プリントヘッドでは１２７画素、カラープリントヘッドの黒ノズルでは６３画素である。従って、孤立または無彩色の連続画像を印刷する場合に比べて、カラープリントヘッドである大きさのカラー画像を印刷するためには、プリントヘッド１００ａ及び１００ｂで走査する回数がより多く必要である。一方向印刷では、非常に高画質の出力が望まれているのでなければ、このような印刷動作の速度が許容される以上に遅くなることもある。従って、カラー画像３０２を印刷する場合にも、両方向印刷３０９が行われる。両方向印刷が行われるために、プリントヘッド１００ａ及び１００ｂによる順方向（左から右方向）への走査前に左スキャンマージン３０７を挿入し、逆方向（右から左方向）への走査前に、右スキャンマージン３１０を挿入する。
【０２８７】
上記で説明したように、図２７Ａに示すスキャンマージンと走査方向の組み合わせは普通紙の記録媒体３０３上に標準モード印刷をする場合に適用可能である。他の印刷方向は、印刷モード、記録媒体のタイプ、プリントヘッドの構成、エラー拡散モードの異なる組み合わせに応じて得ることができる。これら異なる組み合わせおよびその結果得られる印刷方向は、図２７Ｃ乃至図２７Ｇを参照してあとで詳しく説明する。これらの異なる組み合わせを用いて連続画像及びカラー画像が記録される場合、一方向印刷の場合はスキャンマージン３０７をそれぞれのスキャンラインの前に挿入し、両方向印刷の場合は、スキャンマージン３０７及び３１０をそれぞれのスキャンラインの前に挿入する（マージン３０７は順方向スキャンラインの前に、マージン３１０は逆方向のスキャンラインの前に挿入される）ことが好ましい。
【０２８８】
図２７Ｂは、スキャンライン内に無彩色連続画像部分及びカラー画像部分の両方を含む場合のキャリッジ方向制御を説明する図である。図２７Ｂに示すように、無彩色連続画像部分は一方向に印刷することが好ましく、カラー画像部分は、両方向で印刷されることが好ましい。連続画像部分を一方向で印刷することにより、キャリッジモータの速度がのばらつきに起因する画像のゆがみが目立たなくなる。
【０２８９】
図７のプリントヘッド６２のようなプリントヘッドが用いられた場合、カラー画像部分ではプリントヘッドの各パスでカラーノズル２３本が用いられ、無彩色部分では黒ノズル４６本が用いられる。その結果、無彩色の領域のパス数はカラー領域のパス数よりも少なくて済むため、無彩色の領域を一方向に印刷することによるスピードダウンを吸収することができる。
【０２９０】
図２７Ｃ乃至図２７Ｇは、一連のプリントモードテーブルを示し、プリントモードテーブルは、プリントモード、記録媒体のタイプ、プリントヘッドの構成、及びエラー拡散モードの異なる組み合わせを用いて画像を印刷するための印刷方式（案）を含む。より詳しくは、図２７Ｃは高速エラー拡散のプリントモードテーブルであり、プリントヘッド１００ａ及び１００ｂで画像を印刷する時にプリンタ１０で用いる複数の印刷方式を含む。図２７Ｃは、それぞれの印刷方式について、６つの要素を示す。それらは、（１）印刷する画像のラスタ解像度、（２）印刷する画像の印刷解像度、（３）それぞれのスキャンラインを走査するために、プリントヘッド１００ａ及び１００ｂが通過する回数及び方向、（４）自動給紙（ＡＳＦ）速度、（５）行送り（ＬＦ）速度、（６）カートリッジホルダ（ＣＲ）の速度である。
【０２９１】
これら６つの要因は、画像の解像度を決定する、例えば、ドラフトモード、標準モード、高画質モードなどのプリントモードに応じて印刷方式毎に異なる。また、スタンダードモードまたは写真モード等の画質のモードによって異なり、さらに、普通、特殊１または特殊２等、記録媒体のタイプによっても異なる。図２７Ｄに示す速度特定テーブルは、それぞれのモードの自動給紙（ＡＳＦ）速度、行送り（ＬＦ）速度、及びカートリッジホルダ（ＣＲ）の速度について、一秒あたりのパルス数を定義している。図２７Ｅに示す記録媒体タイプテーブルは、普通、特殊１及び特殊２とに区分される記録媒体のタイプを提供している。例えば、「普通」カテゴリーは普通紙、バブルジェット紙、パンフレット紙、カードを含む。「特殊１」カテゴリーは高解像度紙（ＨＲ−１０１）を含み、「特殊２」カテゴリーはその他の記録媒体のタイプを含む。
【０２９２】
図２７Ｃに示す高速エラー拡散のプリントモードテーブルでは、プリントモード及び記録媒体の種類の様々な組み合わせに応じて位置合わせを行う、１８の異なる印刷方式に分かれている。例えば、標準プリントモードおよびスタンダード画質モードで特殊１の高解像度紙の使用を求める、位置合わせを行うプリントジョブがリクエストされた場合、印刷方式は６つの要因について以下の通り定義する。すなわち、（１）ラスタ解像度は３６０×３６０ｄｐｉ、（２）印刷解像度は７２０×７２０ｄｐｉ、（３）各スキャンラインを走査するためにプリントヘッド１００ａ及び１００ｂによる２回の通過を必要とし、両方向走査を行い、（４）ＡＳＦ速度は通常に設定され、（５）ＬＦ速度は通常に設定され、（６）カートリッジホルダＣＲ速度は低速に設定される。図２７Ｃに示される印刷方式いくつかは定義により使用することができない。そのような印刷方式には、例えば、写真画質のものをドラフトモードで印刷したり、特殊記録媒体をドラフトモードで用いるといったものがある。
【０２９３】
ある印刷方式は、図２７Ｆに示すサブ印刷方式（”１ｐａｓｓ＿Ｕ／Ｂ＊１”）の使用を求める。このサブ印刷方式では、１回の通過で各スキャンラインの印刷を行い、操作方向及び使用されるノズルのパターンはプリンタ１０に搭載されたプリントヘッド１００ａ及び１００ｂのタイプ及び現スキャンラインで印刷される画像のタイプにより決定される。すでに説明したように、プリンタ１０に搭載されたプリントヘッド１００ａ及び１００ｂのタイプはカラーインクプリントヘッド（「ＢＣ−２１ｅ」）、及び／または黒インクプリントヘッド（「ＢＣ−２３」）から選択された、２つのプリントヘッドのタイプを含むことができる。スキャンラインで印刷される画像のタイプは、テキストを印刷するときに用いられる「孤立黒」か、グラフィック画像などの黒画像の連続する部分を印刷する時に使用される「連続黒」か、カラー印刷の時に用いられる「カラー」である。
【０２９４】
例えば、標準解像度モード、スタンダード画質モードで、普通紙を用いた印刷リクエストのための印刷方式は、１ｐａｓｓ＿Ｕ／Ｂ＊１サブ印刷方式を示している。プリンタ１０がカラーインクプリントヘッドを１つと、黒インクプリントヘッドを１つプリントヘッド１００ａ及び１００ｂとして有し、現スキャンライン上で印刷する画像が連続する黒のグラフィック画像である場合、そのスキャンラインをプリントヘッド１００ａ及び１００ｂでプリントするためには１回の通過が求められる。更に、カラーインクプリントヘッドのカラーノズルが全く使用されない場合、カラーインクプリントヘッドの黒インク用の６３のノズルが一方向のみの印刷に使用され、黒インクプリントヘッドの１２７のノズルが順方向の印刷時にのみ使用される（一方向の走査は、順方向でも逆方向でも起こり得る）。従って、通過回数、印刷方向、及びノズルの選択は、質のよい画像を確実に印刷するために、プリンタ１０に搭載されたプリントヘッド１００ａ及び１００ｂのタイプ、現スキャンライン上に印刷する画像のタイプ、及び現プリントジョブでリクエストされたプリントモード及び記録媒体のタイプに基づいて印刷方式の一部として選択される。
【０２９５】
本実施の形態の特徴は図２７Ｆに特によく現れている。具体的には、孤立黒は、両方向で印刷され、連続黒は一方向で印刷され（プリントヘッドＢＣ−２１ｅとＢＣ−２３の組み合わせ）、そしてカラーは両方向で印刷される。
【０２９６】
図２７Ｇに通常エラー拡散のプリントモードテーブルを示す。このテーブルもそれぞれの印刷方式について６つの要因を提供している。すなわち、（１）印刷する画像のラスタ解像度、（２）印刷する画像の印刷解像度、（３）各スキャンラインを走査するために、プリントヘッド１００ａ及び１００ｂのパス数及び方向、（４）自動給紙の速度（ＡＳＦ）速度、（５）行送り（ＬＦ）速度、（６）カートリッジホルダ（ＣＲ）である。
【０２９７】
これら６つの要因は、画像の解像度を決定する、例えば、ドラフトモード、スタンダードモード、高画質モードなどのプリントモードに応じて印刷方式毎に異なる。また、スタンダードモードまたは写真モード等の画質のモードによって異なり、さらに、普通紙１、特殊１または特殊２等、記録媒体のタイプによっても異なる。従って、位置合わせを行わない印刷のための印刷方式は、プリントモード及び記録媒体のタイプの様々な組み合わせにより決定される。
【０２９８】
図２８は、印刷処理のための本実施の形態におけるプリントヘッドの動きを説明する図である。図２８は、キャリッジの位置と、３スキャンライン３１１，３１２，３１３のスキャンマージンを示している。以下の説明では、スキャンライン３１１を前のスキャンライン、スキャンライン３１２を現スキャンライン、そしてスキャンライン３１３を次のスキャンラインと呼ぶ。
【０２９９】
前のスキャンライン３１１では、プリントヘッド１００ａの印刷領域３１６として左端［Ａ］（Ａ＿Ｌ１）３１４及び右端［Ａ］（Ａ＿Ｒ１）３１５、プリントヘッド１００ｂの印刷領域３１９として左端［Ｂ］（Ｂ＿Ｌ１）３１７及び右端［Ｂ］（Ｂ＿Ｒ１）３１８、まとめられた印刷領域として領域左３２０と領域右３２１、そして加速領域３２２及び減速領域３２３が示されている。現スキャンライン３１２では、プリントヘッド１００ａの印刷領域３２６として左端［Ａ］（Ａ＿Ｌ２）３２４及び右端［Ａ］（Ａ＿Ｒ２）３２５、プリントヘッド１００ｂの印刷領域３２９として左端［Ｂ］（Ｂ＿Ｌ２）３２７及び右端［Ｂ］（Ｂ＿Ｒ２）３２８、まとめられた印刷領域として領域左３３０と領域右３３１、そして加速領域３３２及び減速領域３３３が示されている。更に、前のスキャンライン３１３は、プリントヘッド１００ａの印刷領域３３６として左端［Ａ］（Ａ＿Ｌ３）３３４及び右端［Ａ］（Ａ＿Ｒ３）３３５、プリントヘッド１００ｂの印刷領域３３９として左端［Ｂ］（Ｂ＿Ｌ３）３３７及び右端［Ｂ］（Ｂ＿Ｒ３）３３８、まとめられた印刷領域として領域左３４０と領域右３４１、そして加速領域３４２が示されている。
【０３００】
図２８に示す位置の値は、左から右へと大きくなっているので、小さい値の位置ほど、大きい値の位置よりも左側にあることになる。
【０３０１】
加速領域及び減速領域は、キャリッジモータ３９がスキャン速度まで加速またはスキャン速度から減速している間にプリントヘッド１００ａ及び１００が移動する距離を示す。これらの距離は、キャリッジモータ３９の２５ステップ分や、１６ｍｍといった定数で表現することが好ましい。
【０３０２】
図２８で示される印刷動作は、スキャンマージンを用いた両方向印刷の例を示している。詳しくは、プリントヘッド１００ａ及び１００ｂが前のスキャンライン３１１を印刷し終えた時、プリントヘッドは領域右３２１に位置している。その後プリントヘッドは領域右３２１から現スキャン行３１２の領域右３３１の右側まで、スキャンマージン３１０と加速領域３３２を足した分だけ動き、現スキャンライン３１２の印刷開始に備える。現スキャンライン３１２の印刷を終えた時、プリントヘッドは領域左３３０に位置している。プリントヘッドは領域左３３０から次のスキャンライン３１３の領域左３４０の左側まで、スキャンマージン３０７と加速領域３４２を足した分だけ動き、次のスキャンライン３１３の印刷開始に備える。
【０３０３】
図２８に示す印刷が一方向印刷である場合、プリントヘッド１００ａ及び１００ｂは前のスキャンライン３１１の印刷終了点である領域右３２１から現スキャンライン３１２の領域左３３０の左まで、スキャンマージン３０７と加速領域３３２を足した分だけ動く（図の左側に当たる）。
【０３０４】
次に、プリントヘッド１００ａ及び１００ｂを動かす場合のプリンタドライバ８４及びプリンタ制御部１１０（つまり、プリンタのファームウエア）の動作を説明する。
【０３０５】
（５．１．１  プリンタドライバの初期動作）
図２９は、本実施の形態においてプリンタドライバにより発行されるＳＫＩＰコマンドを説明するためのフローチャートである。この機能は、図２０のステップＳ２００８により呼び出され、垂直方向の印刷位置をスキップパラメータにより特定されるラスターラインの数分だけ記録媒体を送るために用いられる。引数０のＳＫＩＰコマンドは、プリンタ１０にセクション８．０で後述するノズル数変更予備吐出処理を行う指示を出すために用いられる。ある孤立スキャンラインから別の孤立スキャンラインに、例えば図２７Ａの白領域３０５を越えて移るためには、スキップ引数はプリントヘッド１００ａ及び１００ｂの印刷幅よりも広い距離に対応する。
【０３０６】
更に詳しく説明すると、まずステップＳ２９０１でスキップ引数が０行の行送りを指示しているかどうかを判断する。もしスキップ引数が０であれば、処理はステップＳ２９０２に進み、ノズル数変更予備吐出リクエストがプリンタ制御部１１０に送られる。この動作については、セクション９．０で詳細に後述する。引数が０でなければ、未実行のノズル数変更予備吐出リクエストがステップＳ２９０３で再送信され、ステップＳ２９０４で記録媒体はスキップラスター行分だけ行送りされる。
【０３０７】
適切なＳＫＩＰ処理を終えると、ＰＲＩＮＴコマンドがプリンタ８４により発行される（図２０参照）。図３０は、本実施の形態におけるＰＲＩＮＴコマンドを説明するためのフローチャートである。
【０３０８】
ステップＳ３００１において、領域左３３０を、左端［Ａ］３２４及び左端［Ｂ］３２７のいずれか小さい方と等しくすることにより、現スキャンライン３１２の領域左３３０を決定する。同様にステップＳ３００２において、領域右３３１を右端［Ａ］３２５及び右端［Ｂ］３２８のいずれか大きい方と等しくすることにより、現スキャンライン３１２の領域右３３１を決定する。
【０３０９】
ステップＳ３００３では、領域左３４０を左端［Ａ］３３４及び左端［Ｂ］３３７のいずれか小さい方と等しくすることにより、次のスキャンライン３１３の領域左３４０を決定する。同様にステップＳ３００４において、領域右３４１を右端［Ａ］３３５及び右端［Ｂ］３３８のいずれか大きい方と等しくすることにより、次のスキャンライン３１３の領域右３４１を決定する。
【０３１０】
ステップＳ３００１乃至Ｓ３００４で使用される左端及び右端の値はＥＤＧＥコマンドによって定義されるが、これについては図３２を参照にして後で詳しく説明する。
【０３１１】
ステップＳ３００５では、印刷方向、速度、スキャンマージン、自動トリガー遅延などの印刷情報が印刷動作を行うために格納される。印刷方向の設定については図３１を参照して、スキャンマージンの設定については図３３及び図３４を参照して、また、自動トリガー遅延の設定については図３５を参照して、詳しく後述する。
【０３１２】
ステップＳ３００６では、プリンタドライバ８４はプリンタ制御部１１０に対して、キャリッジタスクを初期化するように指示する。この動作については、図３６乃至図３８を参照して後で詳しく説明する。キャリッジタスクは記録媒体に対するをプリントヘッドの位置決め及び、走査を規定するもので、この間、プリントヘッドからインクが吐出される。キャリッジタスクの初期化後、ステップＳ３００７においてプリンタ制御部１１０が必要な処理及びプリンタドライバ８４との通信を行えるように２ｍｓ間待機する。そして、処理は図２０へリターンする。
【０３１３】
図３１は、本実施の形態においてプリンタドライバにより発行されるＤＩＲＥＣＴＩＯＮコマンドを説明するためのフローチャートである。ステップＳ３１０１において、ＤＩＲＥＣＴＩＯＮコマンドが現スキャンライン３１２のために呼び出されたかどうかを判断し、その場合には、現走査のための方向の情報をＤｉｒｅｃｔｉｏｎとして設定する。現スキャンライン３１２のためではない場合、ステップＳ３１０３においてそのＤＩＲＥＣＴＩＯＮコマンドが次のスキャンライン３１３のために呼び出されたかどうかを判断し、その場合、次のスキャンラインのための方向の情報をＮｅｘｔＤｉｒｅｃｔｉｏｎとして設定する。
【０３１４】
Ｄｉｒｅｃｔｉｏｎ及びＮｅｘｔＤｉｒｅｃｔｉｏｎは、順方向及び逆方向の走査を示す値を保持することができる。Ｄｉｒｅｃｔｉｏｎ及びＮｅｘｔＤｉｒｅｃｔｉｏｎのための値を判断するには、プリンタドライバ８４はまず、一方向印刷と両方向印刷のどちらが行われているかを判断する。一方向印刷または両方向印刷は、セクション６．０で説明するように、プリントモード、記録媒体のタイプ、画像のタイプ、プリントヘッドの構成、プリントヘッドのアライメントに基づいて判断される。一例では、図２７Ａを参照して上述したように、スタンダード画質プリントモードで普通紙に印刷する場合、連続画像には一方向印刷が用いられ、テキスト及びカラー画像に対しては両方向印刷が用いられる。
【０３１５】
一方向印刷が行われている場合、Ｄｉｒｅｃｔｉｏｎ及びＮｅｘｔＤｉｒｅｃｔｉｏｎは順方向印刷に設定される。また、両方向印刷が行われている場合、Ｄｉｒｅｃｔｉｏｎ及びＮｅｘｔＤｉｒｅｃｔｉｏｎは、現スキャンライン３１２は前のスキャンライン３１１の方向の反対方向、次のスキャンライン３１３は現スキャンライン３１２の反対方向となるように設定される。
【０３１６】
図３２は、本実施の形態においてプリンタドライバにより発行されるＥＤＧＥコマンドを説明するフローチャートである。ＥＤＧＥコマンドは、現スキャンライン及び次のスキャンラインの両方について、コラム位置単位で印刷位置の左端及び右端を特定する。プリンタドライバ８４は、入力したプリントデータに基づいてこれらの値を計算することが好ましい。
【０３１７】
ステップＳ３２０１において、ＥＤＧＥコマンドがプリントヘッド１００ａ（プリントヘッドＡ）のために呼び出されたか、それともプリントヘッド１００ｂ（プリントヘッドＢ）のために呼び出されたかを判断する。プリントヘッドＡのために呼び出された場合にはステップＳ３２０２に進み、ＥＤＧＥが現スキャンライン３１２のために呼び出されたか否かを判断し、その場合はステップＳ３２０３で現スキャンライン３１２の左端［Ａ］３２４及び右端［Ａ］３２５を設定する。そうでなければステップＳ３２０４においてＥＤＧＥが次のスキャンライン３１３のために呼び出されたかどうかを判断する。その場合、ステップＳ３２０５で次のスキャンライン３１３のための左端［Ａ］３３４及び右端［Ａ］３３５を設定する。
【０３１８】
また、ＥＤＧＥがプリントヘッドＢのために呼び出された場合、同様のステップＳ３２０６乃至ステップＳ３２０９により、現スキャンライン３１２のための左端［Ｂ］３２７及び右端［Ｂ］３２８、次のスキャンライン３１３のための左端［Ｂ］３３７及び右端［Ｂ］３３８を設定する。左端及び右端の値は、次のセクション５．１．２で詳述するように、プリンタ制御部１１０がプリントヘッド１００ａ及び１００ｂの動きを制御するために用いられる。
【０３１９】
図３３は、本実施の形態においてプリンタドライバによるスキャンマージンの決定を説明するフローチャートである。ステップＳ３３０１において、プリントモードがチェックされる。次のステップＳ３３０２では、プリントモードが連続またはカラーである場合に、スキャンマージンが必要であるかどうかを判断する。そして、図３１で決定した現スキャンライン３１２のＤｉｒｅｃｔｉｏｎが順方向である場合、ステップＳ３３０３からステップＳ３３０４へ進み、順方向のためのスキャンマージン３０７が設定される。また、Ｄｉｒｅｃｔｉｏｎが逆方向を示す場合、ステップＳ３３０３からステップＳ３３０５に進み、逆方向走査のためのスキャンマージン３１０が設定される。
【０３２０】
ステップＳ３３０２で、孤立スキャンラインの印刷時などのようにスキャンマージンが必要ではないと判断されると、ステップＳ３３０２からステップＳ３３０６に進む。そして図３１で決定した現スキャンライン３１２のＤｉｒｅｃｔｉｏｎが順方向である場合、ステップＳ３３０６からステップＳ３３０７に進み、順方向のスキャンマージンとして０（マージン無し）が設定される。また、Ｄｉｒｅｃｔｉｏｎが逆方向を示す場合は、ステップＳ３３０６からステップＳ３３０８に進み、逆方向のスキャンマージンとして０（マージン無し）が設定される。
【０３２１】
図３４は、本実施の形態においてプリンタドライバにより発行されるＮＥＸＴ＿ＭＡＲＧＩＮコマンドを説明するためのフローチャートである。ＮＥＸＴ＿ＭＡＲＧＩＮコマンドは、次のスキャンマージンの値をＳｃａｎＭａｒｇｉｎＬｅｆｔまたはＳｃａｎＭａｒｇｉｎＲｉｇｈｔの適切な方に格納する。ＳｃａｎＭａｒｇｉｎｌｅｆｔは、スキャンラインに挿入される次のスキャンマージンが順方向走査のための左スキャンマージンである場合に用いられ、ＳｃａｎＭａｒｇｉｎＲｉｇｈｔは、次のスキャンマージンが逆方向走査のための右スキャンマージンである場合に用いられる。ステップＳ３４０１では、次のスキャンライン３１３が順方向が逆方向かを判断し、判断に応じてステップＳ３４０２又はＳ３４０３でＳｃａｎＭａｒｇｉｎＬｅｆｔまたはＳｃａｎＭａｒｇｉｎＲｉｇｈｔを格納する。
【０３２２】
図３５は、本実施の形態においてプリンタドライバにより発行されるＡＴ＿ＤＥＬＡＹ（自動遅延）コマンドを説明するフローチャートである。自動遅延は、以下に図３９ａ、図３９ｂ、図４０乃至図４２を参照して説明するように、逆方向の印刷時に起こり得るサテライティング（後述）を緩和するために用いられる。このコマンドは、走査方向を順方向または逆方向に特定し、１０μｓ単位で最大２５５０μｓを最大として自動トリガー遅延時間を特定することにより、自動トリガー遅延を設定する。ステップＳ３５０１では、次のスキャンマージンが順方向のためのものか逆方向のためのものかを判断し、自動遅延のための値をＡｕｔｏＴｒｉｇｇｅｒＤｅｌａｙＬｅｆｔまたはＡｕｔｏＴｒｉｇｇｅｒＤｅｌａｙＲｉｇｈｔにそれぞれステップＳ３５０２又はＳ３５０３で格納する。
【０３２３】
（５．１．２  プリント制御動作）
図３６は、本実施の形態においてプリンタ制御部により実行されるキャリッジタスク２４４を説明するフローチャートである。キャリッジタスク２４４とプリンタ１０におけるその他のタスク間の通信は、図１８を参照して上述した。プリンタ１０では、キャリッジタスク２４４がプリンタ１０で印刷が行われている間にキャリッジ４１に沿ったプリントヘッド１００ａ及び１００ｂの走査を制御する。
【０３２４】
ステップＳ３６０１において、キャリッジタスク２４４はプリンタドライバ８４が移動コマンドまたはプリントコマンドをプリンタ１０に送ったか否かを判断する。移動コマンドもプリントコマンドも送られていない場合、図１８のエンジンコントロールタスク２４１にリターンする。移動コマンドを受信していた場合、ステップＳ３６０２でキャリッジタスク２４４は移動コマンドの引数に従って移動動作を実行し、その後、図１８のエンジンコントロールタスク２４１にリターンする。プリントコマンドを受信していた場合、印刷処理のためにステップＳ３６０４に移り、ステップＳ３６０５で処理が開始される。
【０３２５】
ステップＳ３６０５では、キャリッジタスク２４４はプリントヘッド１００ａ及び１００ｂの動きがスキャンラインの終わりで止まるまで待機する。その後ステップＳ３６０７に進み、スキャン予備吐出処理を行うが、この処理についてはセクション９．０で詳細に後述する。
【０３２６】
スキャン予備吐出処理を終えるとステップＳ３６０８に進み、図３１で説明したようにＤＩＲＥＣＴＩＯＮコマンドを介してプリンタドライバ８４により設定されたＤｉｒｅｃｔｉｏｎを調べることにより、現スキャンライン３１２の走査方向を判断する。走査方向が順方向である場合はステップＳ３６０９に進み、走査方向が逆方向である場合はステップＳ３６１２に進む。
【０３２７】
走査方向が順方向である場合、ステップＳ３６０９において現スキャンライン３１２の領域左３３０からＣｒＳｔａｒｔＰｏｓＬを算出する。ＣｒＳｔａｒｔＰｏｓＬは記録媒体の次の順方向の走査のためのプリントヘッドのスタート位置を示す。ステップＳ３６１０において、キャリッジタスク２４４はプリントヘッドの現在位置ＣｒＰｏｓｉｔｉｏｎがＣｒＳｔａｒｔＰｏｓＬからキャリッジモータ３９が加速する距離であるＲａｍｐＵｐを差し引いた値以下であるかどうかを判断する。そうではない場合、プリントヘッドはＣｒＳｔａｒｔＰｏｓＬからＲａｍｐＵｐを差し引いた値の右に位置している。従って、キャリッジタスク２４４はステップＳ３６１１において、プリントヘッドをＣｒｓｔａｒｔＰｏｓＬからＲａｍｐＵｐを差し引いた値に対応する位置まで左に動かす。このように、プリントヘッドをスキャンラインのスタート位置まで動かすので、処理はステップＳ３６０７に戻り、走査が開始される前に必要な予備吐出処理を実行する。ステップＳ３６０７乃至Ｓ３６１１はＣｒＰｏｓｉｔｉｏｎがＣｒＳｔａｒｔＰｏｓＬからＲａｍｐＵｐを差し引いた値以下になるまで繰り返され、そうなった場合、プリントヘッドは順方向スキャンラインのスタート位置にあることになる。そして処理はステップＳ３６１５に進む。
【０３２８】
印刷方向が逆方向である場合、ステップＳ３６１２において現スキャンライン３１２の領域右３３１からＣｒＳｔａｒｔＰｏｓＲを算出する。ＣｒＳｔａｒｔＰｏｓＲは記録媒体の次の逆方向の走査のためのプリントヘッドのスタート位置を示す。ステップＳ３６１３において、キャリッジタスク２４４はプリントヘッドの現在位置ＣｒＰｏｓｉｔｉｏｎがＣｒＳｔａｒｔＰｏｓＲにキャリッジモータ３９が加速する距離であるＲａｍｐＵｐを加えた値以上であるかどうかを判断する。そうではない場合、プリントヘッドはＣｒＳｔａｒｔＰｏｓＬとＲａｍｐＵｐを加算した値の左に位置している。従って、キャリッジタスク２４４はステップＳ３６１４において、プリントヘッドをＣｒｓｔａｒｔＰｏｓＲにＲａｍｐＵｐを加えた値に対応する位置まで右に動かす。このように、プリントヘッドをスキャンラインのスタート位置まで動かすので、処理はステップＳ３６０７に戻り、走査が開始される前に必要な予備吐出処理を実行する。ステップＳ３６０７、Ｓ３６０８、Ｓ３６１２乃至Ｓ３６１４はＣｒＰｏｓｉｔｉｏｎがＣｒＳｔａｒｔＰｏｓＲにＲａｍｐＵｐを加えた値以上になるまで繰り返され、そうなった場合、プリントヘッドは逆方向スキャンラインのスタート位置にあることになる。そして処理はステップＳ３６１５に進む。
【０３２９】
ステップＳ３６１５において、印刷情報を取り出す。この印刷情報は、図３０に示すように、プリンタドライバ８４からのＰＲＩＮＴコマンドに応じてプリンタ制御部１１０により格納されている。自動トリガー遅延、インク滴のサイズ、ヒートパルス制御、及びバッファ制御などの印刷情報の一部は、ステップＳ３６１６においてプリンタ制御部１１０で実行される熱制御ハンドラ２５４などの別の対応するタスクに送られる。
【０３３０】
ステップＳ３６１７において、キャリッジ制御パラメータが準備される。この制御パラメータは、キャリッジモータ３９を制御するキャリッジモータドライバ３９ａを制御するために用いられる。制御パラメータの例としては、制御方法（半分／全部／４分の１）、ＲａｍｐＵｐテーブル、ＲａｍｐＤｏｗｎテーブル、ＲａｍｐＵｐＳｔｅｐｓ、ＣｏｎｓｔａｎｔＳｔｅｐｓ、ＲａｍｐＤｏｗｎＳｔｅｐｓ、ＣｒＨｅａｔＳｔａｒｔＰｏｓｉｔｉｏｎ、ＣｒＨｅａｔＥｎｄＣｏｕｎｔ、ＣｒＳｃａｎＥｎｄＰｏｓｉｔｉｏｎ、ＣｒＳｔｏｐＰｏｓｉｔｉｏｎなどを含む。
【０３３１】
キャリッジモータはステップＳ３６１８で動作を開始し、プリンタ制御部１１０により制御される自動トリガー機構により、プリントヘッド１００ａ及び１００ｂはキャリッジモータ２９により記録媒体を走査しながら、インクを吐出する。このトリガー機構については、図４０乃至図４２を参照して、後で詳細に説明する。
【０３３２】
キャリッジモータの動作が開始すると、ステップＳ３６１９で両方向印刷または一方向印刷のいずれが用いられているかを判断する。標準モードでの印刷の場合、印刷のタイプがプリントモード（例えば、孤立、連続、またはカラー）に基づいて判断される。図２７Ｃ乃至２７Ｇを参照して上述したように、印刷のタイプは記録媒体のタイプ、プリントヘッドの構成、エラー拡散モードなどにも依存する。両方向印刷が用いられている場合、処理は図３７に示すキャリッジスキャン制御１を行うためにステップＳ３６２０に進む。一方向印刷の場合、図３８に示すキャリッジスキャン制御２を行うためにステップＳ３６２１に進む。
【０３３３】
図３７は、図３６のキャリッジタスク２４４により呼び出される、両方向印刷のためのキャリッジスキャン制御１を説明するためのフローチャートである。
【０３３４】
キャリッジタスク２４４はステップＳ３７０１において、現走査のＤｉｒｅｃｔｉｏｎが順方向（左）で次の走査のためのＮｅｘｔＤｉｒｅｃｔｉｏｎが逆方向（右）であるかどうかを判断する。そうである場合、ステップＳ３７０２乃至Ｓ３７０７を実行する。そうでなければ、キャリッジタスク２４４はステップＳ３７０８において、現走査のＤｉｒｅｃｔｉｏｎが逆方向（右）で次の走査のためのＮｅｘｔＤｉｒｅｃｔｉｏｎが順方向（左）であるかどうかを判断する。そうである場合、ステップＳ３７０９乃至Ｓ３７１４を実行する。
【０３３５】
現走査が順方向の場合、次のスキャンライン３１３のためのＣｒＳｔａｒｔＰｏｓＲを、次のスキャンライン３１３の領域右３４１を基にしてステップＳ３７０２で算出する。ステップＳ３７０３において、ＣｒＳｔａｒｔＰｏｓＲと、ＳｃａｎＭａｒｇｉｎＲｉｇｈｔとＲａｍｐＵｐとを加算することによりＴｅｍｐＮｅｗＰｏｓを算出する。ＳｃａｎＭａｒｇｉｎＲｉｇｈｔはＮＥＸＴ＿ＭＡＲＧＩＮコマンド（図３４参照）に応じてプリンタ制御部１１０により算出された情報の一部であることが好ましい。マージンが次の逆方向走査の前に挿入される場合、ＳｃａｎＭａｒｇｉｎＲｉｇｈｔはマージンのサイズを保持する。マージンを挿入しない場合、ＳｃａｎＭａｒｇｉｎＲｉｇｈｔはマージン無し（０）を示す。
【０３３６】
ステップＳ３７０４で、キャリッジタスク２４４はＴｅｍｐＮｅｗＰｏｓが、プリントヘッド１００ａ及び１００ｂの右方向の最大移動範囲であるＭａｘＰｏｓよりも小さいかどうかを判断する。ＴｅｍｐＮｅｗＰｏｓがＭａｘＰｏｓよりも小さくない場合、ＴｅｍｐＮｅｗＰｏｓはＭａｘＰｏｓより右側の、移動範囲外であることになる。従って、ステップＳ３７０５においてＴｅｍｐＮｅｗＰｏｓはＭａｘＰｏｓと同じ値に設定される。ステップＳ３７０４及びＳ３７０５の後、ＴｅｍｐＮｅｗＰｏｓは、スキャンマージン及びモータ加速距離を考慮した、次の（逆方向の）スキャンラインの開始位置と同じになる。
【０３３７】
次に、ステップＳ３７０６で、ＣｒＳｃａｎＥｎｄＰｏｓがＴｅｍｐＮｅｗＰｏｓよりも小さいかどうかを判断する。ＣｒＳｃａｎＥｎｄＰｏｓは、現（順方向の）スキャンライン印刷終了後の、プリントヘッド１００ａ及び１００ｂの位置である。従って、ＣｒＳｃａｎＥｎｄＰｏｓがＴｅｍｐＮｅｗＰｏｓよりも小さい場合、次の逆方向のスキャンラインが始まる位置よりも手前で現順方向のスキャンラインが終わったことになる。この場合、ステップＳ３７０７において、ＣｒＳｃａｎＥｎｄＰｏｓをＴｅｍｐＮｅｗＰｏｓに更新することにより、次のスキャンラインの開始位置まで現スキャンラインを延長する。
【０３３８】
また、現スキャンラインが逆方向の場合、次のスキャンライン３１３のための領域左３４０から、次のスキャンライン３１３のＣｒＳｃａｎＳｔａｒｔＰｏｓＬをステップＳ３７０９において算出する。そしてステップＳ３７１０においてＣｒＳｔａｒｔＰｏｓＬからＳｃａｎＭａｒｇｉｎＬｅｆｔおよびＲａｍｐＵｐを差し引くことにより、ＴｅｍｐＮｅｗＰｏｓを算出する。ＳｃａｎＭａｒｇｉｎＬｅｆｔはＮＥＸＴ＿ＭＡＲＧＩＮコマンド（図３４参照）に応じてプリンタ制御部１１０により計算された情報の一部であることが好ましい。マージンを次の順方向走査の前に挿入する場合、ＳｃａｎＭａｒｇｉｎＬｅｆｔはマージンのサイズを保持し、マージンを挿入しない場合、ＳｃａｎＭａｒｇｉｎＬｅｆｔはマージン無し（０）を示す。
【０３３９】
ステップＳ３７１１で、キャリッジタスク２４４はＴｅｍｐＮｅｗＰｏｓが、プリントヘッド１００ａ及び１００ｂの左方向の最大移動範囲であるＭｉｎＰｏｓよりも大きいかどうかを判断する。ＴｅｍｐＮｅｗＰｏｓがＭｉｎＰｏｓよりも大きくない場合、ＴｅｍｐＮｅｗＰｏｓはＭｉｎＰｏｓより左側の、移動範囲外であることになる。従って、ステップＳ３７１２においてＴｅｍｐＮｅｗＰｏｓは ＭｉｎＰｏｓと同じ値に設定される。ステップＳ３７１１及びＳ３７１２の後、ＴｅｍｐＮｅｗＰｏｓは、スキャンマージン及びモータ加速距離を考慮した、次の（順方向の）スキャンラインの開始位置と同じになる。
【０３４０】
次に、ステップＳ３７１３で、ＣｒＳｃａｎＥｎｄＰｏｓがＴｅｍｐＮｅｗＰｏｓよりも大きいかどうかを判断する。ＣｒＳｃａｎＥｎｄＰｏｓは、現（逆方向の）スキャンラインの印刷終了後の、プリントヘッド１００ａ及び１００ｂの位置である。従って、ＣｒＳｃａｎＥｎｄＰｏｓがＴｅｍｐＮｅｗＰｏｓよりも大きい場合、次の順方向のスキャンラインが始まる位置よりも手前で現逆方向のスキャンラインが終わったことになる。この場合、ステップＳ３７１４において、ＣｒＳｃａｎＥｎｄＰｏｓをＴｅｍｐＮｅｗＰｏｓに更新することにより、次のスキャンラインの開始位置まで現スキャンラインを延長する。
【０３４１】
図３８は、図３６のキャリッジタスク２４４により呼び出される、一方向印刷のためのキャリッジスキャン制御２を説明するためのフローチャートである。
【０３４２】
ステップＳ３８０１においてキャリッジタスク２４４は、現走査のＤｉｒｅｃｔｉｏｎが順方向（左）で次の走査のためのＮｅｘｔＤｉｒｅｃｔｉｏｎが順方向（左）であるかどうかを判断する。その場合、ステップＳ３８０２乃至Ｓ３８０７を実行する。そうでなければ、キャリッジタスク２４４はステップＳ３８０８において、現走査のＤｉｒｅｃｔｉｏｎが逆方向（右）で次の走査のためのＮｅｘｔＤｉｒｅｃｔｉｏｎが逆方向（右）であるかどうかを判断する。その場合、ステップＳ３８０９乃至Ｓ３８１４を実行する。
【０３４３】
現走査が順方向の場合、次のスキャンライン３１３のためのＣｒＳｔａｒｔＰｏｓＬを、次のスキャンライン３１３の領域左３４０を基にしてステップＳ３８０２で算出する。ステップＳ３８０３において、ＣｒＳｔａｒｔＰｏｓＬから、ＳｃａｎＭａｒｇｉｎＬｅｆｔとＲａｍｐＵｐとを差し引くことによりＴｅｍｐＮｅｗＰｏｓを算出する。ＳｃａｎＭａｒｇｉｎＬｅｆｔはＮＥＸＴ＿ＭＡＲＧＩＮコマンド（図３４参照）に応じてプリンタ制御部１１０により算出されることが好ましい。マージンが次の走査の前に挿入される場合、ＳｃａｎＭａｒｇｉｎＬｅｆｔはマージンのサイズを保持する。マージンを挿入しない場合、ＳｃａｎＭａｒｇｉｎＬｅｆｔはマージン無し（０）を示す。
【０３４４】
ステップＳ３８０４で、キャリッジタスク２４４はＴｅｍｐＮｅｗＰｏｓが、プリントヘッド１００ａ及び１００ｂの左方向の最大移動範囲であるＭｉｎＰｏｓよりも大きいかどうかを判断する。ＴｅｍｐＮｅｗＰｏｓがＭｉｎＰｏｓよりも大きくない場合、ＴｅｍｐＮｅｗＰｏｓはＭａｘＰｏｓより左側の、移動範囲外であることになる。従って、ステップＳ３８０５においてＴｅｍｐＮｅｗＰｏｓはＭｉｎＰｏｓと同じ値に設定される。ステップＳ３８０４及びＳ３８０５の後、ＴｅｍｐＮｅｗＰｏｓは、スキャンマージン及びモータ加速距離を考慮した、次の（順方向の）スキャンラインの開始位置と同じになる。
【０３４５】
次に、ステップＳ３８０６で、キャリッジ制御は、現スキャンラインが終了するまで待つ。そしてステップＳ３８０７において、キャリッジ制御はプリントヘッド１００ａ及び１００ｂを次の順方向のスキャンライン開始のために、ＴｅｍｐＮｅｗＰｏｓに動かし、図３６にリターンする。
【０３４６】
また逆方向への走査の場合、次のスキャンライン３１３のための領域右３４１から、次のスキャンライン３１３のＣｒＳｃａｎＳｔａｒｔＰｏｓＲをステップＳ３８０９において算出する。そしてステップＳ３８１０においてＣｒＳｔａｒｔＰｏｓＲに、ＳｃａｎＭａｒｇｉｎＲｉｇｈｔおよびＲａｍｐＵｐを加えることにより、ＴｅｍｐＮｅｗＰｏｓを算出する。ＳｃａｎＭａｒｇｉｎＲｉｇｈｔはＮＥＸＴ＿ＭＡＲＧＩＮコマンドに応じてプリンタ制御部１１０により計算されることが好ましい（図３４参照）。マージンを次の順方向走査の前に挿入する場合、ＳｃａｎＭａｒｇｉｎＲｉｇｈｔはマージンのサイズを保持し、マージンを挿入しない場合、ＳｃａｎＭａｒｇｉｎＲｉｇｈｔはマージン無し（０）を示す。
【０３４７】
ステップＳ３８１１でキャリッジタスク２４４はＴｅｍｐＮｅｗＰｏｓが、プリントヘッド１００ａ及び１００ｂの右方向の最大移動範囲であるＭａｘＰｏｓよりも小さいかどうかを判断する。ＴｅｍｐＮｅｗＰｏｓがＭａｘＰｏｓよりも小さくない場合、ＴｅｍｐＮｅｗＰｏｓはＭａｘＰｏｓより右側の、移動範囲外であることになる。従って、ステップＳ３８１２においてＴｅｍｐＮｅｗＰｏｓは ＭａｘＰｏｓと同じ値に設定される。ステップＳ３８１１及びＳ３８１２の後、ＴｅｍｐＮｅｗＰｏｓは、スキャンマージン及びモータ加速距離を考慮した、次の（逆方向の）スキャンラインの開始位置と同じになる。
【０３４８】
次に、ステップＳ３８１３で、キャリッジ制御は、現スキャンラインが終了するまで待つ。そしてステップＳ３８１４において、キャリッジ制御はプリントヘッド１００ａ及び１００ｂを次の逆方向のスキャンライン開始のために、ＴｅｍｐＮｅｗＰｏｓに動かし、図３６にリターンする。
【０３４９】
＜５．２  自動インク吐出及びサテライティング制御＞
図３９ａ及び図３９ｂは、本実施の形態におけるサテライティング制御を示す図である。図３９ａはサテライティング、具体的には、プリントヘッドで記録媒体を高速で走査する場合に、インクをプリントヘッドから吐出することで起こる可能性のある画質低下を示す図である。一画素を印刷するためにインクジェットプリントヘッドから主要なインク滴が吐出されるとき、小さいサテライト滴も一緒に吐出されることがしばしばある。インクジェットプリントヘッドは、プリントヘッドが記録媒体を順方向にスキャンする場合に、サテライト滴が主要インク滴と重なるように、記録媒体に対してわずかに傾けるのが普通である。しかし、逆方向にスキャンする場合、この傾きによりサテライト滴が主要インク滴の端近くまたは完全に離れた場所に付着する傾向があり、結果として、逆方向走査の場合、小さいサテライト滴は記録されたそれぞれの画素の隣りに付着することになる。
【０３５０】
図３９ａは、順方向走査中にインクの吐出により印刷された画素３５１と、逆方向走査中にインクの吐出により印刷された画素３５２を示す。画素３５２の横にはサテライト滴が付着し、縦並び方向の画素の左側にギザギザ３５５を作っている。ギザギザの左辺３５５は、特に、連続画（無彩色のグラフィック画像）においては、明らかに画質を低下させることになる。
【０３５１】
図３９ｂは、サテライティングによる画質低下を軽減するための、本実施の形態の印刷された画素を示す。
【０３５２】
サテライティングによる画質低下は、プリントデータに基づくプリントヘッドの順方向及び逆方向の往復走査による記録媒体上への順方向及び逆方向印刷について、対処することができる。本実施の形態によれば、プリントデータに基づいてプリントヘッドの正逆往復走査の一方向で印刷し、正逆往復走査のもう一方の方向では、プリントデータが前述の方向で印刷された垂直方向に一致する画素の位置から横方向に所定距離ずれるように、プリントデータを印刷する。この所定距離は、印刷された画素の大きさの１／４であることが好ましい。横方向にシフトすることにより、特に連続画像データを印刷する際に、サテライティングの影響をマスクすることができる。
【０３５３】
図３９ｂにおいて、逆方向走査中に印刷された画素３６２は、順方向走査中に印刷された画素３６１から、１／４画素分の遅延として示されているＡＴ＿ＤＥＬＡＹ３６０分だけオフセットされている。その結果、印刷された画素列のばらつきは、左側３６５と右側３６６に分離される。オフセットすることによりサテライト滴をマスクする効果があり、ばらつきが目立ちにくいように描画される。
【０３５４】
上述の通り、サテライティングは連続画像データの場合に目立ちやすい。従って、本発明の実施の形態においては、上記のような画素のシフトは、連続画像を逆方向走査で印刷するときに限って行う。そして、画素シフトは孤立の（例えばテキスト）画像や、カラー画像に対しては行わないことが好ましい。
【０３５５】
図４０乃至図４２は、自動インク吐出で画素を逆方向に印刷する際に遅延を行う場合の、プリントヘッドによる記録媒体スキャン中の自動インク吐出を説明するための図である。プリンタドライバ８４からのＡＴ＿ＤＥＬＡＹコマンドは、逆方向のスキャンラインに対しては、画素の大きさの１／４に対応する自動トリガー遅延を設定し、順方向のスキャンラインに対しては、自動トリガー遅延０を設定する。
【０３５６】
図４０は、本実施の形態において、プリンタ制御部により実施されるキャリッジモータの動作開始を説明するためのフローチャートである。図３６に示すキャリッジタスク処理のステップＳ３６１８からＣＲ  ＭＯＴＯＲ  ＳＴＡＲＴコマンドを受け取る。これに応じて、キャリッジモータ割り込みのためのハードウエアのタイマをステップＳ４００１でスタートさせる。このハードウエアタイマは図４１及び図４２を参照して後述するように、キャリッジモータ制御をするために使用される。キャリッジモータドライバ３９ａはステップＳ４００２で動作を開始し、ステップＳ４００３でルックアップテーブルを更新する。このルックアップテーブルは、時間を定義したり、キャリッジモータを駆動するための位相電流モードを設定するといったキャリッジモータ制御中に使用される。そして図３６にリターンする。
【０３５７】
図４１は、本実施の形態において、プリンタ制御部により実施されるキャリッジ割り込み処理を説明するためのフローチャートである。この処理は、図４０のステップＳ４００１で開始される。ステップＳ４１０１において割り込みが起きると、キャリッジ割り込み処理Ｓ４１０２に入る。
【０３５８】
図４１の割り込み処理では、ステップＳ４１０３において、モータ３９が加速中であるかどうかを判断する。モータ３９が加速中である場合、ステップＳ４１０４でモータが目標速度に達するように駆動する。プリントヘッド１００ａ及び１００ｂの現在位置を示すＣｒＰｏｓｉｔｉｏｎはステップＳ４１０５で更新され、キャリッジモータ制御のためのカウンター及びルックアップテーブルはステップＳ４１０６で更新される。
【０３５９】
モータ３９が加速していない場合、ステップＳ４１０７でモータが定速領域（つまり、印刷領域）で動作しているかどうかを判断する。モータが定速領域で動作している場合、ステップＳ４１０８及びＳ４１０９でモータを駆動し、ＣｒＰｏｓｉｔｉｏｎを更新する。そしてステップＳ４１１０で、プリントヘッドで記録媒体をスキャンしながらプリントヘッドからインクを吐出するように、図４２を参照して詳細に後述する自動トリガー処理を開始する。そして、キャリッジモータ制御のためのカウンター及びルックアップテーブルをステップＳ４１１１で更新する。
【０３６０】
ステップＳ４１１２において、モータ３９が減速しているかどうかを判断し、減速している場合には、ステップＳ４１１３に進む。ステップＳ４１１３でモータ３９は駆動されて、モータのＣｒＰｏｓｉｔｉｏｎはステップＳ４１１４で更新され、キャリッジモータ制御のためのカウンター及びルックアップテーブルをステップＳ４１１５で更新する。
【０３６１】
ステップＳ４１１２でモータ３９が減速していないと判断された場合、モータ３９は停止している。従って、モータ制御はステップＳ４１１６で終了し、モータ割り込みのためのハードウエアタイマも止まる。
【０３６２】
図４２は、本実施の形態において、サテライティングをマスクするために、プリンタ制御部により行われる自動トリガー遅延を含む、プリントヘッドのノズルの自動トリガーを説明するフローチャートである。自動トリガーはプリンタ制御部１１０により行うことが好ましく、また自動トリガー遅延は、図３５を参照して上述したように、プリンタドライバ８４からＡＴ＿ＤＥＬＡＹコマンドによりプリンタ制御部１１０へ提供することが好ましい。本実施の形態によれば、プリンタドライバ８４は順方向走査の場合には自動トリガー遅延を０に設定し、逆方向走査の場合にはプリントヘッド１００ａ及び１００ｂの動作タイミングを画素の大きさの１／４に対応する時間分遅延する。
【０３６３】
図４２のステップＳ４２０１において、プリンタ制御部１１０は、プリントヘッドのノズルが加熱されているかどうかを判断する。加熱されている場合、プリンタ制御部１１０は、プリントヘッドが記録媒体をスキャンしながらインクを吐出するようにプリントヘッドのノズルを自動的に駆動する。そしてステップＳ４２０２において、ＣｒＨｅａｔＥｎｄＣｏｕｎｔ［Ａ］が０であるかどうかを判断する。ＣｒＨｅａｔＥｎｄＣｏｕｎｔ［Ａ］が０でない場合、ステップＳ４２０３においてその値を減らす。同様に、ＣｒＨｅａｔＥｎｄＣｏｕｎｔ［Ｂ］が１であるかどうかをステップＳ４２０４で判断し、ＣｒＨｅａｔＥｎｄＣｏｕｎｔ［Ｂ］が０でない場合には、ステップＳ４２０５でその値を減らす。
【０３６４】
ステップＳ４２０６において、ＣｒＨｅａｔＥｎｄＣｏｕｎｔ［Ａ］及びＣｒＨｅａｔＥｎｄＣｏｕｎｔ［Ｂ］が両方とも０であるかどうかを判断し、０である場合には、プリンタ制御部１１０の熱制御レジスタをリセットし、加熱を停止する。加熱を停止すると、インクはプリントヘッドから吐出されない。
【０３６５】
ステップＳ４２０１で、自動トリガー制御がキャリッジ割り込み制御により呼び出されたときに加熱されていない場合には、ステップＳ４２０９に進む。ステップＳ４２０９において、プリンタ制御部１１０は現走査方向が順方向（左）であるかどうかをプリンタドライバ８４からのＤＩＲＥＣＴＩＯＮコマンドに基づいて判断する。順方向である場合、ステップＳ４２１０及びＳ４２１１において現在のプリントヘッドの位置を示すＣｒＰｏｓｉｔｉｏｎがプリントヘッドＡまたはＢのＣｒＨｅａｔＳｔａｒｔＰｏｓ以上であるかどうかを判断し、以上である場合にはステップＳ４２１２乃至Ｓ４２１４の処理を行う。
【０３６６】
ステップＳ４２１２では、ソフトウエアのループにより自動トリガー遅延を自動トリガー制御に導入する。遅延時間は、プリンタドライバ８４によりＡＴ＿ＤＥＬＡＹコマンドにより設定される。しかし、ステップＳ４２１２は現走査方向が順方向である場合にのみ実施されるので、本実施の形態においてはＡＴ＿ＤＥＬＡＹにより設定される遅延は０（マージン無し）であることが好ましい。従って、処理はすぐにステップＳ４２１３及びＳ４２１４に進み、記録媒体を走査中のプリントヘッドによるインクの自動吐出を行えるように自動トリガー及び加熱が開始される。
【０３６７】
ステップＳ４２０９において、現走査方向が順方向ではない場合、処理はステップＳ４２１５に進み、現走査方向が逆方向（右）であるかどうかを判断する。逆方向の場合、ステップＳ４２１６及びＳ４２１７において現在のプリントヘッドの位置であるＣｒＰｏｓｉｔｉｏｎがプリントヘッドＡまたはＢのＣｒＨｅａｔＳｔａｒｔＰｏｓ以下であるかどうかを判断し、以下である場合には、ステップＳ４２１８及びＳ４２１９の処理を行う。
【０３６８】
ステップＳ４２１８では、ソフトウエアのループにより自動トリガー遅延を自動トリガー制御に導入する。遅延時間は、プリンタドライバ８４によりＡＴ＿ＤＥＬＡＹコマンドにより設定される。逆方向走査で印刷される画素の位置をオフセットするために、プリンタドライバ８４は、プリントヘッド１００ａ及び１００ｂが画素の大きさの１／４に対応する時間に遅延を設定することが好ましい。遅延後、すぐにステップＳ４２１９及びＳ４２２０へ進み、プリントヘッドが記録媒体をスキャンしながらインクを自動吐出するように、自動トリガー及び加熱動作が開始される。
【０３６９】
上記構成によれば、逆方向走査では画素の印刷を遅延するために、遅延した画素のサテライト滴をマスクすることができる。
【０３７０】
＜６．０  ヘッド位置合わせに基づくプリンタ制御＞
本セクションでは、マルチプリントヘッドプリンタを用いる本実施の形態における印刷システムについて説明をする。この印刷システムでは、プリントヘッドが効果的に位置合わせ（アライメント合わせ）されているか否かを判断し、また、プリントデータの印刷を制御するための複数の異なる印刷方式の内の１つを、前述の位置合わせ状態の判断に基づいて選択する。特に、本実施の形態はユーザからプリントジョブがリクエストされる毎にプリントヘッド１００ａ及び１００ｂの位置合わせをする必要があるかどうかをユーザに知らせるプリンタドライバ８４に関する。ユーザが位置合わせを行わずにプリントリクエストを続けることを選択した場合、プリンタドライバ８４はリクエストした画像をプリントヘッド１００ａと１００ｂのどちらか一方だけを用いてプリンタ１０に印刷させるようにすることで、プリントヘッド１００ａ及び１００ｂの位置合わせが適切でない場合に起こる有害な影響を削減する。
【０３７１】
または、プリンタドライバ８４により位置合わせを行うことを促されているにもかかわらず、ユーザが位置合わせを行わないことを選択した場合に、プリンタドライバ８４はプリンタ１０に一方向にのみプリントヘッド１００ａ及び１００ｂを走査させてリクエストされた画像を印刷させる。このように、プリントヘッド１００ａ及び１００ｂで両方向ではなく一方向に走査を行うことで、プリントヘッド１００ａ及び１００ｂが位置合わせされていない場合でも、より質の高い画像を印刷することができるため、画質を向上させることができる。
【０３７２】
上記説明の通り、プリンタ１０は、プリントヘッド１００ａ及び１００ｂを有するインクカートリッジ４３ａ及び４３ｂを保持するカートリッジホルダ３７ａ及び３７ｂとを有する。プリンタ１０は、プリントヘッド１００ａ及び１００ｂに画像データを印刷させながら、記録媒体を走査させることにより、記録媒体上に画像を印刷する。プリンタドライバ８４が画像を印刷するためにプリントヘッド１００ａ及び１００ｂに記録媒体を走査させるやり方は、印刷する画像のタイプ、望みの解像度、及び使用される記録媒体のタイプを含むいくつかの要因に依存する。例えば、プリンタドライバ８４は、画質を向上させるために、プリントヘッド１００ａ及び１００ｂに連続して数回記録媒体の同じスキャンラインを走査させる。印刷方式に応じて印刷をするように、プリンタ１０に命令をする。また、同じ印刷方式で、プリンタ１０にある方向で現スキャンラインをまず印刷させ、さらにそれと反対の方向で印刷させることもできる。例えば、両方向印刷である。印刷方式は印刷中のプリントヘッドの速度を制御するためにキャリッジモータ３９の速度を指定することもでき、また、ユーザが望む画像の印刷を達成するために、プリントヘッド１００ａ及び１００ｂのプリントヘッドノズルのある特定パターンの使用を指定することもできる。上記要因の組み合わせに基づいて、様々な印刷方式を用いることができる。プリンタドライバ８４は、記録媒体のタイプ、プリントモード、及び与えられたプリントジョブリクエストで用いられる印刷に関連する条件に基づいて、望みの画質を達成するために特定の印刷方式を選択する。
【０３７３】
位置合わせ処理（不図示）は、プリンタドライバ８４がプリントヘッド１００ａ及び１００ｂの位置合わせがされたかどうかが不明であると判断したときに、プリンタ１０にプリントヘッド１００ａ及び１００ｂの位置合わせを行うように指示する。プリントヘッド１００ａ及び１００ｂがお互いに位置合わせされていなかったり、プリンタ１０内で位置合わせされた適切な位置に無かったりする場合に、プリントヘッド１００ａ及び１００ｂの位置がずれることがある。プリントヘッド１００ａ及び１００ｂが適切に位置合わせされていない可能性があるとプリンタドライバ８４が判断すると、ユーザがプリントジョブリクエストを出したときに、プリンタドライバ８４はユーザに対して位置合わせ処理をするように促す。ユーザが位置合わせを行うことを選択すると、プリンタドライバ８４は位置合わせ処理を実施する。実施後は、プリントヘッド１００ａ及び１００ｂは、プリンタドライバ８４により充分に位置が合わせられたと見做される。ユーザが位置合わせをしないことを選択すると、プリンタドライバ８４は画像を印刷するためにプリントヘッド１００ａと１００ｂのいずれか一方を選択し、更に、選択したプリントヘッドで記録媒体を一方向にスキャンしながら画像を印刷するように、選択したプリントヘッドを制御する特定の印刷方式を選択する。本実施の形態によれば、プリントヘッド１００ａ及び１００ｂの位置合わせが適切になされていない場合でも、プリンタ１０にプリントヘッド１００ａ及び１００ｂのどちらか一方のみを用いてリクエストされた画像を印刷するように指示する特定の印刷方式を使用することにより、プリントリクエストを実行させることができる。これにより、プリントヘッド１００ａ及び１００ｂの位置合わせが適切ではない場合であっても、印刷された画像の質を向上させることができる。
【０３７４】
本発明の実施の形態によれば、プリントヘッド１００ａ及び１００ｂの位置合わせが適切ではないと判断され、位置合わせが適切になされないままプリントヘッドを１つのみ用いても実行できない特定のプリントモードを利用することをユーザのプリントリクエストが要求している場合、プリンタドライバはプリントリクエストを拒否する。
【０３７５】
図４３は、本実施の形態の、プリンタドライバ８４内で実行されるソフトウエア位置合わせ処理を示すフローチャートである。ステップＳ４３０１で処理を開始し、プリンタドライバ８４はアプリケーションソフトウエアモジュール８によりユーザからプリントジョブリクエストを受け取る。プリンタドライバ８４はプリントヘッド１００ａ及び１００ｂが位置合わせされているかどうかをステップＳ４３０２で判断する。プリンタドライバ８４は、例えば、（１）ユーザがプリンタのインクカートリッジ４３ａまたは４３ｂの一方または両方を交換したことを示す知らせをプリンタ１０から受けた場合、（２）前回、位置合わせ処理を実行してから、所定時間が経過し、または所定数のプリントジョブを実行したことを示す知らせを受けた場合、（３）プリントヘッド１００ａ及び１００ｂの位置合わせがなされていないことを示す知らせをプリンタ１０から受けた場合等、プリンタの状態及びその他の条件に基づいてプリントヘッド１００ａ及び１００ｂの位置合わせがなされていない可能性を判断する。
【０３７６】
ステップＳ４３０２でプリントヘッド１００ａ及び１００ｂが充分に位置合わせされていると判断されると、プリンタ１０は、プリンタドライバ８４から提供されるコマンド及びデータに従って、リクエストされたプリントジョブを印刷するように、プリンタドライバ８４により指示される（ステップＳ４３０３）。従って、プリントヘッド１００ａ及び１００ｂの位置合わせをこれ以上行う必要がない場合、現在のプリントジョブリクエストのプリントモード及びプリントに関する状態に基づいて高品質の画像印刷を確実に行うために、プリンタドライバ８４は特定の印刷方式を選択する（ステップＳ４３０３）。位置合わせされた状態で印刷を行う場合にプリンタドライバ８４が行う特定印刷方式の選択については、図４４を参照して詳細に後述する。
【０３７７】
また、ステップＳ４３０２でプリントヘッド１００ａ及び１００ｂが充分に位置合わせされていないとプリンタドライバ８４が判断すると、現在のプリントジョブを実行するために写真画質モードの使用をユーザがリクエストしているかどうかを判断する（ステップＳ４３０４）。現在のプリントジョブが写真画質モードが選択されている場合、プリントヘッド１００ａ及び１００ｂの位置を合わせるために位置合わせ処理を開始するかどうかを尋ねるダイアログボックスをディスプレイ４上に表示する（ステップＳ４３０５）。ユーザがキーボード５やポインティングデバイス６を用いて位置合わせを行わないことを指示した場合（ステップＳ４３０７）、位置合わせされたプリントヘッド１００ａ及び１００ｂを両方用いなければ写真画質モードで画像を印刷することはできないので、プリントジョブはキャンセルされる。（ステップＳ４３０８）。
【０３７８】
ユーザが位置合わせを行うことを指示した場合（ステップＳ４３０７）、ステップＳ４３１２に進み、プリンタドライバ８４は位置合わせ処理を開始する。位置合わせ処理を終了すると、プリンタドライバ８４はプリンタ１０に、プリンタ８４がプリンタ１０に提供したコマンド及びデータに従って、リクエストされたプリントジョブを、位置合わせを行う印刷のための特定の印刷方式に基づいて印刷するように指示する（ステップＳ４３０３）。
【０３７９】
また、このプリントジョブで写真画質モードが選択されていない場合（ステップＳ４３０４）、プリンタドライバ８４はディスプレイ４に表示したダイアログボックスを通じて、プリントヘッド１００ａ及び１００ｂの位置合わせのずれに関するメッセージを見たいかどうかをユーザに尋ねる（ステップＳ４３０６）。ユーザがメッセージを見たくない場合には、ステップＳ４３１６に進み、プリンタドライバ８４はプリンタ１０に、プリンタ８４がプリンタ１０に提供したコマンド及びデータに従ってリクエストされたプリントジョブを、位置合わせを行わない印刷のための特定の印刷方式に基づいて印刷するように指示する（ステップＳ４３１６）。位置合わせを行わない印刷に関するプリンタドライバ８４が行う印刷方式の選択に関しては、図４４を参照して詳細に後述する。
【０３８０】
ユーザが位置合わせのずれに関するメッセージを見たい場合には、ステップＳ４３０９に進み、プリンタドライバ８４は、プリントヘッド１００ａ及び１００ｂの位置を合わせるために、位置合わせ処理を開始するかどうかを尋ねるダイアログボックスをディスプレイ４上に表示する（ステップＳ４３０９）。ユーザがダイアログボックスのメッセージを読んだ後、プリントリクエストをキャンセルすると決めた場合には（ステップＳ４３１０でＮＯ）、プリントジョブはキャンセルされる（ステップＳ４３１１）。また、ユーザがダイアログボックスのメッセージを読んだ後、位置合わせを実行すると決めた場合（ステップＳ４３１０でＹＥＳ）、処理はステップＳ４３１２に進み、プリンタドライバ８４は位置合わせ処理を実行する。位置合わせ処理が終了すると、プリンタドライバ８４はプリンタ１０に、プリンタ８４がプリンタ１０に提供したコマンド及びデータに従って、リクエストされたプリントジョブを、位置合わせ印刷のための特定の印刷方式に基づいて印刷するように指示する（ステップＳ４３０３）。また、ユーザがダイアログボックスのメッセージを読んだ後、位置合わせを実行しないと決めた場合（ステップＳ４３１０でＣＡＮＣＥＬ）、ディスプレイ４上のダイアログボックスを介して、これから先、プリントジョブをリクエストする度に、プリントヘッド１００ａ及び１００ｂの位置合わせがずれていることを通知して欲しいかどうかをユーザに尋ねる（ステップＳ４３１３）。これから先、位置合わせのずれを示すメッセージを見ないとユーザが決めた場合には（ステップＳ４３１４でＮＯ）、メッセージはＯＦＦされて、ユーザがインクカートリッジ４３ａ及び４３ｂのいずれか一方または両方を交換するまで、メッセージを表示しない（ステップＳ４３１５）。そしてステップＳ４３１６に移り、以下に詳しく説明するようにリクエストされたプリントジョブを実行する。また、これからも位置合わせのずれを示すメッセージを見るとユーザが決めた場合には（ステップＳ４３１４でＹＥＳ）、ステップＳ４３１６に進み、プリンタドライバ８４はプリンタ１０に、プリンタ８４がプリンタ１０に提供したコマンド及びデータに従って、リクエストされたプリントジョブを、位置合わせを行わない印刷のための特定の印刷方式に基づいて印刷するように指示する（ステップＳ４３１６）。
【０３８１】
ステップＳ４３１６で位置合わせをせずに印刷を開始するとステップＳ４３１７に進み、プリントヘッド１００ａ及び１００ｂの一方は黒を含むカラーインクを印刷可能であり、もう一方のプリントヘッドは黒インクのみ印刷可能な組み合わせであるかどうかをプリンタドライバ８４は判断する（ステップＳ４３１７）。好ましくは、カラーインク及び黒インクの両方を印刷可能なプリントヘッドをプリンタ１０が有する場合、そのプリントヘッドはプリントヘッド１００ａであり、キャリッジ容器３７ａに収容され、もう一方のプリントヘッドはプリントヘッド１００ｂであり、そのプリントヘッドのタイプに関係なく、キャリッジ容器３７ｂに収容される。プリンタ１０がカラーインクプリントヘッドと黒インクプリントヘッドとを有する場合（ステップＳ４３１７でＹＥＳ）、次にプリンタドライバ８４は、プリントジョブは黒インクのみで画像を印刷することを要求しているかどうかを判断する（ステップＳ４３１８）。プリントジョブを黒インクのみで行う場合（ステップＳ４３１８）、プリンタドライバ８４は黒インクプリントヘッド、すなわち本実施の形態ではプリントヘッド１００ｂのみを用いてプリントジョブを実行するようにプリンタ１０に指示する（ステップＳ４３１９）。反対に、プリントジョブがカラーインクを用いて印刷することを要求している場合には（ステップＳ４３１８）、プリンタドライバ８４は、カラーインクプリントヘッド、すなわち本実施の形態ではプリントヘッド１００ａのみを用いてプリントジョブを実行するようにプリンタ１０に指示する（ステップＳ４３２０）。
【０３８２】
ステップＳ４３１７において、黒インクプリントヘッド２つや、カラーインクプリントヘッド２つといった、他の可能なプリントヘッド１００ａ及び１００ｂのすべての組み合わせの場合、プリンタドライバ８４は、カラーインクプリントヘッド、すなわち、本実施の形態ではプリントヘッド１００ａのみを用いてプリントジョブを実行するようにプリンタ１０に指示する（ステップＳ４３２０）。従って、上述の構成によりユーザはプリントヘッド１００ａ及び１００ｂが充分に位置合わせされておらず、ユーザが位置合わせを希望しない場合でも、プリントジョブリクエストを進めることができる。さらに、そういった場合に、プリントヘッド１００ａ及び１００が充分に位置合わせされていなくても高画質の印刷を確実に提供することができるように、プリンタドライバ８４は特定の印刷方式よりプリントヘッドの片方を使用するように選択することができる。
【０３８３】
図４４は、図４３に示すプリンタドライバソフトウエア位置合わせ処理に従った、例えば位置合わせ処理を行った場合など、位置合わせを伴う画像の印刷及び位置合わせを伴わない画像の印刷の印刷方式を含む、一連のプリントモードテーブルを示す。具体的には、位置合わせを伴うプリントモードテーブル３８５は、図４３のステップＳ４３０３で示すように位置合わせされたプリントヘッド１００ａ及び１００ｂで画像を印刷するときにプリンタ１０で使用される複数の印刷方式を有する。テーブル３８５は、それぞれの印刷方式について２つの属性を含む。それらは、（１）印刷解像度、（２）プリントヘッド１００ａ及び１００ｂが画像を印刷するときの、走査パス（通過）回数及び印刷方向である。
【０３８４】
これらの属性は、画像の解像度を示すドラフトモード、スタンダードモード、高画質モードなどの画像解像度を示すプリントモードに応じて、印刷方式毎にそれぞれ異なる。また、属性は、レギュラーモードまたは写真画質モード等、画質モードによっても異なり、更に普通紙、高解像度紙、光沢紙など、記録媒体の種類によっても異なる。位置合わせを伴うプリントモードテーブル３８５では、プリントモードの様々な組み合わせや記録媒体の種類に応じて、位置合わせを伴う印刷のために１２の異なる印刷方式が用意されている。例えば、スタンダードプリントモード、レギュラー画質モードで、高解像度紙を用いて位置合わせを伴う印刷を行う場合、印刷方式はテーブル３８５において以下に示す属性により定義される。（１）印刷解像度は７２０×７２０ｄｐｉ、（２）プリントヘッド１００ａ及び１００ｂにより各スキャンラインを２回ずつパス（通過）し、どちらの方向（両方向）でも印刷を行う。なお、例えばドラフトモードで写真画質の画像を印刷しようとしたり、ドラフトモードで光沢記録媒体を用いようとしている場合など、テーブル３８５上の印刷方式のいくつかは、定義により適用することができない。
【０３８５】
テーブル３８５に示すある印刷方式では、図４４のテーブル３８６に示すサブ印刷方式、「１ｐａｓｓ＿Ｕ／Ｂ＊１」を使用しなければならない。「１ｐａｓｓ＿Ｕ／Ｂ＊１」サブ印刷方式は、１回のパスでそれぞれの行を印刷し、走査方向と使用されるノズルのパターンはプリンタ１０に搭載されたプリントヘッド１００ａ及び１００ｂのタイプと現スキャンラインで印刷しようとしている画像のタイプとにより決定する。すでに説明したように、プリンタ１０に搭載された取り付けられたプリントヘッド１００ａ及び１００ｂは、カラーインクプリントヘッド（「ＢＣ−２１ｅ」）と黒インクプリントヘッド（「ＢＣ−２３」）をどのように選択し、組み合わせても良い。あるスキャンラインで印刷する画像のタイプの例としては、テキストの連続行を示す孤立黒、黒の連続部分またはグラフィックスなどのグレースケール画像である連続黒、カラーテキスト及び／または画像であるカラーがある。
【０３８６】
位置合わせを伴うプリントモードのテーブル３８５によれば、スタンダード解像度モード、レギュラー画質モード、普通紙使用を求めるプリントリクエストに対応する印刷方式は、１ｐａｓｓ＿Ｕ／Ｂ＊１サブ印刷方式である。テーブル３８６によれば、現スキャンラインで上に印刷しようとしている画像が連続黒のグラフィック画像である場合、そのスキャンラインを印刷するためにプリントヘッド１００ａ及び１００ｂは１回パスすることを求められる。更に、カラーインクプリントヘッドのカラーノズルが全く使用されない場合、カラーインクプリントヘッドの黒インク用ノズル６３本が一方向で印刷を行うために用いられ（一方向印刷）、黒インクプリントヘッドのノズル１２７本が順方向の印刷でのみ用いられる（一方向走査は、順方向でも逆方向でも起こり得る）。従って、安定した高画質の印刷を提供するために、走査回数、印刷方向、及びノズルの選択は、プリンタ１０に搭載されたプリントヘッド１００ａ及び１００ｂのタイプ、現スキャンライン上に印刷する画像のタイプ、更に、現プリントジョブでリクエストされたプリントモード及び記録媒体のタイプに応じて、印刷方式の一部として行われる。
【０３８７】
位置合わせを伴わないプリントモードのテーブル３８７は、図４３のステップＳ４３１６で説明したように、プリントヘッド１００ａ及び１００ｂの位置合わせをせずに画像を印刷する場合にプリンタ１０により利用される複数の印刷方式を有する。テーブル３８７は通常、印刷方式毎に提供される２つの属性を含む。それらは、（１）印刷解像度、（２）プリントヘッド１００ａ及び１００ｂが画像を印刷するときの走査パス回数及び走査方向である。
【０３８８】
これらの属性は、画像の解像度を示すドラフトモード、スタンダードモード、高画質モードなどの画像解像度を示すプリントモードに応じて、印刷方式毎にそれぞれ異なる。また、属性は、レギュラーモードまたは写真画質モード等、画質モードによっても異なり、更に普通紙、高解像度紙、光沢紙など、記録媒体の種類によっても異なる。位置合わせを伴わないプリントモードテーブル３８７では、プリントモードの様々な組み合わせや記録媒体の種類に応じて、位置合わせを伴わない印刷のために１２の異なる印刷方式が用意されている。例えば、スタンダードプリントモード、レギュラー画質モードで、高解像度紙を用いて位置合わせを伴わない印刷を行う場合、印刷方式はテーブル３８７において以下に示すように属性により定義される。（１）印刷解像度は７２０×７２０ｄｐｉ、（２）プリントヘッド１００ａ及び１００ｂにより各スキャンラインを２回ずつ走査し、片方の方向（一方向）でのみ印刷を行う。なお、例えばドラフトモードで写真画質の画像を印刷しようとしたり、ドラフトモードで光沢記録媒体を用いようとしている場合など、テーブル３８５上の印刷方式のいくつかは、定義により適用することができない。
【０３８９】
テーブル３８７に示すある印刷方式では、図４４のテーブル３８８に示すサブ印刷方式、「１ｐａｓｓ＿Ｕ／Ｂ＊２」を使用しなければならない。「１ｐａｓｓ＿Ｕ／Ｂ＊２」サブ印刷方式は、1回のパスでそれぞれの行を印刷し、走査方向と使用されるノズルのパターンはプリンタ１０に搭載されたプリントヘッド１００ａ及び１００ｂのタイプと現スキャンラインで印刷しようとしている画像のタイプとにより決定する。すでに説明したように、プリンタ１０に搭載されたプリントヘッド１００ａ及び１００ｂは、カラーインクプリントヘッド（「ＢＣ−２１ｅ」）と黒インクプリントヘッド（「ＢＣ−２３」）をどのように選択し、組み合わせても良い。図４３を参照して説明したように、位置合わせを伴わない印刷中は、プリントヘッド１００ａ及び１００ｂのいずれか一方のみが選択されて使用される。あるスキャンラインで印刷する画像のタイプの例としては、テキストの連続行を示す孤立黒、黒の連続部分またはグラフィックスなどのグレースケール画像である連続黒、カラーテキスト及び／または画像であるカラーがある。
【０３９０】
位置合わせを伴わないプリントモードのテーブル３８７によれば、スタンダード解像度モード、レギュラー画質モード、普通紙使用を求めるプリントリクエストに対応する印刷方式は、１ｐａｓｓ＿Ｕ／Ｂ＊２サブ印刷方式である。テーブル３８８によれば、現スキャンライン上に印刷しようとしている画像が連続黒のグラフィック画像である場合、そのスキャンラインを印刷するためにプリントヘッド１００ａ及び１００ｂは１回通過することを求められる。更に、位置合わせを伴わない印刷において、カラーインクプリントヘッドが選択されて用いられる場合、カラーインクプリントヘッドのカラーノズルは全く使用されず、カラーインクプリントヘッドの黒インク用ノズル６３本が一方向で印刷を行うために用いられる（一方向印刷）。しかし、位置合わせを伴わない印刷において、黒インクプリントヘッドが選択されて用いられる場合、黒インクプリントヘッドのノズル１２７本が順方向でのみ印刷に用いられる（一方向走査は、順方向でも逆方向でも起こり得る）。従って、安定した高画質の印刷を影響するために、走査回数、印刷方向、及びノズルの選択は、プリンタ１０に取り付けられたプリントヘッド１００ａ及び１００ｂのタイプ、現スキャンラインに印刷する画像のタイプ、更に、現プリントジョブに対してリクエストされたプリントモード及び記録媒体のタイプに応じて、印刷方式の一部として行われる。
【０３９１】
＜７．０  デュアルヘッド多色印刷＞
図４５はカラーデータを記録媒体に印刷するときに使用されるコンピュータにより実行可能な各処理を示すフローチャートである。図示のように、これらのステップは言語モニタ２０５に含まれ、ホストプロセッサー２のＣＰＵ７０により実行することが好ましい。なお、これらのステップは、プリンタ１０のＣＰＵ９１により実行することも可能である。
【０３９２】
図４５は両方向印刷を用いてプリントデータのバンドに含まれる黒プリントデータ以外のプリントデータを印刷する工程と、一方向印刷を用いてプリントデータのバンドに含まれる黒プリントデータを印刷する工程とを有する。
【０３９３】
詳しく説明すると、まず処理はステップＳ４５０１で始まり、ここでプリンタドライバ８４からプリントデータのバンドを受信する。図１８に示す構成によれば、このバンドは、実際にはプリンタプロバイダー２０４から受信される。受け取ったプリントデータは、黄色、マゼンタ、シアン、または黒のインク滴を記録媒体の特定の画素位置に吐出するかどうかを示す２値化データを含むことが好ましい。その特定の画素位置とは、インクカートリッジ４３ａ及び４３ｂを用いてカートリッジホルダ３７ａ及び３７ｂが１回走査する間に印刷される画像の位置のことである。上記の例では、インクカートリッジ４３ａは図７に示すプリントヘッド６２を利用し、インクカートリッジ４３ｂは図７のプリントヘッド６１を利用する。更に、インクカートリッジ４３ａは黄色、マゼンタ、シアン、及び黒の高浸透性のインクを保持することが好ましく、インクカートリッジ４３ｂは低浸透性の黒インクを保持することが好ましい。
【０３９４】
図４６は、図４５に示す処理に対応する印刷手順を示す図である。図示のように、破線３９０より上部にカラー領域があり、破線３９０より下部に黒領域がある。また、図４６は、印刷中にプリントヘッド６２で記録媒体を複数回パスした場合のプリントヘッド６２のインクノズルの相対位置を示す。本実施の形態によれば、それぞれのパスで示されるノズルは、当該通過で印刷を行うノズルである。また、ノズルのグループ間のギャップは、グループが異なることを示すためのもので、実際値とは異なる。
【０３９５】
図４５に示す手順において、図４６のパス１に対応するプリントデータのバンドをステップＳ４５０１で受信する。ステップＳ４５０２では、受信したバンドがカラーデータを含むかどうかを判断する。ここでは、バンドの画素のいずれかが、黄色、マゼンタ、シアンのインク滴のいずれかを用いて印刷される、または過去に印刷された場合に、カラーデータを含むと判断される。ステップＳ４５０２で受信したプリントデータのバンドがカラーデータを含むと判断されると、ステップＳ４５０４に進み、現在のパスが逆方向のパスであるかどうかを判断する。
【０３９６】
本実施の形態においては、この第１のパスは順方向であるとし、処理はステップＳ４５０４からＳ４５０５に進む。ステップＳ４５０５において、まだ印刷されていない黒データが存在するかどうかを判断する。このようなまだ印刷されていない黒データについて、図４５を参照して後で説明するが、ここではそのようなデータは無いものとして、ステップＳ４５０６に進む。ステップＳ４５０６では受信したバンドを印刷するためにプリンタ１０に送る。
【０３９７】
図４６のパス１は、ステップＳ４５０６で行う、受信したバンドの印刷に用いられるノズルを示す。好ましくは、プリントヘッド６２で１回の走査を行う時に、それぞれのインクにつきノズル２３本を使用して印刷する。なお、ステップＳ４５０６の後、インクカートリッジ４３ａは、第１のパスが開始した端と反対側の、プリンタ１０の端に位置する。
【０３９８】
次にステップＳ４５０６からＳ４５０８に進み、以前に受信したバンドはプリントデータの最後のバンドであるかどうかを判断する。ここでは、まだ続きのバンドが存在するため、ステップＳ４５０１へ戻る。そして、第２のパスで用いられるプリントデータのバンドを受信する。ここでは、図４６に示すようにカラーデータを含むため、ステップＳ４５０２からステップＳ４５０４に進む。パス１は順方向であるので、パス２は逆方向である。従って、処理はステップＳ４５０９に進み、受信したバンドの黒プリントデータを、好ましくはプリントバッファ１０９を用いて蓄えておく。そしてバンドの残りのデータをステップＳ４５１０でプリンタ１０に送る。図４６の、パス２は、黄色、マゼンタ、シアンのインク滴のみが印刷された状態を示している。
【０３９９】
なお、パス１が完了すると、記録媒体はノズル２３本に対応する距離だけ送られ、これによりパス１でマゼンタ及び黄色のノズルを用いて印刷された画素は、パス２ではシアンとマゼンタのノズルをそれぞれ用いて印刷される。
【０４００】
処理はステップＳ４５０８から４５０１へ戻り、プリントデータの次のバンドを受信する。そしてステップＳ４５０２からＳ４５０４に進む。パス３は順方向であるために、ステップＳ４５０５に進む。上述の通り、ステップＳ４５０９でパス２の黒プリントデータを蓄えてあったので、ステップＳ４５０５からＳ４５１２に進み、蓄えておいたデータをプリントバッファ１０９から検索して取り出す。次にステップＳ４５１４において、ステップＳ４５０１で受信したプリントデータのバンドと、取り出した黒データとを両方共、印刷するためにプリンタ１０に印刷用に送る。図４６に示すように、シアン、マゼンタ、黄色ノズルと共に、プリントヘッド６２の下部の複数の黒ノズルを受信したバンドの黒データを印刷するために使用し、上部の複数の黒ノズルをパス２で印刷されたバンドの蓄えておいた黒データを印刷するために用いられる。このようにすることにより、黒データは順方向でのみ印刷されることになる。従って、逆方向の黒インクでの印刷による画質の低下を防ぐことができる。
【０４０１】
図４６に示すように、パス４及びパス５では、パス２及びパス３で説明した動作とそれぞれ同様の動作を行う。しかし、図４６に示すように、プリントヘッド６２の黄色及びマゼンタノズルに関しては、これらのノズルに対応するデータが無いために、黄色ノズルはパス４で、また、マゼンタ及び黄色ノズルはパス５で用いられない。
【０４０２】
次に、パス６に対応するプリントデータのバンドをステップＳ４５０１で受信する。黄色、マゼンタ、シアンインクに対応するデータを含んではいないが、このバンドの画素は、パス３〜５で、黄色、マゼンタ、シアンインクを用いてすでに印刷されている。従って、処理はステップＳ４５０４に進む。パス６は逆方向であるので、ステップＳ４５０９に進み、受信したバンドの黒プリントデータをバッファ１０９に蓄える。ステップＳ４５１０においてパス６の黒データ以外のデータは印刷のためにプリンタ１０に送られる。この場合、受信したプリントデータのバンドは、黒プリントデータしか含まないので、プリントヘッド６２はパス６のためのステップＳ４５１０で、印刷をすることなく、単に記録媒体を横切ることになる。そしてステップＳ４５０８からステップＳ４５０１に戻り、次のバンドのプリントデータを受信する。
【０４０３】
ここでは、受信したバンドは、図４６に示す黒領域に対応するので、ステップＳ４５０２からステップＳ４５１５に進む。ステップＳ４５１５ではこれまでに印刷されたバンドがカラーデータを含んでいたかどうかを判断する。パス６に対して分析されたプリントデータのバンドは、カラーデータを含むと判断されたため、処理はステップＳ４５１６に進み、前回のパスが逆方向であったかどうかを判断する。パス６は逆方向であるので、ステップＳ４５１７に進む。ステップＳ４５１７において、蓄えられた黒データをプリントバッファ１０９から検索して取り出す。ここで前回印刷されたバンドがカラーデータを含み、且つ、前回のパスが逆方向の場合にのみステップＳ４５１７に進むので、前回印刷されたバンドの黒データが蓄えられており、まだ印刷されていないと考えることができる。従って、次のステップＳ４５１９で取り出した黒データをプリンタ１０に送る。
【０４０４】
なお、パス５の後、記録媒体はノズル２３本分だけ送られ、パス６の後では記録媒体は更にノズル２３本分だけ送られる。従って、取り出された黒データは、プリントヘッド６２のノズル２４〜４６を用いてパス７で印刷される。そしてステップＳ４５２０に進み、取り出された黒データのバンドはプリントヘッド６１及び、上述のように低浸透性の黒インクを保持するインクジェットカートリッジ４３ｂを用いてパス８で印刷するためにプリンタ１０に送られる。なお、黒インクで印刷を逆方向に行うことで画質が低下しないように、パス８は順方向に行われる。
【０４０５】
そしてステップＳ４５２０からＳ４５０８に進み、そして、次のバンドを印刷するならば、ステップＳ４５０１へ戻る。次のバンドがカラーデータを含まない場合、上述の通り、処理はステップＳ４５１５から直接ステップＳ４５２０へ進む。
【０４０６】
上記動作はステップＳ４５０８で最後のバンドが印刷されたと判断されるまで繰り返される。最後のバンド印刷後、ステップ４５２２に進み、前回のパスが逆方向であったかどうかを判断する。逆方向でない場合、処理は終了する。逆方向であった場合、まだ印刷されていない蓄えておいた黒データをプリンタ１０に送り、ステップＳ４５２４で順方向で印刷をする。処理はこれで終了する。
【０４０７】
上記のように処理をすることにより、所定データを逆方向で印刷することが好ましくないと判断されると、そのデータを逆方向で印刷しないようにすることができる。なお、上記処理は黒プリントデータの印刷を順方向のみで行うことに限るものではなく、他のタイプのプリントデータを逆方向でのみ印刷することも可能である。
【０４０８】
＜８．０  予備吐出とパルス幅変調＞
このセクションでは、本実施の形態の予備吐出処理及びパルス幅変調制御について説明する。
【０４０９】
＜８．１  予備吐出制御＞
予備吐出は、インクジェットプリンタにおいて、乾いたり、凝固したインクをプリントヘッドノズルから除去するために行われる。本実施の形態における予備吐出のタイミングはセクション８．１．１で説明する。本実施の形態における予備吐出のタイミングを制御するためのシステムの一例は、セクション８．１．２で説明する。
【０４１０】
（８．１．１  予備吐出のタイミング）
図４７は、予備吐出処理が所定時間間隔で行われる場合の、予備吐出制御を説明するための図である。図４７は、画像４０２が印刷された記録媒体４０１を示す。図４７において、画像４０２は小さいフォントのテキスト４０３と、大きいフォントのテキスト４０４とを含む。
【０４１１】
また、図４７は、画像４０２を印刷中の、カートリッジホルダ４０５の異なる時点における位置を示す。カートリッジホルダ４０５は、セクション１．０で図５を参照して説明したプリンタ１０のカートリッジホルダ３７ａ及び３７ｂのいずれか一方である。カートリッジホルダ４０５は、図６に示すインクジェットカートリッジ４３ａのようなインクジェットカートリッジを搭載することが好ましい。また、インクジェットカートリッジは、図７に示すプリントヘッド６１またはプリントヘッド６２のようなプリントヘッドを有することが好ましい。
【０４１２】
矢印４０９〜４３３は、画像４０２の印刷のためのマルチスキャン前、マルチスキャン中、マルチスキャン後における記録媒体４０１に対するカートリッジ４０５の動きを示し、従って、カートリッジ４０５により運ばれるプリントヘッドの動きを示すことになる。円で囲まれた数字は、画像４０２の一部が印刷されている最中の走査を示す矢印４０９〜４３３の開始位置の付近にある。これら円で囲まれた数字は、画像４０２を印刷するための走査の順番を示している。従って、図４７に示すように、第１の走査は画像４０２の最上部で始まり、最後の走査は画像４０２の最下部となる。
【０４１３】
また、図４７は、カートリッジホルダ４０５のＡＳＦ（自動給紙）位置４３７、拭き取り領域４３８、予備吐出領域４３９を示している。カートリッジホルダ４０５は、上記セクション１．０及び４．０で詳しく説明したように、自動給紙処理を開始するためにＡＳＦ位置４３７に移動する。
【０４１４】
本実施の形態によれば、拭き取り領域４３８及び予備吐出領域４３９は、図５に示すホームポジション４６に位置する。拭き取り領域４３８は、ワイパー４４ａ及び４４ｂを含む。拭き取り領域４３８では、カートリッジホルダ４０５に保持されたプリントヘッドが拭き取り機構により拭き取られ、余分なインク、汚れ、紙片、その他の破片などをプリントヘッドから拭き取る。
【０４１５】
予備吐出領域４３９もホームポジション４６に位置し、予備吐出受４２ａ及び４２ｂを有する。プリントヘッドはノズルから予備吐出受４２ａ及び４２ｂのいずれかにインクを吐出し、乾燥したり、凝固したインクをノズルから取り除く。
【０４１６】
ＡＳＦ位置４３７、拭き取り領域４３８、予備吐出領域４３９のいずれかにおけるカートリッジホルダ４０５の位置は、図４７では、カートリッジホルダ４０５を示すことにより、または位置または領域の下のカートリッジホルダ４０５の動きを示す矢印により示されている。
【０４１７】
記録媒体４０１の左側にイベントリスト４４１を示す。イベントリスト４４１の円で囲まれた記号は、画像４０２が印刷されるときに起こるイベントを示している。また、図４７において、印刷開始４４３は円で囲まれた記号Ｓｔにより表す。自動給紙４４４は円で囲まれた記号ＡＳＦにより、また初期給紙時拭き取り／予備吐出４４５は円で囲まれた記号ＬＰにより表す。自動予備吐出イベント４４７〜４５１も、それぞれ円で囲まれた記号ＡＰ”、ＡＰ１、ＡＰ２、ＡＰ３、ＡＰ４としてイベントリスト４４１に示されている。
【０４１８】
記録媒体４０１の右側に時間線４５３を示す。時間線は図４７の上から下に向かって進み、画像４０２を印刷する際のカートリッジホルダ４０５の走査と、イベントリスト４４１に示されたイベントとの時間関係を示す。従って、時間線４５３において、画像４０２を印刷する際のカートリッジホルダ４０５によるそれぞれの走査の開始は、カートリッジホルダ４０５の走査動作を表す矢印４０９〜４３３の開始地点に示された円で囲まれた番号と同一の番号を円で囲んで表している。同様に、イベントリスト４４１に示されるイベントは、時間線４５３上でイベントリスト４４１で用いられるものと同じ記号を用いて表され、また、イベントリスト４４１及び時間線４５３において同一イベントに対応する同一記号の参照番号は共通にしている。例えば、イベントリスト４４１の円に囲まれたＳｔと、時間線４５３の円に囲まれたＳｔは、両方とも印刷の開始４４３を表している。
【０４１９】
図４７により示される予備吐出制御において、自動予備吐出処理が２秒間隔をベースに実行される。詳しくは、イベントリスト４４１と時間線４５３では、印刷の開始４４３と、その後に行われる自動給紙４４４及び初期給紙時拭き取り／予備吐出４４５を示している。従って、矢印４０９は印刷開始４４３の地点である円に囲まれた記号Ｓｔの位置から、記録媒体４０１の自動給紙４４４のための円に囲まれた記号ＡＳＦまでのカートリッジホルダ４０５の動きを示す。また、矢印４１０は、カートリッジホルダ４０５が、初期拭き取りで拭き取り領域４３８を過ぎて、初期予備吐出のために予備吐出領域４３９へ動くことで、初期給紙時拭き取り／予備吐出４４５を終えるところを示している。
【０４２０】
給紙時拭き取り／予備吐出４４５の後、円で囲まれた記号ＡＰ”により表された第１の自動予備吐出４４７が行われる。具体的には、給紙時拭き取り／予備吐出４４５と印刷開始間で十分に長い遅延（例えば２秒）が起きた場合、インクノズルがつまらないようにするために自動予備吐出４４７が行われる。このような遅延は、例えば、データがホストプロセッサーに処理されている時や、プリンタに送られている時に起こる。さらに、遅延は、ユーザが記録媒体をプリンタに手差し給紙している時にも起こり得る。
【０４２１】
自動予備吐出４４７を行うために、カートリッジホルダ４０５は、予備吐出領域４３９の下の、円で囲まれた記号ＡＰ”の隣に示されたカートリッジホルダ４０５の位置が表すように、予備吐出領域４３９に位置される。そして、プリントヘッドノズルは、乾燥した、または凝固したインクを取り除くために、予備吐出を行う。
【０４２２】
カートリッジホルダ４０５による走査が３回行われ、２秒間（４５９）が経過する前に、第４の走査が開始される。この時間間隔は、初期給紙時拭き取り／予備吐出４４５（または、できるようであれば自動予備吐出４４７）から計測される。これらの４回の走査のためのカートリッジホルダ４０５の動きを矢印４１１〜４１４に示し、４回の走査の開始は円に囲まれた番号１〜４により示す。
【０４２３】
２秒間４５９が経過すると、カートリッジホルダ４０５は現走査を終え、自動予備吐出処理のために予備吐出領域４３９に移動する。このように４回目の走査の後、カートリッジホルダ４０５は矢印４１５が示すように、自動予備吐出４４８のために自動吐出領域４３９へ動く。自動予備吐出４４８の後、カートリッジホルダ４０５は記録媒体４０１の走査を再スタートする。
【０４２４】
上記処理は、画像４０２が記録媒体４０１に印刷されるまで続けて行われる。具体的には、自動予備吐出処理は、ある走査中に、前回予備吐出を行ってから２秒以上経つと行われる。時間が経過したときには、現走査を終了していることが好ましく、その後にカートリッジホルダ４０５は、予備吐出のために予備吐出領域４３９に動かされる。走査中に所定時間が経過し、カートリッジホルダ４０５が予備吐出領域４３９から離れる方向に動いている時には、現行の走査が終了した後、カートリッジホルダ４０５を予備吐出領域４３９へ動かす際に次の走査を終了する。
【０４２５】
こうして、図４７において、カートリッジホルダ４０５が矢印４１６〜４１９に対応する第５〜８回目の走査を行い、矢印４２０が示すように自動予備吐出４４９のために予備吐出領域４３９へ動き、その後矢印４２１〜４２３に対応する第９〜１１回目の走査を行い、第１２回目の走査を行い、矢印４２４及び４２５に表されるように自動予備吐出４５０のために予備吐出領域４３９へ移動する（第１２回目の走査は、第１１回目の走査が予備吐出領域４３９から離れていくために行われる）。そして、矢印４２６〜４２９に対応する第１３〜１６回目の走査を行い、矢印４３０が示すように自動予備吐出４５１のために予備吐出領域４３９へ動き、矢印４３１及び４３２に対応する第１７、１８回目の走査を行って、画像４０２の印刷を完了する。
【０４２６】
画像４０２が印刷されると、矢印４３３が示すように記録媒体を排紙するために、カートリッジホルダ４０５は記録媒体４０１から離れる。この排紙処理は、上記セクション３．０において詳しく説明した。
【０４２７】
上記の予備吐出制御の結果、インクジェットヘッドのノズルからのインク吐出が適切となるように、頻繁に予備吐出を行うことになり、画質を確実に保つことになる。しかし、予備吐出の何回かは必要ないものである。特に、連続走査中に一定のフォントサイズのテキストを印刷する場合、プリントヘッドのノズルの１つのブロックが各走査で繰り返し使用される傾向がある。各走査において同じブロックのノズルが使用されている限り、テキストを印刷する動作では、そのブロックのノズルには乾燥したり凝固したインクが残っていないことになる。
【０４２８】
従って、例えば小さいフォントのテキスト４０３を印刷するための走査中は、図４７の第５〜８回目の走査（矢印４１６〜４１９に対応）での画像形成品質を維持するための自動予備吐出４４８（円で囲まれた記号ＡＰ１に対応する）は、
【０４２９】
少なくともある程度不必要である。前回の走査が、その走査で使用されたブロックのノズルに乾燥または凝固したインクが詰まることをすでに防いでいるのである。同様に、大きいフォントのテキスト４０４を印刷するための走査間の自動予備吐出４５１（円に囲まれた記号ＡＰ４に対応する）も、少なくともある程度不必要である。こういった不必要な予備吐出処理は、特に高速画像形成が望まれる場合には、画像形成速度を許容以上に遅くすることになる。
画像形成速度を向上させる技術の一つは、自動予備吐出処理間の時間間隔を広げることである。しかし、すべての予備吐出の時間間隔を広げることにより、画質を許容以上に低下させることもある。
【０４３０】
図４８及び図４９は、予備吐出の時間間隔を広げすぎたことにより起こる画質の低下を示す図である。図４８は、画像４６２が印刷された記録媒体４６１を示す。図４８において、画像４６２は小さいフォントのテキスト４６３と、大きいフォントのテキスト４６４を含む。
【０４３１】
また、図４８は、画像４６２を印刷中のカートリッジホルダ４０５の異なる時点における位置を示す。カートリッジホルダ４０５の例としては、セクション１．０で図５を参照して説明したプリンタ１０のカートリッジホルダ３７ａ及び３７ｂがある。カートリッジホルダ４０５は、図６に示すインクジェットカートリッジ４３ａのようなインクジェットカートリッジを搭載することが好ましい。また、インクジェットカートリッジは、図７に示すプリントヘッド６１またはプリントヘッド６２のようなプリントヘッドを有することが好ましい。
【０４３２】
矢印４６９〜４９１は、画像４６２の印刷のためのマルチスキャン前、マルチスキャン中、マルチスキャン後における記録媒体４６１に対するカートリッジ４０５の動きを示し、従って、カートリッジ４０５により運ばれるプリントヘッドの動きを示すことになる。円で囲まれた数字は、画像４６２の一部が印刷されている最中の走査を示す矢印４０９〜４３３の開始位置の付近にある。これら円で囲まれた数字は、画像４６２を印刷するための走査の順番を示している。従って、図４８に示すように、第１の走査は画像４６２の最上部で始まり、最後の走査は画像４６２の最下部となる。
【０４３３】
また、図４８は、カートリッジホルダ４０５のＡＳＦ位置４３７、拭き取り領域４３８、予備吐出領域４３９を示している。カートリッジホルダ４０５は、上記セクション１．０及び４．０で詳しく説明したように、自動給紙処理を開始するためにＡＳＦ位置４３７に移動する。
【０４３４】
拭き取り領域４３８及び予備吐出領域４３９は、図５に示すホームポジション４６に位置することが好ましい。拭き取り領域４３８では、カートリッジホルダ４０５に保持されたプリントヘッドが拭き取り機構により拭き取られ、余分なインク、汚れ、紙片、その他の破片などをプリントヘッドから拭き取る。プリントヘッドはノズルから予備吐出領域４３９にインクを吐出し、乾燥したり、凝固したインクをノズルから取り除く。ＡＳＦ位置４３７、拭き取り領域４３８、予備吐出領域４３９のいずれかにおけるカートリッジホルダ４０５の位置は、図４８では、カートリッジホルダ４０５を示すことにより、または位置または領域の下のカートリッジホルダ４０５の動きを示す矢印により示されている。
【０４３５】
記録媒体４６１の左側にイベントリスト５０１を示す。イベントリスト５０１の円で囲まれた記号は、画像４６２が印刷されるときに起こるイベントを示している。図４８において、印刷開始５０３は円で囲まれた記号Ｓｔにより表す。自動給紙５０４は円で囲まれた記号ＡＳＦにより、また初期給紙時拭き取り／予備吐出５０５は円で囲まれた記号ＬＰにより表す。自動予備吐出イベント５０７、５０８、５１０も、それぞれ円で囲まれた記号ＡＰ”、ＡＰ１、ＡＰ２として、円で囲まれた記号ＤＷにより表すデータ待ち５０９と共にイベントリスト５０１に示されている。データ待ちイベントは、印刷中にホストプロセッサー２がプリントデータをプリンタ１０にスプールする時のポーズを示している。
【０４３６】
記録媒体４６１の右側に時間線５１３を示す。時間線は図４８の上から下に向かって進み、画像４６２を印刷する際のカートリッジホルダ４０５の走査と、イベントリスト５０１に示されたイベントとの時間関係を示す。従って、時間線５１３において、画像４６２を印刷する際のカートリッジホルダ４０５によるそれぞれの走査の開始は、カートリッジホルダ４０５の走査動作を表す矢印４６９〜４９１の開始地点に示された円で囲まれた番号と同一の番号を円で囲んで表している。同様に、イベントリスト５０１に示されるイベントは、時間線５１３上でイベントリスト５０１で用いられるものと同じ記号を用いて表され、また、イベントリスト４４１及び時間線５１３において同一イベントに対応する同一記号の参照番号は共通にしている。例えば、イベントリスト５０１の円に囲まれたＳｔと、時間線５１３の円に囲まれたＳｔは、両方とも印刷の開始５０３を表している。
【０４３７】
図４８により示される予備吐出制御において、自動予備吐出処理が６秒間隔をベースに実行される。詳しくは、イベントリスト５０１と時間線５１３では、印刷の開始５０３と、その後に行われる自動給紙５０４及び初期給紙時拭き取り／予備吐出５０５を示している。従って、矢印４６９は印刷開始５０３の地点である円に囲まれた記号Ｓｔの位置から、記録媒体４６１の自動給紙５０４のための円に囲まれた記号ＡＳＦまでのカートリッジホルダ４０５の動きを示す。また、矢印４７０は、カートリッジホルダ４０５が、初期拭き取りで拭き取り領域４３８を過ぎて、初期予備吐出のために予備吐出領域４３９へ動くことで初期給紙時拭き取り／予備吐出５０５を終えるところを示している。
【０４３８】
給紙時拭き取り／予備吐出５０５の後、円で囲まれた記号ＡＰ”により表された第１の自動予備吐出５０７が行われる。具体的には、印刷が実際に開始されるまでに６秒間の遅延時間（５１４）が経過した場合に、自動予備吐出５０７が行われる。このような遅延は、例えば、データがホストプロセッサーに処理されている時や、プリンタに送られている時に起こる。さらに、遅延は、ユーザが記録媒体をプリンタに手差し給紙している時にも起こり得る。
【０４３９】
また、このような遅延は、データが処理されている間やプリンタにロードされている間、特にデータがプリンタに接続されたローエンドホストプロセッサーにより処理されているときに起こり得る。また、記録媒体４６１の給紙や、画像４６２の印刷を実際に始める場合など、印刷動作がユーザの介入を待たなければならない場合にも遅延が起こる。６秒間の遅延時間（５１４）が経過すると、予備吐出領域４３９の下の円で囲まれた記号ＡＰ”の隣に示されたカートリッジホルダ４０５の位置が表すように、カートリッジホルダ４０５は予備吐出領域４３９に位置され、自動予備吐出５０７が行われるようにする。そして、プリントヘッドノズルは、乾燥した、または凝固したインクを取り除くために、予備吐出を行う。
【０４４０】
遅延が自動予備吐出５０７をトリガするのに十分でない場合であっても、遅延は画質に有害な影響を与えるのに十分である。特に、６秒よりわずかに短いの遅延では、図４９（ａ）に示すような画質の低下を容易に引き起こすこともある。こういった画質の低下は、第１のスキャンラインで印刷したテキストの左側に画素のギザギザや画素のずれとなって現れる。特に、プリントヘッドノズル内の乾燥したインクまたは凝固したインクにより、画素がずれたり、変形したりする。
【０４４１】
ともかく、図４８で印刷を開始すると、カートリッジホルダ４０５により１１回の走査を行い、６秒間（５１５）が経過する前に、１２回目の走査が開始される。この時間間隔は、自動予備吐出５０７（または、適応できるようであれば、初期給紙時拭き取り／予備吐出５０５）から計測される。これらの１２回の走査のためのカートリッジホルダ４０５の動きを矢印４７１〜４８２に示し、１２回の走査の開始は円に囲まれた番号１〜１２により示す。
【０４４２】
予備吐出を行う時間間隔が長いために、第１〜１２回目の走査中に、画質の低下が起こることがある。特に、小さいフォントのテキスト４６３を印刷しているときには、プリントヘッドノズルで使わないブロックがある。この間に、このブロックのノズル内のインクが乾いたり凝固し始める。そして、第１０回目の走査で大きいフォントのテキスト４６４の行が始まると、これらのノズルは数画素分、正しく吐出できないことがある。こういった不適切な吐出による画質低下の例を、図４９（ｂ）に示す。
【０４４３】
図４８において、６秒間（５１５）が経過すると、カートリッジホルダ４０５は現走査を終えた時に自動予備吐出処理のために予備吐出領域４３９に移動する。従って、１２回目の走査の後、カートリッジホルダ４０５は矢印４８３が示すように、自動予備吐出５０８のために自動吐出領域４３９へ動く。自動予備吐出５０８の後、カートリッジホルダ４０５は記録媒体４６１の走査を再スタートする。
【０４４４】
上記処理は、画像４６２が記録媒体４６１に印刷されるまで続けて行われる。具体的には、自動予備吐出処理は、ある走査中に、前回予備吐出を行ってから６秒間が経過すると行われる。時間が経過したときには、現走査を終了していることが好ましく、その後にカートリッジホルダ４０５は、予備吐出のために予備吐出領域４３９に動かされる。走査中に所定時間が経過し、カートリッジホルダ４０５が予備吐出領域４３９から離れる方向に動いている時には、現行の走査が終了した後、カートリッジホルダ４０５を予備吐出領域４３９へ動かしながら次の走査を終了する。
【０４４５】
こうして、図４８において、カートリッジホルダ４０５が矢印４８４〜４８７に対応する第１３〜１６回目の走査を行う。そして、データ待ちイベント５０９が起こる。このデータ待ちイベントはかなりゆっくりであり、第１７回目の走査を開始する前に６秒間（５１６）が経過するので、自動予備吐出５１０を行う。その場合、予備吐出を行うことができるように、カートリッジホルダ４０５は、矢印４８８で示すように予備吐出領域４３９へ動く。そうでなければ、第１７回目の走査を予備吐出を行わずに実施する。
【０４４６】
第１７回目の走査を予備吐出をせずに実行した場合、図４９（ｃ）に示すような画質の低下が起こる場合がある。データ待ちイベント５０９の間はすべてのプリントヘッドノズルは不要な状態であるので、ノズル内のインクが乾いたり凝固し始めたりすることがあり、その場合、第１７回目の走査で、最初の数画素に有害な影響を及ぼすことになる。起こり得る画質の低下の例を、印刷したテキストの最初の文字の左側に画素のギザギザや画素のずれとなって現れた場合として図４９（ｃ）に示す。
【０４４７】
図４８で、さらにもう一回、カートリッジホルダ４０５は、矢印４８９及び４９０に対応する第１７及び１８回目の走査を行い、画像４６２の印刷を終える。
【０４４８】
画像４６２が印刷されると、矢印４９１が示すように記録媒体を排紙するために、カートリッジホルダ４０５は記録媒体４６１から離れる。この排紙処理は、上記セクション３．０において詳しく説明した。
【０４４９】
上記説明した印刷処理においては、予備吐出の間隔を長くすると、図４９に示すような画質の低下となって現れる。明らかに、図４９に示す画質の低下は、データ待ちイベントによる印刷の遅延が、インクが乾き始めたり固まり始めたりするのに十分なほど長く、かつ、自動予備吐出をトリガするには短い場合に起こる可能性がある。
【０４５０】
ローエンドホストプロセッサーのためのデータ待ちイベントは、自動予備吐出をトリガするのに十分長い時間である傾向がある。従って、低速のローエンドホストプロセッサーから画像を印刷するユーザほど、図４９に示すような問題は起こり得るものの、実際に直面することは少ない。より高価な、高速のハイエンドホストプロセッサーから印刷をするユーザの方が、こういった問題に直面する可能性が高い。従って、ハイエンドホストプロセッサーからの使用にプリンタが適するようにするためには、上記詳細に説明した予備吐出の問題を解決する必要がある。
【０４５１】
上記は、異なるフォントサイズのテキストからなる画像を印刷する場合の画質低下を示したが、そのような画質低下は、カラーまたは無彩色グラフィック画像を印刷するときにも起こり得る。例えば、図７に示すプリントヘッド６２のようなカラープリントヘッドを用いてグラフィック画像を印刷中に、自動予備吐出を行う時間間隔を長くした場合に、画質低下が起こり得る。このようにプリントヘッドを用いてカラーで画像の一部を印刷したとき、ある一色のノズル数に対応する距離だけ、走査ごとに記録媒体を送る。プリントヘッド６２では、記録媒体はノズル２４本に対応する距離だけ、走査ごとに送られる。セクション５．０ですでに説明したように、それぞれの走査について使用可能な黒ノズル６４本のうちノズル４８本だけが使用され、１６のノズルのブロックは使用されない。そして、印刷が黒のみの印刷に変化すると、以前は使用されなかった黒ノズル１６本を含む黒ノズル６４本がすべて使用される。これら前に使用されていないノズルからは、乾燥または凝固したインクが原因で吐出が不適切になることがあり、図４９（ｂ）に示すように線に沿った画質の低下を招く。従って、画質低下の上記問題点も、カラー印刷装置において解決しておかなければならない。
【０４５２】
図５０は、自動予備吐出処理のための固定時間間隔を用いた場合の上記問題点を解決する、本実施の形態の自動予備吐出制御を説明するための図である。
【０４５３】
インクを吐出するために少なくとも所定数のノズルを有するプリントヘッドを用いて印刷を行うインクジェット印刷装置において、印刷中、第１の所定時間後に印刷の質を保持するために、プリントヘッドのノズルからインクを吐出する予備吐出処理が行われる。プリントヘッドのノズルは、印刷するデータに基づいて駆動され、予備吐出処理は、駆動するノズル数が変わったときに行われる。なお、予備吐出処理は、第１の時間間隔より長い第２の時間間隔まで遅延できるようにすることが好ましい。２回目の時間間隔の後、予備吐出処理が行われる。
【０４５４】
さらに詳しく説明すると、図５０は、画像５２２が印刷された記録媒体５２１を示す。図５０において、画像５２２は小さいフォントのテキスト５２３と、大きいフォントのテキスト５２４とを含む。また、図５０は、画像５２２を印刷中のカートリッジホルダ４０５の異なる時点における位置を示す。カートリッジホルダ４０５は、セクション１．０で図５を参照して説明したプリンタ１０のカートリッジホルダ３７ａ及び３７ｂである。カートリッジホルダ４０５は、図６に示すインクジェットカートリッジ４３ａのようなインクジェットカートリッジを搭載することが好ましい。また、インクジェットカートリッジは、図７に示すプリントヘッド６１またはプリントヘッド６２のようなプリントヘッドを有することが好ましい。
【０４５５】
矢印５２９〜５５１は、画像５２２の印刷のためのマルチスキャン前、マルチスキャン中、マルチスキャン後における記録媒体５２１に対するカートリッジ４０５の動きを示し、従って、カートリッジ４０５により運ばれるプリントヘッドの動きを示すことになる。円で囲まれた数字は、画像５２２の一部が印刷されている最中の走査を示す矢印５２９〜５５２の開始位置の付近にある。これら円で囲まれた数字は、画像５２２を印刷するための走査の順番を示している。従って、図５０に示すように、第１の走査は画像５２２の最上部で始まり、最後の走査は画像５２２の最下部となる。
【０４５６】
また、図５０は、カートリッジホルダ４０５のＡＳＦ位置４３７、拭き取り領域４３８、予備吐出領域４３９を示している。カートリッジホルダ４０５は、上記セクション１．０及び４．０で詳しく説明したように、自動給紙処理を開始するためにＡＳＦ位置４３７に移動する。
【０４５７】
拭き取り領域４３８及び予備吐出領域４３９は、図５に示すホームポジション４６に位置することが好ましい。拭き取り領域４３８では、カートリッジホルダ４０５に保持されたプリントヘッドが、拭き取り機構により拭き取られ、余分なインク、汚れ、紙片、その他の破片などをプリントヘッドから拭き取る。プリントヘッドはノズルから予備吐出領域４３９にインクを吐出し、乾燥したり、凝固したインクをノズルから取り除く。ＡＳＦ位置４３７、拭き取り領域４３８、予備吐出領域４３９のいずれかにおけるカートリッジホルダ４０５の位置は、図５０では、カートリッジホルダ４０５を示すことにより、または位置または領域の下のカートリッジホルダ４０５の動きを示す矢印により示されている。
【０４５８】
記録媒体５２１の左側にイベントリスト５６１を示す。イベントリスト５６１の円で囲まれた記号は、画像５２２が印刷されるときに起こるイベントを示している。また、図５０において、印刷開始５６３は円で囲まれた記号Ｓｔにより表す。自動給紙５６４は円で囲まれた記号ＡＳＦにより、また初期給紙時拭き取り／予備吐出５６５は円で囲まれた記号ＬＰにより表す。自動予備吐出イベント５６７、５７０、５７２も、それぞれ円で囲まれた記号ＡＰ”、ＡＰ１、ＡＰ２としてイベントリスト５６１に示されている。さらに、走査直前予備吐出（ＪＢＳＰ）イベント５６８及び５７３は図５０において円で囲まれた記号ＪＢＳＰにより表され、ノズル数変更予備吐出（ＮＮＣＰ）イベント５６９は円で囲まれた記号ＮＮＣＰにより表され、また、データ待ち（ＤＷ）イベント５７１は円で囲まれた記号ＤＷにより表されている。これらのイベントについて以下に詳しく説明する。
【０４５９】
本実施の形態において、ノズル数変更予備吐出は、印刷するデータが、前回の予備吐出動作から第１の期間駆動されなかったノズルの駆動を必要とする場合に実行される。走査直前予備吐出は、プリントヘッドのノズルが、第２の期間、一つも駆動されていない場合に実行される。自動予備吐出は、前回の予備吐出から第３の期間が経過した場合に実行される。第３の期間は、第１または第２の期間よりも長い。その結果、ノズル数変更またはデータ待ちイベント等により起こる走査前のポーズにより予備吐出処理がトリガーされなければ、より長い第３の期間が経過するまで予備吐出処理は遅延されることになる。
【０４６０】
図５０において、記録媒体５２１の右側に時間線５７４を示す。時間線は図５０の上から下に向かって進み、画像５２２を印刷する際のカートリッジホルダ４０５の走査と、イベントリスト５６１に示されたイベントとの時間関係を示す。従って、時間線５７４において、画像５２２を印刷する際のカートリッジホルダ４０５によるそれぞれの走査の開始は、カートリッジホルダ４０５の走査動作を表す矢印５２９〜５５２の開始地点に示された円で囲まれた番号と同一の番号を円で囲んで表している。同様に、イベントリスト５６１に示されるイベントは、時間線５７４上でイベントリスト５６１で用いられるものと同じ記号を用いて表され、また、イベントリスト４４１及び時間線５７４において同一イベントに対応する同一記号の参照番号は共通にしている。例えば、イベントリスト５６１の円に囲まれたＳｔと、時間線５７４の円に囲まれたＳｔは、両方とも印刷の開始５６３を表している。
図５０により示される予備吐出制御において、自動予備吐出処理が６秒間隔をベースに実行される。しかし、記録媒体５２１を走査するために用いられるノズル数変更時や、すべてのノズルの使用が一時停止されたときなど、所定のイベントにより、早めの予備吐出をトリガーすることができる。
【０４６１】
詳しくは、イベントリスト５６１と時間線５７４では、印刷の開始５６３と、その後に行われる自動給紙５６４及び初期給紙時拭き取り／予備吐出５６５を示している。従って、矢印５２９は印刷開始５６３の地点である円に囲まれた記号Ｓｔの位置から、記録媒体４６１の自動給紙５６４のための円に囲まれた記号ＡＳＦまでのカートリッジホルダ４０５の動きを示す。矢印５３０は、カートリッジホルダ４０５が、初期拭き取りで拭き取り領域４３８を過ぎて、初期予備吐出のために予備吐出領域４３９へ動くことで初期給紙時拭き取り／予備吐出５６５を終えるところを示している。
【０４６２】
給紙時拭き取り／予備吐出５６５の後、円で囲まれた記号ＡＰ”により表された第１の自動予備吐出５６７が行われる。具体的には、給紙時拭き取り／予備吐出５６５と印刷が実際に開始されるまでの間に所定時間が経過した場合に、自動予備吐出５６７が行われる。所定時間は、例えば、データがホストプロセッサーに処理されている時や、プリンタに送られている間に経過する。さらに、ユーザが記録媒体をプリンタに手差し給紙している時にも経過することもある。
【０４６３】
図５０では、上記所定時間は６秒間（５７５）である。６秒が経過すると、ノズルは、インク吐出エラーが起きやすい「危険領域」に入る。従って、印刷を開始する前に予備吐出を行う必要がある。自動予備吐出５６７を行うために、カートリッジホルダ４０５は、予備吐出領域４３９の下の円に囲まれた記号ＡＰ”の隣に示されたカートリッジホルダ４０５の位置が表すように、予備吐出領域４３９に位置する。そして、プリントヘッドノズルは、乾燥した、または凝固したインクを取り除くために、予備吐出を行う。
【０４６４】
印刷前に更なる遅延があった場合、プリントヘッドのノズルは、インクが乾き始めたり、凝固し始めたりするのに充分長い時間使用されないこともある。その場合、本実施の形態においては、印刷（予備吐出も含む）が所定時間、図５０では３秒間、行われないかどうかを判断する。印刷がこの所定時間行われていない場合、走査直前予備吐出５６８が行われ、ノズル内に乾燥した、または凝固したインクが確実の残らないようにする。この処理により、図４９（ａ）を参照して説明した線に沿った画質の低下を防ぐことができる。
【０４６５】
印刷が開始されると、前回の予備吐出処理からの経過時間を計測する。図５０に示す例では、前回の予備吐出処理は、走査直前予備吐出５６８であり、自動吐出を行う時間間隔は６秒である。しかし、この時間が過ぎる前に、矢印５３１〜５３９が示すように、カートリッジホルダ４０５による走査が９回行われる。これらの９回の走査で、小さいフォントのテキスト５２３がすべて印刷される。矢印５４０で示される１０回目の走査で大きいフォントのテキスト５２４を印刷するためには、これまでに使用されていないノズルを駆動してインクを吐出しなければならない。本実施の形態では、図５４を参照して後述するように、使用するノズル数の変更を検知する。
【０４６６】
図５０では、前回の予備吐出処理から３秒間の第１の時間が経過した後に、ノズル数の変更が起きている。従って、ノズルは、駆動するノズル数の変更が上述の図４９（ｂ）に示すような画質の低下を引き起こす可能性のある「影響を受けやすい領域」で動作していることになる。従って、ノズル数変更予備吐出５６９が実施される。しかし、３秒間の第１の時間が経過する前の変化である場合、ノズルは、画質の低下が起きにくい「安全領域」で駆動している。その場合、前処理は行わない。
【０４６７】
好ましくは、走査を行う前に、その走査がノズル数の変更を伴うかどうかを判断する。カートリッジホルダ４０５は、印刷を行う前に、使用していなかったプリントヘッドノズルのクリーニングができるように、走査を行う前に予備吐出領域４３９まで移動する。そして、ノズル数変更予備吐出を行った後、印刷を続行する。この様子は図５０では、カートリッジホルダ４０５が第９回目の走査を終えた後に予備吐出領域４３９まで動き、大きいフォントのテキスト５２４のための第１０回目の走査を円で囲まれた数字１０でカートリッジホルダ４０５が始める前に予備吐出を行う動作を示している。この処理は、カートリッジホルダ４０５が現走査を終え、予備吐出領域４３９へ動くために次の走査を行う可能性のある、図４７及び図４８を参照して説明した予備吐出制御とは対照的な処理である。
【０４６８】
図５０において、走査直前予備吐出５６８から、矢印５４２が示す第１２回目の走査が開始されるまでに６秒が経過する。しかし、経過時間中にノズル数変更予備吐出５６９が行われているために、自動予備吐出５７０は行われない。その代わりに、矢印５４３〜５４６が示す第１３〜１６回目の走査の後に行われる自動予備吐出５７２まで、予備吐出は延期される。自動予備吐出５７２は、第１６回目の走査中にノズル数変更予備吐出５６９が実行されてからの６秒間（５７６）の経過によりトリガーされる。
【０４６９】
自動吐出処理を実行するために、カートリッジホルダ４０５は矢印５４７が示すように予備吐出領域４３９へ動く。第１６回目の走査で、予備吐出領域４３９から離れる方向にカートリッジホルダ４０５が動いている場合（すなわち、矢印５４６が予備吐出領域４３９の反対方向を指している場合）には、カートリッジホルダ４０５を予備吐出領域４３９へ動かしながら、次のスキャンラインを印刷することが好ましい。この処理は、上記のノズル数変更予備吐出処理で次のスキャンラインを印刷しないこととしたのとは対照的である。
【０４７０】
また、図５０はデータ待ち５７１が十分に長く、自動予備吐出５７２の後、所定時間（例えば３秒）ノズルがどれも駆動されない場合も示している。この場合、第１７回目の走査が始まる前に走査直前予備吐出５７３が行われ、これにより図４９（ｃ）に示すタイプの画質の低下を避けることができる。
【０４７１】
走査直前予備吐出５７３の後、第１６及び１７回目の走査を行って、画像５２２の印刷を完了する。画像５２２が印刷されると、矢印５５１が示すように記録媒体を排紙するために、カートリッジホルダ４０５は記録媒体５２１から離れる。この排紙処理は、上記セクション３．０において詳しく説明した。
【０４７２】
図５１は、本実施の形態における予備吐出制御のタイミングを示すフローチャートである。
【０４７３】
ステップＳ５１０１において、プリンタ１０に記録媒体を給紙する。そして、タイマを０にセットして、ステップＳ５１０２に進む。
【０４７４】
ステップＳ５１０３では、行送り及び印刷処理を行う。ステップＳ５１０４でタイマが閾値１よりも小さいかどうかを判断する。閾値１は予備吐出処理が一般的に不必要である、安全な時間間隔を表す。タイマが閾値１より小さくない場合は、ステップＳ５１０５に進む。
【０４７５】
ステップＳ５１０５において、プリンタ１０が「影響を受けやすい領域」で動作しているか、「危険領域」で動作しているかを判断する。具体的には、ステップＳ５１０５では、タイマが閾値２よりも小さいかどうかを判断する。タイマが閾値２以上の場合は、プリンタ１０は「危険領域」で動作していると判断し、処理はステップＳ５１０６に進み、予備吐出処理などのサポート動作を実行する。
【０４７６】
反対に、タイマが閾値２よりも小さい場合は、プリンタ１０は「影響を受けやすい領域」で動作している。その場合、ステップＳ５１０７に進み、サポートが必要であるかどうかを判断する。例えば、記録媒体上に印刷するために駆動されるノズルの数が変わった場合、サポートが必要である。サポートが必要である場合、処理はステップＳ５１０８に進み、サポート処理を行う。ステップＳ５１０６またはＳ５１０８のいずれかの実行後、タイマはステップＳ５１０９で０にリセットされる。
【０４７７】
ステップＳ５１１０において、プリンタ１０がページの最後に達したかどうかを判断する。プリンタ１０がページの最後に達した場合には、ステップＳ５１１１において、記録媒体を排紙する。それ以外の場合、処理はステップＳ５１０３に進み、印刷を続行する。
【０４７８】
（８．１．２  実施例）
図５２〜図５６は、図５０及び図５１を参照して説明した予備吐出制御のタイミングを実施するための例を説明するためのフローチャートである。この例では、所定機能は、例えば図８を参照して上述した、例えばプリンタファームウエア内のプリンタ制御部１１０により実行されることが好ましい。その他の機能も、ホストプロセッサー２上で実行されるプリンタドライバ８４により実行されることが好ましい。
【０４７９】
図５２は、好ましくはプリンタ制御部１１０により実行される、予備吐出タイマ更新機能を示すフローチャートである。この機能は、図１９のステップＳ１９１２から毎秒呼び出され、やはりプリンタ制御部１１０により実行することが好ましい。これにより、予備吐出タイマはプリンタ制御部１１０により毎秒更新される。
【０４８０】
さらに詳しく説明すると、予備吐出タイマ更新機能が呼び出されると、ステップＳ５２０１において、自動予備吐出が使用許可されたかどうかをまず判断する。自動予備吐出は、例えばプリンタドライバ８４からユーザによって使用許可または使用禁止を設定できるようにすることが好ましい。さらに、高速印刷モードでは、自動予備吐出は、印刷速度を上げるために使用禁止にすることができる。同様に、高画質印刷モードでは、自動予備吐出は印刷の質を上げるために使用許可することができる。キャノン社製ＢＣ−２１（ｅ）などの特定のプリントヘッドは、予備吐出処理の間隔が長くても影響を受けにくく、こういったプリントヘッドにおいては自動予備吐出を使用禁止にする事ができる。
【０４８１】
自動予備吐出が使用許可されると、ステップＳ５２０２に進む。自動予備吐出が使用禁止されると、ステップＳ５２０６まで処理をスキップする。
【０４８２】
ステップＳ５２０２において、プリントヘッドＡ（上記参照番号１００ａ）が存在するかどうかを判断する。例えば、使用可能なプリントヘッドを有するカートリッジが、カートリッジホルダ３７ａに適切に搭載されているかどうかを判断する。プリントヘッドＡがある場合には、ステップＳ５２０３でプリントヘッドＡ用の予備吐出タイマＰＦＴ＿Ａを進める。同様に、ステップＳ５２０４において、プリントヘッドＢ（上記参照番号１００ｂ）が存在するかどうかを判断し、存在する場合には、ステップＳ５２０５においてプリントヘッドＢ用の予備吐出タイマＰＦＴ＿Ｂを進める。本実施の形態では、ＰＦＴ＿Ａ及びＰＦＴ＿Ｂは、上述の自動予備吐出処理５６７、５７０、５７２などの自動予備吐出処理を制御するために用いられる。
【０４８３】
ステップＳ５２０６において、予備吐出タイマ更新機能を前回呼び出してから印刷または予備吐出が行われたかどうかを判断する。印刷または予備吐出が行われた場合にはステップＳ５２０７に進み、印刷無しタイマＮＰＴを０にセットする。そうでない場合はステップＳ５２０８に進み、印刷無しタイマＮＰＴを進める。このようにして印刷無しタイマＮＰＴは前回の印刷または予備吐出処理から経過した時間を保持する。
【０４８４】
本実施の形態では、印刷無しタイマＮＰＴは、上述の走査直前予備吐出処理５６８及び５７３などの走査直前予備吐出の制御のために用いられる。また、印刷無しタイマＮＰＴは自動予備吐出が使用許可されているかどうかに関わらず、更新される。
【０４８５】
ステップＳ５２０９において、ＰＦＣＨＥＣＫコマンドが実行される。このコマンドは、プリンタ制御部１１０により実行される予備吐出チェック機能を呼び出す。この予備吐出チェック機能について、以下に図５３を参照して説明する。ステップＳ５２０９の後、図１９のフローチャートにリターンする。
【０４８６】
図５３は、本実施の形態における、好ましくはプリンタ制御部１１０により実行される予備吐出チェック処理を説明するためのフローチャートである。ステップＳ５３０１において、カートリッジホルダ４０５が正しい方向、すなわち予備吐出領域４３９へ向かっているかどうかを判断する。カートリッジホルダ４０５が正しい方向に動いていない場合、処理は機能の最後にスキップして、図５２にリターンし、さらに図１９の処理にリターンする。図１９のステップＳ１９１２が次の１秒後の割り込みにより呼び出されると、カートリッジホルダが正しい方向に動くまで、この処理が繰り返される。カートリッジホルダが正しい方向に動いていると判断されると、ステップＳ５３０２に進む。
【０４８７】
上記ステップＳ５３０１の処理は、カートリッジホルダ４０５が予備吐出領域４３９から離れる方向に走査をしている最中に自動予備吐出処理の時間間隔が経過した場合を確認するためのものであり、カートリッジホルダ４０５が予備吐出領域４３９に戻る次の走査でも印刷が行われる。
【０４８８】
ステップＳ５３０２で、ＰＦＴ＿ＡがプリントヘッドＡのための予備吐出設定時間よりも大きいかどうかを判断する。同様に、ステップＳ５３０３において、ＰＦＴ＿ＢがプリントヘッドＢのための予備吐出設定時間よりも大きいかどうかを判断する。図５０を参照して説明した上記例では、設定時間は両方とも６秒間であったが、時間を必ず同じにする必要はなく、プリントヘッドＡとプリントＢに異なるプリントヘッドを使用している場合に対応するためには、むしろ異なる方がよい。
【０４８９】
予備吐出タイマＰＦＴ＿Ａまたは予備吐出タイマＰＦＴ＿Ｂの少なくともいずれかがそれぞれの設定時間よりも大きい場合には、対応するプリントヘッドが図５０を参照して上述した「危険領域」で動作しているため、予備吐出処理を行う必要がある。従って、処理はステップＳ５３０４に進み、予備吐出（印刷）機能が呼び出されて、自動予備吐出処理が実行される。予備吐出（印刷）機能は、図５６を参照して詳細に後述する。
【０４９０】
図５４は、本実施の形態におけるプリンタドライバ８４によるノズル数変更予備吐出リクエストの生成を説明するフローチャートである。
【０４９１】
ステップＳ５４０１において、プリンタドライバ８４は、プリントジョブのページの開始時点で、ＰＲＥＶＩＯＵＳ  ＦＥＥＤ及びＣＵＲＲＥＮＴ  ＦＥＥＤを０に設定する。ステップＳ５４０２において、プリンタドライバ８４はＬＯＡＤコマンドをプリンタ１０に送り、セクション３．６．１で上述したように、記録媒体をプリンタ１０に給紙する。
【０４９２】
プリンタドライバ８４は、印刷する次のスキャンラインのラスターラインの高さを判断する。ステップＳ５４０３において、プリンタドライバ８４は、ＳＫＩＰコマンドを使って、プリンタ１０にＸスキャンライン分だけ記録媒体を進めるように命令する。ステップＳ５４０４で、ＣＵＲＲＥＮＴ  ＦＥＥＤがＸに設定される。
【０４９３】
ステップＳ５４０５では、ＣＵＲＲＥＮＴ  ＦＥＥＤがＴＨＲＥＳＨＯＬＤ＿１以下であって、ＰＲＥＶＩＯＵＳ  ＦＥＥＤ（前の走査のＣＵＲＲＥＮＴ  ＦＥＥＤ）がＴＨＲＥＳＨＯＬＤ＿１よりも大きい場合に、ノズル数が変更したと判断する。本実施の形態では、ＴＨＲＥＳＨＯＬＤ＿１はラスターラインで印刷に用いられるプリントヘッドの幅よりも１小さい。例えば、図７に示すプリントヘッド６１では、ＴＨＲＥＳＨＯＬＤ＿１はラスターライン１２７行であることが好ましい。
【０４９４】
具体的には、ＰＲＥＶＩＯＵＳ  ＦＥＥＤがＴＨＲＥＳＨＯＬＤ＿１よりも大きい場合、プリンタ１０はプリントヘッドの幅以上に、前回の走査で記録媒体を送っている。その結果、前の走査と現走査との間に白領域が存在するため、前の走査で印刷されたデータが、水平白領域によりスキャンラインが他のスキャンラインから分離された、いわゆる孤立データであることを示す。通常は、単独データを印刷するために、プリントヘッドのすべてのノズルが使用されることはない。特に、少なくとも、プリントヘッドの上部または下部のノズルが使用されないことが多い。
【０４９５】
ＣＵＲＲＥＮＴ  ＦＥＥＤがＴＨＲＥＳＨＯＬＤ＿１以下である場合、現スキャンラインと前のスキャンラインを分離する白領域は存在しない。従って、現スキャンラインデータは、テーブルやチャートのデータなど、プリントヘッドのすべてのノズルが通常使用される、連続走査データである。従って、ＣＵＲＲＥＮＴ  ＦＥＥＤがＴＨＲＥＳＨＯＬＤ＿１以下であり、ＰＲＥＶＩＯＵＳ  ＦＥＥＤがＴＨＲＥＳＨＯＬＤ＿１よりも大きいかどうかを判断することにより、孤立データの印刷から連続データの印刷へ移行したときに起こるノズル数の変化を検知することができる。
【０４９６】
ステップＳ５４０６では、ＣＵＲＲＥＮＴ  ＦＥＥＤがＴＨＲＥＳＨＯＬＤ＿２よりも大きく、ＰＲＥＶＩＯＵＳ  ＦＥＥＤがＴＨＲＥＳＨＯＬＤ＿２以下である場合に、ノズル数が変更したかどうかを判断する。本実施の形態においては、ＴＨＲＥＳＨＯＬＤ＿２はある１色（例えば、シアン、マゼンタ、黄色）のインクを吐出するために用いられるカラーノズルの数と等しい、すなわち、ある１色のインクを吐出するためのカラープリントヘッドの一部のノズル数よりも１少ないことが好ましい。例えば、図７に示すプリントヘッド６２においては、ＴＨＲＥＳＨＯＬＤ＿２は、好ましくは２３である。
【０４９７】
さらに詳しく説明すると、ＣＵＲＲＥＮＴ  ＦＥＥＤがＴＨＲＥＳＨＯＬＤ＿２よりも大きい場合、カラープリントヘッドを用いて記録することのできるカラーインクのラスターラインの数よりも現スキャンで印刷されるラスターラインの数の方が多いため、現走査のデータはカラーデータである可能性が高い。また、ＰＲＥＶＩＯＵＳ  ＦＥＥＤがＴＨＲＥＳＨＯＬＤ＿２以下である場合、前の走査がカラーデータであった可能性が高い。従って、このテストにより、カラーデータの印刷から無彩色の印刷に移行したことが判断できる。
【０４９８】
カラー印刷を行っている間、ある１走査で使用された黒ノズルの数は、通常、ある１色のためのカラーノズルの数と等しい。例えば、セクション８．０で説明したように、プリントヘッド６２の黒ノズル４６本のみがカラー印刷の時に通常用いられ、黒ノズル１８本は使用されない。しかし、無彩色印刷の場合、黒ノズルすべてが使用されるのが一般的である。従って、カラー印刷から無彩色印刷へ移行した後では、使用される黒ノズル数が変わるために、通常、ノズル数が変わる。
【０４９９】
ステップＳ５４０５またはＳ５４０６でノズル数が変わったと判断した場合には、ステップＳ５４０７でノズル数変更予備吐出リクエストがプリンタ１０に送られる。プリンタドライバ８４で用いられるように設定されたコマンドがノズル数変更予備吐出リクエストを含まない場合、存在するコマンドを範囲外引数と共に送ることにより、この指示を送ることができる。そして、プリンタのファームウエアは範囲外因数を有するコマンドをノズル数変更予備吐出リクエストとして認識するように更新することができる。例えば、本実施の形態によれば、引数０行のラスターＳＫＩＰコマンドを、ノズル数変更予備吐出リクエストとして用いることができる。
【０５００】
そして、ステップＳ５４０８において、スキャンラインがＰＲＩＮＴコマンドを用いて印刷される。ステップＳ５４０９では、ＰＲＥＶＩＯＵＳ  ＦＥＥＤがＣＵＲＲＥＮＴ  ＦＥＥＤと等しくなるように設定する。ページの終わりに到達していない場合には、ステップＳ５４１０からステップＳ５４０３に戻り、次のスキャンラインの処理を行う。そうでなければ、ページ終了のための処理を行う。
【０５０１】
図５５は、好ましくはプリンタ制御部１１０により実施される、本実施の形態の走査予備吐出処理を説明するためのフローチャートである。この処理は、プリンタ１０がスキャンラインを印刷するためのＰＲＩＮＴコマンドを受信する毎に実施される。
【０５０２】
ステップＳ５５０１において、ノズル数変更予備吐出リクエストを受信したかどうかを判断する。図５４のステップＳ５４０７を参照して上述したとおり、本実施の形態においては、このリクエストは、引数０行のＳＫＩＰコマンドの形態を有する。このようなリクエストを受信すると、処理はステップＳ５５０２に進み、そうでなければ、ステップＳ５５０５までスキップする。
【０５０３】
ステップＳ５５０２において、予備吐出タイマ、すなわち、図５２を参照して説明したＰＦＴ＿ＡまたはＰＦＴ＿Ｂが、閾値Ｔ１よりも大きいかどうかを判断する。予備吐出タイマがこの閾値よりも小さい場合、図５０を参照して上述したように、プリントヘッドは「安全領域」で動作している。従って、予備吐出処理は必要なく、印刷を遅らせるだけなので、ステップＳ５５０５にスキップする。
【０５０４】
予備吐出タイマがこの閾値よりも大きい場合、プリントヘッドは「影響を受けやすい領域」（または「危険領域」）で動作しており、予備吐出を行わなければならない。従って、処理はステップＳ５５０３に進み、予備吐出（印刷）機能が呼び出されて、ノズル数変更予備吐出（ＮＮＣＰ）処理が行われる。この予備吐出（印刷）機能は、後で図５６を参照して詳しく説明する。ステップＳ５５０４において、ノズル数変更予備吐出リクエストはリセットされる。
【０５０５】
ステップ５５０５で、印刷無しタイマＮＰＴが印刷無し閾値Ｔ２を越えているかどうかを判断する。印刷無しタイマＮＰＴがこの閾値を超えている場合、処理はステップＳ５５０６に進み、予備吐出（印刷）機能が呼び出され、走査直前予備吐出（ＪＢＳＰ）処理が実行される。
【０５０６】
図５６は、本実施の形態における、予備吐出（印刷）機能を説明するためのフローチャートである。この機能は、プリンタ制御部１１０により実施されることが好ましい。
【０５０７】
ステップＳ５６０１で、予備吐出ルックアップテーブルポインタを検索して取得する。ステップＳ５６０２でカートリッジホルダ４０５が予備吐出領域４３９にあるかどうかを判断する。カートリッジホルダ４０５が予備吐出領域４３９に無い場合には、ステップＳ５６０３で予備吐出領域４３９に移動される。
【０５０８】
図５３を参照して上述した通り、自動予備吐出処理のためにステップＳ５３０４から予備吐出（印刷）機能が呼び出された場合には、カートリッジホルダ４０５はプリンタ１０の予備吐出領域４３９と同じ側にある。同様に、走査直前予備吐出処理のために図５５のステップＳ５５０６から予備吐出（印刷）機能が呼び出された場合には、少なくとも時間間隔Ｔ２の間、印刷は実施されない。従って、カートリッジホルダ４０５はやはり、プリンタ１０の予備吐出領域４３９と同じ側にある。好ましくは、ノズル数変更予備吐出の場合にのみ、カートリッジホルダ４０５はステップＳ５６０３において印刷を行わずに記録媒体上を動く。その結果、予備吐出による遅延をさらに短縮することができ、印刷速度全体を上げることができる。これらのどちらの場合でも、ステップＳ５６０３でカートリッジホルダ４０５を予備吐出領域４３９まで動かすための時間は、短時間で済む。
【０５０９】
ステップＳ５６０４で、プリントヘッドの構成をチェックする。プリントヘッドの構成に基づいて、予備吐出カウントパターン周波数及びパルス幅変調が、後述のセクション８．２で説明するように、ステップＳ５６０５で決定される。決定した周波数及び変調は、ステップＳ５６０６で制御ロジック９４に送られ、これによりステップＳ５６０７の予備吐出を開始する。
【０５１０】
ステップＳ５６０８、Ｓ５６０９、Ｓ５６１０において、予備吐出タイマはすべてリセットされる。具体的には、ＰＦＴ＿Ａ、ＰＦＴ＿Ｂ、ＮＰＴがすべて０にリセットされる。そして処理は予備吐出（印刷）処理からリターンする。
【０５１１】
＜８．２  パルス幅変調制御＞
図５７はインクジェットノズルヒートパルス幅と出力濃度との関係を説明する図である。図５７では、一定幅のヒートパルス６０４を用いてインクジェットプリントヘッドのノズルから吐出されるインクによる印刷をするときの、スキャンライン６０２上の印刷濃度６０１を示す。
【０５１２】
プリントヘッドがスキャンライン６０２上を走査するに従って、インクジェットノズルからの吐出が繰り返されるために、プリントヘッド温度６０３は上昇する。プリントヘッドが熱くなると、同じヒートパルス幅で駆動したとしても、ノズルからはより多くのインクが吐出されることになる。その結果、プリントデータとは関係なく、印刷方向６０５に進むに従って、印刷濃度は不適切に高くなる。
【０５１３】
図５８は、ヒートパルス幅変調を説明するための図である。図５８に示すように、スキャンライン上をプリントヘッドが動くにつれて、異なるヒートパルス幅が用いられる。ヒートパルスはプリントヘッドの温度６０９を最適温度６１０近辺に保つように変調され、これにより、印刷濃度を一定に保っている。
【０５１４】
図５９は、ノズルヒートパルス駆動時間の制御を説明するためのフローチャートである。ステップＳ５９０１でプリンタ１０はプリントヘッドパルス幅シーケンスを駆動するための制御率を設定するコマンドを受信する。コマンドは、ホストプロセッサー２から送られ（ステップＳ５９０２）、そのようなコマンドを受信しない場合には、プリンタ１０はデフォルト値１００％を維持する。ステップＳ５９０１で受信した駆動の制御率は、ＲＯＭ９２にあらかじめ格納されたテーブルからのルックアップ値に適用する因数であり、ステップＳ５９１２で詳しく説明する。
【０５１５】
ステップＳ５９０３で、プリンタ１０はヘッド温度の計算に用いる制御率のコマンドを受け取る。コマンドは、ホストプロセッサー２から受信し（ステップＳ５９０４）、このコマンドを受け取らない場合には、プリンタ１０はデフォルト値１００％を維持する。ヘッド温度計算の制御率は、ヘッド温度を計算するために用いられる予め保持されたヒートアップ計数に対する増倍率として用いられる。この動作については、ステップＳ５９１５に関連して詳しく後述する。
【０５１６】
好ましくは、ステップＳ５９０１〜Ｓ５９０４は、セクション３．６で定義したパルス率変更コマンド（［ＰＣＲ］）を利用して行われる。上述したように、［ＰＣＲ］コマンドは、ヘッド温度を算出するために用いられるヒートアップ係数の割合や、ノズルからインク滴を吐出するときにプリントヘッド１００ａ及び１００ｂのそれぞれのノズルについてパルス幅駆動シーケンスのためのパルス幅の率を変更するといった、パルス制御テーブルの割合を変更するために用いられる。
【０５１７】
プリンタ１０ではプリントヘッド駆動パラメータの直近の値をリアルタイムで維持するために、例えば、５０ｍｓｅｃの時間間隔で、ステップＳ５９０６から５９１５の処理が繰り返し行われる。具体的には、図１９を参照して説明したように、ステップＳ５９０６からＳ５９１５では、ヘッド温度を計算し、ノズルからインク滴を吐出するために用いられるパルス幅シーケンスのパルス幅タイミングを割り出すために、例えば５０ｍｓｅｃの時間間隔で、他の５０ｍｓｅｃ毎に実行される他のタスクと共に、繰り返し実行される。
【０５１８】
図５９において、ステップＳ５９０６で現在の周辺温度（Ｔｅｎｖ）をプリンタ１０の温度センサー１０３ａから、図６１により後述するように、好ましくはリアルタイムに読みだす。現在の周辺温度はサーミスタから読み出された直近の値であるが、より好ましくは、サーミスタから読み出された実際値は、ばらつきを滑らかにしたり、温度計の読みとり誤差を割引き、アナログ−デジタルサンプリングノイズなどのノイズを除去するといった目的で、ローパスフィルタにかけられる。
【０５１９】
ステップＳ５９０６で読み出した周辺温度Ｔｅｎｖに基づいて、ステップＳ５９０７で目標温度Ｔtgtを算出する。目標温度は、現在の周辺温度に基づく、プリンタ１０の好ましい駆動温度である。一般的には、プリンタ１０は、図１９により上述したように、目標の温度に達するように、５００ｍｓｅｃ毎の割り込みレベルで、プリントヘッド１００ａ及び１００ｂの不図示のヒーターを介して制御される。目標温度は、現在の周辺温度に基づく、プリントヘッドの駆動に最も適した温度である。目標の温度と周辺温度の関係は互いに逆であり、つまり、周辺温度が低い場合には、目標温度は比較的に高くなり、逆に周辺温度が高い場合には、目標温度は比較的に低くなる。例えば、周辺温度がＴｅｎｖ＝５℃など、非常に低い場合、好ましい目標温度は、例えばＴｔｇｔ＝３５℃である。また、周辺温度がＴｅｎｖ＝３５℃など、非常に高い場合、好ましい目標温度は、例えばＴｔｇｔ＝１５℃である。
【０５２０】
ステップＳ５９０９では、プリントヘッド１００ａ及び１００ｂから実際にインク滴を吐出することによる、プリントヘッド温度に対する影響を計算する。具体的には、ステップＳ５９０６で読み出した周辺温度は、プリントヘッド１００ａ及び１００ｂの外側に搭載されたサーミスタから読み出された周辺温度に基づくものである。反対に、プリントヘッドの駆動パラメータの適切な制御は、プリントヘッドノズル近くのインクの内部温度により直接的な影響を受ける。通常、そのような狭い場所にサーミスタを取り付けるのは現実的ではないと考えられている。それと同時に、活発なインク滴の吐出はインク温度を上昇させ、インク滴を吐出しなければ、インク温度は通例下がることが知られている。ステップＳ５９０９の目的は、インク滴の吐出によるプリントヘッド温度の影響を算出する事により、この計算を行うことである。
【０５２１】
ステップＳ５９０９で行うプリントヘッドの温度の計算は、例えば５０ｍｓｅｃなど、前の時間内で実際に吐出されたインク滴の数に、ある程度基づいて行われる。所定時間内におけるインク滴吐出のそれぞれには、熱係数重みがつけられている。所定時間内のインク滴吐出の回数に応じて、プリントヘッドの温度にインク滴の吐出が与える影響を算出することが可能である。
【０５２２】
また、このようなヒートアップ係数は、使用されるプリントヘッドのある特定のタイプや、そのヘッドで用いられるインクの特性や、ヘッドによるプリントアウトの解像度などによって異なることが知られている。ヘッド／インク／解像度のそれぞれの異なる組み合わせによって、印刷されたドット数に対応する、ヒートアップ係数値は変わる。従って、ＲＯＭ９２にはヒートアップ係数値が予め格納されている。この状態を図６０に示す。
【０５２３】
図６０に示すように、ＲＯＭ９２の一部は予め格納されたヒートアップ係数のためのテーブル６２１を含む。テーブルは複数のテーブル６２２ａ、６２２ｂなどを含み、それぞれのテーブルがプリントヘッド、インクの特性、解像度のそれぞれの異なる組み合わせに対応している。複数のテーブルのそれぞれは、１、２、３（参照番号は６２３、６２４、６２５）のラベルつけられた、表のようにアクセスされる係数を有し、例えば、５０ｍｓｅｃといったある特定の時間間隔で吐出されるインク滴の数に基づいてルックアップ処理によりアクセスされる。プリンタ１０は、デフォルトまたはコマンドに基づいてテーブル６２１に保持されたテーブルから一つのヒートアップテーブルを選択し、さらに、５０ｍｓｅｃ毎に吐出されるインク滴の数に基づいて、選択されたテーブルからヒートアップ係数を選択する。
【０５２４】
テーブル６２１からルックアップ処理により取得した係数は、インク滴の吐出がプリントヘッドの温度に与える影響を算出するために用いられる。適切な計算の例としては、以下のものがある。
【０５２５】
0003697141.tif 000002
【０５２６】
ここで、係数１は、吐出された黒インク滴の数に基づくヒートアップ係数、係数２は、吐出された色インク滴の数に基づくヒートアップ係数、係数３はヒーターの現在のデューティーサイクルに基づくヒートアップ係数、係数４は不活動状態に基づくプリントヘッドの温度低下を示す。もちろん、使用された実際の係数及び計算は、ヘッド／インク／解像度の組み合わせに依存する。例えば、上記の計算は４色のプリントヘッドには適しているが、全黒のプリントヘッドでは、吐出された色インク滴の数に依存しない別の計算を用いる。
【０５２７】
周辺温度Ｔｅｎｖ、目標温度Ｔｔｇｔ、及びプリントヘッド温度の影響ΔＴｍａｉｎを用いて、ステップＳ５９１０では以下の式を用いて差Ｔｄｉｆｆを計算する。
【０５２８】
Ｔｄｉｆｆ＝Ｔｔｇｔ−Ｔｅｎｖ−ΔＴｍａｉｎ
【０５２９】
ステップＳ５９１１では、温度差Ｔｄｉｆｆに基づいて、パルス幅駆動シーケンスのためのパルス幅時間を格納するＲＯＭ９２のルックアップテーブルにアクセスする。適するテーブルを図６０に図示し、以下に説明する。
【０５３０】
図６０に示すように、ＲＯＭ９２は駆動時間を保持するためのルックアップテーブルを有する。駆動時間は、インク滴を吐出するためにノズルヒーターを駆動するために用いられるパルスシーケンスのためのパルス幅のことである。一般的なパルスシーケンスは図５９の参照番号６４０で示しており、パルス幅Ｔｐｒｅのプレヒートパルス、パルス幅Ｔｉｎｔの無活動の期間、及びパルス幅Ｔｍａｉｎのメインヒーティングパルスとを有する。このようなパルスシーケンスは、プリントヘッド１００ａ及び１００ｂのそれぞれのノズル内のノズルヒーターに与えられ、印刷のためにインク滴が吐出される。テーブル６３０の目的は、Ｔｒｅｐ、Ｔｉｎｔ、Ｔｍａｉｎを、ステップＳ５９１０で算出した温度差にある程度基づいて算出することである。
【０５３１】
同時に、パルス駆動シーケンスのパルス幅は、プリントヘッド、インク特性、解像度などによってそれぞれ異なることがわかる。従って、図６０に示すように、テーブル６３０はテーブル６３２ａ、６３２ｂなど個々のテーブルを含んでいる。各テーブル６３２ａ，６３２ｂ等は、プリントヘッド、インク特性、解像度の各組み合わせに応じて作成されている。６３０に示すように、テーブルそれぞれはプレヒートパルスＴｐｒｅのパルス幅のためのエントリー６３４と、無活動期間Ｔｉｎｔのパルス幅のためのエントリー６３５と、メインヒーティングパルスＴｍａｉｎのパルス幅のためのエントリー６３６とを含む。どのエントリーにも、ステップＳ５９１０で算出した温度差Ｔｄｉｆｆに基づいてルックアップ処理によりアクセスすることができる。
【０５３２】
プリンタ１０は、デフォルトまたはコマンドに基づいて、６３０に格納されているテーブルから駆動時間のテーブルを一つ選択する。その後、プリンタ１０は選択したテーブルのエントリーにアクセスし、ステップＳ５９１０で算出した温度差及びヘッド／インク／解像度の組み合わせに基づいて、プレヒートパルス、無活動時間、メインヒーティングパルスの適切な時間を探し出す。
【０５３３】
図５９に戻って説明すると、ステップＳ５９１２で、ステップＳ５９０１で受信した駆動のための制御率に基づいて、ルックアップ処理によりテーブル６３０から得た駆動時間を更新する。このステップの目的は、プリンタ１０に実際の装着されたプリントヘッドと、テーブル６３０に格納されたプリントヘッドの組み合わせの違いを考慮に入れて、ルックアップテーブル６３０に予め格納された値を更新することができるようにすることである。詳しく説明すると、上述の通り、プリンタ１０のＲＯＭ９２には駆動時間のための複数のテーブルが予め格納されており、それぞれのテーブルはプリントヘッド／インク／解像度の各組み合わせのために作られているが、ヘッド／インク／解像度のすべての組み合わせに対応できるわけではない。従って、ステップＳ５９１２での更新により、これまでには分からなかった、または格納されていなかったプリントヘッド／インク／解像度の組み合わせを使用することができる。
【０５３４】
ステップＳ５９１２の更新は、ステップＳ５９１１のルックアップ処理で得られた駆動時間に、ステップＳ５９０１で受信した制御率を掛けることにより行うことが好ましい。このため、デフォルトの制御率は１００％である。パルス率変更コマンド［ＰＣＲ］により命令可能な制御率は、１％と２００％の間に制限されている。従って、パルス時間は、効果的に無視できるパルス時間から、テーブル６３０に保持された値の２倍まで更新することができる。
【０５３５】
そして処理はステップＳ５９１４に進み、プリンタ１０は、ヘッド温度を算出するためにヒートアップ係数を探し出す。図６０のテーブル６２１を参照して上述したように、ヒートアップ係数は、プリントヘッド、インク、及び解像度の各組み合わせに基づいて得られ、約５０ｍｓｅｃのパルス幅を有する１周期内に印刷されるドット数に基づいて、テーブル６２２ａなどの１つから探し出される。
【０５３６】
ステップＳ５９１５では、ステップＳ５９０３で受信した制御率に基づいてヒートアップ係数を更新する。ここでもこのような更新の目的は、テーブル６２１のどれにも保持されていない、プリントヘッド、インク、解像度のある組み合わせが利用できるようにすることである。
【０５３７】
好ましくは、ステップＳ５９１５でのヒートアップ係数の更新は、ステップＳ５９１４でルックアップ処理を行うことにより得た係数を、ステップＳ５９０３で受信した制御率により掛けることにより行われる。このため、デフォルトの制御値は１００％である。制御率変更コマンド［ＰＣＲ］により命令可能な制御率は、１％と２００％の間に制限されているため、ヒートアップ係数は、効果的に無視できる値から、テーブル６２１に保持された値の２倍まで、更新することができる。
【０５３８】
図５９１６において、プリンタ１０は、プリンタ１０にプリントデータを送るホストプロセッサー２からのコマンドと、プリンタ１０に送られたデータを印刷するように指示するコマンドとに応じて、ステップＳ５９１２で更新した駆動時間に基づいて、ノズル駆動を制御する（ステップＳ５９１７）。そして、ステップＳ５９０６〜Ｓ５９１５を例えば５０ｍｓｅｃ間隔で繰り返し、ホストプロセッサー２からの命令に対して、ステップＳ５９１６で更新された駆動時間を基にして、ノズル駆動を制御する。なお、駆動の制御率並びにヘッド温度算出のための制御率は、ホストプロセッサー２から随時送られ、上記ステップＳ５９０１及びＳ５９０３でプリンタ１０により対処される。
【０５３９】
図６１は駆動時間決定のためのリアルタイムな周辺温度の使用方法について説明するフローチャートである。本発明の実施の形態によれば、プリントヘッドのノズルの駆動時間を決定するために用いられる周辺温度Ｔｅｎｖはリアルタイムの周辺温度ＴｅｎｖＲである。
【０５４０】
従って、ステップＳ６１０１において、リアルタイムの周辺温度ＴｅｎｖＲは図９に示す温度センサー１０３ａを用いて計測され、Ａ／Ｄ変換器及びＩ／Ｏポート９６を介してリトリーブされる。ステップＳ６１０２において、ハード電源投入タイマを進める。そしてステップＳ６１０３でリアルタイムの周辺温度ＴｅｎｖＲをハード電源投入タイマを利用して更新する。これは、プリンタ１０の連続動作が周辺温度に与える影響に対処するためである。
【０５４１】
ステップＳ６１０４において、ＴｅｎｖＲが０℃よりも低いかどうかを判断し、その場合、ＴｅｎｖＲをステップＳ６１０５で０℃に設定する。同様に、ステップＳ６１０６において、ＴｅｎｖＲが７０℃よりも高いかどうかを判断し、その場合には、ＴｅｎｖＲを７０℃に設定する。
【０５４２】
ステップＳ６１０８において、図５９及び図６０を参照して説明したように、ＴｅｎｖＲ及びＴｅｎｖを用いてヘッド目標温度をリトリーブする。
【０５４３】
図６２は、自動予備吐出処理が一定時間間隔をベースに行われた後の、ヒートパルス幅変調の制御について説明する図である。
【０５４４】
図６２に示すように、安定した印刷濃度を保つために、それぞれのスキャンライン上においてパルス幅変調は変化する。予備吐出処理は、前回の予備吐出制御から３秒が経過したスキャンラインの後に行われる。
【０５４５】
それぞれの予備吐出処理の後、カートリッジホルダ４０５は、印刷が再開できるようになる前に、予備吐出領域４３９から印刷領域６４４へ動かなければならない。カートリッジホルダ４０５により運ばれるプリントヘッドの温度ははこの動作の間に低下する。その結果、図６２に示すように、予備吐出処理の後、印刷を再開するときには最大パルス幅６４７が与えられる。パルス幅はプレヒートパルスと、無活動期間と、最大パルス幅６４７として示すような、メインパルスを含む。
【０５４６】
図６２に示すヒートパルス変調の制御は、ある固定の短い時間間隔をベースに予備吐出が行われている場合に、印刷の質を保つためには十分であるかもしれないが、ヒートパルス変調は、上記セクション８．１．１で説明した、時間間隔を異ならせることにより予備吐出の実施タイミングを分けることのできる本実施の形態の予備吐出に、より適切に対応するように更新することができる。
【０５４７】
図６３は、本実施の形態におけるプリントヘッドのヒートパルス幅変調を説明するための図であり、ヒートパルス幅は、前回の予備吐出から第１の時間間隔に、最大となる。
【０５４８】
図６３において、予備吐出処理６５１は、前回の予備吐出処理６５３を行ってから６秒間隔（６５２）の後に行われる。６秒間隔（６５２）は、ノズル数変更が検出されない場合の、長い間隔の一例である。このような長い時間間隔については、図５０及び図５１を参照して上述した。
【０５４９】
長時間間隔の第１部分の間、カートリッジホルダ４０５により運ばれるプリントヘッドのノズルは、「安全領域」で動作している。この安全領域は、駆動ノズル数の変更があった場合であっても、予備吐出が行われないように設定された閾値により定義され、やはり図５０及び図５１を参照して説明した。動作の安全領域中においては、ノズルは乾燥したり、凝固したりしない傾向がある。従って、図５９〜図６２を参照して説明したパルス幅変調で、十分な画質を提供することができる。
【０５５０】
安全領域の後、カートリッジホルダ４０５により運ばれるプリントヘッドのノズルは、同じく図５０及び図５１を参照して上述した「影響を受けやすい領域」で動作していることになる。この影響を受けやすい領域での動作中は、プリントヘッドのノズル内で、インクが乾燥し始めたり凝固し始めたりすることがある。従って、本実施の形態によれば、この影響を受けやすい領域での動作中は、ノズルを駆動するために最大パルス幅６５４を使用する。同様に、予備吐出が、図５０及び図５１を参照して上述した「危険領域」での動作に至るまで遅延された場合、ノズルを駆動するために、最大パルス幅が引き続き使用される。
【０５５１】
予備吐出処理の後、カートリッジホルダ４０５が予備吐出領域４３９から印刷領域まで移動する間に起こるプリントヘッドの温度低下に対応するために、最大パルス幅６５６がノズルを駆動するために用いられる。そして、図５９〜図６２を参照して上述したパルス幅変調が再開され、ノズルがまた影響を受けやすい領域または危険領域で動作するようになるまで続けられる。
【０５５２】
図６４は、本実施の形態におけるヒートパルス幅変調を説明するためのフローチャートであり、前回の予備吐出から第１の時間が経過すると、ヒートパルス幅が最大となる。このパルス幅変調制御は、図５９〜図６２を参照して上述したパルス幅変調の更新を示すものである。
【０５５３】
図６４に示すパルス幅変調制御は、リアルタイムでパルス幅変調を更新するために、プリンタ制御部１１０により、例えば５０ｍｓｅｃなどの周期で繰り返し実施されることが好ましい。具体的には、図６４に示すパルス幅変調制御は図１９のステップＳ１９０６から、例えば５０ｍｓｅｃ毎に実施される。
【０５５４】
ステップＳ６４０１において、記録媒体がプリンタ１０に給紙されたかを判断する。記録媒体が給紙されていない場合、印刷を行わず、ステップＳ１９にリターンする。給紙されていれば、ステップＳ６４０２に進み、予備吐出処理中であるかどうかを判断する。予備吐出処理中である場合には、図５６を参照して上述したようにプリントヘッドの構成に基づいてパルス幅変調を制御し、図１９にリターンする。そうでない場合には、ステップＳ６４０３及びＳ６４０４に進む。
【０５５５】
ステップＳ６４０３及びＳ６４０４において、パルス幅変調パラメータが図５９〜図６２を参照して上述したようにして決定される。本発明の実施の形態においては、パルス幅パラメータはパルス数の形態で返される。パルス数が大きいほど、ノズルから吐出されるインクの量をより多くするヒートパルスを示し、パルス数が小さいほど、ノズルから吐出されるインクの量をより少なくするヒートパルスを示す。
【０５５６】
ステップＳ６４０５において、予備吐出タイマ（ＰＦＴ＿ＡまたはＰＦＴ＿Ｂ）が、プリントヘッドノズル動作における「影響を受けやすい領域」を定義する閾値（例えば３秒）よりも大きいかどうかを判断する。予備吐出タイマが閾値よりも大きい場合、ステップＳ６４０６に進んで、最大パルス幅がパルス幅変調に用いられる。この工程により、ノズル内のインクが乾燥または凝固しやすいような時には、最大パルス幅が用いられる。最大パルス幅を使用することにより、画質を低下させる原因となるノズルのつまりが起こる可能性を下げることができる。そしてステップＳ６４１１に進む。
【０５５７】
予備吐出タイマが閾値を越えていない場合は、ステップＳ６４０７において、ステップＳ６４０４で得たパルス数が以前に決められたパルス幅の数よりも小さいかどうかを判断する。決められたパルス数が以前のパルス幅の数よりも小さい場合、ステップＳ６４０８において現在のパルス数を前回のパルス数から１を引いた値に設定する。
【０５５８】
同様に、ステップＳ６４０９において、ステップＳ６４０４で得たパルス数が、前回決められたパルス幅数よりも大きいかどうかを判断する。決められたパルス数が前回のパルス幅数よりも大きい場合、ステップＳ６４１０において現在のパルス数を前回のパルス数に１を加えた値に設定する。
【０５５９】
ステップＳ６４０７〜Ｓ６４１０の動作により、パルス幅変調機能の呼び出し１回につき、現在のパルス幅数の変更率を１に制限することができる。この結果、パルス幅変調における変化は、従来のシステムに比べてなめらかになり、結果として得られる１スキャンラインの印刷濃度を均等にすることができる。
【０５６０】
ステップＳ６４１１では、現在のパルス幅数をヒートパルスの時間に変換し、ステップＳ６４１２で制御ロジック９４に送る。そして図１９にリターンする。
【０５６１】
＜９．０  複数のインクを用いたカラー印刷＞
上述の通り、プリンタドライバ８４は入力したマルチレベルのＲＧＢデータを、印刷に用いる２値のＣＭＹＫデータに変換するために、様々な処理を実行する。図６５は、１画素分のＲＧＢデータを黄色インク、マゼンタインク、シアンインク、高浸透性の黒インク、低浸透性の黒インクそれぞれに対応する２値データに変換するための、コンピューターにより実行可能な処理工程を示すフローチャートである。処理は、プリンタドライバ８４に保持し、ＲＡＭ８６からＣＰＵ７０により実行することが好ましい。
【０５６２】
図６５の処理は、マルチレベル値に対応する低浸透性黒インクの第１の量を決定する第１の決定工程と、マルチレベル値に対応する高浸透性黒インクの第２の量を決定する第２の決定工程と、マルチレベル値に対応する第１の量の低浸透性黒インクと、マルチレベル値に対応する第２の量の高浸透性黒インクとを用いて画素を印刷する印刷工程とを有する。
【０５６３】
具体的に説明すると、ステップＳ６５０１で処理が開始されると、入力画素のＲＧＢデータを受信する。入力されたＲＧＢデータは、８ビットの赤、緑、青データからなる多値ＲＧＢデータであることが好ましい。ＲＧＢデータはステップＳ６５０２で対応するＣＭＹＫマルチビット値に変換される。次にステップＳ６５０４において、ステップＳ６５０２で得たシアンデータ値が出力補正される。また、ステップＳ６５０２で得たマゼンタデータ値がステップＳ６５０５で出力補正され、さらにステップＳ６５０６及びＳ６５０７ではステップＳ６５０２で生成された黄色データ値及び黒データ値に対して、出力補正が行われる。さらにステップＳ６５０８において、ステップＳ６５０２で生成された黒データ値に対する出力補正を行う。なお、ステップＳ６５０８における出力補正は、ステップＳ６５０７で出力補正された黒データに対して行われるが、ステップＳ６５０７における出力補正では、高浸透性黒インクに対応する出力補正後の値が生成され、ステップＳ７６０８における出力補正では、低浸透性黒インクに対応する値が生成される。
【０５６４】
図６６は、ステップＳ６５０４〜Ｓ６５０８の処理で使用されるグラフの例を示す。図６６のそれぞれのグラフの線は、特定タイプのインクのための出力補正を行うために用いられる、対応する入力値及び出力値を示す。例えば、染料黒インクに対応する出力補正を行うためには、ステップＳ６５０２で生成された黒の入力値を水平軸上に置いて、仮想垂直線を染料黒インクを表すグラフの線と交わるように描き、さらに仮想水平線を交点から番号付垂直まで描く。入力カラー値の出力補正された値は、仮想水平線が番号付垂直軸と交わる点に基づいて決められる。
【０５６５】
ステップＳ６５０４〜Ｓ６５０８で上述したように出力補正を行った後、出力補正されたそれぞれの値は、中間調化される。具体的には、出力補正されたシアンデータは、ステップＳ６５１０で中間調化され、出力補正されたマゼンタデータは、ステップＳ６５１１で中間調化され、出力補正された黄色データは、ステップＳ６５１２で中間調化され、出力補正された染料黒データは、ステップＳ６５１３で中間調化され、出力補正された顔料黒データは、ステップＳ６５１４で中間調化される。なお、ステップＳ６５１０〜Ｓ６５１４で行われる中間調化処理により、「０」か「１」の値に変換される。その結果、ステップＳ６５０１で入力したデータに対応する画素を印刷する時には、インク滴を全く使わないか、または上述したそれぞれのタイプのインク滴を全て用いるか、またはそれらを組み合わせるかにより印刷される。とりわけ、従来のシステムと対照的に、染料黒インクと顔料黒インクの両方をその画素を印刷するために用いてもよい。ステップＳ６５１６では、ステップＳ６５１０〜Ｓ６５１４のいずれかのステップで生成された中間調化されたデータは、上述のように、その後に行われる印刷のためにプリントバッファ９９に保持される。
【０５６６】
さらに、図６５の処理により得られた２値データを、黄色、マゼンタ、シアン、高浸透性黒インクの小さなインク滴と、低浸透性黒インクの大きなインク滴とを印刷するために用いることが好ましい。上記では、このような構成により、カラー領域でも良好な品質を保ちながら、高品質のテキスト画像及び黒領域を生成することができる。
【０５６７】
＜１０．０  状態に基づくプリンタ制御＞
図６７〜図８２は、プリンタドライバがプリンタの状態をどのように得、プリンタ動作を制御するためにそういった状態をどのように使用するかを説明するための図である。特にこれらの図は、デフォルト値からプリンタ用の動作制御パラメータに更新するため、及び／またはデフォルトの方法とは異なるプリンタの現在の状態を考慮した方法でプリントデータを導き出すようにプリンタで印刷するためにプリントドライバによってプリントデータを導き出す方法を更新するために、どのようにプリンタドライバがプリンタの状態、及び／またはコンピューター機器の現在の環境に関係するプリンタの状態を利用するかを説明するものである。
【０５６８】
プリンタをその状態に基いて制御を行うことで、多くの利点が得られる。具体的には、起こり得るすべてのプリンタの状態に対応するために、プリンタの処理を行うタイミングはしばしば処理マージンを長くとった設計時間に固定されていることが多い。このように処理マージンを長くとることにより、非常に多くの様々な状態に対応する処理を行うことができるが、ある特定の状態では、この長いマージンは非効率なものである。例えば、様々な温度に亘って良好なプリンタ動作を実現するために、温度は、設計マージンを長くする要因となるプリンタ状態の一例である。設計マージンを大きくすることで、様々な温度において良好な印刷出力を実現することができる。しかし、そのような印刷出力のコストは、ある温度（例えば、非常に低いまたは非常に高い温度）では良好な印刷出力を確実にすることができる反面、別の温度（例えば、通常の室温）では効率を下げることとなる。従って本発明の実施の形態では、プリンタの状態を温度として得、その状態に基づいてどのようにプリンタを制御し、更に／またはそのような状態に基づいてどのようにプリントデータを導き出すかを更新する。
【０５６９】
＜１０．１  状態取得＞
図６７〜図６９は、プリンタの処理パラメータを更新するためにプリンタドライバがどのように状態を取得し、その状態を使用するか、及び／またプリンタドライバがどのようにプリントデータを導き出すかを示す。こういった更新により、デフォルトの処理とは異なる別の処理になる。
【０５７０】
図６７は、図９及び図１８に示すものと同様の機能ブロック図であり、プリンタ１０と通信するコンピューター機器１を示している。図６７に示すように、コンピューター機器１は、オペレーティングシステム８１、プリントリクエストに影響を与えるアプリケーションプログラム８２ａ、プリンタドライバ８４、プリントデータ保持部１０７を有する。コンピューター機器１は、セントロニクスやネットワークインタフェースなどを用い、双方向通信線７６を介してプリンタ１０と通信する。プリンタ１０はプリンタ制御部（ソフトウエア）１１０を有し、プリンタドライバ８４からのプリントデータをプリントバッファ１０９に格納し、プリントエンジン１０１にこのようなデータを印刷させる。
【０５７１】
図６８は、プリンタドライバ８４がどのようにプリンタ１０から状態を取得し、取得した状態に基づいて、デフォルトのプリントデータ生成処理を更新し、及び／またはプリンタのためのデフォルトの処理パラメータを更新するかを示すフローチャートである。図６８において、左側に示す処理は、コンピューター機器１でプリンタドライバ８４により実行される処理であり、右側に示す処理は、プリンタ１０においてプリンタ制御部１１０により実行される処理である。こういったすべての処理は、アプリケーションプログラム８２ａからの特定プリントジョブの実行リクエストに応じて行われる。
【０５７２】
ステップＳ６８０１において、プリンタドライバ８４はコンピューター機器１の現在の環境を取得する。現在の環境は、例えば、時間、日付、位置情報、及びコンピューター及びそのオペレーティングシステム８１から得られるその他の環境情報である。以下に示すように、そのような環境情報は、ドライバ８４によって、プリンタの状態に基づいて行われる更新をさらに改善するために用いられる。例えば、ある処理は、１日のある時間帯で、実施される頻度が高めまたは低めだったり全く実施されなかったりする。
【０５７３】
ステップＳ６８０２ではプリンタドライバ８４はプリンタ状態を取得する。プリンタドライバ８４は、［ＳＴＡＴＵＳ］コマンドを双方向通信線７６を介してプリンタ１０に送ることにより、プリンタの状態を取得する。プリンタドライバ８４によりリクエストされ、プリンタ１０から提供されるプリンタ状態の例としてはプリンタの温度、プリンタのためのファームウエアのバージョン及びその能力及び現在の構成、プリンタの現在及び処理中の動作（例えば、クリーニング、位置合わせ、清掃、給紙）、プロセッサーの速さとパワー、及び、プリンタのＥＥＰＲＯＭから得られる様々な情報がある。
【０５７４】
プリンタドライバ８４における処理は、ステップＳ６８０５に進み、プリンタドライバ８４は、上記のようにして取得したプリンタの状態に基づいて、及び／またはコンピュータ機器１の環境に基づいて、プリンタの処理パラメータを更新する。ステップＳ６８０５で変更される処理パラメータは、例えば、プリントヘッドの予備吐出処理の時間間隔の調整、スミヤ時間の調整、自動給紙（ＡＳＦ）の調整、行送りの速度、プリントヘッドの清掃速度の調整などがある。プリンタドライバ８４は、双方向信号線７６を介してプリンタ１０へ適切なコマンドを送信することにより、これらの処理パラメータをデフォルト値から更新する。この処理については、後で例を挙げてより詳しく説明する。プリンタ１０はステップＳ６８０６で、デフォルト値の代わりに更新された処理パラメータを格納することにより、こういったコマンドに対応する。
【０５７５】
プリンタドライバ８４での処理はステップＳ６８０７に進み、プリンタドライバ８４はプリンタ１０の状態に基づいて、及び／またはコンピューター１の環境に基づいて、ユーザインタフェースなどのプリンタドライバ８４自身の処理を更新する。このようなデフォルト処理からの、処理更新の一例として、処理中のプリンタ処理が終了するまで、手差し給紙を遅延するメッセージの表示など、ユーザに特別のメッセージを表示する。
【０５７６】
そしてステップＳ６８０９に進み、プリンタドライバ８４は、デフォルトのデータ処理から、プリントデータを導き出す方法を、プリンタ１０の状態またはプリンタ１０の状態及びコンピューター機器１の現在の環境に基づいて更新する。このようなプリントデータ処理の更新の例として、インクにじみ及び／またはインクスミヤ（こすれ）の影響を軽減するようにプリンタ補正テーブルを更新したり、データ圧縮アルゴリズムをより効率的なアルゴリズムに変更したり、プリンタ１０が圧縮したデータよりも圧縮しないデータの方により迅速に対応できるときにデータ圧縮をオフにするなど、データ圧縮処理を更新したりする。このようにして生成したプリントデータは、［ＤＡＴＡ］コマンドを用いて双方向通信線７６を介してプリンタ１０に送られ、プリンタ１０はこのコマンドに応じてステップＳ６８１０でデータを印刷する。
【０５７７】
プリンタ１０から得られる重要な状態変数の一つは、プリンタの現在温度である。ここで言うプリンタの温度は、プリンタの構成要素（例えば、プリントヘッドや、プリンタ回路基盤など）のいずれかの内部温度ではなく、プリンタの周辺温度である。プリンタの周辺温度は、広義ではプリンタが印刷をしている環境の温度を示し、インクの乾燥時間、インクの粘度、記録媒体の滑り易さ（つまり、プリンタ１０が記録媒体を給紙トレイから給紙して、排紙トレイに排紙する能力）など、様々な物理的現象を広く制御する。
【０５７８】
図６９は、プリンタ制御部１１０により実行される、温度を取得するための処理手順を示す。図６９に示す手順は、図１９のステップＳ１９１６を詳しく説明したものであり、図６１で示す工程によれば、プリンタの状態温度をリアルタイムの周辺温度ＴｅｎｖＲに基づいて取得する。
【０５７９】
図６９に示す工程全体の効果は、プリンタがキャップをされた状態で少なくとも２時間使用されなかった場合に、プリンタ状態温度をリアルタイム周辺温度ＴｅｎｖＲに設定することである。図６９示す処理は、１分毎の割り込みレベル（図１９参照）で実行され、その毎に動作分カウンターを進める（ステップＳ６９０１）。ステップＳ６９０２では、プリンタのキャップされた状態を調べる。プリンタが現在キャップされた状態でない場合には、ステップＳ６９０４に進み、キャッピングカウンタは０にリセットされ、次の１分毎の割り込みまで、処理は終了する。反対に、ステップＳ６９０２においてプリンタが現在キャップされた状態であると判断されると、ステップＳ６９０５に進み、キャッピングカウンタを進める。ステップＳ６９０６及びＳ６９０７でキャッピングカウンタが、キャップされた状態で１２０分間経過したことに対応する１２０に達したかどうかを判断する。キャッピングカウンタが１２０に達していない場合、次の１分毎の割り込みまで、処理を終了する。反対に、キャッピングカウンタが１２０に達している場合には、プリンタ状態温度ＴｅｎｖＬをリアルタイムの温度であるＴｅｎｖＲの現在値に設定する。その後、次の１分毎の割り込みまで、処理は終了する。
【０５８０】
＜１０．２  にじみの低減＞
図７０〜図７２は、にじみを低減するために、プリンタドライバ８４がどのようにプリンタの状態に基づいてプリントデータの処理をデフォルト処理から更新するかを示す。図７０〜図７２に示す例では、更新は、プリンタ状態温度ＴｅｎｖＬに基づいて行われ、その更新では、インクにじみが起きやすい高温下で、プリントヘッドから吐出されるインクの全体量を削減するように働く。
【０５８１】
図７０はにじみ低減の処理を示し、プリンタドライバ８４がプリンタの状態に基づいてカラーテーブルの選択をする、従って、ステップＳ７００１では、プリンタドライバ８４はプリンタ状態温度ＴｅｎｖＬを取得する。ステップＳ７００２において、プリンタ状態温度と固定の値（Ｔ１）、好ましくは３２℃とを比較する。プリンタ状態温度ＴｅｎｖＬが固定温度Ｔ１を越える場合には、処理はステップＳ７００３に進み、インクにじみの可能性が高いことに基づいて、カラー補正テーブルを選択する。具体的には、ステップＳ７００３では、高温下で、プリンタ１０から吐出されるインクの量を制限するカラーテーブル２を選択する。また、高温下では高湿度になることが推定できるため、インクの乾燥にかかる全体時間が延びる。
【０５８２】
反対に、ステップＳ７００２においてプリンタ状態温度ＴｅｎｖＬが固定閾値Ｔ１以下である場合、ステップＳ７００４に進み、カラーテーブル２ほどプリンタ１０から吐出されるインクの量を制限することのないカラー補正テーブルを選択する。具体的には、プリンタ温度ＴｅｎｖＬが比較的低く、インクにじみが起こる可能性が低いために、カラーテーブル１を選択し、デフォルト処理ができるようにする。
【０５８３】
図７１は、カラーテーブル２に保持される値に対して、カラーテーブル１に保持される値を示す。図７１は、シアン、マゼンタ、黄色、黒のインクそれぞれのための値のグラフである。グラフは、カラーテーブルから得られるマルチレベル出力値をマルチレベル入力値の関数として示すものである。テーブル１のための値を実線で示す。図７１に示すように、シアン、マゼンタ、黄色、黒のインクのテーブル１の出力値は、入力値が上昇するにつれ、徐々に上昇する。
【０５８４】
テーブル２の値は点線で示し、０から２４０までの入力値に対する値は、テーブル１の値と同じである。しかし、入力値２４０を越えると、テーブル２の値は一定に保たれるため、高温下でのインクの吐出量を制限し、インクにじみが起きる可能性を減らすことができる。
【０５８５】
図７０に示す例では、プリンタ状態温度ＴｅｎｖＬに応じて、プリンタドライバ８４は異なるカラーテーブルを選択している。しかし、異なるルックアップテーブルから選択をする代わりに、プリンタドライバ８４はルックアップテーブルの値を更新することも可能である。図７２はこのもう一方の例を示す。
【０５８６】
ステップＳ７２００において、プリンタドライバ８４はプリンタ状態温度ＴｅｎｖＬを取得する。次にステップＳ７２０１において、標準プリンタカラー補正テーブルがメモリにロードされる。ステップＳ７２０２において、プリンタ状態温度を、例えば３２℃の固定の所定閾値（Ｔ１）と比較する。プリンタ状態温度ＴｅｎｖＬが固定閾値Ｔ１以下である場合には、ロードされたプリンタカラー補正テーブルの更新は行わない。反対に、プリンタ状態温度が固定閾値Ｔ１を超える場合には、ステップＳ７２０３に進み、プリンタドライバ８４はカラー補正ルックアップテーブルの値を、インクにじみが起きる可能性が減るように更新する。適切な更新は、図７１で点線が示す値を得るような値に変更することである。
【０５８７】
上記によれば、プリンタドライバがプリンタ状態に基づいてデフォルトのデータ処理からデータ処理を更新するので、インクにじみを低減することができる。
【０５８８】
＜１０．３  スミヤの低減＞
「スミヤ」は、排紙トレイ上にある記録媒体に印刷されたインクが十分に乾いていないために、次の記録媒体がプリンタから排出されている（または印刷がなされた）ときに、その先端が排紙トレイ上の記録媒体の乾いていないインクをこすり、汚してしまう現象である。
【０５８９】
スミヤを制御するために、プリンタ制御部１１０は、図７３Ａ及び図７３Ｂに示すスミヤ制御処理を実行する。図７３Ｂの処理は単純で、単にノンゼロスミヤタイマを１秒毎の割り込みに応じて減らすだけである（図１９のＳ１９１１参照）。図７３Ａは、次に排紙される記録媒体の先端により乾ききっていないインクのスミヤが起こる可能性を減らすために、現在印刷中のドット濃度に関連して、どのようにスミヤタイマを使用するかを示している。
【０５９０】
ステップＳ７３０１において、プリンタ１０は給紙トレイから記録媒体を給紙し、ステップＳ７３０２でプリンタ制御部１１０はスミヤタイマを０にセットする。ステップＳ７３０４では、プリンタによる通常の印刷動作を行い、各走査の間に、プリンタ制御部１１０は走査でのドットの濃度が、ドライバが設定可能な閾値を越えているかどうかを判断する（ステップＳ７３０５）。いずれのスキャンラインにおいてもドット濃度が閾値を超えなければ、記録媒体上に吐出されたインクの量が少なく、スミヤが起こる可能性が大幅に低減されているため、特別な処理は必要ない。反対に、ステップＳ７３０５でいずれかのスキャンラインにおいて印刷したドット濃度がドライバが設定可能な閾値を超えていると判断した場合には、ステップＳ７３０６に進み、スミヤタイマをドライバが制御した値にセットする。これによりスミヤタイマは０では無くなるため、上述の通り図７３Ｂの処理によって、減少する。
【０５９１】
図７４及び図７５に示す例によれば、ドライバが設定可能な印刷濃度閾値と、ドライバが制御可能なスミヤタイマ値はプリンタの状態に基づいて決定されるため、プリンタの状態に応じてスミヤパラメータを制御することができる。
【０５９２】
図７３ＡのステップＳ７３０７において、ページの最後に到達したかどうかを判断し、到達したと判断されるまでステップＳ７３０４に戻って処理を繰り返す。ページの最後に到達したと判断されると、印刷されたページが最終ページである場合には（ステップＳ７３０９でＹＥＳ）、現在印刷された記録媒体は単純に排出される（ステップＳ７３１０）。しかし、現在印刷された記録媒体が最終ページでない場合にはステップＳ７３１１に進み、スミヤタイマが０まで減少したかどうかを確認する。スミヤタイマが０になるまで、現在印刷された記録媒体は排紙されない。しかし、スミヤタイマが０になると同時にステップＳ７３１２に進み、現在印刷された記録媒体は排紙トレイに排紙され、新しい記録媒体が給紙トレイから給紙されて、処理はステップＳ７３０４に戻る。
【０５９３】
図７４及び図７５は、プリンタドライバ８４が、プリンタ１０の現在の状態に基づいてどのようにスミヤタイマを設定し、スミヤ制御のための濃度を設定するかを示すフローチャートである。図７４において、ドライバ８４は、プリンタの状態に応じてスミヤタイマの値を算出し、スミヤタイマの値をプリンタ１０に送る。具体的には、ステップＳ７４０１において、ドライバ８４はプリンタの状態をプリンタ状態温度ＴｅｎｖＬの形態で取得する。ステップＳ７４０２において、温度の値が、通常の範囲Ｔ１〜Ｔ２にあるかどうかを判断する。典型的な範囲は１５℃〜３５℃である。プリンタ状態温度ＴｅｎｖＬが範囲Ｔ１〜Ｔ２内にある場合、スミヤタイマは、インクのスミヤが起こる可能性が低いことに鑑みて、短いインク乾燥時間を想定して第１の値に設定される（ステップＳ７４０４）。反対に、プリンタ状態温度ＴｅｎｖＬが範囲Ｔ１〜Ｔ２外にある場合、ドライバ８４は、スミヤが起こる確率が高いことを鑑み、長いインク乾燥時間を想定して、第１のスミヤタイマ値よりも大きい、第２のスミヤタイマ値を選択する。ステップＳ７４０７において、ドライバ８４は選択したスミヤタイマ値をプリンタ１０に送る。
【０５９４】
図７５は、ドライバ８４がプリンタ状態に基づいてドット濃度閾値を更新し、更新した値をプリンタ１０に送る動作を示す。ステップＳ７５０１において、ドライバ８４はプリンタ状態をプリンタ状態温度ＴｅｎｖＬの形態で取得する。ステップＳ７５０２では、ドライバ８４はプリンタ状態が例えば１５℃〜３５℃などの範囲Ｔ１〜Ｔ２内にあるかどうかを判断する。プリンタ状態温度が範囲Ｔ１〜Ｔ２内にある場合、短いインク乾燥時間を想定し、高濃度閾値に対応して第１の濃度閾値を選択する。反対に、プリンタ状態温度が範囲Ｔ１〜Ｔ２外にある場合、ステップＳ７５０５またはＳ７５０６の適切な方に進み、長いインク乾燥時間を想定し、低濃度閾値に対応してスミヤ閾値は第１の閾値よりも小さい第２の閾値に設定される。ステップＳ７５０７では、ドライバ８４は選択した閾値をプリンタ１０に送る。
【０５９５】
＜１０．４  自動給紙（ＡＳＦ）速度＞
図７６及び図７７は、プリンタ１０の状態、またはプリンタ１０の状態及びコンピューター機器１の現在の状態に応じて、プリンタドライバ８４がプリンタ１０が給紙トレイから用紙を給紙する速度をどのように更新するかを説明するためのフローチャートである。
【０５９６】
図７６及び図７７に示す例では、給紙速度を更新するために用いるプリンタ状態は、プリンタ状態温度ＴｅｎｖＬである。特に、温度が低い場合、低温では摩擦が低くなることに加えて、プリンタ１０のゴムで覆われた給紙ローラーが堅くなるために、給紙トレイの用紙は滑りやすくなる傾向がある。従って、低温度下では、低速度でも確実な給紙速度が選択される。反対に、高温度下では、記録媒体を給紙するのが比較的容易であるため、速い給紙速度が選択される。
【０５９７】
図７６において、ステップＳ７６０１ではプリンタドライバ８４はプリンタ状態温度ＴｅｎｖＬをプリンタ１０から取得し、ステップＳ７６０２において温度が予め設定された、例えば１８℃などの閾値Ｔ１よりも低いかどうかを判断する。プリンタ状態温度ＴｅｎｖＬが閾値Ｔ１以下である場合には、自動給紙部による給紙速度を遅くする（ステップＳ７６０４）。反対に、温度が十分に高い場合、記録媒体は高速度でも給紙される確実性が高いので、プリンタドライバ８４は自動給紙のために高速度を選択する。
【０５９８】
ステップＳ７６０６において、プリンタドライバ８４は選択した給紙速度を、［ＬＯＡＤ］コマンドのパラメータを用いてプリンタ１０に送信する。
【０５９９】
図７７は、プリンタ１０の状態及びコンピューター機器１の現在の環境を共に用いて、ドライバ８４が給紙速度を選択する場合の例を示す。特に、図７７に示す例では、コンピューター機器１の現在の状態に基づいて、夜間にはより低い（従ってより騒音の少ない）速度がプリンタドライバ８４により常に選択される。反対に、昼間は、プリンタ状態温度が十分に高い場合には高速の給紙速度が選択され、そうでなければ、低速の給紙速度が選択される。
【０６００】
ステップＳ７７０１において、プリンタドライバ８４は現在のプリンタ状態温度ＴｅｎｖＬを取得し、ステップＳ７７０２においてコンピューター機器１から現在の構成及び時間を取得する。ステップＳ７７０３において、プリンタドライバ８４は、取得した時間が、例えば午前５：００〜午後１０：００の間にあるかを判断することにより、夜間であるかどうかを判断する。取得した時間が通常の昼間の時間帯外である場合、ステップＳ７７０５に進み、低速の給紙速度が必ず選択される。
【０６０１】
反対に、ステップＳ７７０３でプリンタドライバ８４が夜間ではないと判断すると、ステップＳ７７０６に進み、プリンタドライバ８４はプリンタ状態温度ＴｅｎｖＬが高速の給紙速度を選択するのに十分な位に高いかどうかを判断する。プリンタ状態温度が十分に高い場合、高速度が選択され（ステップＳ７７０８）、高くない場合、低速度が選択される（ステップＳ７７０７）。
【０６０２】
処理はステップＳ７７１０に進み、プリンタドライバ８４は選択した給紙速度を［ＬＯＡＤ］コマンドのパラメータを用いて、プリンタ１０に送る。
【０６０３】
＜１０．５  予備吐出のタイミング＞
図７８は、プリンタの状態に基づいてプリンタドライバ８４がどのように予備吐出処理のタイミングを制御するためのプリンタ１０の動作パラメータを更新するかを説明するためのフローチャートである。
【０６０４】
図７８に示す例では、予備吐出のタイミングに影響を与えるプリンタ状態は、プリンタの状態温度ＴｅｎｖＬである。具体的には、動作温度が低い場合、インクの粘度が高くなりやすいため、予備吐出をより頻繁に行う必要があるため、予備吐出処理の時間間隔として短い時間を選択する。反対に、動作温度が高い場合、インクの粘度は低いため、比較的に長い予備吐出処理間隔で、それほど頻繁に行う必要が無くなるため、予備吐出処理の時間間隔として長い時間を選択する。
【０６０５】
ステップＳ７８０１において、プリンタドライバ８４はプリンタ状態温度ＴｅｎｖＬを取得し、ステップＳ７８０２でプリンタ状態温度を固定閾値Ｔ１、例えば１８℃と比較する。温度ＴｅｎｖＬが閾値Ｔ２よりも低い場合、例えば３秒おきなど、デフォルトの比較的短い予備吐出間隔が選択される（ステップＳ７８０４）。反対に、温度ＴｅｎｖＬが閾値Ｔ１よりも高い場合、例えば６秒おきなど、比較的長い予備吐出処理間隔が選択される（ステップＳ７８０５）。どちらの場合にしても、その後、処理はステップＳ７８０６に進み、プリンタドライバ８４は選択した予備吐出処理間隔を［ＰＲＥＦＩＲＥ＿ＣＹＣ］コマンドを用いてプリンタ１０に送る。
【０６０６】
＜１０．６  手差し給紙の遅延＞
図７９及び８０は、プリンタ１０の状態に基づいて、プリンタドライバ８４がどのように自身の処理を更新するかを説明するためのフローチャートである。
【０６０７】
図７９は、プリンタドライバ８４によりディスプレイ２上に表示されるユーザインタフェース６９０の一部を示す図である。図７９はユーザインタフェース６９０のための「設定」タブのダイアログを示し、また、図７９に示すように、設定タブのダイアログは、記録媒体のタイプ、サイズ、方向をユーザが設定できるようにする領域６９１と、ユーザが手差し給紙を行い、自動給紙処理を行わないことを特定するためのチェックボックス６９２を含む。チェックボックス６９２を選択すると、プリンタドライバはプリンタ１０に、給紙トレイ１４からの自動給紙を行わずに、手差し給紙部１７（図３参照）に挿入された媒体をプリンタ１０内に取り込むように命令する。
【０６０８】
しかし、図５Ａ及び図５Ｂを参照して説明したように、現在印刷中の用紙のための行送り動作、給紙トレイ１４からの用紙の給紙動作、クリーニング機構が設けられたホームポジション４６における清掃処理を含む様々な動作を行うために、ラインフィードモータ３１４が１つ用いられるだけである。従って、プリンタの準備が整う前、例えば、プリンタが清掃処理を終える前にユーザが手差し給紙を行おうとした場合、トラブルが起こる可能性がある。
【０６０９】
従って、本実施の形態における処理によれば、プリンタドライバ８４が手差し給紙状態（チェックボックス６９２により）に設定され、プリンタの現在の状態が清掃処理中であることを示す場合、プリンタが清掃処理を終えるまで手差し給紙を延期するようにユーザにリクエストするメッセージを表示するようにプリンタドライバ８４はプリンタ１０の状態に基づいてその動作を更新する。
【０６１０】
図８０のステップＳ８００１において、プリンタドライバ８４はチェックボックス６９２がユーザにより選択されたことを判断することにより、プリンタドライバを手差し給紙モードに設定する。チェックボックスが選択されていない場合、上記説明した処理により自動給紙が進む。
【０６１１】
反対に、手差し給紙モードが選択された場合、ステップＳ８００２及びＳ８００４において、プリンタドライバ８４はプリンタ１０から状態を取得し、清掃処理中であるかどうかを判断する。ステップＳ８００５でプリンタドライバ８４が清掃処理中ではないと判断すると、処理は直接ステップＳ８０１０に進み、プリンタドライバはディスプレイ２上に、手差し給紙部１７に用紙を手動で挿入するようにユーザ向けのメッセージを表示する。反対に、清掃処理中である場合には、ステップＳ８００６に進み、プリンタドライバ８４はディスプレイ２上に手差し給紙部１７に用紙を挿入することを延期するようにユーザ向けのメッセージを表示する。具体的には、上述の通り、清掃処理と、給紙処理のために１つのモータを兼用しているので、清掃処理中に手差し給紙部１７に用紙を挿入すると、給紙処理が失敗する可能性がある。
【０６１２】
ステップＳ８００６で表示したメッセージは、清掃処理が終了したことを示すプリンタ状態がプリンタ１０からプリンタドライバ８４に送られるまで表示され続ける（ステップＳ８００７及びＳ８００８）。プリンタ状態が清掃処理が終了したことを示すと、処理はステップＳ８０１０に進み、上述したように、プリンタドライバ８４は手差し給紙部１７に用紙を挿入しても大丈夫である旨をユーザに知らせるメッセージを表示する。
【０６１３】
ステップＳ８０１１において、プリンタドライバ８４は手差し給紙部１７にユーザが用紙を挿入するのを待ち、挿入されると、ステップＳ８０１２でプリンタドライバ８４は［ＬＯＡＤ］コマンドを用いて、プリンタ１０に手差し給紙部から用紙を給紙するように命令する。
【０６１４】
＜１０．７  清掃速度＞
図８１は、プリンタ１０の状態、またはプリンタ１０の状態及びコンピューター機器１の現在の構成に基づいて、プリンタドライバ８４によるプリンタ１０で行われる清掃速度の更新を示す。
【０６１５】
図８１において、プリンタドライバ８４により行われる動作は、点線６９５で囲んでいる。この点線内に示すように、プリンタドライバ８４により行われる機能は、プリンタ１０の状態を取得し、コンピューター機器１の現在の構成を取得し、清掃速度を低速度または高速度に更新し、清掃処理を命令する工程を含む。
【０６１６】
詳しくは、ステップＳ８１０１及びＳ８１０２において、プリンタドライバ８４はプリンタ状態温度ＴｅｎｖＬ及びコンピューター機器１の構成情報を取得する。ステップＳ８１０３では、プリンタドライバ８４は清掃速度を設定する。清掃速度は、プリンタ状態温度または、プリンタ状態温度及びコンピューター機器１の現在の構成に基づいて設定される。特に、図７６及び図７７における給紙速度の選択処理と同様に、清掃速度はプリンタの状態のみに基づいて選択しても（例えば、プリンタ状態温度が高い場合にはインクの粘度が低くなるため、迅速に清掃を行うように、高速清掃速度が選択される）、プリンタ状態温度に加えて、時間に基づいて選択してもよい（例えば、夜間動作時には、遅く、静かな清掃速度を選択し、昼間動作時には、プリンタ状態温度に基づいて清掃速度を選択する）。
【０６１７】
ステップＳ８１０４において、プリンタの清掃が必要であるときに、プリンタドライバ８４はプリンタ１０に［ＲＥＣＯＶＥＲ］コマンドを送ることにより、清掃処理を実行させる。
【０６１８】
この清掃実行のコマンドの受信に応じて、プリンタ１０はプリンタ制御部１１０により、プリンタドライバ８４により設定された低速または高速で、図８１に示すような清掃処理を実行するように制御される。
【０６１９】
このように構成することにより、清掃速度がプリンタ状態に基づいて、そのプリンタ状態に適するように選択されるため、迅速な清掃処理を実現する高速清掃速度であっても良好な清掃結果を得ることができる。
【０６２０】
＜１０．８  圧縮モード＞
図８２は、プリンタ１０の状態に基づくプリンタドライバ８４の動作の更新を説明する図である。プリンタドライバ８４の動作の更新は、プリントデータの圧縮を、プリントデータをプリンタ１０に送信する前に行うかどうかについての更新である。圧縮データを送るかどうかの判断はプリンタ１０の状態に基づいて行われ、この場合、プリンタ１０の状態は、ＤＭＡ（ｄｉｒｅｃｔ  ｍｅｍｏｒｙａｃｃｅｓｓ）がプリンタのファームウエアで許可されているかどうかを示す。
【０６２１】
説明の都合上、プリントデータの圧縮は、プリントデータを圧縮することでプリントデータ量を最小にしてプリンタに送信できるように、プリンタドライバ８４におけるデフォルト処理として行われるものとする。圧縮データを送信することにより送信時間を最短にすることができるが、プリンタドライバ側でデータを圧縮する時間及びプリンタ側でデータを伸長する時間がかかることになる。
【０６２２】
ＤＭＡモードがプリンタファームウエア上で許可されている場合、プリンタドライバ８４はプリントデータを直接、プリント制御部１１０を通常介さずに、プリントデータバッファ１０９に送ることができる。ＤＭＡモードでは、圧縮していないプリントデータを直接プリントデータバッファ１０９に格納するのに必要な時間の方が、プリントデータを圧縮し、圧縮したプリントデータを送信し、プリントデータを伸長してプリントデータバッファ１０９に格納するためにかかる時間よりも短い。従って、プリンタ１０のファームウエア上でＤＭＡモードが許可されているとプリンタドライバ８４が判断すると、プリンタドライバ８４は、プリントデータを圧縮して圧縮したプリントデータを制御部１１０に送信するのではなく、プリントデータをプリントデータバッファ１０９に直接送るように、その動作を更新する。図８２はこの動作を示す。
【０６２３】
ステップＳ８２０１において、プリンタドライバ８４は、プリンタ１０のファームウエアがＤＭＡ動作可能であり、そのような動作が許可されているかどうかを示すステータス情報の形式でプリンタ状態を取得する。プリンタドライバ８４が、ＤＭＡモードが許可されていると判断すると（ステップＳ８２０２でＹＥＳ）、プリンタドライバ８４はプリントデータ圧縮をオフにし（ステップＳ８２０４）、圧縮されていないプリントデータをプリントデータバッファ１０９にＤＭＡで直接送信する（ステップＳ８２０５）。反対に、プリンタドライバ８４がＤＭＡが許可されていないとプリンタ状態から判断すると、プリンタドライバ８４はデフォルト処理モードを維持し、プリントデータを送信前に圧縮し（ステップＳ８２０６）、圧縮したプリントデータをプリンタ制御部１１０に送信する（ステップＳ８２０７）。
【０６２４】
以上の実施形態は、特にインクジェット記録方式の中でも、インク吐出を行わせるために利用されるエネルギーとして熱エネルギーを発生する手段（例えば電気熱変換体やレーザ光等）を備え、前記熱エネルギーによりインクの状態変化を生起させる方式を用いることにより記録の高密度化、高精細化が達成できる。
【０６２５】
その代表的な構成や原理については、例えば、米国特許第４７２３１２９号明細書、同第４７４０７９６号明細書に開示されている基本的な原理を用いて行うものが好ましい。この方式はいわゆるオンデマンド型、コンティニュアス型のいずれにも適用可能であるが、特に、オンデマンド型の場合には、液体（インク）が保持されているシートや液路に対応して配置されている電気熱変換体に、記録情報に対応していて核沸騰を越える急速な温度上昇を与える少なくとも１つの駆動信号を印加することによって、電気熱変換体に熱エネルギーを発生せしめ、記録ヘッドの熱作用面に膜沸騰を生じさせて、結果的にこの駆動信号に１対１で対応した液体（インク）内の気泡を形成できるので有効である。
【０６２６】
この気泡の成長、収縮により吐出用開口を介して液体（インク）を吐出させて、少なくとも１つの滴を形成する。この駆動信号をパルス形状とすると、即時適切に気泡の成長収縮が行われるので、特に応答性に優れた液体（インク）の吐出が達成でき、より好ましい。
【０６２７】
このパルス形状の駆動信号としては、米国特許第４４６３３５９号明細書、同第４３４５２６２号明細書に記載されているようなものが適している。なお、上記熱作用面の温度上昇率に関する発明の米国特許第４３１３１２４号明細書に記載されている条件を採用すると、さらに優れた記録を行うことができる。
【０６２８】
記録ヘッドの構成としては、上述の各明細書に開示されているような吐出口、液路、電気熱変換体の組み合わせ構成（直線状液流路または直角液流路）の他に熱作用面が屈曲する領域に配置されている構成を開示する米国特許第４５５８３３３号明細書、米国特許第４４５９６００号明細書に記載された構成も本発明に含まれるものである。加えて、複数の電気熱変換体に対して、共通するスロットを電気熱変換体の吐出部とする構成を開示する特開昭５９−１２３６７０号公報や熱エネルギーの圧力波を吸収する開口を吐出部に対応させる構成を開示する特開昭５９−１３８４６１号公報に基づいた構成としても良い。
【０６２９】
加えて、上記の実施形態で説明した記録ヘッド自体に一体的にインクタンクが設けられたカートリッジタイプの記録ヘッドのみならず、装置本体に装着されることで、装置本体との電気的な接続や装置本体からのインクの供給が可能になる交換自在のチップタイプの記録ヘッドを用いてもよい。
【０６３０】
また、以上説明した記録装置の構成に、記録ヘッドに対する回復手段、予備的な手段等を付加することは記録動作を一層安定にできるので好ましいものである。これらを具体的に挙げれば、記録ヘッドに対してのキャッピング手段、クリーニング手段、加圧あるいは吸引手段、電気熱変換体あるいはこれとは別の加熱素子あるいはこれらの組み合わせによる予備加熱手段などがある。また、記録とは別の吐出を行う予備吐出モードを備えることも安定した記録を行うために有効である。
【０６３１】
さらに、記録装置の記録モードとしては黒色等の主流色のみの記録モードだけではなく、記録ヘッドを一体的に構成するか複数個の組み合わせによってでも良いが、異なる色の複色カラー、または混色によるフルカラーの少なくとも１つを備えた装置とすることもできる。
【０６３２】
以上説明した実施の形態においては、インクが液体であることを前提として説明しているが、室温やそれ以下で固化するインクであっても、室温で軟化もしくは液化するものを用いても良く、あるいはインクジェット方式ではインク自体を３０°Ｃ以上７０°Ｃ以下の範囲内で温度調整を行ってインクの粘性を安定吐出範囲にあるように温度制御するものが一般的であるから、使用記録信号付与時にインクが液状をなすものであればよい。
【０６３３】
加えて、積極的に熱エネルギーによる昇温をインクの固形状態から液体状態への状態変化のエネルギーとして使用せしめることで積極的に防止するため、またはインクの蒸発を防止するため、放置状態で固化し加熱によって液化するインクを用いても良い。いずれにしても熱エネルギーの記録信号に応じた付与によってインクが液化し、液状インクが吐出されるものや、記録媒体に到達する時点では既に固化し始めるもの等のような、熱エネルギーの付与によって初めて液化する性質のインクを使用する場合も本発明は適用可能である。
【０６３４】
このような場合インクは、特開昭５４−５６８４７号公報あるいは特開昭６０−７１２６０号公報に記載されるような、多孔質シート凹部または貫通孔に液状または固形物として保持された状態で、電気熱変換体に対して対向するような形態としてもよい。本発明においては、上述した各インクに対して最も有効なものは、上述した膜沸騰方式を実行するものである。
【０６３５】
【他の実施形態】
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。
【０６３６】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０６３７】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【０６３８】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明したフローチャートに対応するプログラムコードが格納されることになる。
【０６３９】
【発明の効果】
上記の通り本発明によれば、両方向プリントにより起きる画像のグラデーションを最小に押さえながら、迅速にデータをプリント媒体にプリントすることができ、プリント速度と、プリント品質とを好ましく兼ね合わせることができる。
【図面の簡単な説明】
【図１】本発明の実施の形態におけるプリンタに接続して用いられるコンピューター機器の外観図である。
【図２】図１に示すプリンタの前面斜視図である。
【図３】図１に示すプリンタの後面斜視図である。
【図４】図１に示すプリンタの後面切取斜視図である。
【図５】図１に示すプリンタの前面切取斜視図である。
【図５Ａ】図１に示すプリンタの上下方向の平面図である。
【図５Ｂ】図１に示すプリンタのラインフィードモータ及びキャリッジモータの両方により駆動される、クラッチ板及びギヤの正面図である。
【図５Ｃ】本発明の実施の形態におけるプリンタにおける自動給紙動作を示すフローチャートである。
【図５Ｄ】本発明の実施の形態におけるプリンタのためのキャッピング及び清掃動作を示すフローチャートである。
【図６】本発明において用いられる使い捨てインクカートリッジの例を示す図である。
【図７】本発明において用いられるプリントヘッドのヘッド構成を示す図である。
【図８】本発明の実施の形態におけるプリンタにインタフェースしたホストプロセッサーのハードウエア構成を示すブロック図である。
【図９】図８に示すホストプロセッサーとプリンタの機能ブロック図である。
【図１０】図８に示す制御ロジックの内部構成を示すブロック図である。
【図１１】本発明の実施の形態におけるプリンタのメモリー構成を示す図である。
【図１２】本発明の実施の形態におけるプリンタの詳細な全体動作を説明するフローチャートである。
【図１３】本発明にかかるプリント制御の流れを示すフローチャートである。
【図１４】印刷動作中のコマンドの流れを示すテーブルを示す図である。
【図１５】本発明の実施の形態におけるプリンタにおけるハード電源オン時の手順を示すフローチャートである。
【図１６】本発明の実施の形態におけるプリンタにおけるソフト電源オン時の手順を示すフローチャートである。
【図１７】本発明の実施の形態におけるプリンタにおけるソフト電源オフ時の手順を示すフローチャートである。
【図１８】本発明の実施の形態にかかる、アプリケーションプログラム、ホストプロセッサーで実行中の他の処理及びプリンタで実行中の様々なタスク間の通信を示す図である。
【図１９】タイマ処理を制御するための、周期ハンドラにおける制御部タイマの制御を示すフローチャートである。
【図２０】プリンタドライバのソフトウエア処理の流れを示すフローチャートである。
【図２１Ａ】本発明の実施の形態における自動給紙手順を示すフローチャートである。
【図２１Ｂ】図２１Ａの自動給紙手順の続きを示すフローチャートである。
【図２１Ｃ】図２１Ａの自動給紙手順における早期成功ロジックを示すフローチャートである。
【図２１Ｄ】図２１Ａの自動給紙処理における給紙速度選択処理を示すフローチャートである。
【図２１Ｅ】図２１Ａの自動給紙処理におけるリカバリー処理を示すフローチャートである。
【図２２】プリンタにおける１枚目の自動給紙手順を示すフローチャートである。
【図２３】プリンタにおける排紙処理後の自動給紙手順を示すフローチャートである。
【図２４】行送り、給紙、及び排紙の速度選択のためのプリンタドライバのロジックを示すフローチャートである。
【図２５】本発明の実施の形態における排紙速度オーバーライドロジックを示すフローチャートである。
【図２６】本発明の実施の形態における行送り速度オーバーライドロジックを示すフローチャートである。
【図２７Ａ】テキスト、無彩色連続画及びカラー画像を印刷するためのためのキャリッジ制御を示す図である。
【図２７Ｂ】１スキャンライン内に無彩色連続画像部分及びカラー画像部分の両方を含む場合のキャリッジ方向制御を説明する図である。
【図２７Ｃ】プリントモード、プリントヘッドのタイプ、用紙のタイプ、プリントデータのタイプに基づいて、印刷方向および他の印刷情報を決定するためのテーブルを示す図である。
【図２７Ｄ】プリントモード、プリントヘッドのタイプ、用紙のタイプ、プリントデータのタイプに基づいて、印刷方向および他の印刷情報を決定するためのテーブルを示す図である。
【図２７Ｅ】プリントモード、プリントヘッドのタイプ、用紙のタイプ、プリントデータのタイプに基づいて、印刷方向および他の印刷情報を決定するためのテーブルを示す図である。
【図２７Ｆ】プリントモード、プリントヘッドのタイプ、用紙のタイプ、プリントデータのタイプに基づいて、印刷方向および他の印刷情報を決定するためのテーブルを示す図である。
【図２７Ｇ】プリントモード、プリントヘッドのタイプ、用紙のタイプ、プリントデータのタイプに基づいて、印刷方向および他の印刷情報を決定するためのテーブルを示す図である。
【図２８】本発明におけるプリントヘッドの動きを説明するための図である。
【図２９】本発明においてプリンタドライバにより発行されるＳＫＩＰコマンドを説明するためのフローチャートである。
【図３０】本発明においてプリンタドライバにより発行されるＰＲＩＮＴコマンドを説明するためのフローチャートである。
【図３１】本発明においてプリンタドライバにより発行されるＤＩＲＥＣＴＩＯＮコマンドを説明するためのフローチャートである。
【図３２】本発明においてプリンタドライバにより発行されるＥＤＧＥコマンドを説明するフローチャートである。
【図３３】本発明においてプリンタドライバによるスキャンマージンの決定を説明するフローチャートである。
【図３４】本発明においてプリンタドライバにより発行されるＮＥＸＴ＿ＭＡＲＧＩＮコマンドを説明するためのフローチャートである。
【図３５】本発明においてプリンタドライバにより発行されるＡＴ＿ＤＥＬＡＹ（自動遅延）コマンドを説明するフローチャートである。
【図３６】本発明においてプリンタ制御部により実行されるキャリッジタスクを説明するフローチャートである。
【図３７】図３６のキャリッジタスクにより呼び出される、第１のキャリッジスキャン制御を説明するためのフローチャートである。
【図３８】図３６のキャリッジタスクにより呼び出される、第２のキャリッジスキャン制御を説明するためのフローチャートである。
【図３９Ａ】本発明におけるサテライト制御を示す図である。
【図３９Ｂ】本発明におけるサテライト制御を示す図である。
【図４０】本発明において、プリンタ制御部により実行されるキャリッジモータ開始を説明するためのフローチャートである。
【図４１】本発明において、プリンタ制御部により実施されるキャリッジ割り込み処理を説明するためのフローチャートである。
【図４２】本発明において、サテライティングを緩和するためにプリンタ制御部により実施される自動トリガー割り込みを説明するためのフローチャートである。
【図４３】本発明の実施の形態におけるプリンタドライバ内で実行されるソフトウエア位置合わせ処理を示すフローチャートである。
【図４４】図４３に示すプリンタドライバ内で実行されるソフトウエア位置合わせ処理に対応する位置合わせを伴う／伴わない印刷の一連のプリントモードテーブルを示す図である。
【図４５】カラーデータを印刷するためのプロセッサーにより実行可能な各処理を示すフローチャートである。
【図４６】２つの異なるインクジェットプリントヘッドを用いてカラーデータ及び黒データを印刷する様子を示す図である。
【図４７】予備吐出処理が所定時間間隔で行われる場合の、予備吐出制御を説明するための図である。
【図４８】不十分な予備吐出により起こり得る画質の低下を説明するための図である。
【図４９】不十分な予備吐出により起こり得る画質の低下を説明するための図である。
【図５０】本発明における予備吐出制御を説明するための図である。
【図５１】本発明における予備吐出制御のタイミングを説明するためのフローチャートである。
【図５２】本発明におけるプリンタ制御部による予備吐出用タイマの更新を説明するためのフローチャートである。
【図５３】本発明においてプリンタ制御部により行われる予備吐出チェックを説明するためのフローチャートである。
【図５４】本発明におけるプリンタ制御部によるノズル数変更予備吐出リクエストの生成を説明するためのフローチャートである。
【図５５】本発明におけるプリンタ制御部による走査予備吐出処理を説明するためのフローチャートである。
【図５６】本発明における予備吐出（印刷）機能を説明するためのフローチャートである。
【図５７】インクジェットノズルヒートパルス幅と出力濃度との関係を説明する図である。
【図５８】ヒートパルス幅変調を説明するための図である。
【図５９】ノズルヒートパルス駆動時間の制御を説明するためのフローチャートである。
【図６０】プリンタに保持されたヒートアップ係数のテーブルと、駆動時間のテーブルの分解図である。
【図６１】駆動時間決定のためのリアルタイム周辺温度の使用方法について説明するフローチャートである。
【図６２】複数スキャンラインを印刷中のヒートパルス幅変調を説明するための図である。
【図６３】前回の予備吐出から第１の時間の経過後にヒートパルス幅が最大となることを示す、本発明におけるヒートパルス幅変調を説明するための図である。
【図６４】前回の予備吐出から第１の時間の経過後にヒートパルス幅が最大となることを示す、本発明におけるヒートパルス幅変調を説明するためのフローチャートである。
【図６５】１画素のＲＧＢデータに基づいて、５つの異なるインクのための２値データを生成するための、コンピューターにより実行可能な処理工程を示すフローチャートである。
【図６６】５つの異なるインクそれぞれの入力値に対して出力補正を行うための、入力値と出力値の関係を示すグラフを示す図である。
【図６７】プリンタと通信するコンピューター機器を示す機能ブロック図である。
【図６８】プリンタドライバがどのようにプリンタから状態を得、プリントデータ生成処理をどのように更新するかを示すフローチャートである。
【図６９】プリンタ制御部により実施される動作を示すフローチャートである。
【図７０】にじみ低減のための処理を示すフローチャートである。
【図７１】カラーテーブル１とカラーテーブル２とに保持される値のグラフを示す図である。
【図７２】にじみ低減のための別の処理を示すフローチャートである。
【図７３Ａ】スミヤ制御処理を実行するためのフローチャートである。
【図７３Ｂ】スミヤ制御処理を実行するためのフローチャートである。
【図７４】プリンタドライバによるスミヤタイマの値の決定のし方を示すフローチャートである。
【図７５】プリンタドライバによるスミヤ制御のための濃度閾値の決定のし方を示すフローチャートである。
【図７６】プリンタが給紙トレイから用紙を給紙する速度をプリンタドライバがどのように更新するかを説明するためのフローチャートである。
【図７７】プリンタが給紙トレイから用紙を給紙する速度をプリンタドライバがどのように更新するかを説明するためのフローチャートである。
【図７８】予備吐出処理のタイミングを制御するためのプリンタの動作パラメータをプリンタドライバがどのように更新するかを説明するためのフローチャートである。
【図７９】プリンタドライバによりディスプレイ上に表示されるユーザインタフェースの一部を示す図である。
【図８０】プリンタの状態に基づいて、プリンタドライバがどのように自身の処理を更新するかを説明するためのフローチャートである。
【図８１】プリンタにおける清掃速度の更新を説明するフローチャートである。
【図８２】プリンタドライバの動作の更新を示すフローチャートである。
【図１】
0003697141.tif 000003
【図２】
0003697141.tif 000004
【図３】
0003697141.tif 000005
【図４】
0003697141.tif 000006
【図５】
0003697141.tif 000007
【図５Ａ】
0003697141.tif 000008
【図５Ｂ】
0003697141.tif 000009
【図５Ｃ】
0003697141.tif 000010
【図５Ｄ】
0003697141.tif 000011
【図６】
0003697141.tif 000012
【図７】
0003697141.tif 000013
【図８】
0003697141.tif 000014
【図９】
0003697141.tif 000015
【図１０】
0003697141.tif 000016
【図１１】
0003697141.tif 000017
【図１２】
0003697141.tif 000018
【図１３】
0003697141.tif 000019
【図１４】
0003697141.tif 000020
【図１５】
0003697141.tif 000021
【図１６】
0003697141.tif 000022
【図１７】
0003697141.tif 000023
【図１８】
0003697141.tif 000024
【図１９】
0003697141.tif 000025
【図２０】
0003697141.tif 000026
【図２１Ａ】
0003697141.tif 000027
【図２１Ｂ】
0003697141.tif 000028
【図２１Ｃ】
0003697141.tif 000029
【図２１Ｄ】
0003697141.tif 000030
【図２１Ｅ】
0003697141.tif 000031
【図２２】
0003697141.tif 000032
【図２３】
0003697141.tif 000033
【図２４】
0003697141.tif 000034
【図２５】
0003697141.tif 000035
【図２６】
0003697141.tif 000036
【図２７Ａ】
0003697141.tif 000037
【図２７Ｂ】
0003697141.tif 000038
【図２７Ｃ】
0003697141.tif 000039
【図２７Ｄ】
0003697141.tif 000040
【図２７Ｅ】
0003697141.tif 000041
【図２７Ｆ】
0003697141.tif 000042
【図２７Ｇ】
0003697141.tif 000043
【図２８】
0003697141.tif 000044
【図２９】
0003697141.tif 000045
【図３０】
0003697141.tif 000046
【図３１】
0003697141.tif 000047
【図３２】
0003697141.tif 000048
【図３３】
0003697141.tif 000049
【図３４】
0003697141.tif 000050
【図３５】
0003697141.tif 000051
【図３６】
0003697141.tif 000052
【図３７】
0003697141.tif 000053
【図３８】
0003697141.tif 000054
【図３９Ａ】
0003697141.tif 000055
【図３９Ｂ】
0003697141.tif 000056
【図４０】
0003697141.tif 000057
【図４１】
0003697141.tif 000058
【図４２】
0003697141.tif 000059
【図４３】
0003697141.tif 000060
【図４４】
0003697141.tif 000061
【図４５】
0003697141.tif 000062
【図４６】
0003697141.tif 000063
【図４７】
0003697141.tif 000064
【図４８】
0003697141.tif 000065
【図４９】
0003697141.tif 000066
【図５０】
0003697141.tif 000067
【図５１】
0003697141.tif 000068
【図５２】
0003697141.tif 000069
【図５３】
0003697141.tif 000070
【図５４】
0003697141.tif 000071
【図５５】
0003697141.tif 000072
【図５６】
0003697141.tif 000073
【図５７】
0003697141.tif 000074
【図５８】
0003697141.tif 000075
【図５９】
0003697141.tif 000076
【図６０】
0003697141.tif 000077
【図６１】
0003697141.tif 000078
【図６２】
0003697141.tif 000079
【図６３】
0003697141.tif 000080
【図６４】
0003697141.tif 000081
【図６５】
0003697141.tif 000082
【図６６】
0003697141.tif 000083
【図６７】
0003697141.tif 000084
【図６８】
0003697141.tif 000085
【図６９】
0003697141.tif 000086
【図７０】
0003697141.tif 000087
【図７１】
0003697141.tif 000088
【図７２】
0003697141.tif 000089
【図７３Ａ】
0003697141.tif 000090
【図７３Ｂ】
0003697141.tif 000091
【図７４】
0003697141.tif 000092
【図７５】
0003697141.tif 000093
【図７６】
0003697141.tif 000094
【図７７】
0003697141.tif 000095
【図７８】
0003697141.tif 000096
【図７９】
0003697141.tif 000097
【図８０】
0003697141.tif 000098
【図８１】
0003697141.tif 000099
【図８２】
0003697141.tif 000100