【実施例1】
【0012】
  図4は、本実例に係る、アプリケーションで生成された描画データをプリンタで出力可能な形式の印刷データに変換して印刷する印刷システムの構成例を示す図である。
図4に示す印刷システム400は、クライアントPC410とプリンタ420とを含み、両者がネットワーク430で接続された構成となっている。ネットワーク430は、例えば、LANやWAN等である。
【0013】
  クライアントPC410は、CPU411、メモリユニット412、大容量記憶部413、入力デバイス414、ディスプレイ415及びネットワークインタフェース416を備える。CPU411は、クライアントPC410全体の制御を司る演算装置である。ネットワークインタフェース416は、クライアントPC410を、ネットワーク430を介してプリンタ420や他の装置(不図示)に繋げ、それらと各種データをやり取りするためのインタフェースである。メモリユニット412は、CPU411のワークエリアとしてのRAMや各種プログラムを格納するためのROMで構成される。大容量記憶部413は、例えばハードディスクドライブやフラッシュメモリで構成され、OSやプログラム或いはアプリケーションで処理された各種データ等の格納に使用する。入力デバイス414はユーザが各種操作指示を行うためのキーボードやマウス等であり、ディスプレイ415は各種表示を行うための例えば液晶モニタ等である。そして、上記各部は、バス417を介して相互に接続されている。
【0014】
  クライアントPC410では、いわゆるプリンタドライバが、ユーザから印刷指示を受けた描画データをプリンタ420に合わせた印刷データ(例えばPDLデータ)に変換する処理を行なう。すなわち、プリンタドライバは、データ変換手段として機能する。プリンタドライバで描画データから変換された印刷データはプリンタ420に送られ印刷出力される。そして、このような変換処理を実現するソフトウェア(本実施例ではプリンタドライバ)は、例えば上述の大容量記憶部413を含むコンピュータ可読媒体に格納されており、これがRAMにロードされ、CPU411が実行することで実現される。
【0015】
  プリンタ420は、CPU421、メモリユニット422、大容量記憶部423、入力部424、エンジンユニット425及びネットワークインタフェース426を備える。CPU421は、プリンタ420全体の制御を司る演算装置である。ネットワークインタフェース426は、プリンタ420を、ネットワーク430を介してクライアントPC410や他の装置(不図示)に繋げ、それらと各種データをやり取りするためのインタフェースである。メモリユニット422は、CPU421のワークエリアとしてのRAMや各種プログラムを格納するためのROMで構成される。大容量記憶部423は、例えばハードディスクドライブやフラッシュメモリで構成され、OSやプログラム或いはクライアントPC410から受け取った印刷データ等の格納に使用する。入力部424は、各種表示を行うためのディスプレイを兼ねたタッチパネルやボタンで構成される。エンジンユニット425は、紙等の記録媒体に印刷出力を行う。そして、上記各部は、バス427を介して相互に接続されている。
【0016】
  プリンタ420において各種の動作・処理を実現するソフトウェアは、例えば上述の大容量記憶部423を含むコンピュータ可読媒体に格納される。ソフトウェアは、コンピュータ可読媒体からRAMにロードされ、CPU421がこれを実行することで実現される。
【0017】
  図5は、アプリケーションで生成された描画データをプリンタ420用の印刷データに変換する処理の流れを示すフローチャートである。この変換処理は、クライアントPC410にインストールされたソフトウェア(典型的にはプリンタドライバ)によって実現される。
【0018】
  ステップ501では、以降の各ステップの処理で用いる変数等の初期化がなされる。
【0019】
  ステップ502では、大容量記憶部413に保存された描画データが取得される。この描画データは、Word等のアプリケーション上でユーザが印刷の実行を指示したタイミングでOSによって生成され、大容量記憶部413に保存されたものである。本実施例では、XPS形式の描画データが取得された場合を例に以降の説明を行なうものとする。
【0020】
  ステップ503では、取得した描画データに含まれる描画要素において、文字属性(テキスト属性)と図形属性(グラフィック属性)とが混在しているかどうかが判定される。
