(57)【要約】【課題】シンプルな操作で効果的に線幅を太らせる。【解決手段】ＰＳインタプリタは、設定される線幅に応じてプリントデータに含まれるラインの幅を変更するように、プリントデータであるベクタデータを定義する（Ｓ１０６）。レンダラは、定義したベクタデータに基づいて、ビットマップデータを生成する（Ｓ１１２）。プリンタドライバは、設定される線幅に応じてプリントデータに含まれるテキストの幅を変更するように、上記ビットマップデータに対して画像処理を施す。【選択図】図４
2015015589.tif 000002
【特許請求の範囲】
【請求項１】
線幅を設定する設定手段と、
前記設定手段により設定される線幅に応じてプリントデータに含まれるラインの幅を変更するように、前記プリントデータであるベクタデータを定義する定義手段と、
前記定義手段により定義された前記ベクタデータに基づいて、ビットマップデータを生成する生成手段と、
前記設定手段により設定される線幅に応じて前記プリントデータに含まれるテキストの幅を変更するように、前記ビットマップデータに対して画像処理を施す画像処理手段とを有することを特徴とする画像処理装置。
【請求項２】
前記定義手段は、論理座標とデバイス座標間の変換マトリックスを用いて、前記設定手段により設定された前記デバイス座標において太らせる線幅から前記論理座標におけるラインの幅を算出するように、前記ベクタデータを定義することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記プリントデータにおいてテキストとラインとが重ねて描画されるか否かを判定する判定手段を更に有し、
前記画像処理手段は、前記判定手段によりテキストとラインとが重ねて描画されると判定された場合、前記ビットマップデータに対して画像処理を実行しないことを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記画像処理手段は、前記ビットマップデータのうちのライン属性のデータに対しては前記画像処理を施さないことを特徴とする請求項１又は２に記載の画像処理装置。
【請求項５】
画像処理装置によって実行される画像処理方法であって、
線幅を設定する設定ステップと、
前記設定ステップにより設定される線幅に応じてプリントデータに含まれるラインの幅を変更するように、前記プリントデータであるベクタデータを定義する定義ステップと、
前記定義ステップにより定義された前記ベクタデータに基づいて、ビットマップデータを生成する生成ステップと、
前記設定ステップにより設定される線幅に応じて前記プリントデータに含まれるテキストの幅を変更するように、前記ビットマップデータに対して画像処理を施す画像処理ステップとを有することを特徴とする画像処理方法。
【請求項６】
線幅を設定する設定ステップと、
前記設定ステップにより設定される線幅に応じてプリントデータに含まれるラインの幅を変更するように、前記プリントデータであるベクタデータを定義する定義ステップと、
前記定義ステップにより定義された前記ベクタデータに基づいて、ビットマップデータを生成する生成ステップと、
前記設定ステップにより設定される線幅に応じて前記プリントデータに含まれるテキストの幅を変更するように、前記ビットマップデータに対して画像処理を施す画像処理ステップとをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、線幅を太らせる技術に関するものである。
【背景技術】
【０００２】
複写機、レーザプリンタ及びインクジェットプリンタ等の画像形成装置では、細線再現の変動要因が多数存在する。例えば、電子写真の場合、濃度変動、トナーの飛散、及び、主走査／副走査方向のプロセス特性等の影響が顕著に表れやすい。これらは、機種間差、個体差、経時変動、及び、メディアの搬送方向に依存した出力差等につながる。さらに、ホスト端末から印刷する場合には、使用するページ記述言語（ＰＤＬ）によってもベクタ描画を実際のピクセルに割り当てるルール、即ち、塗りルールの違いにより、細線の再現が異なったものとなる。これらは忠実再現に関する課題であるが、必ずしも忠実再現だけが期待されるとも限らない。ホスト端末から印刷する場合には、ホスト端末のディスプレイ解像度と画像形成装置の出力解像度との違いから、ユーザの想定以上に細く見えてしまう場合もある。また、複数種類の画像形成装置を同時に使用する場合や、画像形成装置を入れ替えて使用する場合に、細線の再現幅を合わせたいという要求もある。これらの各種課題を解決するために、今日までに様々な細線補正の技術が提案されている。
【０００３】
例えば、特許文献１には、細線を描画するためのコマンドを含むとともに、当該コマンドにより指定される線幅を補正するための指示を含むＰＤＬの描画コマンドを発行する技術が開示されている。しかし、一般的なＰＤＬにおいて、テキストはアウトラインフォントとして表現される。アウトラインフォントはテキストの輪郭を構成する曲線を定義するのみで、その線（ステム）の幅を定義するものではない。従って、細線を描画するためのコマンドのように単純に線幅を調整するといった方法を使用することはできない。また、テキストの中にはビットマップフォントして表現されるものもあり、この場合はアウトラインフォントの情報もない。
【０００４】
特許文献２には、テキストの中に含まれる細線の幅を補正する技術として、パターンマッチングを用いる技術が開示されている。しかしながら、パターンマッチングによる太らせでは予め定義したパターンに依存した指向性が発生し易い。例えば、注目ピクセルの上か左のピクセルがテキストを構成するピクセルであった場合に注目ピクセルを塗り足す場合を考える。水平線及び垂直線は、この場合、１ピクセル塗り足されることになる。４５度の斜め線は、左上から右下に描画される線は２ピクセル塗り足されることになる。右上から左下に描画される線は１ピクセル塗り足されることになる。このように線の描画方向により太り方が異なってしまう。上下左右の全方向に太らせればよいが、必ず２ピクセル太ることになってしまい、太り過ぎてしまう懸念がある。即ち、パターンマッチングによる細線の補正は指向性が課題といえる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１０５８２７号公報
【特許文献２】特開２００７−１２５８２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来技術の特性を考慮すると、直線や曲線等のラインに対してはベクタデータ段階での線幅の補正、テキストに対してはパターンマッチングによる線幅の補正が好ましいと考えられる。しかしながら、補正量を別々に指定する方法では、テキストとラインとの太らせ方に差異が生じる可能性がある。パターンマッチングにより線幅を太らせる方法では、ピクセル単位での太り方になるのに対して、ベクタデータ段階では論理線幅を増やす必要があるためである。ＰＤＬではデバイス依存性をなくすために、描画用の座標空間として論理座標系を定義するものが多い。論理座標系でラインを太らせると、出力解像度に依存せずに太らせることが可能である。しかし、これは出力解像度によって太るピクセル数が異なることにも繋がり、パターンマッチングによるテキストの太らせと不一致が生じる。また、１つのメディアに複数のページを配置するＮ−ＵＰ処理等のレイアウト制御を行う場合も、縮小が起こるために不一致が生じる。
【０００７】
そこで、本発明の目的は、シンプルな操作で効果的に線幅を太らせることにある。
【課題を解決するための手段】
【０００８】
本発明の画像処理装置は、線幅を設定する設定手段と、前記設定手段により設定される線幅に応じてプリントデータに含まれるラインの幅を変更するように、前記プリントデータであるベクタデータを定義する定義手段と、前記定義手段により定義された前記ベクタデータに基づいて、ビットマップデータを生成する生成手段と、前記設定手段により設定される線幅に応じて前記プリントデータに含まれるテキストの幅を変更するように、前記ビットマップデータに対して画像処理を施す画像処理手段とを有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、シンプルな操作で効果的に線幅を太らせることが可能となる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係る画像形成装置の構成を示す図である。
【図２】本発明の実施形態に係る画像形成装置のソフトウェアモジュールの構成を示す図である。
【図３】操作部の液晶タッチパネルに表示される線幅補正の設定画面を示す図である。
【図４】コントローラユニットにて実行される基本プリント処理を示すフローチャートである。
【図５】線幅指定ＰＳオペレータの再定義について説明するための図である。
【図６】出力画像の中でどのように線幅が太るのかについて説明するための図である。
【図７】図４に示す基本プリント処理におけるスレッドＣの処理を詳細に示すフローチャートである。
【図８】図７のステップＳ１２１２において実行される、パターンマッチングによりテキストを太らせる処理の詳細を示すフローチャートである。
【図９】図８を用いて説明したパターンマッチングによりテキストを太らせる処理を適用した例を示す図である。
【図１０】本発明の第２の実施形態が解決する課題を説明するための図である。
【図１１】テキストとラインとの重なりを検知するための処理を示すフローチャートである。
【図１２】図７のステップＳ１２１２において実行される、パターンマッチングによりテキストを太らせる処理の詳細を示すフローチャートである。
【図１３】本発明の第３の実施形態において、図８に示す処理に代わって実行される処理を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。
【００１２】
先ず、本発明の第１の実施形態について説明する。図１は、本発明の第１の実施形態に係る画像形成装置１００の構成を示す図である。なお、本実施形態では、画像形成装置１００単体の場合を例に挙げるが、ネットワークを介して接続されるホストコンピュータ上に多くの処理を分離実行させる構成であってもよい。
【００１３】
図１において、２００は、コントローラユニットであり、画像データやデバイス情報の入出力を制御する。ＣＰＵ１は、ＲＯＭ３又はＨＤＤ４に記憶されたプログラムをＲＡＭ２に読み出して実行する。さらに、システムバス５に接続される各デバイスをＣＰＵ１が統括的に制御する。ＲＡＭ２は、ＣＰＵ１の主メモリ及びワークエリアとして機能する。ＲＯＭ３には、電源ＯＮ時に実行されるブートプログラムが格納され、ＨＤＤ４には、オペレーティングシステム及び画像形成装置１００の制御プログラムが格納される。また、ＨＤＤ４は、画像データやプリントデータ等の大容量データを一時的又は長期的に保持する目的でも使用される。
【００１４】
ネットワークＩ／Ｆ６は、ローカルエリアネットワーク１３とのインタフェースであり、印刷データやデバイス情報の入出力を担う。操作部Ｉ／Ｆ７は、操作部１４とのインタフェースであり、表示させる画像データを操作部１４に対して出力する。また、操作部Ｉ／Ｆ７は、画像形成装置１００のユーザが操作部１４から入力した情報を、ＣＰＵ１に伝える役割をする。操作部１４は、出力器として液晶パネル及び音源を備え、入力器としてタッチパネル及びハードキーを備えるものである。
【００１５】
コントローラユニット２００は、デバイスＩ／Ｆ８を介してプリンタエンジン１５に接続される。デバイスＩ／Ｆ８は、ＣＰＵ１の指示に基づき、画像データの送信処理、デバイス動作の指示処理、及び、デバイス情報の受信処理を行う。プリンタエンジン１５は、コントローラユニット２００から入力した画像データを媒体上に出力する出力部であり、電子写真方式及びインクジェット方式の何れでも構わない。
【００１６】
ＲＩＰ（Raster Image Processor)９は、ディスプレイリスト（以下、ＤＬと称す）をラスタイメージに展開する専用ハードウェアである。このディスプレイリストはＲＩＰ９が解釈可能な形式の中間データである。ＲＩＰ９は、ＣＰＵ１によりＲＡＭ２上に生成されたＤＬを高速、且つ、ＣＰＵ１の実行と並列に処理するものである。プリンタ画像処理部１０は、プリント出力画像データに対して、画像補正及びハーフトーニング等を行う。画像回転部１２は、画像データの回転処理を行う。画像圧伸部１１は、多値画像データに対してはＪＰＥＧ形式の圧縮伸張処理を行い、２値画像データに対してはＪＢＩＧ、ＭＭＲ、ＭＨ形式の圧縮伸張処理を行う。
【００１７】
図２は、第１の実施形態に係る画像形成装置１００のソフトウェアモジュールの構成を示す図である。図２に示した各ソフトウェアモジュールは、プログラムとしてＨＤＤ４に格納され、ＲＡＭ２にロードされ、ＣＰＵ１により実行されるものである。より具体的には、各ソフトウェアモジュールは、ＣＰＵ１上で動作するＯＳ（オペレーティングシステム）によりＲＡＭ２にロードされ、スレッド単位で実行権を付与され、実行されるものである。
【００１８】
データ受信部２０１は、ホスト端末から送信されたプリントデータを受信する。データ受信部２０１において受信したプリントデータは、ジョブ制御部２０２を介してジョブデータ管理部２０８で保持される。
【００１９】
ジョブ制御部２０２は、プリントデータの受信処理から印刷処理までのジョブ制御の全般を司る。ＰＳインタプリタ２０３は、PostScript（登録商標）データを解釈して、中間データであるＤＬを生成する。生成されたＤＬは、ジョブ制御部２０２を介してジョブデータ管理部２０８で保持される。レンダラ２０４は、ＤＬからビットマップイメージを生成するモジュールであり、多くの処理は専用ハードウェアＲＩＰ９により実行される。生成されたビットマップイメージは、ジョブ制御部２０２を介してジョブデータ管理部２０８で保持される。プリンタドライバ２０５は、デバイスＩ／Ｆ８を介してプリンタエンジン１５に対する印刷指示処理とビットマップイメージの送信処理とを実行する。この際に、プリンタドライバ２０５は、プリンタ画像処理部１０による画像補正も行う。ユーザインタフェース２０６は、操作部Ｉ／Ｆ７を介して、操作部１４を制御するモジュールである。主に、ユーザインタフェース２０６は、操作部１４の液晶パネルに表示するデータを生成し、タッチパネルからの入力に従って液晶パネルの表示を更新する。また、タッチパネルからの入力が何らかのジョブ実行指示であった場合、ユーザインタフェース２０６は、ジョブ制御部２０２に指示を伝達する。ジョブデータ管理部２０８は、プリントデータ、ＤＬ、ビットマップイメージのそれぞれを一時的又は長期的に管理するデータベースである。
【００２０】
図３は、操作部１４の液晶タッチパネルに表示される線幅補正の設定画面を示す図である。「線幅補正」項目３０１において、「ＯＮ」３０２が押下されると、線幅補正が有効となり、「ＯＦＦ」３０３が押下されると、線幅補正が無効となる。また、「太らせ幅（ピクセル）」項目３０４において、「１」３０５が押下されると、太らせ幅は１ピクセルと設定され、「２」３０６が押下されると、太らせ幅は２ピクセルと設定される。ここで、ＣＰＵ１は、設定画面上の押下された位置から選択された項目を判定し、その設定値をＲＡＭ２に保存する。例えば、ＣＰＵ１は、液晶タッチパネル上の「ＯＮ」３０２が押下されたことを検知して、ＲＡＭ２に細線補正が有効という情報を記憶する。同様に、ＣＰＵ１は、液晶タッチパネルの「１」３０５の領域が押下されたことを検知して、ＲＡＭ２に太らせ幅１ピクセルという情報を記憶する。
【００２１】
図４は、コントローラユニット２００にて実行されるプリント処理を示すフローチャートである。なお、図４のフローチャートに示す処理は、ＨＤＤ４に記憶された図２の各ソフトウェアモジュール内のプログラムがＲＡＭ２に読み出され、ＣＰＵ１により実行されることにより実現される。また、図４のフローチャートに示す処理では、スレッドＡ、スレッドＢ及びスレッドＣの三つのスレッドが並列に実行される。各スレッドは、オペレーティングシステムにより時分割され、その実行権が割り振られる。時分割の単位は十分に小さいため、三つのスレッドは並列動作するとみなすことができる。オペレーティングシステムによるマルチスレッディング処理は一般に広く知られた技術であるため、詳細な説明は省略する。スレッドＡ、スレッドＢ及びスレッドＣは、画像形成装置１００の起動時にオペレーティングシステムにより生成される常駐スレッドである。
【００２２】
先ず、スレッドＡについて説明する。ステップＳ１０１において、データ受信部２０１は、プリントデータであるＰＳデータを受信し、ジョブ制御部２０２を介してジョブデータ管理部２０８に格納する。ステップＳ１０２において、ＰＳインタプリタ２０３は、出力解像度及びレイアウトの内容に応じて、論理座標とデバイス座標間のアフィン変換マトリックスをＰＳインタプリタ２０３自身に設定する。画像形成装置１００では、出力解像度として６００ｄｐｉと１２００ｄｐｉとの二つをサポートしているものとする。また、画像形成装置１００では、１ページを一枚の用紙に配置する１ＵＰと２ページを一枚の用紙の左右に並べて配置する２ＵＰとの二つのレイアウトをサポートしているものとする。PostScriptでは、論理座標の基準単位は、ポイント（１ポイントは１／７２インチ）であり、座標原点はページの左下角の点となる。また、デバイス座標の基準単位はピクセルであり、座標原点は用紙の左上角の点となる。このとき、ＬＴＲサイズ（８．５×１１インチ）のページを１ＵＰ、６００ｄｐｉで出力した場合のアフィン変換マトリックスは（８．３３３,０,０,−８．３３３,０,６６００）となる。出力解像度とレイアウト内容との設定値は、ＰＳデータとともに送信されるジョブチケットにより指定される。ジョブチケットにより設定された設定値は、ジョブ制御部２０２からＰＳインタプリタ２０３に通知される。
【００２３】
ステップＳ１０３において、ＰＳインタプリタ２０３は、線幅補正の設定が有効であるか否かを判定する。ここで、ＰＳインタプリタ２０３は、操作部１４により設定された線幅補正の設定値をＲＡＭ２から読み出すことにより有効であるか否かを判定する。線幅補正の設定が有効である場合、処理はステップＳ１０４に移行する。一方、線幅補正の設定が有効ではない場合、処理はステップＳ１０７に移行する。
【００２４】
ステップＳ１０４において、ＰＳインタプリタ２０３は、図３の設定画面上の操作の結果ＲＡＭ２に記憶された太らせ幅（線幅を太らせるピクセル数）を、取得する。図３を用いて説明したように、画像形成装置１００では、１ピクセル及び２ピクセルの値をサポートしている。ステップＳ１０５において、ＰＳインタプリタ２０３は、論理座標とデバイス座標間の変換マトリックスを取得し、太らせるピクセル数から太らせる論理線幅（以下、論理太らせ幅と称す）を逆算するＰＳコードを生成する。ステップＳ１０６において、ＰＳインタプリタ２０３は、生成したＰＳコードを用いて、論理太らせ幅だけ太くなるように線幅指定ＰＳオペレータ（setlinewidth）を再定義する。再定義の詳細については後述する。
【００２５】
ステップＳ１０７において、ＰＳインタプリタ２０３は、ＰＳデータを解析処理し、当該ページのディスプレイリストを生成する。ここで、ステップＳ１０５及びＳ１０６で再定義された論理線幅を太らせるための処理は、ステップＳ１０７において実際に線幅指定ＰＳオペレータによって線幅が指定された際に実行されることに留意されたい。即ち、ステップＳ１０７において、ＰＳインタプリタ２０３は、指定されたピクセル数分だけ、論理線幅を太らせる処理をＰＳデータに対して実行する。また、本実施形態では、線幅指定ＰＳオペレータの再定義により論理線幅を太らせる処理を実現するが、線幅指定ＰＳオペレータの実行モジュール内に同様の実装を行う方法も可能である。いずれにせよ、線幅指定ＰＳオペレータによる線幅指定時に論理線幅を補正することにより、ラスタライズ後のビットマップデータに対する補正ではなく、ベクタデータ（ＰＳデータ）段階での線幅の補正が可能となる。
【００２６】
ステップＳ１０８において、ＰＳインタプリタ２０３は、レンダラ２０４に対してディスプレイリストの生成完了を通知し、レンダリングを依頼する。ステップＳ１０９において、ＰＳインタプリタ２０３は、全ページの処理を終了したか否かを判定する。全ページの処理が終了した場合、本フローチャートに示す処理は終了する。一方、全ページの処理が終了していない場合、残りのページについて処理を継続する。
【００２７】
スレッドＢの処理は、レンダラ２０４によって実行される。ステップＳ１１１において、レンダラ２０４は、１ページ分のディスプレイリストの生成完了を待つ。ディスプレイリストの生成完了が通知されると、処理はステップＳ１１１からステップＳ１１２に移行する。ステップＳ１１２において、レンダラ２０４は、ディスプレイリストを用いてレンダリングを行うことにより、ビットマップデータ及び属性マップを生成する。ここで、生成されるビットマップデータは、ＣＭＹＫの各色８ビットの諧調を有し、属性マップはビットマップデータの各ピクセルに対応した２ビットの情報を有する。ディスプレイリスト内には、各オブジェクトの属性フラグが含まれており、オブジェクトがグラフィックス、イメージ及びテキストの何れであるかが識別される。この属性フラグがレンダリング時に属性マップに展開される。即ち、属性マップは各ピクセルがグラフィックス（００）、テキスト（０１）及びイメージ（１０）の何れであるかを示す。
【００２８】
ステップＳ１１３において、レンダラ２０４は、ビットマップデータ及び属性マップをジョブデータ管理部２０８に保存し、プリンタドライバ２０５にプリントを依頼する。プリントの依頼は、プリンタドライバ２０５に対してレンダリング終了通知を送信することにより行われる。プリンタドライバ２０５は、プリンタエンジン１５と同期して処理を実行するために、スレッドＣとしてスレッドＡとは別スレッドで実行される。ステップＳ１２１において、依頼を受けたプリンタドライバ２０５は、ビットマップデータに対して画像処理を施す。そして、プリンタドライバ２０５は、プリンタエンジン１５に対してプリント開始要求コマンドを送信し、画像データを転送する。ここで行う画像処理には、ハーフトーニング処理とテキストを太らせる処理とがある。なお、ステップＳ１２１の詳細については後述する。
【００２９】
ステップＳ１１４において、レンダラ２０４は、全ページのレンダリングが完了したか否かを判定する。全ページのレンダリングが完了した場合、スレッドＢの処理は終了する。一方、全ページのレンダリングが完了していない場合、処理はステップＳ１１１に戻る。
【００３０】
次に、図５を参照しながら、線幅指定ＰＳオペレータの再定義について説明する。図５（Ａ）は、線幅指定ＰＳオペレータを指定された幅よりも１ピクセル太らせるように再定義したＰＳコードを示している。このＰＳコードをＰＳインタプリタ２０３に実行させることにより線幅指定ＰＳオペレータの再定義が完了する。図５（Ａ）では、２〜４行目が再定義した処理の内容を示し、これを１行目及び５行目のＰＳコードにより既存の線幅指定ＰＳオペレータの動作から変更する。２行目では、先ず、現在の論理座標とデバイス座標間の変換マトリックスを取得し（matrix currentmatrix）、その変換マトリックスの第一要素を取り出し（0 get）、絶対値に変換（abs）し、変倍率を求めることが定義されている。この値は１ポイントが何ピクセルに相当するかを示す。また、２行目では、変倍率と線幅指定ＰＳオペレータに指定された論理線幅との積を計算し（dup 3 1 roll mul）、論理線幅（ポイント）をデバイス線幅（ピクセル）に変換することが定義されている。３行目では、計算したデバイス線幅に１を足して（1 add）、変倍率で割る（div）ことにより１ピクセル太らせた場合の論理線幅（ポイント）を計算することが定義されている。４行目では、その値を線幅値として設定する（systemdict /setlinewidth get exec）ことが定義されている。１行目の左括弧（｛）と５行目の右括弧（｝）に挟まれた間のＰＳコードが実際に実行されるのは、再定義された線幅指定ＰＳオペレータが呼び出された際になる。図５（Ｂ）は、同様に線幅指定ＰＳオペレータを指定された幅よりも２ピクセル太らせるように再定義したＰＳコードを示している。図５（Ａ）との違いは、３行目の加算値が２となっている（2 add）箇所のみである。
【００３１】
次に、図６を参照しながら、出力画像の中でどのように線幅が太るのかについて説明する。図６（Ａ）は、論理線幅が１．８ピクセルの垂直線が指定された場合を仮想的に示している。マス目の１マスは１ピクセルを示す。便宜的に特定解像度に関連付けた表記をしているが、論理線幅は解像度とは関係しないことに注意されたい。即ち、出力解像度が２倍になった場合、図６（Ａ）の１マスは４マスに分割され、論理線幅は３．６ピクセルになる。ラインの位置は中心線の位置に指定され、中心線の両側に０．９ピクセルの厚さを持った塗りが期待される描画となる。図６（Ｂ）は、論理線幅を１ピクセル増やして２．８ピクセルとした場合を仮想的に示している。中心線の両側の厚みをそれぞれ０．５ピクセルずつ増やすことにより線幅が１ピクセル太くなる。図６（Ｃ）は、これを実際のデバイス座標上での塗りに変換した結果であるデバイス線幅を示している。デバイス座標上では整数のピクセル分しか塗れないため、デバイス線幅は四捨五入して３ピクセルとなる。１ピクセル太らせた場合に水平線又は垂直線の場合は上下、左右の何れかに追加ピクセルが偏る。しかしながら、斜め線や曲線の場合は論理座標上で中心線から均等に太らせることにより、追加ピクセルが特定方向に偏ることはない。
【００３２】
図７は、図４に示すプリント処理におけるスレッドＣ（即ち、ステップＳ１２１）の処理を詳細に示すフローチャートである。スレッドＣの処理は、プリンタドライバ２０５により実行される。
【００３３】
ステップＳ１２１１において、プリンタドライバ２０５は、レンダリング終了通知の受信を待つ。図４のステップＳ１１３でレンダリング終了通知が発行されると、処理はステップＳ１２１２に移行する。ステップＳ１２１２において、プリンタドライバ２０５は、属性マップを用いて、ビットマップデータに画像処理を施す。画像処理の内容としては、テキストを太らせる処理、及び、ハーフトーニング処理であり、プリンタ画像処理部１０を用いてハードウェア処理されるものである。テキストを太らせる処理の詳細については後述する。
【００３４】
ステップＳ１２１３において、プリンタドライバ２０５は、プリンタエンジン１５に対してプリント開始要求コマンドを送信し、画像データを転送する。なお、ステップＳ１２１３において、プリンタドライバ２０５は、プリンタエンジン１５との同期処理も行う。プリンタエンジン１５は、所定のスピード以上では出力できない。コントローラユニット２００は、そのＲＩＰ処理が速すぎる場合にプリンタエンジン１５の印字出力を待つ必要がある。
【００３５】
ステップＳ１２１４において、プリンタドライバ２０５は、次ページがレンダリング済みであるか否かを判定する。次ページがレンダリング済みである場合、処理はステップＳ１２１２に戻る。次ページがレンダリング済みではない場合、処理はステップＳ１２１５に移行する。
【００３６】
ステップＳ１２１５において、プリンタドライバ２０５は、全ページの画像転送が完了したか否かを判定する。全ページの画像転送が完了した場合、処理はステップＳ１２１６に移行する。一方、全ページの画像転送が完了していない場合、処理はステップＳ１２１１に戻る。ステップＳ１２１６において、プリンタドライバ２０５は、プリンタエンジン１５に対してプリント完了要求コマンドを送信する。
【００３７】
図８は、図７のステップＳ１２１２において実行される、パターンマッチングによりテキストを太らせる処理の詳細を示すフローチャートである。ステップＳ１２１２０１において、プリンタドライバ２０５は、線幅補正の設定が有効であるか否かを判定する。プリンタドライバ２０５は、操作部１４により設定された線幅補正の設定値をＲＡＭ２から読み出すことにより、線幅補正の設定が有効であるか否かを判定する。線幅補正の設定が有効である場合、処理はステップＳ１２１２０２に移行する。一方、線幅補正の設定が無効である場合、図８に示す処理は終了する。
【００３８】
ステップＳ１２１２０２において、プリンタドライバ２０５は、注目ピクセルを画像データの左上ピクセルに設定する。ステップＳ１２１２０３において、プリンタドライバ２０５は、太らせるピクセル数が１ピクセルであるか否かを判定する。太らせるピクセル数が１ピクセルである場合、処理はステップＳ１２１２０４に移行する。一方、太らせるピクセル数が１ピクセルではない場合（太らせるピクセル数が２ピクセルである場合）、処理はステップＳ１２１２０５に移行する。
【００３９】
ステップＳ１２１２０４において、プリンタドライバ２０５は、参照ピクセルを注目ピクセルの上ピクセル及び左ピクセルに設定する。ステップＳ１２１２０５において、プリンタドライバ２０５は、参照ピクセルを注目ピクセルの上下左右の４ピクセルに設定する。
【００４０】
ステップＳ１２１２０６において、プリンタドライバ２０５は、参照ピクセルの何れかの属性がテキストであるか否かを属性マップにより判定する。参照ピクセルの何れかの属性がテキストである場合、処理はステップＳ１２１２０７に移行する。一方、参照ピクセルの何れの属性もテキストではない場合、処理はステップＳ１２１２０９に移行する。
【００４１】
ステップＳ１２１２０７において、プリンタドライバ２０５は、テキスト属性の参照ピクセルの中で最高濃度のピクセルの色値を取り出す。ステップＳ１２１２０８において、プリンタドライバ２０５は、注目ピクセルの色値を、ステップＳ１２１２０７で取り出した色値で上書きする。ステップＳ１２１２０９において、プリンタドライバ２０５は、全ピクセルの処理が終了したか否かを判定する。全ピクセルの処理が終了した場合、図８に示す処理は終了する。一方、全ピクセルの処理が終了していない場合、処理はステップＳ１２１２１０に移行する。
【００４２】
ステップＳ１２１２１０において、プリンタドライバ２０５は、注目ピクセルを次のピクセルに設定する。そして、処理はステップＳ１２１２０３に戻り、処理を繰り返す。ここで、次のピクセルとは、注目ピクセルのスキャンライン方向右隣のピクセルを意味する。しかし、注目ピクセルがスキャンライン右端のピクセルである場合に限り、１ライン下のスキャンラインの左端ピクセルが次のピクセルとなる。
【００４３】
図９は、図８を用いて説明したパターンマッチングによりテキストを太らせる処理の具体例を示す図である。図９（Ａ）は、テキストの一部分をピクセル単位で示した例を示している。マス目の１マスは、１ピクセルを示す。濃く塗られたマスがテキストを構成するピクセルであり、当該ピクセルに対応する属性マップの属性もテキストとなる。図９（Ｂ）は、１ピクセル太らせる処理を実施した場合に追加で塗られるピクセルを示している。追加で塗られるピクセルはマスの中央にドットを配したピクセルである。参照ピクセルが上ピクセル及び左ピクセルになるため、右側のピクセル及び下側のピクセルが塗られることになる。図９（Ｃ）は、最終的に１ピクセル太らせるための塗りを実施した結果を示している。図９（Ｄ）は、２ピクセル太らせる処理を実施した場合に追加で塗られるピクセルを示している。同様に、追加で塗られるピクセルは、マスの中央にドットを配したピクセルである。参照ピクセルが上下左右の４ピクセルになるため、上下左右の全方向にピクセルが付加される。図９（Ｅ）は、最終的に２ピクセル太らせるための塗りを実施した結果を示している。
【００４４】
以上の手順により、ライン（線）に対してはＰＳデータレベル、即ち、ベクタデータ段階で線幅を太らせる処理を実行し、テキスト（文字）に対してはパターンマッチングにより太らせる処理を実行することができる。従って、本実施形態によれば、ベクタデータ段階で線幅を太らせる量を、テキストを太らせる量と連動させることにより、一貫性をもってラインとテキストとを太らせることが可能となる。また、解像度を変更した場合や、Ｎ−ＵＰ処理に代表されるレイアウト処理を行った場合でも、ラインとテキストとを太らせる量に一貫性を持たせることができる。従って、操作者は、線幅を太らせる量だけを設定すればよく、シンプルな操作により効果的に線幅を太らせることができる。
【００４５】
次に、本発明の第２の実施形態について説明する。なお、第２の実施形態に係る画像形成装置は、図１及び図２に示した第１の実施形態に係る画像形成装置１００と同様の構成であるため、以下の説明においても、図１及び図２に示した符号を用いるものとする。また、以下では、第１の実施形態と相違する点に主眼をおいて説明を行うものとする。
【００４６】
図１０（Ａ）は、図９（Ａ）に示したテキスト上に、左上から右下に走る４５度のラインを重ねて描画した例を示している。図１０（Ｂ）は、図１０（Ａ）に示したテキストを１ピクセル太らせる処理を実行した場合に追加で塗られるピクセルを示している。追加で塗られるピクセルは、マスの中央にドットを配したピクセルである。参照ピクセルが上ピクセルと左ピクセルになるため、右側のピクセルと下側のピクセルとが塗られることになる。図１０（Ｃ）は、最終的に１ピクセル太らせる処理を実行して塗りを実施した結果を示している。図１０（Ｂ）及び図１０（Ｃ）に示すように、テキストを太らせることによりライン上にテキストが浸食し、その部分だけラインが細くなる結果となっている。テキストとラインとの濃度が大きく異なる場合、この影響が非常に目立ち易い。第２の実施形態は、このような課題を解決するものである。
【００４７】
図１１は、テキストとラインとの重なりを検知するための処理を示すフローチャートである。図１１に示す処理は、図４のステップＳ１０８に代わって実行されるものである。即ち、第２の実施形態では、図４のステップＳ１０７の後に図１１に示す処理が実行され、図１１に示す処理の後に図４のステップＳ１０９が実行されることになる。
【００４８】
ステップＳ１１０１において、ＰＳインタプリタ２０３は、テキストの線幅補正フラグをオンに設定する。ステップＳ１１０２において、ＰＳインタプリタ２０３は、ＰＳデータを解釈して描画コマンドを取得する。
【００４９】
ステップＳ１１０３において、ＰＳインタプリタ２０３は、取得した描画コマンドがテキスト描画コマンドであるか否かを判定する。テキスト描画コマンドである場合、処理はステップＳ１１０４に移行する。一方、テキスト描画コマンドでない場合、処理はステップＳ１１０５に移行する。
【００５０】
ステップＳ１１０４において、ＰＳインタプリタ２０３は、当該テキスト描画コマンドにより描画されるテキストのバウンディングボックスを取得し、バウンディングボックスリストに追加する。ステップＳ１１０５において、ＰＳインタプリタ２０３は、取得した描画コマンドがライン描画コマンドであるか否かを判定する。ライン描画コマンドである場合、処理はステップＳ１１０６に移行する。一方、ライン描画コマンドではない場合、処理はステップＳ１１０８に移行する。
【００５１】
ステップＳ１１０６において、ＰＳインタプリタ２０３は、ライン描画コマンドにより指示されたラインの下にテキストがあるか否かを判定する。ラインの下にテキストがあるか否かの判定は、バウンディングボックスリストにラインと交わるバウンディングボックスがあるか否かにより判定される。即ち、ラインと交わるバウンディングボックスがある場合、ラインの下にテキストがあると判定され、ラインと交わるバウンディングボックスがない場合、ラインの下にテキストがないと判定される。ラインの下にテキストがある場合、処理はステップＳ１１０７に移行する。一方、ラインの下にテキストがない場合、処理はステップＳ１１０８に移行する。
【００５２】
ステップＳ１１０７において、ＰＳインタプリタ２０３は、テキストの線幅補正フラグをオフに設定する。ステップＳ１１０８において、ＰＳインタプリタ２０３は、描画オブジェクトをディスプレイリストに追加する。
【００５３】
ステップＳ１１０９において、ＰＳインタプリタ２０３は、ページ内の全描画処理が終了したか否か判定する。ページ内の全描画処理が終了した場合、処理はステップＳ１１１０に移行する。一方、ページ内の全描画処理が終了していない場合、処理はステップＳ１１０２に戻る。ステップＳ１１１０において、ＰＳインタプリタ２０３は、テキストの線幅補正フラグの値をページに関連付けてジョブデータ管理部２０８に保存する。従って、複数ページからなるＰＳデータの場合、複数の線幅補正フラグの値がジョブデータ管理部２０８に保持される。
【００５４】
図１２は、図７のステップＳ１２１２において実行される、パターンマッチングによりテキストを太らせる処理の詳細を示すフローチャートである。即ち、図１２に示す処理は、第１の実施形態における図８に示す処理に代わって実行される処理である。
【００５５】
ステップＳ１２１２０１´において、プリンタドライバ２０５は、線幅補正の設定が有効であり、且つ、テキストの線幅補正フラグがオンであるか否かを判定する。線幅補正フラグは、ジョブデータ管理部２０８において管理される当該ページに関連する線幅補正フラグである。線幅補正の設定が有効であり、且つ、テキストの線幅補正フラグがオンである場合、処理はステップＳ１２１２０２に移行する。一方、線幅補正の設定が無効である場合、又は、テキストの線幅補正フラグがオフである場合、処理は終了する。なお、ステップＳ１２１２０１´以外の処理は、図８に示した同一符号の処理と同様であるため、説明を省略する。
【００５６】
以上により、テキストの上にラインが重なっていると判定されたページに関しては、パターンマッチングによりテキストを太らせる処理は一切実行されなくなる。従って、第２の実施形態によれば、テキストとラインとの重なりに伴う弊害を回避することができる。
【００５７】
次に、本発明の第３の実施形態について説明する。第３の実施形態に係る画像形成装置は、図１及び図２に示した第１の実施形態に係る画像形成装置１００と同様の構成であるため、以下の説明においても、図１及び図２に示した符号を用いるものとする。また、以下では、第１の実施形態と相違する点に主眼をおいて説明を行うものとする。
【００５８】
第２の実施形態では、テキストの上にラインが重なるページでは、パターンマッチングによりテキストを太らせる処理を実行しないことにより、テキストを太らせたことによるラインへの浸食を回避する方法について示した。第３の実施形態は、第２の実施形態とは異なる方法により、テキストを太らせたことによるラインへの浸食を回避するものである。
【００５９】
第１の実施形態では、属性マップに定義される属性は、グラフィックス、イメージ及びテキストの３種類であったが、第３の実施形態では、これにラインを追加した４種類の属性とする。即ち、イメージ（１０）、テキスト（０１）、ラインを除くグラッフィクス（００）、ライン（１１）の４属性になる。これは、図４のステップＳ１１１において、ライン描画が指定されたディスプレイリスト上の描画オブジェクトに対して、レンダラ２０４がライン属性を付与することにより実現される。そして、パターンマッチングによりテキストを太らせる場合において、注目ピクセルがライン属性である場合に当該ピクセルに対して太らせる処理を実施しないことにより、テキストを太らせることによるラインへの浸食が回避される。
【００６０】
図１３は、第３の実施形態における、パターンマッチングによりテキストを太らせる処理の詳細を示すフローチャートである。即ち、第３の実施形態では、図８に示す処理に代わって、図１３に示す処理が実行される。図１３において、ステップＳ１２１２０１及びＳ１２１２０２は、図８に示したステップＳ１２１２０１及びＳ１２１２０２と同様の処理である。
【００６１】
ステップＳ２０１において、プリンタ画像処理部１０は、注目ピクセルの属性がラインであるか否かを判定する。注目ピクセルの属性がラインである場合、処理はステップＳ１２１２０９に移行する。一方、注目ピクセルの属性がラインではない場合、処理はステップＳ１２１２０３に移行する。
【００６２】
図１３におけるステップＳ１２１２０３〜Ｓ１２１２１０の処理は、図８における同一符号の処理と同様である。以上のように、第３の実施形態では、ステップＳ２０１で注目ピクセルの属性がラインであるか否かを判定し、注目ピクセルの属性がラインである場合、テキストを太らせる処理をスキップする。これにより、テキストを太らせることによるラインへの浸食を完全に防止しつつ、テキストの太らせとラインの太らせとを同時に実現することができる。
【００６３】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００６４】
２０１：データ受信部、２０２：ジョブ制御部、２０３：ＰＳインタプリタ、２０４：レンダラ、２０５：プリンタドライバ、２０６：ユーザインタフェース、２０８：ジョブデータ管理部
【図１】
2015015589.tif 000003
【図２】
2015015589.tif 000004
【図３】
2015015589.tif 000005
【図４】
2015015589.tif 000006
【図５】
2015015589.tif 000007
【図６】
2015015589.tif 000008
【図７】
2015015589.tif 000009
【図８】
2015015589.tif 000010
【図９】
2015015589.tif 000011
【図１０】
2015015589.tif 000012
【図１１】
2015015589.tif 000013
【図１２】
2015015589.tif 000014
【図１３】
2015015589.tif 000015