(57)【要約】【課題】  ページに含まれる所定の解像度よりも低い解像度を持つビットマップオブジェクトと、そうでないオブジェクトとを区別して、線幅の調整を行う。【解決手段】  所定の解像度よりも低い解像度を持つビットマップオブジェクトに対して線幅の調整処理を行い、所定の解像度を持つビットマップオブジェクトに対してその調整処理を行わない。【選択図】  図５
2015153104.tif 000002
【特許請求の範囲】
【請求項１】
ページに含まれるオブジェクトを判定する判定手段と、
前記所定の解像度よりも低い解像度を持つビットマップオブジェクトであると判定されたオブジェクトに対して当該オブジェクトの解像度を前記所定の解像度に変換し、当該変換されたオブジェクトに対して線幅の調整処理を行い、前記所定の解像度を持つビットマップオブジェクトであると判定されたオブジェクトに対して前記調整処理を行わない調整手段と、
を有する情報処理装置。
【請求項２】
前記所定の解像度よりも低い解像度を持つビットマップオブジェクトであると判定されたオブジェクトの線幅は、前記所定の解像度よりも低い解像度を持つビットマップオブジェクトであると判定されなかったオブジェクトの線幅と同じであることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記所定の解像度よりも低い解像度を持つビットマップオブジェクトであると判定されたオブジェクトの線幅とは、前記所定の解像度よりも低い解像度を持つビットマップオブジェクトであると判定されたオブジェクトに含まれる線の幅であることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記所定の解像度よりも低い解像度を持つビットマップオブジェクトであると判定されたオブジェクトの線幅は、前記変換されたオブジェクトの線幅と同じであることを特徴とする請求項２または３に記載の情報処理装置。
【請求項５】
前記変換されたオブジェクトの線幅とは、前記変換されたオブジェクトに含まれる線の幅であることを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記調整手段は、ベクトルオブジェクトであると判定されたオブジェクトに対して前記調整処理を行わないことを特徴とする請求項１乃至５の何れか１項に記載の情報処理装置。
【請求項７】
前記所定の解像度以上の解像度を持つビットマップオブジェクトであると判定されたオブジェクトに対して前記調整処理を行わないことを特徴とする請求項１乃至５の何れか１項に記載の情報処理装置。
【請求項８】
前記所定の解像度とは、印刷解像度であることを特徴とする請求項１乃至７の何れか１項に記載の情報処理装置。
【請求項９】
前記所定の解像度よりも低い解像度とは、前記印刷解像度よりも低い特定の解像度であることを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記所定の解像度よりも低い解像度を持つビットマップオブジェクトとは、ＯＳによって前記特定の解像度でベクトルオブジェクトが描画されたことで得られるオブジェクトであることを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記判定手段は、オブジェクトがビットマップオブジェクトであるかを判定し、当該判定によってビットマップオブジェクトであると判定されたオブジェクトのヘッダーを参照し、当該参照によってヘッダーに指定されている解像度が前記所定の解像度よりも低い解像度である場合に、当該オブジェクトが前記所定の解像度よりも低解像度を持つビットマップオブジェクトであると判定することを特徴とする請求項１乃至１０の何れか１項に記載の情報処理装置。
【請求項１２】
前記調整手段は、前記調整処理が行われたオブジェクトのヘッダーに前記所定の解像度を設定する、あるいは、前記調整処理が行われたオブジェクトのヘッダーに解像度を設定しないことを特徴とする請求項１１に記載の情報処理装置。
【請求項１３】
前記調整処理が行われたオブジェクトを、プリンターに送信する送信手段を有することを特徴とする請求項１乃至１２の何れか１項に記載の情報処理装置。
【請求項１４】
オブジェクトを前記プリンターにおいて描画するためのＰＤＬコマンドを生成する生成手段を有し、
前記送信手段は、前記調整処理が行われたオブジェクトを前記プリンターにおいて描画するための、前記生成手段によって生成されたＰＤＬコマンドを、前記プリンターに送信することを特徴とする請求項１３に記載の情報処理装置。
【請求項１５】
前記調整処理は、
前記変換されたオブジェクトに含まれる線を検出する手段と、
前記検出された線に対して線幅を調整する手段と、
を有することを特徴とする請求項１乃至１４の何れか１項に記載の情報処理装置。
【請求項１６】
前記調整する手段は、前記検出された線の線幅を細くする調整を行うことを特徴とする請求項１５に記載の情報処理装置。
【請求項１７】
前記調整する手段は、前記検出された線を構成する画素のうちの１画素幅分の画素の画素値を、当該検出された線に隣接する画素の画素値で上書きすることで、前記細くする調整を行うことを特徴とする請求項１６に記載の情報処理装置。
【請求項１８】
前記調整する手段は、前記変換されたオブジェクトに含まれる線と、前記変換されたオブジェクト外の線との位置関係に基づいて、前記上書きが行われる画素を、前記検出された線を構成する画素のうちから決定することを特徴とする請求項１７に記載の情報処理装置。
【請求項１９】
前記調整する手段は、前記変換されたオブジェクトに接する、前記変換されたオブジェクト外の線がある場合に、前記位置関係に基づく前記決定を行い、前記変換されたオブジェクトに接する、前記変換されたオブジェクト外の線がない場合に、前記変換されたオブジェクトに含まれる全ての線について、前記位置関係に基づく前記決定を行わないことを特徴とする請求項１８に記載の情報処理装置。
【請求項２０】
前記調整する手段は、前記変換されたオブジェクトに含まれる線の色と、当該オブジェクト外の線の色とが同じか否かに基づいて、前記上書きが行われる画素を、前記検出された線を構成する画素のうちから決定することを特徴とする請求項１７乃至１９の何れか１項に記載の情報処理装置。
【請求項２１】
前記調整する手段は、前記変換されたオブジェクトに含まれる線の幅と、当該オブジェクト外の線の幅とが同じか否かに基づいて、前記上書きを行うか否かを決定することを特徴とする請求項１７乃至２０の何れか１項に記載の情報処理装置。
【請求項２２】
前記変換手段は、前記ページに含まれる前記オブジェクトの解像度および前記所定の解像度に基づいて、前記ページに含まれるオブジェクトに含まれる１画素の画素値を、前記所定の解像度を持つオブジェクトに含まれる複数の画素の画素値とすることで、前記変換を行うことを特徴とする請求項１乃至２１の何れか１項に記載の情報処理装置。
【請求項２３】
ページに含まれるオブジェクトが所定の解像度よりも低い解像度を持つビットマップオブジェクトであるかを判定する判定工程と、
前記所定の解像度よりも低い解像度を持つビットマップオブジェクトであると判定されたオブジェクトに対して当該オブジェクトの解像度を前記所定の解像度に変換し、当該変換されたオブジェクトに対して線幅の調整処理を行う調整工程と、
を有し、
前記調整工程は、前記所定の解像度よりも低い解像度を持つビットマップオブジェクトであると判定されなかったオブジェクトに対して、前記調整処理を行わないことを特徴とする情報処理方法。
【請求項２４】
請求項１乃至２２の何れか１項に記載の各手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、オブジェクトの線幅を調整する技術に関する。
【背景技術】
【０００２】
ページに含まれるオブジェクトを印刷する場合に、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）は、そのオブジェクトの描画コマンドをプリンタードライバーに渡す。そしてプリンタードライバーは、そのオブジェクトのＰＤＬ（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）コマンドを生成し、そのＰＤＬコマンドをプリンターに送信する。そしてプリンターは、送信されたＰＤＬコマンドに基づいてオブジェクトを印刷解像度で描画し、印刷を行う。
【０００３】
オブジェクトを印刷する場合に、ＯＳによっては、ページの一部の領域に含まれるオブジェクトをＯＳが印刷解像度（例えば、６００ｄｐｉ（ｄｏｔｓ  ｐｅｒ  ｉｎｃｈ））よりも低い特定の解像度（例えば、３００ｄｐｉ）で予め描画することがある。この場合、その一部の領域に対応し、特定の解像度を持つビットマップ形式で表現されるオブジェクト（特定の解像度を持つオブジェクト）が生成される。この場合に従来のプリンタードライバーは、特定の解像度を持つオブジェクトのＰＤＬコマンドを生成し、そのＰＤＬコマンドをプリンターに送信する。すると、プリンターは、特定の解像度を持つオブジェクトを印刷解像度で描画することになる。このように一旦、印刷解像度よりも低い特定の解像度で描画されたオブジェクトが、印刷解像度で描画されると、最終的に描画されたオブジェクトの線幅が、元々のオブジェクトの線幅よりも太くなることがある。
【０００４】
特許文献１は、ページに含まれる全オブジェクトを一旦低解像で描画し、それら一旦低解像度で描画されたオブジェクトを印刷解像度でさらに描画した後で、そのオブジェクトの線幅を細くする処理（細線化処理）を行うプリンターを開示する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１３−１７１４２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に開示されるプリンターは、ページに含まれる全オブジェクトに対して細線化処理を行う。つまり、ＯＳによって一旦低解像度で描画された後でプリンターによって印刷解像度で描画されたオブジェクトと、低解像度で描画されることなくプリンターによって始めから印刷解像度で描画されたオブジェクトとが区別されずに、細線化処理が行われる。その結果、始めから印刷解像度で描画されたオブジェクトに対しても細線化処理が行われ、オブジェクトの線幅が変わってしまう。
【０００７】
例えば、印刷解像度で１画素幅の線幅を持つベクトル形式で表現された線オブジェクトと、印刷解像度で２画素幅の線幅を持つベクトル形式で表現された線オブジェクトを含むページの描画を考える。印刷解像度が６００ｄｐｉ、ＯＳによってなされる描画の解像度が３００ｄｐｉであるとする。ここで、印刷解像度（６００ｄｐｉ）で１画素幅の線幅を持つベクトル形式で表現された線オブジェクトが、ＯＳによって予め描画される場合を考える。すると、その線オブジェクトは、３００ｄｐｉで１画素幅（６００ｄｐｉ換算で２画素幅）の線として予め描画される。そして、その後プリンターによって印刷解像度（６００ｄｐｉ）で２画素幅の線として描画される。一方で、印刷解像度で２画素幅の線幅を持つベクトル形式で表現された線オブジェクトが、ＯＳによって予め描画されずに、始めからプリンターによって印刷解像度で描画されると、６００ｄｐｉで２画素幅の線が得られる。これら２つの線を含むページに対して線幅の調整を行うと、何れの２画素幅の線も１画素幅の線に調整される。そのため、本来は２画素幅で表現されるべき線も、１画素幅の線に調整されてしまう。
【課題を解決するための手段】
【０００８】
本発明の情報処理装置は、ページに含まれるオブジェクトを判定する判定手段と、前記所定の解像度よりも低い解像度を持つビットマップオブジェクトであると判定されたオブジェクトに対して当該オブジェクトの解像度を前記所定の解像度に変換し、当該変換されたオブジェクトに対して線幅の調整処理を行い、前記所定の解像度を持つビットマップオブジェクトであると判定されたオブジェクトに対して前記調整処理を行わない調整手段と、を有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ページに含まれるオブジェクトに対して選択的に線幅の調整を行うことができ、不要な線幅の調整が行われてしまうことを防ぐことができる。
【図面の簡単な説明】
【００１０】
【図１】実施例の印刷処理システムの構成の一例を示すブロック図。
【図２】実施例のホストコンピュータのソフトモジュール構成例を示すブロック図。
【図３】実施例のプリンタードライバーのソフトモジュール構成例を示すブロック図。
【図４】実施例において実行される処理のフローチャート。
【図５】実施例１に関する線幅の調整処理のフローチャート。
【図６】実施例１に関する線幅の調整の手順を表す図。
【図７】プリンタードライバーの動作の設定を行うための設定画面を表す図。
【図８】実施例２に関する線幅の調整処理のフローチャート。
【図９】実施例２に関する線幅の調整の手順を表す図。
【図１０】実施例３に関する線幅の調整処理のフローチャート。
【図１１】実施例３に関する線幅の調整の手順を表す図。
【図１２】実施例３に関する線幅の調整の手順を表す図。
【発明を実施するための形態】
【００１１】
以下の各実施例において、解像度の単位として、１インチあたりに含まれるドット数を表すｄｐｉを用いる。単に解像度Ｘ［ｄｐｉ］と説明した場合、主走査方向および副走査方向の解像度がともにＸ［ｄｐｉ］であるものとする。なお解像度の単位としては１メートルあたりに含まれるドット数を表すｄｐｍ（ｄｏｔｓ  ｐｅｒ  ｍｅｔｅｒ）などの他の単位を用いても良い。また各実施例においては、ドットと画素は等価であり、ｄｐｉはｐｐｉ（ｐｉｘｅｌｓ  ｐｅｒ  ｉｎｃｈ）と等価であり、ｄｐｍはｐｐｍ（ｐｅｘｅｌｓ  ｐｅｒ  ｍｅｔｅｒ）と等価である。
【００１２】
以下の各実施例で用いられる用語について説明する。
【００１３】
ページに含まれるオブジェクトとは、そのページを印刷あるいは表示した場合に現れる、数えることが可能なまとまりとしての画像のことであり、例えば、図形、写真、文字、線などのことである。オブジェクトは、ビットマップオブジェクトとベクトルオブジェクトに区別される。
【００１４】
オブジェクトの描画コマンドとは、アプリケーションからの印刷指示を受け付けてＯＳが発行する、そのオブジェクトを描画するためのプリンタードライバーが解釈可能なコマンドである。ＷＰＦ（Ｗｉｎｄｏｗｓ（登録商標）  Ｐｒｅｓｅｎｔａｔｉｏｎ  Ｆｏｕｎｄａｔｉｏｎ）アプリケーションから印刷指示を受け付けたＯＳは、ＸＰＳ（ＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ）形式のコマンドを発行する。またＧＤＩ（Ｇｒａｐｈｉｃｓ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ）アプリケーションから印刷指示を受け付けたＯＳは、ＧＤＩ形式のコマンドを発行する。
【００１５】
１つ以上の描画コマンドの集合を描画データと呼ぶ。ＸＰＳ形式の描画コマンドの集合である描画データは、ＸＰＳファイルと呼ばれる。ＧＤＩ形式の描画コマンドの集合である描画データは、ＥＭＦ（Ｅｎｈａｎｃｅｄ  Ｍｅｔａｆｉｌｅ）と呼ばれる。ページの描画データには、そのページに含まれるオブジェクトの描画コマンドが含まれている。
【００１６】
ビットマップオブジェクトとは、ビットマップ形式で表現されたオブジェクト（ビットマップ）のことであり、その形状は矩形である。ビットマップオブジェクトは、ヘッダーを有しており、そのヘッダーには、ビットマップオブジェクトの解像度（水平解像度および垂直解像度）が設定されている。この解像度には「０」が設定される場合があるが、各実施例においてそのような場合は、ヘッダーに解像度が設定されていないものとして扱う。ビットマップオブジェクトの描画コマンドとは、ビットマップオブジェクトと、ビットマップオブジェクトの描画位置（座標）と、ビットマップオブジェクトの拡大率を指定するコマンドである。
【００１７】
ベクトルオブジェクトとは、ベクトル形式で表現されたオブジェクトのことである。ベクトル形式での表現の一例を説明する。多角形オブジェクトは、その多角形の各頂点の座標列が指定されることで表現されている。また別のベクトル形式での表現の一例を説明する。線オブジェクトは、その線の始点および終点と、その線幅が指定されることで表現されている。ベクトルオブジェクトの描画コマンドとは、そのベクトルオブジェクトの表現に従ってオブジェクトを描画するためのコマンドである。
【００１８】
オブジェクトを印刷解像度で描画するとは、そのオブジェクトを表現する印刷解像度を持つビットマップを生成することである。単に、オブジェクトを描画すると言った場合、オブジェクトを表現する印刷解像度を持つビットマップを生成することを指す。
【００１９】
オブジェクトの解像度を別の解像度に変換するとは、そのオブジェクトをその別の解像度で描画することと等価である。
【００２０】
オブジェクトのＰＤＬコマンドとは、そのオブジェクトをプリンターにおいて描画するための、プリンターが解釈可能なコマンドである。プリンターが解釈可能なコマンドの形式は、ＰｏｓｔＳｃｒｉｐｔ（登録商標）形式、ＰＣＬ（登録商標）（Ｐｒｉｎｔｅｒ  Ｃｏｎｔｒｏｌ  Ｌａｎｇｕａｇｅ）形式、ＬＩＰＳ（登録商標）（ＬＢＰ  Ｉｍａｇｅ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｙｓｔｅｍ）形式などがある。ベクトルオブジェクトのＰＤＬコマンドには、ビットマップオブジェクトは含まれず、ベクトルオブジェクトおよびそのベクトルオブジェクトの描画位置の情報が含まれる。ビットマップオブジェクトのＰＤＬコマンドには、ビットマップオブジェクトが含まれ、そのビットマップオブジェクトの描画位置の情報が含まれる。
【００２１】
（実施例１）
本実施例は、印刷処理システムの一例である。
【００２２】
＜システム構成＞
図１は、本実施例における印刷処理システムの構成の一例を示す。
【００２３】
ホストコンピュータ１は、プリンター２、ディスプレイ３、キーボード／ポインティングデバイス４と接続している。
【００２４】
ホストコンピュータ１は、本実施例において、例えばパーソナルコンピュータやサーバー等の情報処理装置の一例である。図１に示されるように、ホストコンピュータ１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｃ  Ｄｒｉｖｅ）１０４を有している。ＣＰＵ１０１は、ＲＯＭ１０２やＨＤＤ１０４に記憶されている各種のプログラムをＲＡＭ１０３にロードして実行することで、図２に示される、ＯＳ２０１、このＯＳ２０１上で動作するアプリケーションソフト２０２およびプリンタードライバー２０３として機能する。
【００２５】
ホストコンピュータ１は、後述するように、アプリケーションソフト２０２等によって作成された画像データに基づいてＰＤＬコマンドを生成し、生成されたＰＤＬコマンドをプリンター２に送信する。
【００２６】
またホストコンピュータ１は、液晶ディスプレイなどのディスプレイ３上の表示画面を制御する。
【００２７】
またホストコンピュータ１は、キーボード／ポインティングデバイス４から送信されてきたユーザーからの指示を受信し、その指示に基づいた処理を行う。
【００２８】
プリンター２は、ホストコンピュータ１から送信されるＰＤＬコマンドを受信すると、受信されたＰＤＬコマンドを解析し、その解析結果に基づいて画像の印刷を行う。具体的には、プリンター２は、受信されたＰＤＬコマンドに基づいて、ベクトルオブジェクトあるいはビットマップオブジェクトを印刷解像度で描画する。この際に、ビットマップオブジェクトのヘッダーに解像度が設定されていれば、プリンター２は、そのビットマップオブジェクトがその指定された解像度に相当する細かさを持つように、そのビットマップオブジェクトを印刷解像度で描画する。なお印刷解像度とは、プリンター２が有するプリンターエンジン（不図示）のエンジン解像度ではなく、プリンター２においてオブジェクトが描画される解像度のことである。
【００２９】
例えば解像度Ｘがビットマップオブジェクトのヘッダーに設定されていれば、ビットマップオブジェクトに含まれる１画素が、印刷解像度Ｙで縦（印刷解像度Ｙ／解像度Ｘ）×横（印刷解像度Ｙ／解像度Ｘ）個の画素として描画される。
【００３０】
またプリンター２は、ビットマップオブジェクトのヘッダーに解像度が設定されていなければ、ビットマップオブジェクトが印刷解像度の細かさを持つように、そのビットマップオブジェクトを印刷解像度で描画する。つまりビットマップオブジェクトに含まれる１画素が、印刷解像度における１画素として描画される。
【００３１】
このプリンター２は、ＳＦＰ（Ｓｉｎｇｌｅ  Ｆｕｎｃｔｉｏｎ  Ｐｒｉｎｔｅｒ）であっても、ＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）であっても良い。また、プリンター２の有するプリンターエンジンの印刷方式は、レーザービーム方式であっても、インクジェット方式であっても、またはその他の方式であっても良い。
【００３２】
ディスプレイ３は、ホストコンピュータ１から送信されるプリンタードライバー２０３の動作に関する設定を行うための設定画面（以下単に設定画面と呼ぶ）を表示する。
【００３３】
キーボード／ポインティングデバイス４は、ユーザーからの操作入力を受け付ける。例えば、ユーザーからのプリンタードライバー２０３の動作に関する設定の指示を受け付け、その指示をホストコンピュータ１に送信する。
【００３４】
ただし、図１のシステムの構成は一例であって、一部または全てがローカルエリアネットワークを介して接続されていてもよい。
【００３５】
＜ホストコンピュータ１上のソフト構成＞
図２は、ホストコンピュータ１上で実現されるＯＳ２０１、アプリケーションソフト２０２、プリンタードライバー２０３のソフトウェアの構成を表す。これらのＯＳ２０１、アプリケーションソフト２０２、プリンタードライバー２０３は、ＣＰＵ１０１が、ＯＳプログラム、アプリケーションプログラム、プリンタードライバープログラムをそれぞれ実行することで実現される。
【００３６】
また、例えばＯＳ２０１は、ユーザーからの指示に従ってアプリケーションソフト２０２をＯＳ２０１上で実行する。アプリケーションソフト２０２の実行画面は、ＯＳ２０１によってディスプレイ３に表示される。このアプリケーションソフト２０２は、例えば画像編集ソフト等であり、ユーザーからの指示に従ってオブジェクトを作成する。そしてＯＳ２０１は、アプリケーションソフト２０２を介して作成されたオブジェクトを含むページの印刷指示を受信する。
【００３７】
印刷指示を受信したＯＳ２０１は、各オブジェクトの描画コマンドを順次発行し、１つ以上の描画コマンドを含む描画データを不図示のスプーラにスプールする。
【００３８】
そしてＯＳ２０１は、描画データがスプールされたことをプリンタードライバー２０３に通知する。
【００３９】
なお、プリンタードライバー２０３は、描画データがスプールされたことが通知されると、図４に示されるフローチャートの処理を実行する前に、設定画面を生成し、その生成された設定画面をディスプレイ３に表示する。この場合に、ＯＳ２０１は、キーボード／ポインティングデバイス４を介してユーザー指示を受信する。例えばＯＳ２０１は、キーボード／ポインティングデバイス４が受け付けた、プリンタードライバー２０３の動作に関する設定の変更指示あるいは選択指示を受信する。そしてＯＳ２０１は、その指示をプリンタードライバー２０３に送信する。
【００４０】
＜プリンタードライバーの構成＞
図３は、本実施例のプリンタードライバー２０３を構成するソフトモジュールの構成を説明する図である。すなわち、ホストコンピュータ１のＣＰＵ１０１が、図４に示されるフローチャートの処理を実行するためのプログラムをＲＯＭ１０２あるいはＨＤＤ１０４から読み出して実行することで、各ソフトモジュールを有する本実施例のプリンタードライバー２０３が実現される。これら各ソフトモジュールが協調して動作することで、図４に示されるフローチャートの処理が実行される。
【００４１】
各ソフトモジュールの概略を説明する。ユーザーインターフェース部３０１は、設定画面を生成する。取得部３０２は、ＯＳ２０１のスプーラから描画データを取得する。解析部３０３は、描画データに含まれる描画コマンドを解析する。変換部３０４および調整部３０５は、線幅の調整処理を実行する。生成部３０６は、描画コマンドからＰＤＬコマンドを生成する。送信部３０７は、ＰＤＬコマンドをプリンター２に送信する。
【００４２】
＜プリンタードライバーの行う処理のフローチャート＞
描画データがスプールされたことがＯＳ２０１から通知されたことで、プリンタードライバー２０３は図４に示されるフローチャートの処理を実行する。なお本フローチャートの処理は、既にプリンタードライバー２０３の動作に関する設定が確定された後に実行されるものとする。
【００４３】
本フローチャートの処理の概要としては、プリンタードライバー２０３が、描画コマンドから、ＰＤＬコマンドを生成する。この際に、印刷解像度よりも低い解像度を持つビットマップオブジェクトの描画コマンドについて、プリンタードライバー２０３は、ビットマップオブジェクトの解像度を印刷解像度に変換する。さらに、プリンタードライバー２０３は、そのビットマップオブジェクトに含まれる所定の幅の線について、その線の幅を調整する。そしてプリンタードライバー２０３は、生成されたＰＤＬコマンドをプリンター２に送信する。そうすることでプリンター２は、送信されたＰＤＬコマンドに基づいて印刷を行うことができる。
【００４４】
まずステップＳ４０１において、取得部３０２は、ＯＳ２０１がスプーラにスプールしたページの描画データを取得する。描画データに含まれる複数の描画コマンドが取得される。描画コマンドが取得されることは、オブジェクトが取得されることに対応する。
【００４５】
次にステップＳ４０２において、解析部３０３は、その取得された描画データに含まれる１つの描画コマンドを、処理対象の描画コマンドとして、解析する。解析した結果、描画コマンドがジョブ終了の描画コマンドである場合には、プリンタードライバー２０３は本フローチャートの処理を終了する。そうでない場合には、処理対象の描画コマンドについて、以降の処理が行われるように、処理はＳ４０３に進む。
【００４６】
ステップＳ４０３において、変換部３０４および調整部３０５は、図５に示されるフローチャートの処理（調整処理）を実行する。そして処理はＳ４０４に進む。ステップＳ４０４において、生成部３０６は、処理対象の描画コマンドに基づいて、ＰＤＬコマンドを生成する。ステップＳ４０５において、送信部３０７は、生成されたＰＤＬコマンドを、ＯＳ２０１を介して、プリンター２に送信する。
【００４７】
そしてプリンター２は、ＰＤＬコマンドを受信し、この受信したＰＤＬコマンドに基づいた描画を行うことで、１ページ分のビットマップを生成する。そしてプリンター２は、生成された１ページ分のビットマップに基づいて、画像を印刷する。
【００４８】
なお、処理対象の描画コマンドについての一連のステップＳ４０３〜４０５の処理が終わると、描画データに含まれる次の描画コマンドを処理対象の描画コマンドとして、Ｓ４０２の処理を行う。
【００４９】
以上の図４に示されるフローチャートによれば、プリンタードライバー２０３は、ステップＳ４０１において複数の描画コマンドを含む描画データを取得し、ステップＳ４０２〜Ｓ４０５においてその描画データに含まれる描画コマンド毎に処理を繰り返す。しかし、そうではなく、プリンタードライバー２０３は、スプールされている描画データから描画コマンドを１つ取得し、その取得された描画コマンドの処理を行ってから、次の描画コマンドを取得して処理しても良い。
【００５０】
＜調整処理＞
続いてステップＳ４０３の調整処理を説明する。
【００５１】
図５のステップＳ５０１において、変換部３０４は、処理対象の描画コマンドが、所定の描画コマンドであるかを判定する。所定の描画コマンドとは、プリンター２の印刷解像度よりも低い解像度を持つビットマップオブジェクトの描画コマンドであり、且つ、指定されるビットマップオブジェクトの拡大率が所定の拡大率（例えば１．０倍（等倍））あるいはその指定が無い描画コマンドである。
【００５２】
すなわち、このステップＳ５０１の処理は、ページに含まれるオブジェクトが所定の解像度よりも低い解像度を持つビットマップオブジェクトであるか否かを判定する処理に対応する。この処理は、ページに含まれるオブジェクトが、所定の解像度以上の解像度を持つビットマップオブジェクト、あるいは、ベクトルオブジェクトであるかを判定する処理にも対応する。またステップＳ５０１の処理は、ページに含まれるオブジェクトが所定の拡大率を持つビットマップオブジェクトであるか否かを判定する処理にも対応する。この所定の解像度とはすなわち印刷解像度のことである。
【００５３】
なおプリンター２の印刷解像度は、本判定処理が行われる前に変換部３０４によって取得されている。例えば変換部３０４は、ユーザーインターフェース部３０１によって生成された設定画面（不図示）を介してユーザーが指定した解像度を、印刷解像度として取得する。あるいは、変換部３０４は、ＯＳ２０１を介してプリンター２と通信することで、プリンター２に設定されている解像度を印刷解像度としてプリンター２から取得する。
【００５４】
本ステップにおいて処理対象の描画コマンドが所定の描画コマンドであると判定された場合に、処理はステップＳ５０２に進み、そうでない場合に、本フローチャートの処理は終了する。
【００５５】
例えば印刷解像度が６００ｄｐｉであって、処理対象の描画コマンドが、ＯＳ２０１によって予め描画された３００ｄｐｉ指定のビットマップオブジェクトの描画コマンドである場合に、処理はステップＳ５０２に進む。
【００５６】
また、処理対象の描画コマンドが、例えばベクトルオブジェクトの描画コマンドや所定の解像度以上の解像度を持つビットマップオブジェクトの描画コマンドである場合に、本フローチャートの処理は終了する。つまり、低い解像度を持つビットマップオブジェクトに含まれる線の線幅と、これ以外のオブジェクトの線幅とが同じ（例えば６００ｄｐｉの２画素幅分）であっても、低い解像度を持つビットマップオブジェクト以外のオブジェクトに対しては、線幅の調整は行われない。低い解像度を持つビットマップオブジェクト以外のオブジェクトとは、ベクトルオブジェクトや、所定の解像度を持つビットマップオブジェクトである。なお、ここでいうオブジェクトの線幅とは、オブジェクト自体が線を表現するオブジェクトである場合はその線の幅であり、オブジェクトが線を含むビットマップオブジェクトあるいはベクトルオブジェクトである場合は、オブジェクトに含まれる線の幅である。
【００５７】
なお、このステップＳ５０１において、変換部３０４は、まず処理対象の描画コマンドがベクトルオブジェクトの描画コマンドであるか、ビットマップオブジェクトの描画コマンドであるかを判定する。ベクトルオブジェクトの描画コマンドであれば、処理対象のコマンドは低解像度を持つビットマップコマンドの描画コマンドでないと判定される。
【００５８】
変換部３０４は、処理対象の描画コマンドがビットマップオブジェクトの描画コマンドであると判定した場合に、ビットマップオブジェクトのヘッダーに設定されている解像度を参照する。参照の結果、このヘッダーに設定されている解像度が印刷解像度よりも低い場合、変換部３０４は、処理対象の描画コマンドが低解像度を持つビットマップオブジェクトの描画コマンドであると判定する。一方、このヘッダーに設定されている解像度が印刷解像度以上、あるいは、ヘッダーに解像度が設定されていない場合がある。この場合、変換部３０４は、処理対象の描画コマンドが低解像度を持つビットマップオブジェクトの描画コマンドでないと判定する。このような低解像度を持つビットマップオブジェクトは、例えばＯＳ２０１がベクトルオブジェクトを予め描画したことによって生成されたビットマップオブジェクトであると判定される。
【００５９】
本ステップの判定では、オブジェクトの解像度が所定の解像度（印刷解像度）よりも低い解像度であるかが判定されている。しかし、そうではなく、オブジェクトの解像度が所定の解像度（印刷解像度）よりも低い特定の解像度であるかが判定されても良い。ここでいう特定の解像度とは、ＯＳ２０１によってベクトルオブジェクトが描画される解像度である。このようにオブジェクトの解像度が特定の解像度か否かが判定されることで、特定の解像度以外の解像度を持つビットマップオブジェクトに対して、以降で説明する解像度の変換および線幅の調整を行わずに済む。
【００６０】
ステップＳ５０２において、変換部３０４は、ビットマップオブジェクトを解析することで、そのビットマップオブジェクトに含まれる所定の幅の線を、後述のプルダウンメニュー８０２（図７）の設定に従って検出する。例えば後述のプルダウンメニュー８０２に「水平、垂直の１画素幅線」がユーザーによって指定された場合、変換部３０４は、水平方向および垂直方向の１画素幅の線を検出する。この１画素幅の線の検出には、３×３や５×５等のテンプレートパターンを用いたパターンマッチングが利用できる。しかし、検出には、パターンマッチング以外の他の周知の方法も利用できる。そして処理はステップＳ５０３に進む。
【００６１】
ステップＳ５０３において、変換部３０４は、ビットマップオブジェクトの解像度を、印刷解像度に変換する。例えばビットマップオブジェクトの指定されている解像度が３００ｄｐｉであり、印刷解像度が６００ｄｐｉである場合に、変換部３０４は、ビットマップオブジェクトに含まれる１画素を、主走査方向および副走査方向に２倍に拡大（高解像度化）する。すなわちこの場合、解像度変換後のビットマップオブジェクトに含まれる２×２画素の画素値は、解像度変換前のビットマップオブジェクトに含まれる１画素の画素値と同じである。この解像度変換の際に、変換部３０４は、解像度変換後のビットマップオブジェクトのヘッダーに印刷解像度を設定する、あるいは、ヘッダーに解像度を設定しないようにする。処理はステップＳ５０４に進む。
【００６２】
ステップＳ５０４において、調整部３０５は、ステップＳ５０２で検出された線に対応する、解像度変換後のビットマップオブジェクトに含まれる線に対して、線幅の調整処理を行う。検出された線に対応する、解像度変換後のビットマップオブジェクトに含まれる線とは、Ｓ５０２で検出された線を構成する画素がＳ５０３で解像度変換された後のビットマップオブジェクトに含まれる画素である。
【００６３】
調整処理は、例えば、線の幅を、印刷解像度において１画素幅減じる処理である。具体的には、調整部３０５は、ステップＳ５０２で検出された線に対応する、印刷解像度を持つビットマップオブジェクトに含まれる複数画素幅の線の輪郭を構成する画素のうち、１画素幅分の画素の画素値を、周囲の画素の画素値で上書きする。
【００６４】
例えば、Ｓ５０２において３００ｄｐｉで１画素幅の水平線が検出され、この水平線がＳ５０３において６００ｄｐｉで２画素幅の水平線に解像度変換される場合を考える。この場合に調整部３０５は、２画素幅の水平線を１画素幅の水平線に調整するべく、例えば、２画素幅の水平線の上１画素分の画素値を、その上に隣接する画素の画素値で上書きする。
【００６５】
＜線幅の調整の手順＞
上記の線幅の調整の手順を、図６（ａ）〜（ｄ）を用いて説明する。図６（ａ）〜（ｄ）に示される各図は、オブジェクトが描画される座標を示す。また説明の便宜上、各図の左上を原点（０、０）とし、右方向をＸ方向、下方向をＹ方向とする。例えば左上の画素は座標（０、０）、（１、０）、（１、１）、（０、１）で囲まれる画素である。ここでは、印刷解像度を６００ｄｐｉ、ＯＳ２０１によって生成されるビットマップの解像度を３００ｄｐｉとする。
【００６６】
以下では、ＯＳ２０１によってスプールされた描画データに含まれる描画コマンドが、印刷解像度で１画素幅の線（ｃｏｓｍｅｔｉｃ  ｌｉｎｅと呼ぶ）を描画するためのベクトルオブジェクトの描画コマンドである場合を考える。
【００６７】
図６（ａ）は、このベクトルオブジェクトの描画コマンドからベクトルオブジェクトの描画のためのＰＤＬコマンドが生成され、そのＰＤＬコマンドに基づいてプリンター２が印刷解像度で描画した結果を示す。描画結果は、６００ｄｐｉで１画素幅の水平線となる。
【００６８】
一方、図６（ｂ）は、上述のベクトルオブジェクトの描画コマンドの一部がＯＳ２０１によって予め描画された場合を示す。この描画は３００ｄｐｉで行われるために、上述のベクトルオブジェクトの描画コマンドからは、３００ｄｐｉで１画素幅の線を含むビットマップオブジェクト（破線で図示）が生成される。
【００６９】
もしプリンター２が、このようにして生成された３００ｄｐｉのビットマップオブジェクトを描画するためのＰＤＬコマンドを受信した場合、プリンター２はそのビットマップオブジェクトを印刷解像度に換算して描画する。その結果、図６（ｃ）のように、本来は印刷解像度でｃｏｓｍｅｔｉｃ  ｌｉｎｅを描画するための描画コマンドであったにもかかわらず、印刷解像度で２画素幅の線がプリンター２において描画される。その結果、本来のｃｏｓｍｅｔｉｃ  ｌｉｎｅを描画するための描画コマンドから得られる線の幅とは異なった幅の線（破線で図示）が印刷されてしまう。
【００７０】
ＯＳ２０１による所定の解像度（ここでは３００ｄｐｉ）での描画は、ページ全体ではなく、ページの一部の領域について行われることがある。そのため、ベクトルオブジェクトである線の途中でＯＳ２０１による描画が行われると、線の幅が途中で変わってしまい、画質の低下が引き起こされる。
【００７１】
そこで、本実施例では、上述したように、プリンタードライバー２０３において、ビットマップの解像度変換を行い（Ｓ５０３）、さらに、解像度変換後のビットマップに含まれる線の幅を調整する（Ｓ５０４）。その結果が図６（ｄ）に示される。
【００７２】
まずプリンタードライバー２０３は、ＯＳ２０１による描画が行われた一部の領域（図６（ｂ）の破線で図示）のうち所定の幅の線（例えば水平線）を検出する（Ｓ５０２）。そしてプリンタードライバー２０３は、その領域を印刷解像度に変換する（Ｓ５０３）。そしてプリンタードライバー２０３は、解像度変換後のビットマップオブジェクトの領域（図６（ｃ）の破線で図示）に含まれる、Ｓ５０２で検出された線に対応する線（例えば２画素幅の水平線）の幅を１画素幅分調整する。図６（ｄ）では、２画素幅の水平線の上部の１画素分の画素の画素値を、さらにその上に隣接する画素の画素値で上書きすることで、線を細くしている（Ｓ５０４）。この上書き処理は、例えば２画素幅の水平線を構成する画素が黒色であって、この水平線を構成する画素に隣接する画素が青色であれば、水平線の上部の画素が黒色から青色に変更される。このようにして印刷解像度を持つビットマップオブジェクトが得られる。
【００７３】
以上の処理によって、ＯＳ２０１による描画が行われた領域であっても、線幅が適切に調整された線を含むビットマップオブジェクト（図６（ｄ）の破線で図示）をプリンター２において描画することができる。
【００７４】
以上の図４および図５のフローチャートの処理によれば、次のような処理が実行される。
【００７５】
例えば、描画データに含まれる処理対象の描画コマンドが、線の始点および終点が指定されている、印刷解像度で１画素幅の線のベクトルオブジェクトの描画コマンドである場合を考える。この場合、ステップＳ４０３（図５）において解像度の変換および線幅の調整は行われず、そのベクトルオブジェクトのＰＤＬコマンドが生成されて、プリンター２に送信される。
【００７６】
また例えば、描画データに含まれる処理対象の描画コマンドが、印刷解像度よりも低い解像度を持つビットマップオブジェクトの描画コマンドである場合を考える。ここでいうビットマップオブジェクトは、ＯＳ２０１によって印刷解像度よりも低い解像度でベクトルオブジェクトが予め描画されることで、生成されている。この場合、ステップＳ４０３（図５）においてそのビットマップオブジェクトの解像度の変換および線幅の調整が行われる。そして解像度の変換および線幅の調整が行われたビットマップオブジェクトのＰＤＬコマンドが生成されて、プリンター２に送信される。
【００７７】
なお以上の処理において、ステップＳ５０２において解像度変換前のビットマップオブジェクトに対して線の検出処理を行った。これは低解像度のままで処理を行った方が線の検出処理が高速となるからである。しかし、解像度変換後のビットマップオブジェクトに対して線の検出処理を行っても良い。
【００７８】
＜ユーザーインターフェースの例＞
前述の図４、５に示されるフローチャートの処理は、プリンタードライバー２０３の動作に関する設定を行うための設定画面の設定状態に応じて実行される。この設定画面の例を図７に示す。この設定画面は、図４に示されるフローチャートの処理を実行する前にユーザーインターフェース部３０１によって生成され、ディスプレイ３によって表示される。この設定画面の設定状態は、ユーザーがキーボード／ポインティングデバイス４を用いることで変更される。
【００７９】
チェックボックス８０１は、前述のフローチャートの処理を実行するか否かを設定するためのチェックボックスである。すなわち、ページに含まれる一部の画像（予め描画されたビットマップオブジェクト）に対して線幅の調整処理を実行するか否かが、チェックボックス８０１の設定状態で決定される。このチェックボックス８０１に、チェックマークが入っている場合に前述のフローチャート（図４、５）の処理が実行される。チェックマークの付加、削除はキーボード／ポインティングデバイス４を用いて、ユーザーが指示する。
【００８０】
プルダウンメニュー８０２は、ステップＳ５０２において検出される線の種類（調整対象）をユーザーが指定するために用いられる。図５に示されたステップＳ５０２の処理は、「水平、垂直の１画素幅線」がユーザーによって指定されている場合の処理である。すなわち、このプルダウンメニューによって、例えば「全ての１画素幅線」をユーザーが選択すれば、ステップＳ５０２の処理は、１画素幅の水平線および垂直線だけでなく、１画素幅に相当する斜線も検出するような処理に変更される。また、「水平、垂直線」をユーザーが選択すれば、ステップＳ５０２の処理は、１画素幅の水平線および垂直線だけでなく、２画素幅以上の水平線および垂直線も検出するような処理に変更される。これらの検出方法には、パターンマッチング等公知の方法が用いられる。
【００８１】
プルダウンメニュー８０３は、ステップＳ５０４において実行される線幅の調整処理における画素値の調整方法をユーザーが指定するために用いられる。
【００８２】
上述したステップＳ５０４は、「固定方向の画素を用いて調整する」がユーザーによって選択されていた場合の処理である。この処理とは、ステップＳ５０２において水平線が検出された場合には、水平線を構成する画素のうちの上方向の画素の画素値が変更され、垂直線が検出された場合には、垂直線を構成する画素のうちの右方向の画素の画素値が変更される処理である。また斜線が検出された場合には斜線が検出された場合には、斜線を構成する画素のうちの上方向の画素の画素値が変更される処理が実行される。
【００８３】
一方、「適応的」がユーザーによって選択されていた場合のステップＳ５０４における処理は、ビットマップオブジェクトの周囲の状況に応じて、ビットマップオブジェクトに含まれる画素の画素値を変更する処理である。この処理については、後述の実施例２において説明する。
【００８４】
設定ボタン８０４は、上記チェックボックス８０１、プルダウンメニュー８０２、８０３の現在の設定状態を確定し、その確定された設定状態の情報を、プリンタードライバー２０３に送信するためにユーザーによって押されるボタンである。このボタンがユーザーによって押されると、ＯＳ２０１が設定状態の情報を、プリンタードライバー２０３に送信する。するとプリンタードライバー２０３は、その設定状態の情報に基づいて、図４、５のフローチャートの処理を実行する。
【００８５】
以上、本実施例によれば、ページのうちの一部が印刷解像度と異なる解像度で予め描画されてビットマップオブジェクトが生成された場合でも、その予め描画されたビットマップオブジェクトに対して、適切な線幅の調整処理を行うことができる。
【００８６】
（実施例２）
本実施例では、図７で図示される設定画面において、プルダウンメニュー８０３で「適応的」がユーザーによって選択されていた場合の印刷処理システムについて、図６を用いて説明する。本実施例の印刷処理システムは、実施例１の印刷処理システムの構成と同様の構成を有する。
【００８７】
すなわち、本実施例では、解像度が変換されたビットマップに含まれる線の幅の調整処理を行う際に、線を構成する画素のうちどの画素の画素値を、隣接する画素の画素値で上書きするかを、そのビットマップの周囲の画像に応じて決定する。
【００８８】
図６（ｄ）は、上述したように、解像度が変換されたビットマップ（破線で図示）に含まれる２画素幅の水平線を構成する画素のうち、上方向の画素の画素値が、隣接する画素の画素値で上書きされた結果を示す。
【００８９】
一方、図６（ｅ）は、解像度が変換されたビットマップ（破線で図示）に含まれる２画素幅の水平線を構成する画素のうち、下方向の画素の画素値が、隣接する画素の画素値で上書きされた結果を示す。
【００９０】
このように図６（ｄ）、（ｅ）のいずれにおいても、解像度が変換されたビットマップに含まれる水平線の線幅が２画素から１画素へと調整される。その結果、ビットマップ内においてもそのビットマップに接する１画素幅の水平線の線幅が維持されるため、線幅の調整が行われないような場合（図６（ｃ））に比べて、画質の向上が期待できる。
【００９１】
ここで、水平線の線幅の調整処理は、画素値の上書きは、上方向の画素の画素値を上書きするか、下方向の画素の画素値を上書きするかの２通り考えられる。図６（ｄ）では、ビットマップ（破線で図示）の左側の水平線とビットマップに含まれる線とに段差（接続段差）が生じている。一方図６（ｅ）では、ビットマップ（破線で図示）の左側の水平線とビットマップに含まれる線とが滑らかに接続されている。さらなる画質向上を実現するためには、両方の線の接続段差がないようにすることが好ましい。
【００９２】
そこで、本実施例では、ビットマップに接続する線の、線幅の調整前のビットマップに含まれる線に対する接続位置に応じて、どの画素の画素値を隣接する画素の画素値で上書きするかを決定する。
【００９３】
本実施例の処理について、図８を用いて説明する。図８に図示されるフローチャートの処理は、図５に示されるフローチャートの処理に代わり、プリンタードライバー２０３によって実行される。特に図５に示されるステップＳ５０４の処理に代わって、図８のステップＳ５０４０〜Ｓ５０４４の処理が実行されることが特徴である。すなわち、ビットマップオブジェクトに含まれる線とビットマップオブジェクト外の線の位置関係に応じて、オブジェクトに含まれる線の調整処理を行う点が特徴的である。
【００９４】
図８に示されるステップＳ５０１〜Ｓ５０３の処理は、図５に示されるステップＳ５０１〜Ｓ５０３の処理と同様であるため、説明を割愛する。
【００９５】
ステップＳ５０３の後に行われるステップＳ５０４０において、調整部３０５は、ビットマップオブジェクトの境界に接続するビットマップオブジェクト外の線があるかを判定する。ビットマップオブジェクトとビットマップオブジェクト外の線のベクトルオブジェクトの位置関係が、例えば図９（ａ）に示されるような場合、調整部３０５は、ビットマップオブジェクトの境界に接続するビットマップオブジェクト外の線がないと判定する。ビットマップオブジェクトの境界に接続するビットマップオブジェクト外の線がないと判定されると、処理はステップＳ５０４２３に進む。
【００９６】
ステップＳ５０４２３において、調整部３０５は、Ｓ５０２で検出された全ての線について、上書きされる方向を所定の方向に決定し、処理をＳ５０４４に進める。これにより、後述するステップＳ５０４１〜Ｓ５０４３の線ごとの判定を省略することで処理の高速化を図る。なお、この決定に基づいてステップＳ５０４４の調整処理を行った結果は、図９（ｂ）に示される。図９（ｂ）では、ビットマップオブジェクトと線のベクトルオブジェクトとが接していないので、接続段差が目立つことはない。
【００９７】
一方、ビットマップオブジェクトの境界に接続する、ビットマップオブジェクト外の線があると判定されると、処理はステップＳ５０４１に進む。
【００９８】
ステップＳ５０４１において、調整部３０５は、ステップＳ５０２において検出された線に対応する、ステップＳ５０３の解像度変換後のビットマップオブジェクトに含まれる線から、１つの線を処理対象として特定する。そして調整部３０５は、その特定された線に接続するビットマップオブジェクト外の線（線のベクトルオブジェクト）があるかを判定する。
【００９９】
例えば調整部３０５は、ステップＳ５０２で検出された線に対応する解像度変換後のビットマップオブジェクトに含まれる線を構成する画素に、ビットマップオブジェクト外にある線のベクトルオブジェクトの中心線が接続するかどうかを判定する。ビットマップオブジェクト外にある線のベクトルオブジェクトの中心線とは、ベクトルオブジェクトである線の始点と終点とを結ぶ線である。例えば図６（ｃ）のように、ベクトルオブジェクトの終点の座標が（６．０、６．５）であり、ビットマップオブジェクトに含まれる処理対象となっている線を構成する画素が（７、７）、（７、８）にある場合、接続していると判定される。線のベクトルオブジェクトがビットマップオブジェクトに含まれる線に接続していると判定されれば、処理はステップＳ５０４２１に進む。そうでなければ処理はステップＳ５０４２２に進む。なお、図６（ｃ）では、説明の便宜上、描画されたベクトルオブジェクトが示されているが、この判定においては、ベクトルオブジェクトは描画されないことに注意してほしい。
【０１００】
ステップＳ５０４２１において、調整部３０５は、線のベクトルオブジェクトの中心線の、ビットマップオブジェクトに含まれる線に対する接続位置に応じて、画素値が上書きされるべき方向を決定する。例えば、調整部３０５は、ビットマップオブジェクトに接続する線のベクトルオブジェクトの中心線が、ビットマップオブジェクトに含まれる処理対象となっている線を構成する画素のうち、どの画素と接続するのかに基づいて判定する。
【０１０１】
図６（ｃ）で説明すると、中心線（終点の座標（６．０、６．５））が、ビットマップオブジェクトに含まれる線を構成する上側の画素（座標（７、７））と接続するのか、下側の画素（座標（７、８））と接続するのかが判定される。図６（ｃ）では、下側の画素が中心線と接続すると判定されるため、調整部３０５は、上書きされるべき方向を、上方向と決定する。すなわち、処理対象となっている線の上側の画素が上書きされることで線幅が調整されることになる。
【０１０２】
逆に、もし上側の画素が接続されると判定される場合は、調整部３０５は、上書きされるべき方向を下方向と決定する。すなわち、処理対象となっている線の下側の画素が上書きされることで線幅が調整されることになる。そして、処理はステップＳ５０４３に進む。
【０１０３】
一方ステップＳ５０４２２において、調整部３０５は、上書きされるべき方向を所定の方向（例えば上方向あるいは右方向）と決定する。すなわち、処理対象となっている線の上側の画素あるいは右側の画素が上書きされることで線幅が調整されることになる。これは、実施例１のときと同様の調整処理を導く。処理はステップＳ５０４３に進む。
【０１０４】
ステップＳ５０４３において、調整部３０５は、ビットマップオブジェクトに含まれる全ての線を処理したか判定する。未処理の線がある場合、調整部３０５は、未処理の線から１つを処理対象として特定し、処理をステップＳ５０４１に進める。そうでない場合は、処理はステップＳ５０４４に進む。
【０１０５】
ステップＳ５０４４において、調整部３０５は、ステップＳ５０４２１、Ｓ５０４２２、Ｓ５０４２３の何れかにおいて決定された方向に基づいて、ビットマップオブジェクトに含まれる線の線幅を印刷解像度で調整する。その結果、例えば図６（ｃ）に示されるビットマップオブジェクトと、線のベクトルオブジェクトの位置関係からは、図６（ｅ）に示されるビットマップオブジェクトが得られる。
【０１０６】
このように本実施例によれば、ビットマップオブジェクト外の線のベクトルオブジェクトの位置関係を考慮して、適切な線幅の調整が行える。
【０１０７】
（実施例３）
実施例２の印刷処理システムでは、ビットマップオブジェクト外の線の位置関係を考慮して、ビットマップオブジェクトに含まれる線の線幅の調整処理を行った。
【０１０８】
本実施例では、ビットマップオブジェクト外の線の色および線幅も考慮して、ビットマップオブジェクトに含まれる線の線幅の調整処理を行う印刷処理システムについて説明する。本実施例の印刷処理システムは、実施例２の印刷処理システムの構成と同様の構成を有する。
【０１０９】
本実施例の処理について、図１０を用いて説明する。図１０に図示されるフローチャートの処理は、図８に図示されるフローチャートの処理に代わり、プリンタードライバー２０３によって実行される。本フローチャートの処理の特徴は、後述のステップＳ５０４１１、Ｓ５０４１２の判定処理である。
【０１１０】
図１０に示される処理ステップのうち、図８と同じ符号のステップは、図８のフローチャートのステップの処理と同様であるため、説明を割愛する。
【０１１１】
ステップＳ５０４１の後に行われるステップＳ５０４１１において、調整部３０５は、ビットマップオブジェクトに含まれる処理対象となっている線の色が、その線に接続する線のベクトルオブジェクトの色と同じかどうか判定する。
【０１１２】
図１１（ａ）は、ビットマップオブジェクトに含まれる線の色が、線のベクトルオブジェクトの色と異なる場合の例である。このように互い線の色が異なる場合は、接続面を挟んだ線の色の違いの方が目立つため、接続段差が生じたとしてもそれほど人の眼には画質が低下したと感じない。そこで、調整部３０５は、処理をステップＳ５０４２２へ進める。その結果、後続のステップＳ５０４４での調整処理は、図１１（ｂ）に示されるようなビットマップオブジェクトを生成する。
【０１１３】
一方、先に示した図６（ｃ）は、ビットマップオブジェクトに含まれる線の色が、線のベクトルオブジェクトの色と同じである場合の例である。この場合、調整部３０５は、処理をステップＳ５０４１２へ進める。
【０１１４】
ステップＳ５０４１２において、調整部３０５は、ビットマップオブジェクトに含まれる処理対象となっている線の幅が、その線に接続する線のベクトルオブジェクトの線の幅と同じかどうか判定する。
【０１１５】
図１２（ａ）は、ビットマップオブジェクトに含まれる線の幅が、線のベクトルオブジェクトの幅と同じ場合の例である。このように互いの線の幅が同じ場合、ビットマップオブジェクトに含まれる処理対象の線は、元々は、線のベクトルオブジェクトと同じオブジェクトであり、その線幅は予め描画されても変化しなかったと考えられる。そのため、そのようなビットマップオブジェクトに含まれる線に対しては、線幅の調整処理を行わないようにするのが良い。そこで調整部３０５は、処理をステップＳ５０４２４に進める。
【０１１６】
ステップＳ５０４２４において、調整部３０５は、ビットマップオブジェクトに含まれる処理対象となっている線について、ステップＳ５０４４での調整処理が適用されないように決定する。この結果、ステップＳ５０４４での調整処理がビットマップオブジェクトに対して適用されたとしても、図１２（ｂ）のような、接続段差のないビットマップオブジェクトが得られる。
【０１１７】
一方、図６（ｃ）は、ビットマップオブジェクトに含まれる線の幅が、線のベクトルオブジェクトの幅と異なる場合の例である。このように互いの線の幅が異なる場合、ビットマップオブジェクトに含まれる処理対象の線は、元々は、線のベクトルオブジェクトと同じオブジェクトであり、その線幅は予め描画されたことで変化したと考えられる。そのため、そのようなビットマップオブジェクトに含まれる線に対しては、線幅の調整処理を線のベクトルオブジェクトの接続位置に応じて行うようにする。そこで調整部３０５は、処理をステップＳ５０４２１に進める。
【０１１８】
以上説明したように、本実施例は、ビットマップオブジェクト外の線のベクトルオブジェクトの色および線幅も考慮して、ビットマップオブジェクトに含まれる線の線幅の調整処理を行えるようにする。
【０１１９】
（その他の実施例）
以上の実施例は、プリンタードライバー２０３で解像度の変換処理や線幅の調整処理を行う実施例であった。しかしながら、これらの処理を、プリンタードライバー２０３ではなく、プリンター２において行なっても良い。または、これらの処理を、アプリケーションソフト２０２が動作するホストコンピュータ１、および、プリンター２と接続する不図示のサーバーにおいて行っても良い。
【０１２０】
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
2015153104.tif 000003
【図２】
2015153104.tif 000004
【図３】
2015153104.tif 000005
【図４】
2015153104.tif 000006
【図５】
2015153104.tif 000007
【図６】
2015153104.tif 000008
【図７】
2015153104.tif 000009
【図８】
2015153104.tif 000010
【図９】
2015153104.tif 000011
【図１０】
2015153104.tif 000012
【図１１】
2015153104.tif 000013
【図１２】
2015153104.tif 000014