図2に示す描画データ200において、枠201〜205のそれぞれが1つの描画要素である。文字属性の場合、その描画要素には文字コードやグリフデータが含まれる。
図2で示すXPS形式の描画データにおいては、枠201或いは枠204のように、タグ“<”の直後に続くコマンドが“Glyphs Fill”であれば、文字属性の描画要素であると判断される。一方、図形属性の場合、その描画要素にはパス座標値が含まれ、当該パス座標値によって指定される閉領域を塗りつぶす描画(パス描画)となる。
図2で示すXPS形式の描画データにおいては、枠202、203及び205のように、タグ“<”の直後に続くコマンドが“Path Data”であれば、パス描画であると判断される。このような情報を基に、描画データ内に文字属性と図形属性の両方が存在するかどうかを判定し、両方の属性が混在していればステップ504に進む。一方、文字属性と図形属性が混在していなければステップ518に進む。
【0021】
  ステップ504では、描画データ内の任意の描画要素を注目描画要素に決定した上で、当該注目描画要素が文字属性か否かが判定される。判定の結果、文字属性である場合は、ステップ505に進む。一方、文字属性ではない場合は、ステップ508に進む。
【0022】
  ステップ505では、文字属性の注目描画要素から文字のフォント情報が取得される。ここで、フォント情報には、フォントの書体(明朝やゴシック等)や文字サイズ(10ポイント等)を示す情報の他、ベースライン位置情報とセルサイズ情報が含まれる。セルサイズ情報は現在の文字サイズから算出したフォントとしてのセルサイズを特定する情報であって、セル幅とセル高さに相当するピクセル数で表わされる。ベースライン位置情報は、ベースラインの位置を特定する情報であって、セルの上端からベースラインまでの距離に相当するピクセル数で表される。
図6は、ベースライン位置情報によって特定されたベースラインと、セルサイズ情報によって特定されたセルの一例を示す図である。
図6において、破線の矩形601がセルを示しており、矢印602がセル幅、矢印603がセル高を示している。また、
図6において、直線605がベースラインを示し、矢印604はセル601の上端からベースラインまでの距離を示している。取得されたフォント情報はRAM等に保存される。
【0023】
  ステップ506では、文字属性の注目描画要素から文字位置情報が取得される。ここで、文字位置情報は、文字を用紙上のどの位置に形成するのかをX座標とY座標で表す情報である。前述の
図6において、○印606が文字列“gh”の文字位置を表しており、
図2の枠201における「OriginX=“113.6”」及び「OriginY=“185.6”」が、この場合の文字位置情報となる。取得された文字位置情報はRAM等に保存される。
【0024】
  ステップ507では、文字属性の注目描画要素について文字用の印刷データ生成処理が実行される。文字用印刷データ生成処理は、前述の
図1の表に従って、ディザ処理におけるディザ種を「解像度優先」、カラーマッチング処理におけるレンダリングインテントを「彩度優先」を適用した処理となる。生成された文字描画の印刷データはRAM等に保存される。
【0025】
  ステップ504の属性判定で文字属性でないと判定されると、ステップ508で、注目描画要素が図形属性か否かが判定される。判定の結果、図形属性である場合は、ステップ510に進む。一方、イメージ属性など図形以外の属性である場合はステップ509に進み、注目描画要素についてその他属性用の印刷データ生成処理が実行される。その他属性用印刷データ生成処理は、前述の
図1の表に従って、ディザ種を「階調優先」、レンダリングインテントを「全体圧縮」を適用した処理となる。生成されたイメージ描画等の印刷データはRAM等に保存される。
【0026】
  ステップ510では、図形属性の注目描画要素からパス座標値が抽出される。
図2の枠202や203で示す描画要素が注目描画要素であった場合、“Path Data”の記述部分から取り出した情報を、“RenderTransform”記述部分から取り出した情報を用いて座標変換することによりパス座標値が抽出される。
図7は、描画要素が図形属性の場合の、パス座標値で指定される各位置を示した図である。パス座標値はx座標値とy座標値で表され、本ステップではこのような各×印に対応するパス座標値が抽出されることになる。
図7において、2バイト文字“i”のパス座標値で指定される各位置が×印701〜708で示され、2バイト文字“j”のパス座標値で指定される各位置が×印711〜728で示されている。例えば、×印705に対応するパス座標値は、(0,26.08)+(188.8,158.88)=(188.8,184.96)である。
【0027】
  ステップ511では、ステップ510で抽出したパス座標値に基づいて外接矩形が導出される。
図7において、枠730が2バイト文字“i”について導出された外接矩形を示し、枠740が2バイト文字“j”について導出された外接矩形を示している。導出された外接矩形の情報(例えば、外接矩形の四隅を特定するx座標とy座標からなる座標情報)はRAM等に保存される。
【0028】
  ステップ512では、当該図形属性の注目描画要素の前後にある描画要素が文字属性であるかどうか(パス描画と文字描画とが隣り合っているかどうか)が判定される。具体的には、例えば注目描画要素が枠202の図形属性であって、その前後にある描画要素201及び203のいずれかが文字属性の描画要素である場合、パス描画と文字描画とが隣り合っていると判定されることになる。判定の結果、パス描画と文字描画とが隣り合っている場合は、ステップ513に進む。一方、パス描画と文字描画の描画順とが隣り合っていない場合は、ステップ517に進む。
