(57)【要約】【課題】  ラスタライズ時にパスオブジェクトの一部が欠落することがある、という課題がある。【解決手段】  上記課題を解決するために、本発明では、描画データに含まれるパスオブジェクトの大きさが所定の閾値以下であると判定されたパスオブジェクトについて、当該パスオブジェクトの輪郭に沿って所定の線幅の線を描画するための描画命令を前記描画データに追加する。【選択図】  図５
2019192087.tif 000002
【特許請求の範囲】
【請求項１】
描画データに含まれるパスオブジェクトの大きさが所定の閾値以下であるか判定する大きさ判定手段と、
前記大きさ判定手段で大きさが所定の閾値以下であると判定されたパスオブジェクトについて、当該パスオブジェクトの輪郭に沿って所定の線幅の線を描画するための描画命令を前記描画データに追加する追加手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記パスオブジェクトの塗り命令が、当該パスオブジェクトの輪郭を線で縁取るＳｔｒｏｋｅ命令を含まない命令であるか判定する塗り命令判定手段を、更に備え、
前記大きさ判定手段で大きさが所定の閾値以下であると判定され、かつ、前記塗り命令判定手段で前記パスオブジェクトの塗り命令が当該パスオブジェクトの輪郭を線で縁取るＳｔｒｏｋｅ命令を含まない命令であると判定された場合に、前記追加手段は、当該パスオブジェクトの輪郭に沿って所定の線幅の線を描画するための描画命令を前記描画データに追加する、ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記塗り命令判定手段は、前記パスオブジェクトの塗り命令が、当該パスオブジェクトの輪郭を線で縁取るＳｔｒｏｋｅ命令を含まないＦｉｌｌ命令であるかを判定し、
前記追加手段は、前記大きさ判定手段で大きさが所定の閾値以下であると判定され、かつ、前記塗り命令判定手段で前記パスオブジェクトの塗り命令がＦｉｌｌ命令であると判定された場合に、当該パスオブジェクトの輪郭に沿って所定の線幅の線を描画するための描画命令を前記描画データに追加する、
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記所定の線幅は１ピクセル幅である、ことを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記大きさ判定手段は、前記描画データに含まれるパスオブジェクトの外接矩形の高さと幅の最小値が前記所定の閾値以下であるか判定する、ことを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記追加手段により前記パスオブジェクトの輪郭に沿って所定の線幅の線を描画するための描画命令が追加された後の描画データに基づいて、印刷装置が解釈可能なＰＤＬデータを生成するＰＤＬ生成手段を、更に備えることを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記描画データは、受信した所定の形式の描画データを前記情報処理装置での処理に適した中間形式に変換したデータである、ことを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記描画データは、前記受信した所定の形式の描画データを前記情報処理装置での処理に適した中間形式に変換したデータであって、更に、当該中間形式に変換したデータを、指定されたレイアウト設定に基づいてレイアウト処理を行った後のデータである、ことを特徴とする請求項７に記載の情報処理装置。
【請求項９】
コンピュータを、請求項１乃至８のいずれか１項に記載の情報処理装置の各手段として機能させるためのプログラム。
【請求項１０】
前記プログラムは、プリンタドライバであることを特徴とする請求項９に記載のプログラム。
【請求項１１】
情報処理装置の大きさ判定手段が、描画データに含まれるパスオブジェクトの大きさが所定の閾値以下であるか判定する大きさ判定ステップと、
情報処理装置の追加手段が、前記大きさ判定ステップで大きさが所定の閾値以下であると判定されたパスオブジェクトについて、当該パスオブジェクトの輪郭に沿って所定の線幅の線を描画するための描画命令を前記描画データに追加する追加ステップと、
を備えることを特徴とする情報処理方法。
【請求項１２】
ＰＤＬデータに含まれるパスオブジェクトの大きさが所定の閾値以下であるか判定する大きさ判定手段と、
前記大きさ判定手段で大きさが所定の閾値以下であると判定されたパスオブジェクトについて、当該パスオブジェクトの輪郭に沿って所定の線幅の線を描画するための描画コマンドを前記ＰＤＬデータに追加する追加手段と、
前記追加手段で描画コマンドが追加された後のＰＤＬデータに基づいてラスタライズ処理を実行するラスタライズ手段と、
を備えることを特徴とする印刷装置。
【請求項１３】
コンピュータを、請求項１２に記載の印刷装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、描画データを処理する装置およびプログラムに関するものである。
【背景技術】
【０００２】
文字・線・図形などのオブジェクトの描画データとして、複数の点の座標と、その座標間を順に接続する直線あるいは曲線の情報とを用いることにより、そのオブジェクトの輪郭形状を表現する方法がある。このような座標点の接続経路をパスと呼ぶ。このパスで表現されるオブジェクトの描画データを、任意のアプリケーションからプリンタドライバを用いて印刷する場合、オブジェクトの一部がラスタライズ時に描画されずに印刷されることがある。特に、複数ページを縮小して１枚の用紙に割り付けるＮｉｎ１（２ｉｎ１や４ｉｎ１など）レイアウト処理や、印刷解像度変換等のレイアウト処理を行った場合に消失しやすい。これは、オブジェクトが座標変換により縮小されることにより、オブジェクトの一部を構成するパスとそれに対向する位置にあるパスとの間の距離が短くなり、ラスタライズ時にそのパス間の距離が１ピクセル分の幅を下回ると、結果として描画されないケースがあるためである。特に、パスが文字オブジェクトを表す場合、文字オブジェクトを構成する一部の線が描画されずに欠落してしまい、文字として読みにくい状態で印刷されてしまう可能性がある。
【０００３】
このようなオブジェクトの一部がラスタライズによって消失する問題を防止する方法がいくつか開示されている。特許文献１では、オブジェクトの輪郭を表現するパス同士の距離が閾値未満となるパスを特定し、その特定されたパスの位置座標を補正することが開示されている。特許文献２では、アウトラインフォントで文字が消失しないように、文字の輪郭線に線幅を設定して作成したラスタイメージと、文字の輪郭線の内部を塗り潰して作成したラスタイメージとを論理和合成し、太線化したラスタイメージを生成することが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１６−６６２２２号公報
【特許文献２】特開平８−６３１４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の技術では、パス同士の距離や座標補正位置を計算する必要があり、パスを多く含む描画データの場合、処理に多大な時間がかかってしまう。また、元々のパスの位置座標を補正してパス情報を作り直すため、元々のパス情報が失われてしまう。また特許文献２の技術では、情報処理装置で２つのラスタイメージを生成して合成し、その合成ラスタイメージを印刷装置等の出力部に送信しているため、ラスタイメージの生成・合成・データ送信が完了するまでに多大な時間がかかってしまう。本発明は、上記問題点に鑑みてなされたものであり、元のパスの位置情報を変更することなく、特定の条件を満たすパスオブジェクトを追加することで、ラスタライズ時にオブジェクトの一部が欠落することを防ぐことができるようにする。
【課題を解決するための手段】
【０００６】
上記の目的を達成するため、本発明の情報処理装置は、描画データに含まれるパスオブジェクトの大きさが所定の閾値以下であるか判定する大きさ判定手段と、前記大きさ判定手段で大きさが所定の閾値以下であると判定されたパスオブジェクトについて、当該パスオブジェクトの輪郭に沿って所定の線幅の線を描画するための描画命令を前記描画データに追加する追加手段と、を備えることを特徴とする。
【発明の効果】
【０００７】
本発明を適用することにより、パス間の距離が狭すぎることにより発生する、ラスタライズ時にパスオブジェクトの一部が欠落する現象を防ぎ、かつ、特許文献１，２の技術に比べて処理時間を抑えることができる。
【図面の簡単な説明】
【０００８】
【図１】情報処理システムのソフトウエア構成の一例を示すブロック図である。
【図２】情報処理装置のハードウェア構成の一例を示すブロック図である。
【図３】プリンタドライバ及び印刷装置の構成の一例を示すブロック図である。
【図４】描画データの構成の一例を示す図である。
【図５】実施例１のプリンタドライバが行う描画データ編集処理の一例を示すフローチャートである。
【図６】大きさ判定処理の詳細フローチャートである。
【図７】塗り命令の判定処理の詳細フローチャートである。
【図８】１ピクセル幅の線の描画命令を追加していないパスオブジェクトをラスタライズした場合の例と、１ピクセル幅の線の描画命令を追加した後のパスオブジェクトをラスタライズした場合の例。
【図９】１ピクセル幅の線の描画命令を追加する前後のパスオブジェクトの一例。
【図１０】実施例２におけるプリンタドライバ及び印刷装置の構成の一例を示すブロック図である。
【図１１】実施例２における印刷装置が行う描画データ編集処理の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
（実施例１）
図１は、本発明における情報処理システムのソフトウエア構成の一例を示すブロック図である。本システムは大きく分類して情報処理装置１０１と印刷装置１０２から構成されている。情報処理装置１０１にはオペレーティングシステム（以下、ＯＳと称する）がインストールされており、情報処理装置のＣＰＵは、該ＯＳ上で各種アプリケーションやプリンタドライバ等のプログラムを実行する。なお、本実施例では、ＯＳの種類としてＷｉｎｄｏｗｓ（登録商標）を前提として説明するが、本発明の適用対象をＷｉｎｄｏｗｓに限定するものではない。
【００１０】
ＧＤＩアプリケーション１０３は、文書作成やプレゼンテーション作成等を行うためのアプリケーションである。本実施例では、印刷を行う際にＧＤＩ関数を呼び出すことでＧＤＩ形式の描画データを生成するアプリケーションを、ＧＤＩアプリケーションと呼ぶこととする。ここでＧＤＩとは、Ｇｒａｐｈｉｃ  Ｄｅｖｉｃｅ  Ｉｎｔｅｒｆａｃｅの略であり、Ｗｉｎｄｏｗｓが提供する描画プログラムのことである。
【００１１】
プリンタドライバ（１０４、１０６）は、印刷装置１０２に対する印刷設定や描画を管理するモジュールである。プリンタドライバは、描画データを受け取り、印刷装置１０２が解釈可能なページ記述言語（ＰＤＬ：Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）で記述されたデータ（以下、ＰＤＬデータと称する）に変換する機能を有する。プリンタドライバの種類としては、ＧＤＩ形式の描画データをＰＤＬデータに変換可能なプリンタドライバ１０４（ここではＧＤＩプリンタドライバと呼ぶ）と、ＸＰＳ形式の描画データをＰＤＬデータに変換可能なプリンタドライバ１０６（ここではＸＰＳプリンタドライバと呼ぶ）の２種類がある。なお、ＸＰＳとはＸＭＬ  Ｐａｐｅｒ  Ｓｐｅｃｉｆｉｃａｔｉｏｎの略であり、マイクロソフト社が開発した、電子文書を記述するためのＸＭＬベースのフォーマットである。プリンタドライバ（１０４、１０６）で作成されたＰＤＬデータは、スプーラ１０７を経て印刷装置１０２に送信される。なお、ページ記述言語（ＰＤＬ）の種類は、ＰＣＬ、ＬＩＰＳ、ＰｏｓｔＳｃｒｉｐｔなど様々な種類が存在するが、本発明はページ記述言語の種類を限定するものではないので、「印刷装置１０２で解釈可能なＰＤＬデータ」に変換するものとして説明する。
【００１２】
ＧＤＩアプリケーション１０３からＧＤＩプリンタドライバ１０４を用いて印刷を行う場合は、ＧＤＩアプリケーション１０３で生成されたＧＤＩ形式の描画データが、ＧＤＩプリンタドライバ１０４に入力されて、ＰＤＬデータに変換される。一方、ＧＤＩアプリケーション１０３からＸＰＳプリンタドライバ１０６を用いて印刷を行う場合は、ＧＤＩアプリケーション１０３で生成されたＧＤＩ形式の描画データを、ＸＰＳプリンタドライバ１０６で処理可能なＸＰＳ形式に変換する必要がある。そこで、ＧＤＩ−ＸＰＳ変換部１０５が、ＧＤＩアプリケーション１０３で生成されたＧＤＩ形式の描画データをＸＰＳ形式の描画データに変換し、当該変換されたＸＰＳ形式の描画データがＸＰＳプリンタドライバ１０６に入力されるようにする。なお、ＧＤＩ−ＸＰＳ変換部１０５は、ＯＳにより提供される処理部であって、具体的には、ＭＸＤＣ（Ｍｉｃｒｏｓｏｆｔ  ＸＰＳ  Ｄｏｃｕｍｅｎｔ  Ｃｏｎｖｅｒｔｅｒ）と呼ばれるプログラムにより実現されるものとする。
【００１３】
なお、図１ではＧＤＩアプリケーション１０３で生成される描画データを印刷処理する場合を例として挙げたが、本発明の適用対象はこれに限定されない。例えば、印刷処理時にＸＰＳ形式の描画データを生成するアプリケーション（ＸＰＳアプリケーションと呼ぶ）において、印刷を実行する場合も、本発明を適用することが可能である
図２は、情報処理装置１０１のハードウェア構成の一例を示すブロック図である。なお特に断らない限り、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、ＬＡＮ，ＷＡＮ等のネットワークを介して接続が為され処理が行われるシステムであっても本発明を適用できる。ＣＰＵ２０１は、ＲＡＭ２０２、ＲＯＭ２０６、ハードディスク２０３等に記憶されているプログラムを実行することにより、システムバスに接続される各デバイスを総括的に制御する。すなわち、コンピュータ（特に、ＣＰＵ２０１）は、コンピュータ読み取り可能な記憶媒体に記憶されているプログラムを実行することにより、後述する各処理を実行するための処理部として機能する。このＲＡＭ２０２は、プログラムやデータを一時的に記憶する記憶媒体であり、ＣＰＵ２０１のメインメモリ、ワークエリア等として機能する。ＲＯＭ２０６およびハードディスク２０３は、各種プログラム及びデータを格納する不揮発性記憶媒体である。ＣＰＵ２０１は、ＲＯＭ２０６あるいはハードディスク２０３に記憶された文書作成アプリケーション等を用いて、図形、イメージ、文字、表（表計算等を含む）等を含む文書を作成する。また、ＲＯＭ２０６内のフォント用ＲＯＭ、あるいはハードディスク２０３には、文書作成時に使用するフォントデータ（アウトラインフォント）が記憶されている。また、ＣＰＵ２０１は、マウスカーソル等を介してユーザにより指示されたコマンドに基づいて、種々のウインドウを開いたり、種々のデータ処理を実行したりする。ユーザは、印刷を実行する際、印刷設定に関するウインドウを開き、プリンタの設定や印刷モードの選択など、プリンタドライバに対する印刷処理方法の設定を行える。本発明に係るプリンタドライバ（１０４、１０６）のプログラムもハードディスク２０３またはＲＯＭ２０６に保存される。ディスプレイコントローラ２０４は、ディスプレイ（ＣＲＴディスプレイや液晶ディスプレイなど）における表示を制御する。プリンタコントローラ２０５は、印刷装置１０２との間の通信制御処理を実行する。外部記憶ドライブ２０７は、ＣＤ、ＤＶＤなどのメディア（外部記憶媒体）２０８とのアクセスを制御する。本発明を実現するためのプリンタドライバ等のプログラムは、コンピュータ読み取り可能な外部記憶媒体２０６や、ネットワーク（不図示）等を介してインストールされる。キーボードコントローラ２０９は、キーボードやポインティングデバイスを制御するものであり、キーボードやポインティングデバイスを介して為されたユーザの指示を受け取る。
【００１４】
図３は、プリンタドライバ（１０４、１０６）内のソフトウエア構成と、印刷装置１０２の構成の一例を示すブロック図である。
【００１５】
まず、情報処理装置１０１のＣＰＵ２０１が、プリンタドライバ（１０４または１０６）を実行することにより、各処理部３０１〜３０５として機能する際の構成について説明する。すなわち、ＣＰＵ２０１は、プリンタドライバにより、描画データ受信部３０１、描画データ解釈部３０２、レイアウト処理部３０３、データ編集部３０４、ＰＤＬ生成部３０５として機能する。
【００１６】
描画データ受信部３０１は、ユーザによって印刷指示が行われた際、ＧＤＩアプリケーション１０３で生成された描画データを受信する機能を有する。なお、プリンタドライバがＧＤＩプリンタドライバ１０４である場合は、描画データ受信部３０１に入力される描画データはＧＤＩ形式のデータである。また、プリンタドライバがＸＰＳプリンタドライバ１０６である場合は、描画データ受信部３０１に入力される描画データはＧＤＩ−ＸＰＳ変換部１０５で変換されたＸＰＳ形式のデータである。描画データ解釈部３０２は、描画データ受信部３０１が受け取った描画データを解釈し、中間データに変換する。レイアウト処理部３０３は、ＯＳから受け取った印刷レイアウトに関する設定データに基づいて、描画データ解釈部３０２によって変換された中間データに対してレイアウト処理を行う。レイアウト処理とは、描画データに含まれる点の座標変換処理であり、例えば、印刷レイアウトに関する設定が２ｉｎ１であれば、オブジェクトを１／２に縮小するように座標変換する処理が行われる。データ編集部３０４は、レイアウト処理が行われた中間データに対してデータ編集を行う。データ編集部３０４で実行される処理の詳細については後述する。ＰＤＬ生成部３０５は、データ編集部３０４で編集された中間データを変換することにより、印刷装置１０２が解釈可能なＰＤＬデータを生成する。
【００１７】
次に図３を用いて印刷装置１０２を構成する各処理ブロック３０７〜３０９について説明する。印刷装置１０２は、ＰＤＬ受信部３０７、ラスタライズ部３０８、出力部３０９から構成されている。ＰＤＬ受信部３０７は、プリンタドライバ１０６で生成されたＰＤＬデータを、スプーラ１０７を経由して受信する。そして、当該受信されたＰＤＬデータは、ラスタライズ部３０８によって、ラスタライズされる。その後、当該ラスタライズされたラスタデータは、出力部３０９において印刷解像度に応じた解像度で印刷・出力される。
【００１８】
図４は、本発明で扱う描画データの構成の一例を示す図である。なお、前述したように、ＧＤＩプリンタドライバ１０４を使用する場合、この描画データはＧＤＩ形式のデータであり、ＸＰＳプリンタドライバ１０６を使用する場合、この描画データはＸＰＳ形式のデータである。はじめに図４（ａ）に、描画データの構成の概念図を示す。描画データとは描画オブジェクトの集合体であり、描画オブジェクトには文字オブジェクト、パスオブジェクト、画像オブジェクトなどの種類が存在する。本実施例は、パスオブジェクトを描画する際の前述した課題を解決するための方法について説明するものであるので、このパスオブジェクトに焦点を当てて詳細な説明を行う。図４（ｂ）は１つのパスオブジェクトを構成する１乃至複数のパスに関するデータ構成の一例を示す図である。１つのパスオブジェクトは、１乃至複数のパスで構成され、各パスは複数の点の座標を直線あるいは曲線で順に接続した接続経路を表している。そのため、各パスのデータは複数の点の座標と、接続する線の種類で構成されている。パスがＮ個の点から構成される場合、ある点の始点座標をスタートとし、順に各点の座標が表されている。そして、その点を順番に接続して１つの輪郭を構成する。線の種類は直線と曲線がある。また、１つのパスを終了して次のパスを開始する場合には、間にパスクローズ命令が含まれる。このように、１つのパスオブジェクトは、１乃至複数のパスで表現されており、以下では、各パスのことをサブパスと呼ぶことにする。また、パスオブジェクトは塗り命令の情報を含む。塗り命令とはパスオブジェクトをどのように塗るかを表すものであり、Ｆｉｌｌ命令、Ｓｔｒｏｋｅ命令、ＦｉｌｌＡｎｄＳｔｒｏｋｅ命令が存在する。Ｆｉｌｌ命令とはパスを構成する複数の点で囲まれた輪郭の内部を、ブラシ情報において指定された色で塗り潰すという命令である。Ｓｔｒｏｋｅ命令とは、パスを構成する複数の点の間を接続する接続経路の直線または曲線に沿って、ペン・ブラシ情報において指定された色と線幅を有する線を描画するという命令である。言い換えると、パスを構成する複数の点で囲まれる領域の輪郭を、ペン・ブラシ情報で指定された色と線幅を有する線で縁取る命令である、とも言える。ここで線幅とは線の太さを定義するパラメータであり、このパラメータを変化させることで線の太さを変更することができる。線幅はピクセル単位で指定可能である。例えば２ピクセルという指定があった場合、パスを構成する点を結ぶ線が通るピクセルを中心にして２ピクセル分の幅がとられて描画されることを表す。また、ＦｉｌｌＡｎｄＳｔｒｏｋｅ命令は、Ｆｉｌｌ命令とＳｔｒｏｋｅ命令との両方の処理を含んだ命令であり、輪郭の内部を指定された色で塗りつぶし、且つ、指定された色と線幅の線で輪郭を縁取る命令である。また、図４（ｂ）の例は、パスクローズ命令を１つ含むため、２つのサブパスから構成された命令である。例えば、図４（ｃ）のように上部の長方形と下部の長方形の２つが存在しているような描画データとなる。図４（ｃ）の例において、各長方形は４つの座標点（頂点）で構成され、且つ、各座標点の間は直線で接続されている。また、各長方形の輪郭が黒の線で描画されているが、輪郭内部は塗られていないことからも分かるように、図４（ｃ）の例における塗り命令はＳｔｒｏｋｅ命令である。
【００１９】
以下では、プリンタドライバ（１０４または１０６）が行う処理について図５に示すフローチャートを用いて説明を行う。
【００２０】
ステップＳ１において、描画データ受信部３０１が描画データを受信し、さらに、描画データ解釈部３０２がその描画データを解釈して中間データに変換する。なお、前述したように、ＧＤＩプリンタドライバ１０４を用いて印刷する場合、ＧＤＩプリンタドライバ１０４の描画データ受信部において受信する描画データは、ＧＤＩ形式の描画データである。また、ＸＰＳプリンタドライバ１０６を用いて印刷する場合、ＸＰＳプリンタドライバ１０６の描画データ受信部において受信する描画データは、ＧＤＩ形式の描画データである。また、中間データとは、プリンタドライバにおいて後述するステップＳ２〜Ｓ１０の処理を実行するのに適した形式の描画データ（すなわち、プリンタドライバ内で扱うのに適した中間形式のデータ）とするが、必ずしも必須の構成要件ではない。
【００２１】
ステップＳ２において、レイアウト処理部３０３は、描画データ解釈部３０２で変換された中間データに対して、指定されたレイアウト設定に基づいてレイアウト処理を行う。そして、データ編集部３０４は、当該レイアウト処理後の中間データに対し、ステップＳ３〜Ｓ９において編集処理を実行する。
【００２２】
まずステップＳ３において、データ編集部３０４は、前記レイアウト処理後の中間データ中の描画オブジェクトを順に処理対象として解析する。中間データ中の描画オブジェクトには、図４（ａ）で説明した描画データにおける描画オブジェクトと同様に、文字オブジェクト、パスオブジェクト、画像オブジェクト等の種類が存在する。
【００２３】
ステップＳ４において、データ編集部３０４は、当該処理対象として解析された描画オブジェクトがパスオブジェクトであるかどうかを判定する。
【００２４】
ステップＳ４で、当該処理対象として解析された描画オブジェクトがパスオブジェクトでないと判定した場合は、ステップＳ１０に進む。一方、ステップＳ４で当該処理対象として解析された描画オブジェクトがパスオブジェクトであると判定した場合は、ステップＳ５に進む。ステップＳ５において、データ編集部３０４は、当該処理対象のパスオブジェクトについて、大きさが所定の条件を満たすかどうかの判定を行う。ステップＳ５の詳細については図６を用いて後述する。
【００２５】
ステップＳ６において、データ編集部３０４は、ステップＳ５の判定結果が真であるかどうかを判定し、真であると判定した場合、ステップＳ７に進み、そうでない場合はステップＳ１０に進む。
【００２６】
ステップＳ７において、データ編集部３０４は、当該処理対象のパスオブジェクトについて、塗り命令の判定を行う。ステップＳ７の詳細については図７を用いて後述する。ステップＳ８において、データ編集部３０４は、ステップＳ７の判定結果が真であるかどうかを判定し、真であると判定した場合、ステップＳ９に進み、そうでない場合はステップＳ１０に進む。
【００２７】
ステップＳ９において、データ編集部３０４は、当該処理対象のパスオブジェクトの輪郭（パスオブジェクトを構成する複数の点を接続する接続経路のパス）に沿って１ピクセル幅の線を描画するための描画命令を追加する。ステップＳ９の詳細は、図９を用いて後述する。
【００２８】
ステップＳ１０において、データ編集部３０４は、未解析の描画オブジェクトが残っているか判定し、残っている場合は、ステップＳ３に戻って次の描画オブジェクトを処理対象として解析し、未解析の描画オブジェクトが残っていない場合はステップＳ１１に進む。ステップＳ１１において、ＰＤＬ生成部３０５は、中間データを変換することにより、印刷装置１０２で解釈可能なＰＤＬデータを生成する。
【００２９】
以上述べたように、パスオブジェクトのうち、大きさおよび塗り命令が所定の条件を満たすパスオブジェクトについて、パスの一部が欠落する可能性があると判断して、当該パスオブジェクトの輪郭に沿って１ピクセル幅の線を描画する命令を追加する。これにより、パスオブジェクトを構成するパスの一部がラスタライズ時に欠落するのを防止する。
【００３０】
次に、図５のステップＳ５の大きさ判定処理のフローの詳細を、図６を用いて説明する。この大きさ判定処理では、処理対象の１つのパスオブジェクトを、文字（または複数の文字で構成される１行の文字列）を構成するオブジェクトとみなして、当該処理対象のパスオブジェクトの高さまたは幅が特定の条件を満たすか判定する。そして当該特定の条件を満たす場合に、当該文字（または文字列）を構成するパスオブジェクトの一部がラスタライズ時に欠落する可能性がある、と判定する。
【００３１】
ステップＳ６０１において、データ編集部３０４は、当該処理対象のパスオブジェクトの外接矩形の位置を特定する。外接矩形とは、当該処理対象のパスオブジェクトに外接する矩形であるので、当該パスオブジェクトの大きさ、形状を求めることが可能となる。具体的には、当該パスオブジェクトのパスを構成する各点のｘ、ｙ座標の最大値、最小値を基に外接矩形の位置を求め、更に、当該外接矩形の高さおよび幅を導出する。
【００３２】
ステップＳ６０２において、データ編集部３０４は、外接矩形の高さと幅の最小値が所定の閾値以下であるかを判断する。当該処理対象のパスオブジェクトが文字列を表すパスオブジェクトであったとすると、外接矩形の高さ及び幅は、文字列の高さ及び幅を示すことになる。したがって、外接矩形の高さまたは幅の少なくともいずれかが所定の閾値以下である場合、当該パスオブジェクトにより表現される文字列を構成する各文字のサイズも所定の閾値以下であることになる。アウトラインフォント等のパスで表現される文字が、縮小されて所定の閾値以下のサイズで描画される場合、当該文字を構成するパスの一部が描画されずに欠落してしまう可能性が高くなる。
【００３３】
なお、閾値については、アウトラインフォントの文字の一部（例えば文字の横線部分）を構成するパス間の距離、ならびに、印刷解像度（ラスタライズ時の解像度）に基づいて、予め決定しておくことが可能である。例えば、アウトラインフォントの所定の文字を複数のフォントサイズでラスタライズし、パス間の距離がラスタライズ後の画像における１ピクセル分の距離となるフォントサイズを特定し、当該特定したフォントサイズの文字の高さに基づいて閾値を定めればよい。
【００３４】
ステップＳ６０２において、外接矩形の高さと幅の最小値が所定の閾値以下であると判断した場合は、ステップＳ６０３に進んで、データ編集部３０４は、大きさ判定フラグをＴＲＵＥに設定する。一方、Ｓ６０２において、外接矩形の高さと幅の最小値が所定の閾値より大きいと判断した場合は、大きさ判定フラグをＦＡＬＳＥのままにして、そのまま本フローを終了する。
【００３５】
したがって、外接矩形の高さ及び幅の両方が所定の閾値より大きい場合は、ステップＳ６で大きさ判定フラグがＦＡＬＳＥと判定されてステップＳ９に進むので、ステップＳ９に進むことはない。図５のステップＳ９の処理は、少なくとも外接矩形の高さまたは幅が所定の閾値以下であるパスオブジェクト（すなわち、ラスタライズ時に文字の一部が欠落する可能性があるパスオブジェクト）に限定して実行されることになる。すなわち、全てのパスオブジェクトに１ピクセル幅の線の描画命令を追加するのではなく、文字の一部が欠落する可能性があるパスオブジェクトに対して１ピクセル幅の線の描画命令を追加するようにしているので、印刷処理速度をできるだけ落とさずに、文字の一部が欠落するのを防ぐことができる。
【００３６】
次に、図５のステップＳ７の塗り命令の判定処理のフローの詳細を、図７を用いて説明する。この塗り命令の判定処理では、パスオブジェクト中の塗り命令の情報が所定の条件を満たすか判定し、所定の条件を満たす場合に、当該文字（または文字列）を構成するパスオブジェクトの一部がラスタライズ時に欠落する可能性がある、と判定する。
【００３７】
ステップＳ７０１において、データ編集部３０４は、処理対象のパスオブジェクトにおいて指定されている塗り命令を取得する。ステップＳ７０２において、データ編集部３０４は、当該取得した塗り命令がＦｉｌｌ命令であるか否かを判定する。塗り命令がＦｉｌｌ命令である場合は、ステップＳ７０３に進む。一方、塗り命令がＦｉｌｌ命令でない（すなわち、Ｓｔｒｏｋｅ命令またはＳｔｒｏｋｅＡｎｄＦｉｌｌ命令である）場合は、塗り命令判定フラグをＦＡＬＳＥのままにして、そのまま処理を終了する。ここで、Ｓｔｒｏｋｅ命令とは図４（ｂ）で説明した通り、パスを構成する複数の点で囲まれる領域の輪郭を、ペン・ブラシ情報で指定された色と線幅を有する線で縁取るという命令である。すなわち、Ｓｔｒｏｋｅ命令を含む場合はラスタライズ時に輪郭を縁取るように描画されるため、そのパスオブジェクトの一部が消失することはない。そのため、塗り命令がＳｔｒｏｋｅ命令またはＳｔｒｏｋｅＡｎｄＦｉｌｌ命令である場合（すなわち、Ｓｔｒｏｋｅ命令を含む場合）は、図５のステップＳ９で１ピクセル幅の線を追加する処理は必要ないので、塗り命令判定フラグをＦＡＬＳＥのままにして本フローを終了すればよい。
【００３８】
ステップＳ７０３において、データ編集部３０４は、当該処理対象のパスオブジェクト内のＦｉｌｌ命令で指定されているブラシ情報から、ブラシの色情報を取得する。
【００３９】
ステップＳ７０４において、データ編集部３０４は、当該取得したブラシの色が単色であるか否かを判定する。文字は単色で描画されるのが一般的であるため、ブラシが単色でない場合、文字でない可能性が高い。そのためブラシの色が単色でない場合は、図５のステップＳ９の処理の対象外として、塗り命令判定フラグをＦＡＬＳＥのままにして、そのまま処理を終了する。一方、ブラシの色が単色である場合は、ステップＳ７０５に進む。
【００４０】
ステップＳ７０５において、データ編集部３０４は、塗り命令判定フラグをＴＲＵＥにして本フローを終了する。
【００４１】
以上述べたように、図７の処理では、Ｓ７０２において塗り命令がＦｉｌｌ命令であると判定され、且つ、Ｓ７０３においてブラシの色が単色であると判定された場合に、塗り命令判定フラグをＴＲＵＥにして、図５のステップＳ９の処理対象となるようにしている。すなわち、ラスタライズ時に一部が欠落する可能性がある文字に限定して、図５のステップＳ９の処理が実行されるように制御している。これにより、全てのパスオブジェクトに１ピクセル幅の線の描画命令を追加するのではなく、一部が欠落する可能性がある文字のパスオブジェクトに対して１ピクセル幅の線の描画命令を追加するようにしているので、印刷処理速度をできるだけ落とさずに、文字の一部が欠落するのを防ぐことができる。
【００４２】
図８は、データ編集部３０４によるデータ編集処理の一例を示す図である。図８では、図５のステップＳ９の処理を適用した場合と適用しなかった場合とを比較しながら説明する。図５のステップＳ３で処理対象とした描画オブジェクトが、８０１で示すような２つのサブパスで構成される１つのパスオブジェクトであり、且つ、塗り命令はＦｉｌｌ命令であったとする。この２つのサブパスで構成される１つのパスオブジェクトは、全８点から構成されており、各点は、８０１に示すような論理座標系における座標情報を持っているものとする。そして、この２つのサブパスそれぞれが構成する長方形の高さは、ラスタライズ後の画像において１ピクセルの高さより小さかったとする。この８０１のパスオブジェクトの２つのサブパスをそのままラスタライズしたとすると、サブパスが細すぎる（高さが１ピクセル未満である）ために、８０２のように、２つのサブパスはどの画素にも描画されずに消えてしまう場合がある。
【００４３】
次に、８０１のパスオブジェクトを処理対象の描画オブジェクトとして、図５で示した各ステップの処理を実行した場合について説明する。図５のステップＳ５（図６の処理）では、パスオブジェクトの外接矩形を取得し、幅、高さの最小値が所定の閾値以下であるか判定し、所定の閾値以下であったと判定したとする。さらに、図５のステップＳ７（図７の処理）では、塗り命令がＦｉｌｌ命令であり、且つブラシの色も単色であったとする。これらの結果、８０１のパスオブジェクトは、図５のステップＳ９の処理の実行対象となる。
【００４４】
８０１のパスオブジェクトに対して、図５のステップＳ９で１ピクセル幅の線を追加すると、８０３のようなパスオブジェクトとなる。すなわち、各サブパスの各点を結ぶ直線に基づいて、実線で示す１ピクセル幅の輪郭が追加される。したがって、各サブパスは、Ｓ９で追加された輪郭線によって、少なくとも１ピクセル幅以上の大きさを有するようになるので、８０３のパスオブジェクトをラスタライズすると、８０４のように、ラスタライズ後の画像において、各サブパスに対応する位置の画素が描画対象となる。
【００４５】
次に図９において、図５のステップＳ９の処理の前後の描画オブジェクトのデータ構成の一例について説明する。図８の８０１に示した描画オブジェクトのデータ構成は、図９の９０１のように示される。この描画オブジェクトに対して図５のステップＳ９の処理を適用すると、図９の９０２のようなデータ構成となる。９０２は、９０１と比べると分かるように、１ピクセル幅の線を描画するための命令の追加処理により、オブジェクトの塗り命令が変更されている。すなわち、Ｓ９の処理の適用前がＦｉｌｌ命令だったのに対し、Ｓ９の処理の適用後はＦｉｌｌＡｎｄＳｔｒｏｋｅ命令となっている。このＦｉｌｌＡｎｄＳｔｒｏｋｅ命令は、元のＦｉｌｌ命令にＳｔｒｏｋｅ命令を追加することでパスの輪郭を縁取り、対象パスが確実に描画されるようにするための命令である。更に、塗り命令の変更に伴い、ペン情報が追加となっている。ここではＳｔｒｏｋｅ命令を実行する際の輪郭を縁取るペンの色及び幅を定義している。ペンの色はブラシと同様の色情報、すなわち図９の例の場合は黒で定義され、ペンの幅は１ピクセルで定義される。以上が１ピクセル幅の線を描画するための描画命令を追加した際の具体的なパスオブジェクトの構成である。
【００４６】
（実施例２）
実施例１では、プリンタドライバ１０６内のデータ編集部３０４で、ＰＤＬ生成前にパスオブジェクトに対して１ピクセル幅の線の描画命令を追加することで文字の欠落を防止する方法について説明した。実施例２では、印刷装置１０２側で１ピクセル幅の線を追加する場合の方法について説明を行う。
【００４７】
図１０は実施例２におけるプリンタドライバ（１０４、１０６）及び印刷装置１０２の構成の一例を示すブロック図である。図３と比較するとわかるように、オブジェクトの種類や条件の判定、及び１ピクセル幅の線追加処理は印刷装置で実施するため、図１０のプリンタドライバ内にデータ編集部３０４は存在しない。そのため、プリンタドライバのＰＤＬ生成部３０５は、アプリケーションで作成された描画データに基づいてＰＤＬを生成する。一方、印刷装置１０２はＰＤＬ編集部３１０を更に備え、ＰＤＬデータを受信した後、ラスタライズを行う前に、ＰＤＬ編集部３１０においてＰＤＬデータの編集を行う。その他の処理部は、図３の説明と同様であるので、詳細な説明を省略する。なお、ＰＤＬ編集部３１０は、ＡＳＩＣ等の電子回路で実現してもよいし、印刷装置のＣＰＵが所定のプログラムを実行することにより当該ＰＤＬ編集部として機能するようにしてもよい。
【００４８】
図１１は、実施例２における印刷装置１０２が行うＰＤＬデータ編集処理の一例を示すフローチャートである。図５において説明した第一実施形態のフローと比べて、扱うデータフォーマットは異なるが、基本的な処理の流れと内容はほぼ同様である。
【００４９】
ステップＳ１１０１において、印刷装置１０２のＰＤＬ受信部３０７は、プリンタドライバ１０６で生成されたＰＤＬデータをスプーラ１０７を経由して受信する。
【００５０】
次にステップＳ１１０２において印刷装置１０２のＰＤＬ編集部３１０は、当該受信したＰＤＬデータ中の各描画コマンドを順に処理対象として解析する。ステップＳ１１０３において、ＰＤＬ編集部３１０は、当該処理対象として解析された描画コマンドがパスオブジェクトの描画コマンドであるか判定する。ステップＳ１１０４〜Ｓ１１０７では、図５のＳ５〜Ｓ８の処理と同様に、描画コマンドによる描画の大きさ判定や塗り命令の判定を行う。そして、条件を満たすパスオブジェクトの描画コマンドに対して、ステップＳ１１０８において、ＰＤＬ編集部３１０は、当該処理対象のパスオブジェクトの輪郭（パスを構成する複数の点の間を接続する接続経路）に沿って１ピクセル幅の線を描画するための描画コマンドを追加する。ステップＳ１１０９において、ＰＤＬ編集部３１０は、未解析の描画オブジェクトが残っているか判定し、残っている場合は、ステップＳ１１０２に戻って次の描画コマンドを処理対象として解析し、未解析の描画コマンドが残っていない場合は本フローを終了する。図１１の処理が終了した後は、当該描画コマンドが追加された後のＰＤＬデータに基づいてラスタライズ部３０８でラスタライズ処理が行われる。
【００５１】
（その他の実施例）
実施例１では、図５のステップＳ９において、１ピクセル幅の線を描画するための描画命令を追加したが、線が消えないようにするという観点からは、１ピクセル幅の線より太い所定の線幅の線を描画するための描画命令を追加するようにしても構わない。例えば、ＰＤＬの仕様にもよるが、小数点以下の数値を指定可能なＰＤＬの場合、所定の線幅として、１．１ピクセル等の小数点以下の値を指定した線の描画命令を追加するようにしてもよい。ただし、追加する線の線幅を太くしすぎると、文字が潰れて描画されてしまうため、印刷解像度にもよるが、その所定の線幅は１〜３ピクセル程度の値にしておくのがよい。
【図１】
2019192087.tif 000003
【図２】
2019192087.tif 000004
【図３】
2019192087.tif 000005
【図４】
2019192087.tif 000006
【図５】
2019192087.tif 000007
【図６】
2019192087.tif 000008
【図７】
2019192087.tif 000009
【図８】
2019192087.tif 000010
【図９】
2019192087.tif 000011
【図１０】
2019192087.tif 000012
【図１１】
2019192087.tif 000013