(57)【特許請求の範囲】
【請求項１】
描画命令から、描画対象となる閉領域の左上端の座標値と、右下端の座標値とを取得する取得手段と、
前記取得手段で取得した左上端の座標値と、右下端の座標値とから、前記描画対象となる閉領域の幅及び高さを決定する決定手段と、
前記決定手段で決定された幅及び高さのうちの一方が第１の値であって、他方が第２の値よりも大きい場合に、前記描画対象となる閉領域の左上端の座標値を変更せずに前記右下端の座標値を右下に変更する変更手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記変更手段は、前記右下端の座標値を右に前記第１の値だけ、下に前記第１の値だけ移動することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記取得手段は、前記閉領域の左上端の座標値と、左下端の座標値と、右上端の座標値と、右下端の座標値との中から、左上端の座標値と、右下端の座標値とを抽出することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
右は、印刷解像度の座標系におけるｘ座標のプラス方向であり、
左は、印刷解像度の座標系におけるｘ座標のマイナス方向であり、
下は、印刷解像度の座標系におけるｙ座標のプラス方向であり、
上は、印刷解像度の座標系におけるｙ座標のマイナス方向であることを特徴とする請求項１乃至３の何れか１項に記載の画像処理装置。
【請求項５】
印刷解像度の座標系において、
前記第１の値は、１画素であり、前記第２の値は、２画素であることを特徴とする請求項１乃至４の何れか１項に記載の画像処理装置。
【請求項６】
描画命令から、描画対象となる閉領域の対角に位置する二つの座標値を取得する取得手段と、
前記取得手段で取得した二つの座標値から、前記閉領域の幅及び高さを決定する決定手段と、
前記決定手段で決定された幅及び高さのうちの一方が第１の値であって、他方が第２の値よりも大きい場合に、前記描画対象となる閉領域の対角に位置する二つの座標値のうち一方の座標値を変更せずに、他方の座標値を前記描画対象となる閉領域の幅及び高さが共に増加する方向に変更する変更手段と
を備えることを特徴とする画像処理装置。
【請求項７】
前記幅及び高さの増加の量は、共に前記第１の値であることを特徴とする請求項６に記載の画像処理装置。
【請求項８】
印刷解像度の座標系において、
前記第１の値は、１画素であり、前記第２の値は、２画素であることを特徴とする請求項６又は７に記載の画像処理装置。
【請求項９】
取得手段が、描画命令から、描画対象となる閉領域の対角に位置する二つの座標値を取得する取得ステップと、
決定手段が、前記取得ステップで取得した二つの座標値から、前記閉領域の幅及び高さを決定する決定ステップと、
変更手段が、前記決定ステップで決定された幅及び高さのうちの一方が第１の値であって、他方が第２の値よりも大きい場合に、前記描画対象となる閉領域の対角に位置する二つの座標値のうち一方の座標値を変更せずに、他方の座標値を前記描画対象となる閉領域の幅及び高さが共に増加する方向に変更する変更ステップと
を備えることを特徴とする画像処理方法。
【請求項１０】
前記幅及び高さの増加の量は、共に前記第１の値であることを特徴とする請求項９に記載の画像処理方法。
【請求項１１】
印刷解像度の座標系において、
前記第１の値は、１画素であり、前記第２の値は、２画素であることを特徴とする請求項９又は１０に記載の画像処理方法。
【請求項１２】
コンピュータに、請求項９乃至１１の何れか１項に記載の方法を実行させるための、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部より入力された描画命令に応じて印刷データを生成する画像処理装置、画像処理方法、及びプログラムに関し、特に、線図形の再現性を高めるために前記描画命令の補正を行う画像処理装置、画像処理方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、トナーやインクを用いたプリンタエンジンによって入力電子データに対応した画像形成を行う画像処理装置が知られている。このような画像処理装置においては、前記プリンタエンジンの特性のために、細線などの極小な閉領域図形が前記電子データの意図通りに再現されないという課題があった。例えば、ページ画像に対応する潜像をトナーにて用紙上に定着させて画像形成する電子写真プロセスでは、図形を構成する閉領域の面積が小さい場合は、トナー載り量が少なくなってしまう傾向がある。そのため、面積が小さい閉領域は細めに表現されてしまうことがある。なお、線や文字、イメージ等の描画命令から構成される、ページ記述言語（以下、ＰＤＬと記す）で記述されたデータを前記入力電子データとして受け取って解析し、前記ページ画像を生成するような構成が一般的である。
【０００３】
上記課題を解決する先行技術としては、細線に対する太らせ量を指定可能なＵＩ（ユーザインタフェース）を備え、細線の色相や背景色とのコントラストに応じて太らせ幅を制御する印刷制御装置が提案されている（特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００９−１０５８２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来技術（特許文献１）では、線描画命令を対象として太らせるか否かを判定し、線幅を調整することで太らせ処理を実現しているが、線描画命令以外の矩形のような塗り図形（閉領域フィル命令）で表現された線図形については考慮されていない。従って、アプリケーションソフトが線描画命令を用いずに描画した線図形については、太らせ処理が適用されないという課題があった。
【０００６】
また、従来技術（特許文献１）では背景とのコントラスト等に応じて太らせ幅を調整しているが、例えば線図形が隣接している場合など、太らせることによる描画不具合については特に考慮されていない。
【０００７】
なお、ここで前記線描画命令は、開始点・終了点を示す座標値、線幅、色、線端形状などの属性を伴う描画オブジェクトを指す。線描画命令は、一般的にはライン描画あるいはストローク描画とも呼ばれる。また、前記塗り図形（閉領域フィル命令）は、複数の座標点等で示された閉領域内部を指定色で塗りつぶした図形（フィル図形）として定義された描画オブジェクトを指す。塗り図形の代表的な例としては、矩形（四角形）、ポリゴン多角形、円、楕円などが含まれる。
【課題を解決するための手段】
【０００８】
本発明に係る画像処理装置は、描画命令から、描画対象となる閉領域の左上端の座標値と、右下端の座標値とを取得する取得手段と、前記取得手段で取得した左上端の座標値と、右下端の座標値とから、前記描画対象となる閉領域の幅及び高さを決定する決定手段と、前記決定手段で決定された幅及び高さのうちの一方が第１の値であって、他方が第２の値よりも大きい場合に、前記描画対象となる閉領域の左上端の座標値を変更せずに前記右下端の座標値を右下に変更する変更手段とを備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、線描画命令以外の図形である細線の塗り図形に対して太らせ処理を適用し、再現性を向上させた出力を行うことが可能な画像処理装置、画像処理方法及びプログラムを提供できる。
【図面の簡単な説明】
【００１０】
【図１】一実施例における画像処理装置のソフトウェアモジュールの構成を示すブロック図である。
【図２】一実施例におけるプリンタドライバの描画処理モジュールの構成を示したブロック図である。
【図３】プリンタドライバのユーザインタフェースの一例を示した図である。
【図４】フィル図形に対する太らせ補正処理の実施前後の形状を示した図である。
【図５】一実施例における細線補正処理の手順を示すフローチャートである。
【図６】描画命令の種別と図形形状との組み合わせに対して、太らせ処理を行う条件を示した表である。
【図７】お互いの水平垂直方向が異なった、複数の矩形の位置関係を示した図である。
【図８】お互いの水平垂直方向が同一である、複数の矩形の位置関係を示した図であり、太らせ処理の実施前後の様子を示した図である。
【図９】第２の実施例における細線補正処理の手順を示すフローチャートである。
【図１０】第２の実施例における細線補正処理の手順を示すフローチャートである。
【図１１】第３の実施例における細線補正処理の手順を示すフローチャートである。
【図１２】第４の実施例における細線補正処理の手順を示すフローチャートである。
【図１３】第５の実施例における画像処理装置のモジュール構成を示す図である。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【００１２】
［第１実施例］
本実施例では、ホストコンピュータのオペレーティングシステム（以下ＯＳ）上で動作するプリンタドライバとして、本発明が適用される例を示す。
【００１３】
図１は、本発明の一実施例を適用したプリンタドライバ１０７および、印刷処理に係るホストコンピュータ１０１上で動作するソフトウェアのモジュール構成を示すブロック図である。
【００１４】
ここで、前記ソフトウェア群は、前記ＯＳが不図示の外部記憶装置にファイルとして格納されたプログラムコードを不図示のＲＡＭ上にロードし、ホストコンピュータ１０１のＣＰＵによって実行される。前記ソフトウェア群及び不図示のハードウェア群の協働により、本発明の機能が実現される。
【００１５】
本実施例における前記ソフトウェア群は、大別するとアプリケーション１０２、ＯＳ（１０３）、およびプリンタドライバ１０７から構成されている。さらにＯＳ（１０３）のプリント処理を司るモジュールは、グラフィックエンジン１０４、プリントプロセッサ１０６、およびシステムスプーラ１０８を備える。
【００１６】
前記アプリケーション１０２は、プリンタ１１０に対して印刷指示を行うために、まず、前記グラフィックエンジン１０４のサービス関数群であるＧＤＩ（Ｇｒａｐｈｉｃ Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）を呼び出すことで、描画命令を発行する。
【００１７】
そして、前記グラフィックエンジン１０４は、ＧＤＩ経由で受け取った前記印刷指示を元に中間コード形式のスプールファイル（ＥＭＦ：Ｅｎｈａｎｃｅｄ  Ｍｅｔａ  Ｆｉｌｅ）を生成し、ＨＤＤ上の記憶領域に当該スプールファイルを一時的にスプールする。
【００１８】
続いて、プリントプロセッサ１０６は、前記スプールファイル１０５として一時保存された印刷データを読み出し、前記描画指示を対応するＤＤＩ（Ｄｅｖｉｃｅ  Ｄｒｉｖｅｒ  Ｉｎｔｅｒｆａｃｅ）関数に変換し、プリンタドライバ１０７へ描画指示を行う。ここで、プリントプロセッサ１０６は、予めプリンタドライバから宣言された処理能力に応じて、前記ＧＤＩ関数による描画指示をプリンタドライバ１０７が受け取り可能なＤＤＩ関数に変換する処理を行う。
【００１９】
一方、プリンタドライバ１０７は、前記ＤＤＩ関数による描画指示に基づいてプリンタ１１０が処理可能なＰＤＬ（ページ記述言語）命令を生成する。そして、前記ＰＤＬ命令はシステムスプーラ１０８からネットワーク等のインタフェースを経由して、プリンタ１１０に印刷ジョブとして出力される。
【００２０】
図２は、本実施例のプリンタドライバ１０７における描画処理モジュールの構成を示したブロック図である。同図の符号２０１は、前記プリントプロセッサ１０６からＤＤＩ関数による描画命令を受け取る描画命令入力部である。
【００２１】
符号２０２は前記描画命令が細線形状を表現した描画命令であるか否かを判定する描画命令判定部である。後述するように、描画命令判定部２０２により細線形状であると判定された描画命令に対して、太らせ処理を適用すべきか否かが判定される。細線形状であるか否かの判定の対象を、例えば、線描画命令のみ、又は線描画命令及び閉領域フィル命令の両方とすることができる。描画命令入力部２０１及び描画命令判定部２０２の処理の詳細は図５を用いて後述する。
【００２２】
符号２０３は、描画命令判定部２０２が細線形状と判定した描画命令を一時的に保持しておく描画命令格納部である。描画命令格納部２０３は、プリンタドライバ１０７がＯＳ（１０３）に獲得要求を行って得られたＲＡＭ上に割り当てられる。
【００２３】
続いて、太らせ判定部２０４は、前記描画命令格納部２０３に保持された描画命令を順次読み出し、前記描画命令の位置関係を基に太らせ処理を適用すべきか否かを判定する。ここで、前記太らせ判定部２０４は、描画命令判定部２０２が細線形状と判定した描画命令を受け取る度に呼び出されるが、描画命令格納部２０３に描画命令が保持されていない場合は判定処理を行わない。
【００２４】
なお、太らせ判定部２０４による太らせ処理を適用すべきか否かの判定は、前記描画命令の位置関係に基づいて行うことに限定されない。例えば、描画命令判定部２０２により判定された描画命令の種別及び図形形状に基づいて太らせ判定を行うことにしてもよい。
【００２５】
一方、線幅補正部２０５は、太らせ判定部２０４が太らせ対象と判定した描画命令の描画パラメータを補正することで線幅補正を行う。最後に、ＰＤＬ命令出力部２０６は、ＤＤＩ関数による前記描画命令を順次ＰＤＬ命令に変換し、システムスプーラ１０８に対して出力する。
【００２６】
なお、前記描画命令の位置関係に依存せず、描画命令判定部２０２による各ＤＤＩ関数の種別および図形形状のみを基に太らせ判定を行う場合、前記描画命令格納部２０３は描画命令の格納と出力を逐次行う。また、この場合、太らせ判定部２０４は、描画命令格納部２０３に格納された細線形状の描画命令のすべてに対して、太らせ処理を行うように判定する。
【００２７】
図３は、本実施例におけるプリンタドライバ１０７の設定を変更するためのユーザインタフェースの一例を示した図である。
【００２８】
同図においてダイアログボックス３０１は、各種印刷設定を行う設定画面から「処理オプション」ボタンを押下された際に表示されるダイアログボックスである。ダイアログボックス３０１のリスト３０２には、ユーザが選択可能な各設定項目および設定内容が一覧表示される。また、選択された設定項目は符号３０３のように反転表示され、設定内容の選択肢がプルダウンメニュー３０４のように下段に表示される。
【００２９】
本実施例では、細線図形に対する太らせ処理を制御する指示手段として、設定項目「特殊細線処理」が設けられている（３０３）。また、「特殊細線処理」に対する設定内容として「シナイ／レベル１／レベル２」が用意されている。すなわち、「特殊細線処理」が“シナイ”に設定された場合は、描画命令判定部２０２は全ての描画命令に対して細線とは判定せず、一切の太らせ処理を無効とすることができる。また、“レベル１”が選択された場合は、描画命令判定部２０２は線描画命令に対してのみ細線判定を行う。“レベル２”が選択された場合、描画命令判定部２０２は線描画命令および閉領域フィル命令の両方に対して細線判定を行う。なお、本実施例では、「特殊細線処理」の初期値は“レベル２”としたが、例えば従来製品との互換性などを考慮し、適宜変更しても構わない。
【００３０】
以下、図４、５、６を用いて、プリンタドライバ１０７が細線形状の図形に対して太らせ処理を行う手順を説明する。
【００３１】
図４は、太らせ対象と判定したフィル図形に対する太らせ補正処理の詳細を示した図である。当該処理は、図５のＳ５０２、Ｓ５０３、Ｓ５０４及びＳ５０５に対応する。図４（ａ）及び図４（ｃ）が太らせ補正処理前の、図４（ｂ）及び図４（ｄ）が太らせ補正処理後の図形形状および描画パラメータをそれぞれ示している。
【００３２】
本実施例では、閉領域フィル図形（閉領域フィル命令）が矩形を表現している場合について説明する。まず図４（ａ）において、矩形は閉領域の左上端の座標値（ｘ１、ｙ１）と、右下端の座標値（ｘ２、ｙ２）によって表現されている。当該矩形の幅、高さをｗ、ｈとすると、（ｗ、ｈ）＝（ｘ２−ｘ１、ｙ２−ｙ１）にて求められる。ここで、ｗ＝１、かつｈ＞ｎ（ｎは１以上の整数値）を満たす場合、該閉領域フィル図形は縦細線と判定され（図４（ａ））、ｈ＝１、かつｗ＞ｎ（ｎは１以上の整数値）を満たす場合、該閉領域フィル図形は横細線と判定される（図４（ｃ））。なお、上記座標値は、プリンタドライバ１０７がＯＳ（１０３）に通知した印字解像度の単位座標系で示され、６００ｄｐｉ等が一般的である。
【００３３】
続いて、細線であると判定された閉領域フィル図形は、右下端の座標値をｘ軸、ｙ軸共に１増加させ、座標値（ｘ２、ｙ２）を（ｘ２＋１、ｙ２＋１）に置換することで太らせ補正を行う。このような右下端座標の補正処理により、図４（ｂ）、図４（ｄ）内の斜線で示した領域が元図形よりも太って描画されることになる。なお、本実施例では、ｘ、ｙ座標を共に１増加させたことで、縦細線／横細線を意識することなく太らせ補正を行っているが、縦細線／横細線の判別結果に応じて、高さ方向（長い方向）には太らせないよう補正しても良い。この場合、図４（ａ）の例では、x2,y2をx2+1,y2に補正することとなる。一方、図４の(ｃ)の例では、x2,y2をx2,y2+1に補正することとなる。
【００３４】
図５は、本実施例における細線補正処理の手順を示すフローチャートである。  
まず、Ｓ５０１にて、描画命令入力部２０１は、ＯＳ１０３よりＤＤＩ関数及びそのパラメータを描画命令として受け取る。
【００３５】
＜矩形形状の閉領域フィル命令であるかの判定（Ｓ５０２）＞
続いてＳ５０２にて、描画命令判定部２０２は、前記描画命令が矩形形状の閉領域フィル命令であるかを調べる。
【００３６】
具体的には、まず、描画命令判定部２０２は、Ｓ５０１にて受け取ったＤＤＩ関数が（１）ＤｒｖＦｉｌｌＰａｔｈ（）であるか、ソースイメージの指定がない（２）ＤｒｖＢｉｔＢｌｔ（）関数であるかを判定する。そして、何れかの関数である場合、ＤＤＩ関数は、閉領域フィル命令であると判定する（なお、何れの関数でもない場合にはＳ５０７に移行する）。
【００３７】
ここで、（１）ＤｒｖＦｉｌｌＰａｔｈ（）関数は、図形の輪郭を表現するための輪郭座標値の他、図形を塗りつぶす色値などをパラメータとして受け取る関数である。ＤＤＩ関数が（１）ＤｒｖＦｉｌｌＰａｔｈ（）である場合、該関数のパラメータとして受け取った閉領域の輪郭座標を調べ、閉領域フィル図形が矩形形状であるか否かを判定する。すなわち、輪郭座標点数が４であって、かつ輪郭を構成するベクトルが水平・垂直成分のみであるか否かが調べられ、これらの条件が共に満たされていれば矩形形状であると判定される。矩形形状であると判定した場合にＳ５０３に移行し、そうでない場合にはＳ５０７に移行する。
【００３８】
一方、（２）ＤｒｖＢｉｔＢｌｔ（）関数はイメージ描画を指示するＤＤＩ関数である。（２）ＤｒｖＢｉｔＢｌｔ（）関数は、イメージ実体としてのソースイメージ（ｓｒｃ）、前記ｓｒｃの色形式や大きさ（画素数）、イメージの描画領域を示す座標情報等をパラメータとして受け取る関数である。ここで、前記描画領域は、デスティネーション（ｄｅｓｔ）と呼ばれる矩形状の領域であって、前記座標情報は前記矩形の左上端と右下端の座標値として与えられる。なお、前記ｄｅｓｔの大きさはｓｒｃの大きさと一致する必要はなく、例えばｄｅｓｔがｓｒｃよりも大きい場合は、既知のイメージ拡大方法にてｓｒｃを拡大して描画する。ただし、イメージの実体を受け取らない場合（すなわち、ｓｒｃパラメータがＮＩＬである）場合は、ＤｒｖＢｉｔＢｌｔ（）関数は別パラメータにて指定されるブラシの色で前記ｄｅｓｔを塗りつぶす指示となる。従って、この関数（（２）ＤｒｖＢｉｔＢｌｔ（）関数）を受け取って、かつ、ソースイメージの指定がない場合は、輪郭座標を調べるまでもなく、前記ｄｅｓｔの座標情報で示される矩形形状を表す閉領域フィル命令と扱うべきである。すなわち、この場合はＳ５０３に移行する。なお、ｓｒｃの指定がある場合には、この関数であっても、Ｓ５０７に移行することになる。
【００３９】
＜閉領域フィル命令が細線であるかの判定（Ｓ５０３、Ｓ５０４）＞
続いて、描画命令判定部２０２は、矩形形状であると判定した閉領域の幅及び高さの何れか一方が１であって（Ｓ５０３）、かつ、他方が所定値ｎ以上であるかを調べる（Ｓ５０４）。そして、前記条件が共に満たされるならば前記矩形描画命令は細線であると判定する。ここで前記ｎは、細線を補正対象とするための長さの閾値（１以上の任意の整数値）であるが、ここではｎ＝２としておく。
【００４０】
例えば、図４（ａ）に示した形状の矩形の場合、矩形の幅はｘ２−ｘ１、高さはｙ２−ｙ１から算出される（これら２つの座標のx1,x2,y1,y2は、（１）ＤｒｖＦｉｌｌＰａｔｈ（）関数のパラメータとして上述の通り受け取っている）。従って、ｘ２−ｘ１が１であって（Ｓ５０３でＹｅｓ判定）、ｙ２−ｙ１が閾値ｎ以上であれば（Ｓ５０４でＹｅｓ判定）、矩形は細線であると判定される。なお、図４（ｃ）のような水平線の場合は、Ｓ５０３にて高さが１と判定され、Ｓ５０４にて幅が閾値ｎ以上と判定されるため、図４−ａと同様に細線であると判定される。なお、幅、高さ、長さは、ここでの説明に用いられた値に限定されない。閉領域フィル命令が細線であるかが判定できればよく、任意の値を設定することができる。
【００４１】
以上のようにＳ５０２〜Ｓ５０４の処理によれば、Ｓ５０１にて受け取ったＤＤＩ関数の種類、並びに閉領域の幅及び高さに応じて、描画命令が細線を構成する閉領域フィル命令（細線塗り図形）であるか否かが判定される。
【００４２】
＜太らせ処理（Ｓ５０５）＞
さらに、Ｓ５０３、５０４にて判定結果がＹｅｓであった場合（すなわち、描画命令が細線を構成する塗り図形であった場合）、Ｓ５０５にて細線に対して太らせ処理（線幅補正処理）を行う。太らせ処理では、線幅補正部２０５が矩形描画命令の座標値パラメータを補正し（Ｓ５０５）、ＰＤＬ命令出力部２０６が補正後の前記パラメータを元にＰＤＬ形式の矩形描画命令を生成・出力する。
【００４３】
例えば、図４−ａに示した形状の矩形の場合、線幅補正部２０５は、矩形右下端の座標値（ｘ２、ｙ２）をｘ、ｙ共に＋１増加させ、図４−ｂに示したように（ｘ２＋１、ｙ２＋１）と補正する。
【００４４】
なお、（２）ＤｒｖＢｉｔＢｌｔ（）関数のパラメータで指定された描画領域（ｄｅｓｔ）の座標値は図４−ａに示した矩形と全く同様であるため、ｓｒｃの指定がないＤｒｖＢｉｔＢｌｔ（）関数に対しても、Ｓ５０３、Ｓ５０４の判定処理は同様で良い。
【００４５】
なお、本実施例では、描画命令判定部２０２により、各ＤＤＩ関数の種別およびその形状のみを基に太らせ判定を行う構成とした。従って、図２に示した描画命令格納部２０３は描画命令の格納と読み出しを逐次行うのみであり、また太らせ判定部２０４は何も処理を行わない。従って、描画命令格納部２０３及び太らせ判定部２０４は、図５のフローチャートに明示していない（これらの二つの部は実施例２以降で活躍することになる）。
【００４６】
＜矩形形状の閉領域フィル命令ではない場合の処理（Ｓ５０７、Ｓ５０８）＞
続いて、Ｓ５０２でＮｏになった場合（すなわち、Ｓ５０１で受け取った描画命令が矩形形状の閉領域フィル命令ではない場合）の処理の説明を行う。
【００４７】
Ｓ５０７にて、描画命令判定部２０２は、描画命令が細線を描画する線描画命令であるか否かを調べる。すなわち、ＤＤＩ関数がＤｒｖＳｔｒｏｋｅＰａｔｈ（）であるか調べる。さらに、該線描画命令における線幅パラメータが１（所定値）であれば細線と判定し、Ｓ５０８に移行する。一方、ＤＤＩ関数がＤｒｖＳｔｒｏｋｅＰａｔｈ（）ではない場合、又は線描画命令における線幅パラメータが１（所定値）ではない場合（Ｓ５０７でＮｏになった場合）には、Ｓ５０６に移行する。Ｓ５０８では、前記線幅パラメータを＋１だけ補正する。
【００４８】
なお、本実施例では線幅が１（所定値）である線を細線（補正対象）と判定し、さらに図形を太らせる補正値は１固定としたが、デバイスの再現性特性等に基づき、この所定値および補正値は任意の値にしても構わない。
【００４９】
最後に、Ｓ５０７にてＮｏになった場合、描画命令に対応したＰＤＬ命令を生成して処理を終える（Ｓ５０６）。
【００５０】
ところで、図３の「特殊細線処理」が“シナイ”に設定された場合は、Ｓ５０２、Ｓ５０７の判定結果は常にＮｏとなり、全ての描画命令は細線と判定されない。また、「特殊細線処理」が“レベル１”に設定された場合、描画命令判定部２０２は、Ｓ５０２のみにて常にＮｏと判定するよう制御する。
【００５１】
図６は、描画命令の種別と図形形状との組み合わせに対して、本実施例において太らせ処理を行う条件を示した表である。同表の通り、描画命令が線描画命令である場合は、図形形状が水平垂直成分のみで構成される場合であっても（ケース１）、斜め成分を含む図形の場合であっても（ケース２）、共に線幅パラメータを補正することで太らせ処理を行う。一方、描画命令が閉領域フィル命令であった場合は、本実施例では水平垂直成分のみで構成される図形のみに対して太らせ処理を行い（ケース３）、斜め成分を含む図形に対しては太らせ処理を行わない（ケース４）。ただし、図形形状の判定処理による処理速度の遅延が許容できる場合は、斜め成分を含む図形に対しても太らせ処理を行っても良い（ケース４）。ユーザは、太らせ処理を行うか否かをＵＩを介して設定することができる。
【００５２】
以上のように本実施形態によれば、矩形状の塗り図形（閉領域フィル命令）で表現された細線についても太らせ処理を適用することができる。そのため、アプリケーションソフトが線描画命令を用いずに描画した線図形についても、再現性の高い出力を行うことができる。
【００５３】
また、図３及び図６を参照して説明したように、ユーザの指示により、太らせ処理を行う対象を設定することができる。その結果、太らせ処理によって生じる画像処理全体の処理速度の低下を防ぐことができる。
【００５４】
［第２実施例］
第１実施例では、細線と判定した閉領域フィル図形は無条件に補正処理を行っていたが、条件に応じて補正処理を実施するか否かを選択するよう構成しても良い。以下に説明する本実施例では、太らせ処理を行った図形が隣の図形と重なるような場合には太らせ処理を行わない。例えば、本図形が縦線で隣の図形も縦線であるような場合には、太らせない。細線が非常に太い太線になってしまうからである。ただし、本図形が縦線で、隣の図形が横線であるような場合には、例外的に本図形を太らせる。両者がつながるという弊害は発生するものの、その弊害よりも、太らせないことで縦線が消えてしまいうるという弊害の方が大きいからである。
【００５５】
本実施例では、複数の閉領域フィル図形の隣接状況を前記補正処理の条件として、太らせ判定結果を切替える。
【００５６】
以下、図７、図８、図９、および図１０を用いて、細線形状と判定された複数の閉領域フィル図形に対して、お互いの位置関係に応じて太らせ判定結果を切替える方法について説明する。
【００５７】
まず、図７及び図８を参照して、複数の閉領域フィル図形の隣接状況に応じた、太らせ処理の影響について説明する。
【００５８】
図７は、２つの矩形が交差している場合を示している。例えば帳票等の罫線を構成する場合に矩形がこのような位置関係になることがある。この場合、太らせ処理を行った後もお互いの図形に対する影響が少ない（すなわち、重なり状況は変わらない。重なっていなかったものが太らせ処理により重なってしまうという事態にはならない）。そのため、太らせ処理を行っても構わない。
【００５９】
一方、図８は、水平垂直方向（の傾き）が同じ複数の矩形が近接して描画されている場合を示している。図８（ａ）及び図８（ｃ）に示された矩形に対して太らせ処理を行うと、図８（ｂ）及び図８（ｄ）に示した矩形になる。図８（ｂ）及び図８（ｄ）に示すように、重なっていなかった塗り領域が接合してしまい、意図しない描画結果となってしまう。
【００６０】
従って、本実施例において、まず、描画命令判定部２０２で細線であると判定された結果（複数の矩形描画命令および線描画命令）が、描画命令格納部２０３に一時的に保持される。その後、太らせ判定部２０４が、お互いの描画命令の印字位置を基に、水平垂直方向（の傾き）の同一性と太らせ処理後の接合・重複状況を調べ、太らせ判定結果を切替える。
【００６１】
次に、図９および図１０を参照して、本実施例においてプリンタドライバ１０７で行われる細線補正処理の手順を説明する。図９は、１ページ分の描画処理手順を示している。図１０は、図９のＳ９１５の処理手順の詳細を示している。
【００６２】
本実施例では、水平あるいは垂直成分のみから構成される線描画命令に対して、他の線描画命令との近接状況に応じて太らせ処理を行うか否かを切替える。
【００６３】
図９のＳ９０１、Ｓ９０３、Ｓ９１１、Ｓ９１４の各ステップは、第１実施例の図５のＳ５０１、Ｓ５０２、Ｓ５０７、Ｓ５０８と同様であるため、説明を省略する。
【００６４】
Ｓ９１１においてＤＤＩ関数が細線を描画する線描画命令であると判定された場合、描画命令判定部２０２は、該細線が水平成分のみから構成されているかを判定する（Ｓ９１２）。水平成分のみから構成されていない場合、垂直成分のみから構成されているか（Ｓ９１３）を判定する。細線が水平成分又は垂直成分のみから構成されているかの判定は、線描画命令のパラメータとして指定される開始点と終了点の座標値を基に細線の傾きを求めることによってを行う（一般的な方法であるため詳述は省く）。
【００６５】
そして、細線が水平成分又は垂直成分のみから構成されていると判定した場合（Ｓ９１２でＹｅｓ又はＳ９１３でＹｅｓの場合）は、それぞれＳ９０６、Ｓ９１０に進み、細線が垂直線であるか水平線であるかを設定する。Ｓ９１０、Ｓ９０６の各ステップの処理の詳細は後述する。
【００６６】
その後、太らせ対象の閉領域フィル命令と同様に、線描画命令の近接状況を調べるため、Ｓ９０７にて該描画命令を描画命令格納部２０３に保持する。
【００６７】
また、Ｓ９０２〜Ｓ９１０およびＳ９１２〜Ｓ９１３において、１ページ分の描画命令を順次受け取り、太らせ対象候補の矩形描画命令および線描画命令が連続する限り、Ｓ９０７にて描画命令格納部２０５がスプールする。そして、Ｓ９１５において前記スプール済みの描画命令の近接状況を調べ、近接図形が存在しない場合は該描画命令が示す図形形状を太らせる。すなわち、Ｓ９１５において、細線を構成する閉領域フィル命令（細線塗り図形）又は線描画命令が予め設定された条件に適合するか否かを判定し、当該条件に適合する場合、細線塗り図形又は線描画命令に対して太らせ処理を行う。
【００６８】
なお、本実施例では、描画命令判定部２０２がＳ９０２〜Ｓ９０６、Ｓ９０８〜Ｓ９１３、Ｓ９１７の各ステップを実行し、描画命令格納部２０３がＳ９０７を実行する。さらに、Ｓ９１５（図１０で詳述する）は、太らせ判定部２０４、線幅補正部２０５、ＰＤＬ命令出力部２０６によって実行され、前記ＰＤＬ命令出力部２０６は、太らせ対象ではない描画命令をＰＤＬ命令に変換するためＳ９１６の処理も実行する。
【００６９】
ここで、本実施例における太らせ判定処理は、描画命令入力部２０１がＯＳから受け取る描画命令の順序と、ＰＤＬ命令出力部２０６が生成するＰＤＬ命令の順序とが一致する範囲内で行うものとする。従って、描画命令格納部２０３は前記太らせ対象候補の描画命令（矩形描画命令あるいは水平・垂直成分のみの線描画命令）が連続する範囲内で対象命令をスプールする。太らせ判定部２０４は、太らせ対象でない描画命令をトリガとして、スプール済み描画命令に対して太らせ判定処理を開始する。
【００７０】
あるいは、処理速度の遅延が許容可能なシステムに適用する場合は、描画命令格納部２０３はページ終了までの太らせ対象候補の全描画命令をスプールし、太らせ判定部２０４は、ページ終了をトリガとして太らせ判定処理を開始する構成としても良い。
【００７１】
続いてＳ９０３〜Ｓ９０５では、描画命令が縦細線を構成する矩形であるかを判定し、同様にＳ９０３、Ｓ９０８〜Ｓ９０９では描画命令が横細線を構成する矩形であるかを判定するが、ここでの判定方法は実施例１と同様で良いため説明を省略する。
【００７２】
ただし、本実施例では、細線の水平垂直方向を参照するＳ９１５の判定処理（後述）に備え、縦細線であるか否かの判定結果をフラグ“Ｖｅｒｔ”にセットし、矩形描画命令のパラメータとして保持しておく。すなわち、矩形が縦細線である場合はＳ９０６にてＶｅｒｔ＝１となり、矩形が横細線である場合はＳ９１０にてＶｅｒｔ＝０となる。続くＳ９０７では、細線形状（縦細線又は横細線である）と判定された矩形について、左上端座標点、右下端座標点、塗りつぶす色値などの描画パラメータ、前記フラグ“Ｖｅｒｔ”から成る矩形描画命令をスプールする。
【００７３】
以上のようにＳ９０１〜Ｓ９１３の処理によれば、まず、ＯＳより受け取った描画命令が細線であるか否かを閉領域フィル命令及び線描画命令ごとに判断する。その後、細線であると判断された描画命令が水平線であるか垂直線であるかを判断し、当該判断に応じて水平線であるか垂直線であるかを設定した描画命令を描画命令格納部２０５に格納する。
【００７４】
また、本実施例では、Ｓ９０７にて描画命令格納部２０５が描画命令をスプールする。当該スプールされた描画命令に対する太らせ処理（Ｓ９１５）は、次の３つのいずれかのタイミングで行われる。すなわち、（１）ページが終了したとき（Ｓ９０２；Ｙｅｓ）。（２）受け取った描画命令であるＤｒｖＳｔｒｏｋｅＰａｔｈ（）が細線ではないとき（Ｓ９１１；Ｎｏ）。受け取った細線の描画命令であるＤｒｖＳｔｒｏｋｅＰａｔｈ（）が水平線でも垂直線でもない場合（Ｓ９１３；Ｎｏ）に、当該描画命令の線幅を補正（Ｓ９１４）した後。このように、ページ終了以外のタイミングでも太らせ処理を行うことにより、ホストコンピュータ１０１に対する処理付加を低減させることができる。
【００７５】
続くステップＳ９１５は、Ｓ９０１〜Ｓ９１３の各ステップにおいて細線形状でない矩形描画命令、あるいは矩形描画命令以外の描画命令を受け取った都度、またはページ終了命令等のページ制御命令を受け取った際に実行される。なお、この時、細線形状の閉領域フィル図形が１つもスプールされていない場合は太らせ処理は行われない（後述のＳ１００１にてＮｏと判定される）。
【００７６】
最後に、Ｓ９１６において太らせ対象でない描画命令群に対応したＰＤＬ命令を生成し、該ＰＤＬ命令がページ終了命令でなければ、後続の描画命令を処理するためにＳ９０１に戻る（Ｓ９１７）。
【００７７】
続いて図１０のフローチャートを用いて、図９のＳ９１５に相当するステップの詳細を説明する。
【００７８】
図１０において、太らせ判定部２０４がＳ１００１〜Ｓ１０１１およびＳ１０１４、Ｓ１０１５の各ステップを実行し、線幅補正部２０５がＳ１０１２を、ＰＤＬ命令出力部２０６がＳ１０１３、Ｓ１０１６をそれぞれ実行する。
【００７９】
まず、太らせ判定部２０４は、描画命令格納部２０３に描画命令がスプールされているか調べ（Ｓ１００１）、１つも存在しない場合は処理を終了する。一方、描画命令が存在する場合はスプールされている描画命令を特定するための変数ｋに１を設定し（Ｓ１００２）、ｋ番目の描画命令（以降、“描画命令（ｋ）”と記す）を順次読み出す（Ｓ１００３）。
【００８０】
続くＳ１００４において、太らせ判定部２０４は、描画命令（ｋ）に対して太らせ処理を適用すべきかを判定するためのフラグ“補正フラグ”を１（真）に設定し、比較対象となる第２の描画命令を特定するための変数ｍに１を設定する。そして、Ｓ１００５〜Ｓ１０１０にて、描画命令（ｋ）について、他の描画命令（ｍ）との位置関係を順次調べ、描画命令（ｋ）を補正すべきか否かを判定する。
【００８１】
すなわち、Ｓ１００５〜Ｓ１００６にて残り図形がなくなるまでスプール済み描画命令（ｍ）を読み出し、ｋ＝ｍ（すなわち、描画命令（ｋ）＝描画命令（ｍ））なら同一矩形（同一描画命令）であるためスキップする（Ｓ１００７；Ｙｅｓ）。同一矩形ではない場合（Ｓ１００７；Ｎｏ）、描画命令（ｋ）と描画命令（ｍ）との位置関係を調べる（Ｓ１００８〜Ｓ１００９）。
【００８２】
そして、描画命令（ｋ）と描画命令（ｍ）がいずれも水平線又はいずれも垂直線であり（Ｓ１００８；Ｙｅｓ）、当該描画命令どうしが隣接する（Ｓ１００９；Ｙｅｓ）と判断された場合、Ｓ１０１０に進む。Ｓ１０１０では、“補正フラグ”を０にセットし、次の描画命令を読み出すためにｍを１だけ増加する。
【００８３】
Ｓ１００５にて他の描画命令がないと判定されるまで、上記の各ステップの処理を行い、最終的にＳ１０１１にて“補正フラグ”が１であれば、描画命令（ｋ）は太らせ対象であると判断される。
【００８４】
なお、Ｓ１００８では、前記Ｓ９０６あるいはＳ９１０にて判定したＶｅｒｔフラグを参照して、各描画命令どうしの水平垂直方向を比較し、同じ向きであればＳ１００９にて位置関係を比較する。
【００８５】
続くＳ１００９の隣接判定では、太らせ処理後の図形が隣接するか否かを判定するために、読み出した２つの描画命令の右下端座標を共に補正した数値にて比較する。以下、描画命令が水平線（横細線）であった場合を例として、隣接判定の方法について説明する。
【００８６】
ここで、各描画命令の補正後の座標値を、
描画命令（ｋ）：
左上端点＝（ｘａ１、ｙａ１）、右下端点＝（ｘａ２、ｙａ２）
描画命令（ｍ）：
左上端点＝（ｘｂ１、ｙｂ１）、右下端点＝（ｘｂ２、ｙｂ２）
とする。
【００８７】
なお、読み出した描画命令が線描画命令であった場合、前記左上端点および右下端点は、該描画命令のパラメータで示される両線端（開始点・終了点）の座標値と線幅とから求められる。例えば、開始点、終了点がそれぞれ（ｘｓ、ｙｓ）、（ｘｅ、ｙｅ）、線幅がｗで与えられる線描画命令の場合、前記左上端点および右下端点は次のとおりである。
【００８８】
水平線分：
左上端点＝（ｘｓ、ｙｓ）、右下端点＝（ｘｅ、ｙｅ＋ｗ）
垂直線分：
左上端点＝（ｘｓ、ｙｓ）、右下端点＝（ｘｅ＋ｗ、ｙｅ）
上記のように表現された描画命令どうしの隣接判定方法は、まず、ｙａ１とｙｂ１が等しいか否かを調べ、等しい場合は図８−ａに示した位置関係である可能性があるため、さらにｘａ２＜ｘｂ１であるか、あるいはｘｂ２＜ｘａ１であるかを調べる。上記２条件が何れも成り立たない場合、互いの図形は隣接または重複していると判定され、描画命令（ｋ）は太らせ対象にならない。
【００８９】
一方、ｙａ１とｙｂ１が等しくない場合、図８−ｃに示した位置関係であるか否かを調べる。すなわち、ｙａ２＜ｙｂ１であるか、あるいはｙｂ２＜ｙａ１であるかを調べれば良く、この場合も上記２条件が何れも成り立たない場合、互いの図形は隣接または重複していると判定され、描画命令（ｋ）は太らせ対象にならない。
【００９０】
最後に、太らせ対象であると判定された描画命令（ｋ）については、線幅補正部２０５が矩形右下端の座標値を＋１補正し（Ｓ１０１２）、ＰＤＬ命令出力部２０６が補正済みパラメータを基にＰＤＬ命令を生成する（S１０１３）。そしてＳ１０１４においてスプール済み描画命令が存在する場合、後続の描画命令に対しても同様に太らせ判定処理を行うため、ｋを１だけ増加し（Ｓ１０１５）、Ｓ１００３に戻る。
【００９１】
一方、全てのスプール済み描画命令に対して太らせ判定処理を行ってＰＤＬ命令を生成した後、ＰＤＬ生成部２０６は、描画命令格納部２０３に保持されている描画命令を全て削除し（Ｓ１０１６）、本処理を終える。
【００９２】
上述したように、複数の塗り図形の描画位置に応じて太らせ対象とするか否かを判別することで、不要な太らせ処理による不具合を防ぐことができる。
【００９３】
また、個々の描画命令を対象として太らせ対象を特定し、オブジェクト単位で太らせ処理を実施するため、イメージや文字などの他の描画オブジェクトに対して誤判定することなく、確実に補正対象を絞り込むことができる。
【００９４】
［第３実施例］
第２実施例では、複数の閉領域フィル図形の隣接状況を補正判定条件としたが、太らせ処理の判定条件はこれに限らない。本実施例では、閉領域フィル図形を描画する際の論理演算（ＲＯＰ：Ｒａｓｔｅｒ  ＯＰｅｒａｔｉｏｎ）の種別によって太らせ判定結果を切替える。すなわち、閉領域フィル図形を描画する際の論理演算が、所定の論理演算であるか否かを判定し、当該判定結果に応じて太らせ処理を行うか否かを切り替える。
【００９５】
例えば、描画する矩形の色（ソース）と背景（デスティネーション）との論理演算を行うＲＯＰが指定された場合、矩形を太らせることで論理演算の結果も変化するため、該矩形と他の描画命令とが重なるケースでは意図しない描画結果となってしまう。そこで、本実施例では、細線形状と判定した矩形であっても上書き指定のＲＯＰでない場合は補正対象としない。
【００９６】
図１１は、本実施例における細線補正処理の手順を示すフローチャートである。  
同図において、Ｓ１１０１〜Ｓ１１０４までの各ステップは、第１実施例における太らせ対象判定処理（Ｓ５０１〜Ｓ５０４）と同様で、さらにＳ１１０６はＳ５０５と、Ｓ１１０７はＳ５０６に相当する。ただし、説明を簡略化するため、本実施例の描画命令判定部２０２は、線描画命令を太らせ処理の対象としないものとするが、線描画命令を対象とすることもできる。そして、本実施例の太らせ判定部２０４は、Ｓ１１０５にて細線の矩形描画命令に対して指定されているＲＯＰ種別を調べ、ＲＯＰが上書き（ＲＯＰ３種別＝２０４、ＳＲＣＣＯＰＹ）であれば補正対象と判定する。
【００９７】
なお、本実施例では上書き指定のＲＯＰのみを太らせ対象と判定したが、本発明の趣旨はこれに限定する必要はない。
【００９８】
以上のように本実施例によれば、太らせ対象とする塗り図形の属性（色値）を指定する手段を設けることにより、例えば特定色で描画されている罫線のみを太らせることができる。
【００９９】
［第４実施例］
第２、第３実施例では、複数の閉領域フィル図形の隣接状況やＲＯＰ種別を補正処理条件とした。本実施例では、罫線を構成する図形の色値を予め特定可能な場合は、図形の色値によって太らせ判定結果を切替える。
【０１００】
図１２は、本実施例における細線補正処理の手順を示すフローチャートである。Ｓ１２０５以外の各ステップは第３実施例における図１１の各ステップと同様で良い。そして、本実施例における太らせ判定部２０４は、矩形描画命令に対して指定されている色値C１を調べ、前記色値C1が予め指定された色値C２と同じであれば補正対象と判定する（Ｓ１２０５）。なお、本実施例では、プリンタドライバの処理オプションとして指定する「特殊細線処理」の設定項目として、さらに前記色値C２を指定するものとする。
【０１０１】
また、前記色値C２は特定の１色に限定する必要はなく、例えば色相や明るさ等の範囲を指定できるよう構成し、矩形の色値が前記色値の範囲内であれば補正可能とする構成でも良い。
【０１０２】
［第５実施例］
第１〜第４の実施例では、ホストコンピュータ１０１上で動作し、ＰＤＬで記述されたＰＤＬデータを生成するプリンタドライバ１０７による実施形として説明したが、本発明はこれに限らない。本発明は、前記ＰＤＬデータを受信して画像処理を行うプリンタ１１０によって実施することも可能である。すなわち、前記ＰＤＬデータから細線形状を構成する矩形描画命令を検出し、前記矩形描画命令のパラメータである印字座標を補正したディスプレイリストを生成することで、太らせ処理を行う。
【０１０３】
図１３は、本実施例におけるプリンタコントローラ１３０１のモジュール構成を示す図である。
【０１０４】
同図において、本発明を実現する制御プログラム群はプログラムＲＯＭ１３０２に格納されており、ＣＰＵ（不図示）が読み込むことで実行される。前記制御プログラムは、ＰＤＬデータを受信して受信バッファ１３１０に格納する印刷データ受信部１３０４、前記ＰＤＬデータを解析するＰＤＬインタプリタ１３０５等から構成される。さらに、ＰＤＬインタプリタ１３０５の解析結果を基に中間形式のディスプレイリスト（以下、ＤＬ）を生成し、ＤＬメモリ１３１１にページ単位で格納するＤＬ生成部１３０６、前記ＤＬを基にページ画像を生成するページ画像生成部１３０７を備える。そして、前記ページ画像はページスプールメモリ１３１２に圧縮格納され、エンジン制御部１３０８によってプリンタエンジン１３０９へビデオ信号として出力される。
【０１０５】
本実施例では、ＰＤＬインタプリタ１３０５において、図２のモジュール２０２〜２０６に相当する処理を行う。ただし、ＤＤＩから受け取る描画命令をＰＤＬデータに、出力するＰＤＬデータをＤＬにそれぞれ置換れば良い。
【０１０６】
［その他の実施例］
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【０１０７】
１０７  プリンタドライバ
２０２  描画命令判定部
２０３  描画命令格納部
２０４  太らせ判定部
２０５  細線補正部
３０３  太らせ処理レベル選択手段
【図１】
0005610923.tif 000002
【図２】
0005610923.tif 000003
【図３】
0005610923.tif 000004
【図４】
0005610923.tif 000005
【図５】
0005610923.tif 000006
【図６】
0005610923.tif 000007
【図７】
0005610923.tif 000008
【図８】
0005610923.tif 000009
【図９】
0005610923.tif 000010
【図１０】
0005610923.tif 000011
【図１１】
0005610923.tif 000012
【図１２】
0005610923.tif 000013
【図１３】
0005610923.tif 000014