【0029】
  ステップ513では、注目描画要素であるパス描画に係る図形の色と、当該パス描画と描画順が隣り合うと判定された文字描画に係る文字の色とが同じであるかどうかが判定される。
図2で示すXPS形式の描画データの場合、文字描画の“Glyphs Fill”で指定される色と、パス描画の“Fill”で指定される色とが同じであれば、両者は同じ色であると判定される。判定の結果、パス描画に係る図形の色とその隣接する文字描画に係る文字の色とが同じである場合は、ステップ514に進む。一方、パス描画に係る図形の色とその隣接する文字描画に係る文字の色とが同じでない場合は、ステップ517に進む。
【0030】
  ステップ514では、当該パス描画に係る図形が文字に相当する図形かどうかを決定する処理(以下、第1の文字相当図形決定処理)がなされる。
図8は、第1の文字相当図形決定処理の流れを示すフローチャートである。以下、詳しく説明する。
【0031】
  ステップ801では、文字描画のフォント情報が取得されRAM等に保存されているか否かが判定される。フォント情報が保存されていれば、ステップ802に進む。フォント情報が未取得で保存されていない場合は、ステップ809に進む。
【0032】
  ステップ802では、保存されているフォント情報からベースライン位置情報とセルサイズ情報が抽出される。
【0033】
  ステップ803では、抽出されたベースライン位置情報とセルサイズ情報に基づいて、印刷座標系におけるベースラインの座標位置、及びセルの上端/下端の座標位置が導出される。ベースライン座標位置は、文字描画のフォント情報に含まれる文字位置情報(OriginX,OriginY)のうちのOriginYがこれに該当する。また、セルの上端/下端の座標位置は、セルサイズ情報から印刷座標系における文字サイズに対応したセルサイズを算出し、算出したセルサイズと上記文字位置との関係から当該セルの上端と下端の位置をそれぞれ決定すればよい。
【0034】
  ステップ804では、前述のステップ511で導出・保存されているパス描画の外接矩形情報が取得される。
【0035】
  ステップ805では、ステップ803で導出されたベースライン座標位置(ここではOriginY)で特定されるベースラインと、ステップ804で取得した外接矩形情報で特定される外接矩形の所定の一辺(ここでは下端)とが互いに近接しているかどうかが判定される。近接しているかどうかは、両者の距離が所定の閾値内(例えば文字描画のセル高の1/10の距離内)かどうかによって判定すればよい。
図9は、
図2に示す描画データにおける、文字描画のベースラインとセル及びパス描画の外接矩形についての、相互位置関係を示す図である。
図9において、枠901は2バイト文字のアルファベット“i”の外接矩形、枠902は同じく2バイト文字のアルファベット“j”の外接矩形、枠903は図形である黒色の三角形の外征矩形を示している。この場合において、例えば外接矩形901の下端位置はベースラインと接しているので、近接していると判定されることになる。他方、外接矩形903の下端位置はベースラインから遠く離れているので、近接していないと判定されることになる。このようにして、パス描画の外接矩形の下端位置とベースラインとが近接していると判定された場合は、ステップ807に進む。一方、パス描画の外接矩形の下端位置とベースラインとが近接していないと判定された場合は、ステップ806に進む。なお、縦書きの場合は、なる上記ベースラインに相当する描画時の基準ラインと、外接矩形における対応するラインと、が互いに近接しているかどうかで判定するようにすればよい。
【0036】
  ステップ806では、外接矩形の高さに相当する辺がセル高の範囲内か否かが判定される。具体的には、パス描画の外接矩形の高さを特定するY座標値が、文字描画のセル高を特定するY座標値の中に包含されるか否かが判定される。判定の結果、外接矩形の高さに相当する辺がセル高の範囲内と判定されればステップ807に進み、外接矩形の高さに相当する辺がセル高の範囲外と判定されればステップ809に進む。例えば、
図9に示す外接矩形902の下端位置とベースラインとの距離が閾値を超えており近接していないと判定(S805でNo)されていたと仮定する。
図9から明らかなように、枠902の外接矩形の高さに相当する辺は、セル601のセル高の中に収まっているので、この場合はステップ807に進むことになる。
【0037】
  ステップ807では、文字描画に係る文字の間にパス描画の外接矩形があるか否かが判定される。例えば文字の並びが左から右の場合であって、パス描画が文字描画の直後にくる場合には、パス描画の外接矩形のX座標が文字描画位置のX座標より大きいか否かをチェックし、パス描画の外接矩形のX座標の方が大きければ文字の間にあると判定する。また、パス描画の直後に文字描画がくる場合には、パス描画の外接矩形のX座標が文字描画位置のX座標より小さいか否かをチェックし、パス描画の外接矩形のX座標の方が小さければ文字の間にあると判定する。また、横書きでなく縦書きの文字においては、X座標の大小比較でなくY座標の大小比較を行えばよい。このような判定の結果、パス描画の外接矩形の位置が文字描画に係る文字の間にある場合は、ステップ808に進む。一方、パス描画の外接矩形の位置が文字描画に係る文字の間にない場合は、ステップ809に進む。
【0038】
  ステップ808では、注目描画要素であるパス描画に係る図形が、文字相当の図形であると決定される。
【0039】
  ステップ809では、注目描画要素であるパス描画に係る図形が、文字相当の図形ではない(通常の図形)と決定される。
【0040】
  以上が、第1の文字相当判定処理の内容である。なお、本実施例では、ベースラインからの距離に基づく判定(S805)で近接していないと判定された場合に、外接矩形の高さに相当する辺がセル高の範囲内か否かを判定(S806)している。これによって文字相当の図形か否かの判断をより高精度に行なうことが可能になるが、いずれか一方のみでも構わない。例えば、ベースラインからの距離に基づく判定における閾値により余裕を持たせるなどして、ステップ806の判定処理をなくしてもよい。或いは、ベースラインからの距離に基づくステップ805の判定を省略してもよい。
図5のフローチャートの説明に戻る。
【0041】
  ステップ515では、上述した第1の文字相当判定処理の結果に従って、当該パス描画に対する印刷データ生成処理の切り分けがなされる。第1の文字相当判定処理において、パス描画に係る図形が文字相当の図形であると決定され場合は、ステップ516に進む。一方、パス描画に係る図形は文字相当の図形ではない(通常の図形である)と決定された場合は、ステップ517に進む。
【0042】
  ステップ516では、図形属性の注目描画要素について、文字相当図形用の図形印刷データ生成処理が実行される。この文字相当図形用印刷データ生成処理は、次のステップ517で行なう通常図形用の印刷データ生成処理とは異なり、文字の描画に最適な印刷データ生成処理となる。すなわち、上述のステップ507と同様、ディザ種を「解像度優先」、レンダリングインテントを「彩度優先」を適用した文字描画に適した処理となる。生成された文字相当のパス描画の印刷データはRAM等に保存される。
【0043】
  ステップ517では、図形属性の注目描画要素について、通常図形用の印刷データ生成処理が実行される。通常図形用印刷データ生成処理は、前述の
図1の表に従って、ディザ種を「階調優先」、レンダリングインテントを「全体圧縮」を適用した処理となる。生成された通常図形のパス描画の印刷データはRAM等に保存される。
【0044】
  ここまでが、文字属性と図形属性とが1ページ分の描画データ内に混在する場合の処理である。次に、文字属性と図形属性とが混在しない場合(ステップ503でNo)の処理について説明する。
【0045】
  まず、ステップ518において、取得した描画データに含まれる描画要素が図形属性の描画要素のみで構成されているかどうかが判定される。図形属性の描画要素のみで構成される場合は、以降のステップ519〜ステップ524において、当該図形属性のパス描画に係る一連の図形についての文字相当判定処理(第2の文字相当判定処理)が実行される。一方、図形属性以外の描画要素も含まれている場合は、ステップ504に進んで、各描画要素の属性に従って上述の処理が実行される。以下、第2の文字相当判定処理について説明する。
【0046】
  ステップ519では、描画データ内から任意の図形属性の描画要素を注目描画要素に決定した上で、当該注目描画要素からパス座標値が抽出される。その内容は上述のステップ510と同じである。
【0047】
  ステップ520では、ステップ519で抽出したパス座標値に基づいて外接矩形が導出される。その内容は上述のステップ511と同じである。
【0048】
  ステップ521では、描画データ内に未処理の描画要素があるか否かが判定される。未処理の描画要素があればステップ519に戻り、次の描画要素を注目描画要素に決定して処理が続行される。一方、描画データ内のすべての描画要素について処理が完了していれば、ステップ522へ進む。
【0049】
  ステップ522では、各パス描画における文字のセルサイズに相当する長さ(以下、仮想セルサイズ)が導出される。具体的には、ステップ520で抽出・保存されている各パス描画についての外接矩形情報を取得し、近接する外接矩形における基準となる位置同士の間隔を求め、求めた間隔を仮想セルサイズの一辺の長さとする。この場合の基準となる位置は、例えば、左右の端や中心である。
図10は、それぞれが2バイト文字で表される「亜細亜」の漢字3文字に対応する3つのパス描画の外接矩形を示す図であり、各文字に外接矩形1001〜1003が付されている。
図11は、
図10に示す漢字3文字のパス描画を指定するXPS形式の描画データである。
図11に示す1ページ分の描画データ1100のうち、枠1101は、2バイト文字の漢字“亜”をパス座標値で表現し、そのパスで示される部分を“赤”色で塗りつぶし図形として描画するように記述されたパス形式のデータを示している。同様に、枠1102及び1103も、それぞれ2バイト文字の漢字“細”及び“亜”を“赤”色で塗りつぶし図形として描画するパス形式のデータである。そして、
図11においては、外接矩形1001の左端と外接矩形1002の左端の間隔が矢印1004で示されている。このような近接する外接矩形同士における基準位置(
図11の例では左端)の間隔を文字のセルの一辺(矢印1004の長さをセル幅、それと同じ長さの矢印1005をセル高)と見做して、仮想セルサイズが導出されることになる。
【0050】
  ステップ523では、近接する外接矩形同士が隣り合わせに並んでいるかどうかが判定される。具体的には、文字の並びが左から右の場合、近接する外接矩形における上記基準位置(ここでは左端)のX座標が昇順に並んでいれば、隣り合わせに並んでいると判定されることになる。前述の
図10において、×印1006は外接矩形1001の左端X座標、×印1007は外接矩形1002の左端X座標、×印1008は外接矩形1003の左端X座標を示し、1001の左端X座標を先頭に昇順に並んでいることが分かる。もし文字の並びが右から左の場合においては(本実施例では左右のどちらからでも同じであるが)、降順か否かで判別すればよい。また、横書きではなく縦書きの文字においては、X座標に代えて上端や下端のY座標で比較を行えばよい。近接する外接矩形同士が隣り合わせに並んでいると判定された場合は、ステップ524に進む。一方、近接する外接矩形同士が隣り合わせに並んでいないと判定された場合は前述のステップ517に進み、通常図形用の印刷データ生成処理が実行される。
【0051】
  ステップ524では、パス描画の各外接矩形のサイズが、ステップ522で導出された仮想セルサイズよりも小さいかどうかが判定される。具体的には、例えば、外接矩形の上端のY座標及び下端のY座標が共に仮想セルサイズの範囲内であれば、外接矩形のサイズが仮想セルサイズよりも小さいと判定される。前述の
図10において、矢印1005は仮想セルサイズにおけるセル高を示しており、3つの外接矩形1001〜1003の全てにおいてその上端と下端のY座標がセル矢印1005内に収まっている。したがってこの場合は、外接矩形のサイズは仮想セルサイズよりも小さいと判定されることになる。なお、この判定の際には、導出された仮想セルサイズよりも一回り大きなサイズを基準として判定するようにしてもよい。こうして外接矩形のサイズが仮想セルサイズよりも小さいと判定された場合はステップ516に進み、文字相当図形用の印刷データ生成処理が実行される。一方、外接矩形のサイズが仮想セルサイズと同等以上と判定された場合はステップ517に進み、通常図形用の印刷データ生成処理が実行される。
【0052】
  ステップ525では、描画データ内に未処理の描画要素があるか否かが判定される。未処理の描画要素があればステップ504に戻り、次の描画要素が注目描画要素に決定されて処理が続行される。一方、描画データ内のすべての描画要素について処理が完了していれば、ステップ526へ進む。なお、描画データが図形属性の描画要素のみで構成される場合は、この段階で未処理の描画要素はないはずなので、必ずステップ526に進むことになる。
【0053】
  ステップ526では、生成された印刷データ(例えばPDLデータ)がプリンタ420に送られる。描画データが複数ページで構成される場合は、同様の処理がページ数分繰り返されることになる。
【0054】
  以上が、アプリケーションで生成された描画データをプリンタ420用の印刷データに変換する処理の内容である。
【0055】
  本実施例によれば、図形属性の描画要素で特定されるパス描画による文字を適切に文字として検出することが可能となる。これにより、パス描画によるい文字についても文字出力に最適な画像処理を施すことが可能となり、より高品質な印刷を行うことができる。また、文字について文字属性と図形属性とが混在した描画データであっても、文字についてはその属性に関わらず同じ内容の画像処理を施すことが可能となるので、色味や濃度などが文字によって異なって見えてしまうという不具合を防止することができる。
【0056】
(その他の実施例)  
  本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。