(57)【特許請求の範囲】
【請求項１】
所定の描画命令で記述された文字描画オブジェクトを有する描画データから生成される画像データを、画像出力装置の走査ライン毎に出力する画像処理装置において、
前記描画データ中に含まれる文字修飾情報に応じて前記文字描画オブジェクトの輪郭を描画するためのアウトラインベクタを前記文字描画オブジェクト毎に生成するベクタ生成手段と、
各前記アウトラインベクタの始点及び終点を含む情報を有したディスプレイリストを生成し、該ディスプレイリストを基に塗り潰し処理を行う塗り漬し手段と
を具備し、
前記ベクタ生成手段は、前記文字修飾情報に輪郭データが含まれる場合には該輪郭データに基づき前記アウトラインベクタを生成し、前記文字修飾情報に輪郭データが含まれない場合には前記文字修飾情報に含まれる文字描画オブジェクトの文字太さを変更する情報に従って前記アウトラインベクタを生成する
ことを特徴とする画像処理装置。
【請求項２】
前記アウトラインベクタを生成する際の文字ウエイト量を、文字の種類とサイズの要素の少なくとも一方に基づいて決定することを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記アウトラインベクタを生成する際の文字ウェイト量を、文字の外接矩形の大きさに基づいて算出して決定することを特徴とする請求項１記載の画像処理装置。
【請求項４】
前記ベクタ生成手段は、前記文字描画オブジェクトの輪郭を構成する閉じた図形の連続した複数の座標値および文字ウェイト量を用いて、アウトラインベクタの複数の接続点を順次算出する接続点算出手段をさらに具備することを特徴とする請求項１記載の画像処理装置。
【請求項５】
前記ベクタ生成手段は、算出された前記接続点を両端点とするベクタを、前記文字描画オブジェクトの輪郭を描画するためのアウトラインベクタとして生成することを特徴とする請求項４記載の画像処理装置。
【請求項６】
所定の描画命令で記述された文字描画オブジェクトを有する描画データから生成される画像データを、画像出力装置の走査ライン毎に出力する画像処理方法において、
前記文字描画オブジェクトの輪郭を構成する描画データに含まれる文字修飾情報に輪郭データが含まれる場合には該輪郭データに基づいて前記描画オブジェクト毎に前記アウトラインベクタを生成し、
前記文字修飾情報に輪郭データが含まれない場合には前記文字修飾情報に含まれる文字描画オブジェクトの文字太さを変更する情報に従って前記描画オブジェクト毎にアウトラインベクタを生成し、
前記アウトラインベクタ各々の始点及び終点を含む情報を有したディスプレイリストを生成し、
生成されたディスプレイリストを基に塗り漬し処理を行う
ことを特徴とする画像処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像処理装置及びその方法に関し、特に、ディスプレイリストからビットマップ展開するまでの処理を高速に行うことが可能な画像処理装置及びその方法に関する。
【０００２】
【従来の技術】
ＤＴＰや小型、高速のページプリンタの普及に伴って、ラスタ、図形、文字などを区別することなく同様に取り扱い、図形、文字等の拡大、回転、変形などが自由に制御できる記述言語を用いた画像処理装置が一般的に普及してきた。
【０００３】
この種の記述言語の代表例として、ＰｏｓｔＳｃｒｉｐｔ（ＡｄｏｂｅＳｙｓｔｅｍｓ社商標）、Ｉｎｔｅｒｐｒｅｓｓ（Ｘｅｒｏｘ社商標）、Ａｃｒｏｂａｔ（ＡｄｏｂｅＳｙｓｔｅｍｓ社商標）、ＧＤＩ（ＧｒａｐｈｉｃｓＤｅｖｉｃｅＩｎｔｅｒｆａｃｅ、Ｍｉｃｒｏｓｏｆｔ社商標）等が知られている。
【０００４】
このような記述言語で形成されている描画データでは、ページ内の任意の位置のラスタ、図形、文字を表現する描画命令が任意の順で構成されており、ディスプレイやページプリンタに出力するためには、ベクタデータで構成された描画データをページ又はページの一部を横切る一連の個々のドットまたは画素へ展開してラスタ走査線を形成し、そのページの下へ引き続く走査線を次々に発生させるビットマップ展開を出力前に行わなければならなかった。
【０００５】
また、上記記述言語で記述されている文字描画命令には、強調文字描画のように、レギュラー書体とは文字ウエイト（肉厚量）の異なる文字データを描画する命令が含まれている場合もあり、例えば文字描画データ中に強調書体の文字データが予め含まれている場合、レギュラー書体の文字データから文字ウエイトにしたがって、新たに強調書体の文字データを生成しなければならなかった。
【０００６】
このような強調書体文字データを生成する方法として、キーボードなどの入力手段から入力された太字量に基づいて文字データ中の輪郭座標データを変換し、ウエイトの異なる文字データを生成する方法（特開平７−１６０２４１号公報参照）や、強調書体の文字データを生成するための文字ストローク（線画）データの線幅を文字ウエイトに従って変更して強調書体文字を得る方法、文字ウエイト値の小さい（細い）文字データと文字ウエイト値の大きい（太い）文字データを予め用意しておき、入力された文字ウエイト値に近い文字データを選択する方法（特開平９−３００４４号公報参照）などが用いられていた。
【０００７】
【発明が解決しようとする課題】
しかし、特開平７−１６０２４１号公報に記載の輪郭座標データ変換では、隣合う輪郭線が成す角度を２分する方向に、Ｘ方向、Ｙ方向それぞれ独立な値で移動量決定し、座標値を変換するため、文字の種類によっては、生成された強調書体のアウトラインが元の文字のアウトラインに比べて崩れる場合がある。
【０００８】
また、特開平９−３００４４号公報に記載の文字ストロークデータの線幅を変更する方法では、記述言語における文字描画データが、ストロークデータでない場合は、強調書体文字データを生成することができず、文字データを選択する方法では、様々な書体に対するデータを用意する必要があるため、蓄積しておくデータ量は膨大となり、さらに、任意のウエイト量を有する文字を用いることはできなかった。
【０００９】
そこで本発明では、強調書体のアウトラインデータが文字データ中に存在しない場合であっても、レギュラー書体のアウトラインデータから一意に決定した文字ウエイト値を用いてアウトラインベクタを生成し、そのアウトラインベクタをディスプレイリストに変換することで、中間コードであるディスプレイリストの増大を抑え、さらに記述言語で記述された複雑な描画オブジェクトを高速にビットマップ展開することが可能な画像処理装置及びその方法を提供する。
【００１０】
【課題を解決するための手段】
本発明では、所定の描画命令で記述された文字描画オブジェクトを有する描画データから生成される画像データを、画像出力装置の走査ライン毎に出力する画像処理装置において、前記描画データ中に含まれる文字修飾情報に応じて前記文字描画オブジェクトの輪郭を描画するためのアウトラインベクタを前記文字描画オブジェクト毎に生成するベクタ生成手段と、各前記アウトラインベクタの始点及び終点を含む情報を有したディスプレイリストを生成し、該ディスプレイリストを基に塗り潰し処理を行う塗り漬し手段とを具備し、前記ベクタ生成手段は、前記文字修飾情報に輪郭データが含まれる場合には該輪郭データに基づき前記アウトラインベクタを生成し、前記文字修飾情報に輪郭データが含まれない場合には前記文字修飾情報に含まれる文字描画オブジェクトの文字太さを変更する情報に従って前記アウトラインベクタを生成する。
【００１１】
また、前記ベクタ生成手段は、前記文字描画オブジェクトの文字太さを変更する情報に従って前記アウトラインベクタを生成する。
【００１２】
ここで、前記アウトラインベクタを生成する際の文字ウエイト量を、文字の種類とサイズの要素の少なくとも一方に基づいて決定する。
【００１３】
または、前記アウトラインベクタを生成する際の文字ウェイト量を、文字の外接矩形の大きさに基づいて算出して決定する。
【００１４】
また、前記ベクタ生成手段は、前記文字描画オブジェクトの輪郭を構成する閉じた図形の連続した複数の座標値および文字ウェイト量を用いて、アウトラインベクタの複数の接続点を順次算出する接続点算出手段をさらに具備する。
【００１５】
ここで、前記ベクタ生成手段は、算出された前記接続点を両端点とするベクタを、前記文字描画オブジェクトの輪郭を描画するためのアウトラインベクタとして生成する。
【００１６】
次に、本発明では、所定の描画命令で記述された文字描画オブジェクトを有する描画データから生成される画像データを、画像出力装置の走査ライン毎に出力する画像処理方法において、前記文字描画オブジェクトの輪郭を構成する描画データに含まれる文字修飾情報に輪郭データが含まれる場合には該輪郭データに基づいて前記描画オブジェクト毎に前記アウトラインベクタを生成し、前記文字修飾情報に輪郭データが含まれない場合には前記文字修飾情報に含まれる文字描画オブジェクトの文字太さを変更する情報に従って前記描画オブジェクト毎にアウトラインベクタを生成し、前記アウトラインベクタ各々の始点及び終点を含む情報を有したディスプレイリストを生成し、生成されたディスプレイリストを基に塗り漬し処理を行う。
【００１７】
【発明の実施の形態】
以下、図面を用いて本発明の画像処理装置及びその方法を詳細に説明する。
【００１８】
図１は、本発明の画像処理装置の構成を示す概略ブロック図である。同図において、この画像処理装置には、描画データスプール部１０、描画データ解釈部１１、ディスプレイリスト生成部１２、ディスプレイリスト記憶部１３、塗り潰し処理部１４、出力バッファ１５、出力装置制御部１６、出力装置１７が設けられる。
【００１９】
ここで、描画データスプール部１０は、描画データを入力するための通信機能を有すると共に、入力された描画データを描画データ解釈部１１に出力するまでの間、一時的に記憶する機能を有する。
【００２０】
また、描画データ解釈部１１は、描画データスプール部１０より入力された描画データを記述言語のシンタックスに従ってトークンとして切り出した後、各トークンを解釈して内部命令やその因数に変換し、ディスプレイリスト生成部１２に出力する。この内部命令としては、文字、図形の描画を実行する描画命令や、色、属性（線幅、接続形状、端点形状）など描画に必要な情報を設定する描画属性命令がある。
【００２１】
ディスプレイリスト生成部１２は、描画データ解釈部１１から入力された描画命令や描画属性命令に応じて描画されるオブジェクトを構成するベクタデータを生成し、そのベクタデータからヘッダ情報と描画オブジェクトを構成するベクタの始点、傾き、方向およびベクタと走査ラインとの交差数を含むエッジ情報とから構成されるディスプレイリストをオブジェクト毎に生成する。なお、ディスプレイリスト生成部１２についての詳細は後述する。
【００２２】
ディスプレイリスト記憶部１３は、ディスプレイリスト生成部１２で生成されたディスプレイリストを記憶する。
【００２３】
塗り潰し処理部１４は、偶奇規則（Ｅｖｅｎ−Ｏｄｄ  Ｒｕｌｅ）（以下、「ＥＯＦｉｌｌ」とする。）による方法と非ゼロ巻数規則（Ｎｏｎ−Ｚｅｒｏ  Ｗｉｎｄｉｎｇ  Ｒｕｌｅ）（以下、「ＮＺＦｉｌｌ」とする。）による方法の何れか指定された方法に従って、塗り潰される位置を表すエッジリストをディスプレイリスト記憶部１３に格納されているエッジ情報から走査ライン毎に生成する。
【００２４】
そして、生成されたエッジリストを座標値の小さいものから座標値の小さいものから順次整列するように並べ替えた後、座標点のペア間の塗り潰し処理を行って出力画像データを生成し、生成された出力画像データを出力バッファ１７に出力する。
【００２５】
なお、塗り潰し処理部１４は複数の座標点を同時に生成処理するため、座標点生成装置を複数含むハードウェアで構成されることが望ましいが、すべての処理又はエッジリストを並べ替える処理だけをソフトウェアで行う構成とすることもできる。
【００２６】
出力バッファ１５は２つのバッファで構成され、一方のバッファに出力画像データの入力が行われている間、他方のバッファは出力装置制御部１６を介して出力装置に出力画像データを出力することができるように構成されている。
【００２７】
出力装置制御部１６は、出力バッファ１５の出力画像データを出力装置１７に転送すると共に、出力装置１７の制御及び管理を行う。
【００２８】
出力装置１７は、入力された出力画像データに従って画像の出力を行う装置で、例えば、ＣＭＹＢＫ（シアン、マゼンダ、イエロー、ブラック）カラーの色毎に露光、現像、転写を繰り返してフルカラー画像を出力できるレーザ走査方式の電子写真方式を用いたカラーページプリンタの場合、出力装置制御部１７の制御に基づき、出力バッファ１５から出力される出力画像データを受け取って、記録用紙に印字、出力する。
【００２９】
次に、本発明の主要部であるディスプレイリスト生成部１２について、さらに詳細に説明する。
【００３０】
図２は、本実施の形態におけるディスプレイリスト生成部１２の構成を示すブロック図である。図２において本発明のディスプレイリスト生成部１２は、命令制御部２０、文字処理管理部２１、ディスプレイリスト変換部２２、共有データ記憶部２３、描画属性記憶部２４が設けられる。
【００３１】
ここで、命令制御部２０は、描画データ解釈部から送られてきた内部命令のうち、文字描画命令を文字処理管理部２１に転送し、描画属性命令を描画属性記憶部２４に転送する。なお、文字描画命令とは描画命令のうち、文字コード、輪郭データ（直線、曲線）、フォントＩＤ、リアライズ情報（フォント名、サイズ、強調の有無）、座標変換マトリックス、カレントポイント、描画色など、文字描画に必要な情報である。そして、これらの情報のすべて又は一部が文字描画命令中の引数としてや、初期設定、先行する命令などにより、描画属性記憶部２４に記憶されている。
【００３２】
文字処理管理部２１は、命令制御部２０から文字描画命令を受け取ると、共有データ記憶部２３を検索する。そして、共有データ記憶部２３に該当する文字描画命令のディスプレイリスト形式に変換された文字データ（以下、「文字ＤＬデータ」という）がある場合には、カレントポイントにより、その文字ＤＬデータの描画位置を示すオフセット値を設定し、ディスプレイリスト記憶部１３に出力する。
【００３３】
また、共有データ記憶部２３に該当する文字描画命令の文字ＤＬデータがない場合には、ディスプレイリスト変換部２２において文字描画命令を文字ＤＬデータに変換し、変換した文字ＤＬデータを共有データ記憶部２３に登録すると共に、オフセット値を設定して、ディスプレイリスト記憶部１３に出力する。なお、文字描画命令を文字ＤＬデータに変換するディスプレイリスト変換部２２については詳細に後述する。
【００３４】
共有データ記憶部２３は、フォントＩＤ、フォントのリアライズ情報などが同一の文字記憶領域毎に管理され、さらにこれらの記憶領域内に、ディスプレイリスト変換部２２で生成された文字ＤＬデータを文字コードとを組にして登録する。
【００３５】
図３は、文字処理管理部２１の処理動作を示すフローチャートである。
【００３６】
図３において、文字処理管理部は、文字描画命令中の引数として与えられるフォントＩＤやリアライズ情報から構成される検索キーを用いて、共有データ記憶部２３における同一のリアライズ情報を有する文字ＤＬデータ記憶領域を検索する（ステップＳ３０）。このとき、文字ＤＬデータ記憶領域が存在しない場合には、新たに文字ＤＬデータ記憶領域を登録する。
【００３７】
そして、検索した文字ＤＬ領域内を文字コードを検索キーとして検索（ステップＳ３１）し、共有データ記憶部に検索対象となる文字ＤＬデータが存在する場合（ステップＳ３２でＹＥＳ）には、カレントポイントを用いてページ上の描画位置を示すオフセット値を設定（ステップＳ３５）し、ディスプレイリスト記憶部１３にオフセット値を設定した文字ＤＬデータを出力する（ステップＳ３６）。
【００３８】
また、共有データ記憶部に検索対象となる文字ＤＬデータが存在しない場合（ステップＳ３２でＮＯ）には、輪郭データ、座標変換マトリックス、強調文字の場合の文字ウエイトをディスプレイリスト変換部２２に転送し、文字ＤＬデータに変換する（ステップＳ３３）。
【００３９】
ここで、強調文字描画命令において、強調文字の輪郭データが文字処理管理部２１に入力される場合には、その輪郭データと０に設定した文字ウエイトをディスプレイリスト変換部２２に転送する。輪郭データが文字処理管理部２１に入力されない場合には、文字の種類やサイズなどの要素から予めテーブル化された固定値や、文字の外接短形の大きさや文字の太さなどから文字描画命令のたびに算出される値などから文字ウエイトを適切な値に設定し、レギュラー書体の輪郭データから強調文字ＤＬデータを作成する。なお、ディスプレイリスト変換部２２における文字ＤＬデータ変換については、詳細に後述する。
【００４０】
そして、ディスプレイリスト変換部２２により変換された文字ＤＬデータを受け取り、ステップＳ３０で検索した共有データ記憶部２３の検索領域内に文字ＤＬデータと文字コードとの組で登録（ステップＳ３４）した後、カレントポイントを用いてページ上の描画位置を示すオフセット値を設定（ステップＳ３５）して、ディスプレイリスト記憶部１３にオフセット値を設定した文字ＤＬデータを出力する（ステップＳ３６）。
【００４１】
なお、図３を用いてここで述べた処理の流れは、１文字分の処理の流れであるが、これに限定されるものではなく、文字列描画命令などの複数文字描画処理の場合においても、１文字ずつ文字描画命令を切り出して上記の処理を行うことは可能である。
【００４２】
次に、文字ＤＬデータを作成するディスプレイリスト変換部２２について詳細に説明する。
【００４３】
図４は、本実施の形態におけるディスプレイリスト変換部の構成例を示すブロック図である。
【００４４】
図４において、ディスプレイリスト変換部２２は、輪郭データ変換部４０、アウトラインベクタ生成部４１、ベクタデータ変換部４２が設けられる。
【００４５】
ここで、輪郭データ変換部４０は、図５（ａ）に示すように、文字の特徴点を表す座標情報の集合（Ｐ０からＰ１６までの座標データ）と、それぞれの点に対する直線、曲線の判別情報、輪郭開始点、終了点などの情報で表された輪郭データを、図５（ｂ）に示すように、描画コマンドとそのコマンドに対応した座標値で構成されるパスデータに変換する。
【００４６】
このパスデータへの変換において、輪郭データに含まれるベジエ曲線などの曲線の制御点（図５（ａ）の▲点）を含む座標データは、予め描画属性記憶部２４に記憶されているＦｌａｔｎｅｓｓ値に従って、複数の直線を表す座標データに近似する直線データ近似処理を同時に行う。
【００４７】
ここで、直線データ近似処理について、輪郭データに含まれる曲線が、図６に示す４つの制御点Ｐ０、Ｐ１、Ｐ２、Ｐ３で表現されるベジエ曲線である場合を例にあげ、図６及び図７を用いて説明する。
【００４８】
まず、Ｐ０’をＰ０とし、Ｐ０とＰ１の中点をＰ１’、Ｐ１とＰ２の中点とＰ１’を結ぶ線分の中点をＰ２’、Ｐ２とＰ３の中点をＰ２''、Ｐ１とＰ２の中点とＰ２''を結ぶ線分の中点をＰ１''、Ｐ２’とＰ１''の中点をＰ３’及びＰ０''、Ｐ３''をＰ３としてそれぞれの座標値を計算する（ステップＳ７０）。
【００４９】
そして、Ｐ０とＰ３の中点とＰ３’との距離（Ｄｉｓｔａｎｃｅ）を計算し、この距離が描画属性記憶部に記憶されたＦｌａｔｎｅｓｓ値よりも大きい場合（ステップＳ７１でＹＥＳ）は、再帰的な分割処理を行うため、Ｐ０’、Ｐ１’、Ｐ２’、Ｐ３’の４つの点、およびＰ０''、Ｐ１''、Ｐ２''、Ｐ３''の４つの点をそれぞれ新しいベジエ曲線の制御点として２つの分割曲線に分割し、それぞれのベジエ曲線の分割を再帰的に行う（ステップＳ７２）。
【００５０】
また、Ｐ０とＰ３の中点とＰ３’との距離が描画属性記憶部に記憶されたＦｌａｔｎｅｓｓ値よりも小さい場合（ステップＳ７１でＮＯ）は、与えられたベジエ曲線に対して直線ベクタによる近似処理が終了したものとして、２つの直線ベクタ（Ｐ０、Ｐ３'）、（Ｐ３'、Ｐ３）それぞれについて、描画コマンドとそのコマンドに対応した座標地で構成されるパスデータに変換する（ステップＳ７３）。
【００５１】
ここでＰ０が図形データの始点である場合は、描画コマンド「Ｍｏｖｅｔｏ」とその座標点Ｐ０をパスデータに変換（以下、「Ｍｏｖｅｔｏ（Ｐ０）」と表記する）し、中継点であるＰ３’及びＰ３を描画コマンド「Ｌｉｎｅｔｏ」とその座標点をパスデータに変換（以下、「Ｌｉｎｅｔｏ（Ｐ３’）」、「Ｌｉｎｅｔｏ（Ｐ３）」と表記する）する。
【００５２】
このように、輪郭データ変換部４０で輪郭データから変換されたパスデータは、アウトラインベクタ生成部４１に出力する。
【００５３】
ここで、輪郭データ変換部４０から入力されたパスデータから文字描画に必要なアウトラインベクタデータを生成するアウトラインベクタ生成部４１について、図８を用いて詳細に説明する。
【００５４】
図８においてアウトラインベクタ算出部４１は、アウトラインベクタ生成部４１０、アウトラインベクタ算出部４１１、接続点計算部４１２が設けられる。
【００５５】
先述したように文字ウエイト値が０の場合は、ディスプレイリスト変換部２２に渡される輪郭データは、レギュラー書体の輪郭データか強調書体であってもそれに相当する輪郭データであるので、図９（ａ）に示すように輪郭データ変換部４０において輪郭データ変換した直線データのみのパスデータに沿ったアウトラインベクタが算出される。しかし、文字ウエイトが０でない場合は、渡された輪郭データはレギュラー書体の輪郭データであるが文字ウエイト値に従って、図９（ｂ）に示すようにパスデータから強調書体に相当するアウトラインベクタを新たに算出する必要がある。
【００５６】
このため、アウトラインベクタ生成制御部４１０は、文字処理管理部２１から入力される文字ウエイトの値によって、アウトラインベクタ算出部４１１で接続点計算部４１２を用いながら算出されるアウトラインベクタ算出の制御を行う。
【００５７】
ここで、図５に示す文字「Ｊ」から図９（ｂ）に示すアウトラインベクタを算出する場合を例として、アウトラインベクタ算出部４１１におけるアウトラインベクタデータの算出方法を図１０乃至１３を用いて説明する。
【００５８】
まず図１０において、パスデータが入力されると描画コマンド「Ｍｏｖｅｔｏ」およびその座標値Ｐ０を読み込み、ｍｐ（ＭｏｖｅｔｏＰｏｉｎｔ）およびローカル変数ｔｍｐにＰ０を登録する（ステップＳ１００）。
【００５９】
そして、次の描画コマンド「Ｌｉｎｅｔｏ」及びその座標Ｐ１を読み込み、ｆｌｐ（ＦｉｒｓｔＬｉｎｅｔｏＰｏｉｎｔ）及びローカル変数ｔｍｐ１にＰ１を登録する（ステップＳ１０１）。
【００６０】
次に、描画コマンド「Ｌｉｎｅｔｏ」及びその座標Ｐ２を読み込み、ローカル変数ｔｍｐ２にＰ２を登録する。ここで図１１に示すように、次のベクタとの接続点ｊｐ（ＪｏｉｎｔＰｏｉｎｔ）及び、図５に示すパスデータが描画コマンド「ＣｌｏｓｅＰａｔｈ」で閉じられる場合に必要な接続点ｃｐ（ＣｌｏｓｅＰｏｉｎｔ）をそれぞれ登録する（ステップＳ１０２）。なお、ｊｐ及びｃｐは、直線（ｐｂ１、ｐｂ２）と直線（ｎｐｂ１、ｎｐｂ２）の交点である。
【００６１】
ここで、図１１に示した各補助点（ｐｂ、ｎｐｂ、ｊｐ、ｃｐ）の算出方法について説明する。
【００６２】
まずパスデータとして与えられた点（ｔｍｐ０、ｔｍｐ１、ｔｍｐ２）に関して、まず文字ウエイト値（以下、「Ｗ」とする）から、直線（ｔｍｐ０、ｔｍｐ１）および直線（ｔｍｐ１、ｔｍｐ２）の垂直方向にｔｍｐ０、ｔｍｐ１、ｔｍｐ２からＷ／２の距離の点、ｐｂ０、ｐｂ１、ｐｂ２、ｐｂ３、ｎｐｂ０、ｎｐｂ１、ｎｐｂ２、ｎｐｂ３をそれぞれ求める。
【００６３】
そして、ベクタ（ｔｍｐ０、ｔｍｐ１）とベクタ（ｔｍｐ１、ｔｍｐ２）とによって生成されるべきアウトラインベクタの接合部分の隙間がどちらに（ｐｂ３側またはｐｂ２側）に存在するのかを判断する外積の符号を求める。図１１の場合では、外積符号が負となるため、ｐｂ２側に隙間が生じる。
【００６４】
ここで、ｐｂ１、ｐｂ２、ｎｐｂ１、ｎｐｂ２を接続点計算部４１２に転送し、２つの直線、直線（ｐｂ１、ｐｂ２）と、直線（ｎｐｂ１、ｎｐｂ２）の交点を求め、その点をｊｐに登録する。また、ステップ１０２では、このようにして求めた点をｃｐに登録する。なお、補助点の算出方法は、ここで述べた方法に限定されるものではなく、対象とする記述言語における文字ウエイトの定義に応じた方法で算出される。
【００６５】
次にステップＳ１０３において、描画コマンド「Ｌｉｎｅｔｏ」およびその座標値Ｐ３を読み込み、ｔｍｐ０＝ｔｍｐ１、ｔｍｐ１＝ｔｍｐ２、ｔｍｐ２＝ｔｍｐ３のようにローカル変数をそれぞれ更新する。更新されたローカル変数（ｔｍｐ０、ｔｍｐ１、ｔｍｐ２）に関して、図１２に示すようにアウトラインベクタ算出に必要な各点の計算をステップＳ１０２と同様に行う。ただしｐｂｌ＝ｊｐとする。さらに、ステップＳ１０２と同様に次のベクタとの接続点ｊｐを新たに算出された値で更新する（図１２中の点ｊｐ）。
【００６６】
ここでアウトラインを構成するベクタをして、ベクタ（ｐｂｌ、ｊｐ）をベクタデータ変換部４２に出力する（図１２中の「１」のベクタ）。
【００６７】
また、本ステップＳ１０３は、図５に示すパスデータ中の描画コマンド「ＣｌｏｓｅＰａｔｈ」が読み込まれるまで繰り返し行われる。
【００６８】
そして、描画コマンド「ＣｌｏｓｅＰａｔｈ」を読み込むと、ｍｐ、ｆｌｐおよびローカル変数ｔｍｐ２（＝Ｐｎ）を用いて、（Ｐｎ、ｍｐ、ｆｌｐ）に関して、ステップＳ１０３と同様の処理を行って、図１３に示すようなアウトラインを構成するベクタ（図１３中の「ｎ−１」のベクタ）をベクタデータ変換部42に出力する。さらに、最複に出力するベクタとして、ｃｐと現在のｊｐを結んだベクタ、ベクタ（ｊｐ、ｃｐ）をベクタデータ変換部４２に出力する（図１３中の「ｎ」のベクタ）（ステップＳ１０４）。
【００６９】
ベクタデータ変換部４２は、アウトラインベクタ生成部４１から受け取ったアウトラインベクタデータを、座標変換マトリックスに従ってアフィン変換後、ヘッダ情報と、各ベクタの始点、傾き、方向およぴベクタと走査ラインとの交差数を含むエッジ情報とから構成されるディスプレイリスト形式の文字ＤＬデータに変換する。アフィン変換の主な目的は、アプリケーションの解像度（座標系）から出力装置の解像度（座標系）に変換するためのものである。変換マトリックスには下式（１）に示すような３×３のものが使われ、入力ベクタデータ（Ｘｎ、Ｙｎ）は、出力ベクタデータ（Ｘｎ’、Ｙｎ’）に変換される。
【００７０】
0003823730.tif 000002
このように本実施の形態では、強調文字の輪郭データが文字描画データ中に無い場合は、文字処理管理部２１が文字ウェイトを適切な値に決定し、輪郭データ変換部４０で文字論郭データをパスデータに変換後、アウトラインベクタ生成部４１において、文字ウェイトにしたがった、強調文字の輪郭に相当するアウトラインベクタを新たに算出する事ができる。
【００７１】
【発明の効果】
本発明では、斬定の描画命令で記述されている文字描画データにおいて、強調書体のアウトラインデータが文字データ中になくても、一意に決定した文字ウエイト値を用いてアウトラインベクタを生成し、生成されたアウトラインベクタをディスプレイリストに変換することで、中間コードであるディスプレイリストの削滅が可能となり、ディスプレイリストからビットマップ展開するまでの処理全体の高速化および高品質なビットマップ展開が実現できる。
【図面の簡単な説明】
【図１】本発明における画像処理装置の基本構成を示す概略ブロック図
【図２】ディスプレイリスト生成部の構成を示すブロック図
【図３】文字処理管理部における処理の流れを示すフローチャート
【図４】ディスプレイリスト変換部の構成を示すブロック図
【図５】文字の輪郭データ及びパスデータを示す図
【図６】ベジエ曲線の分割を示す図
【図７】曲繰近似部における処理の流れを示すフローチャート
【図８】アウトラインベクタ生成部を示すブロック図
【図９】アウトラインベクタを示す図
【図１０】アウトラインベクタ算出部における処理の流れを示すフローチャート
【図１１】アウトラインベクタの算出方法を示す図
【図１２】アウトラインベクタの算出方法を示す図
【図１３】アウトラインベクタの算出方法を示す図
【符号の説明】
１０…描画データスプール部
１１…描画データ解釈部
１２…ディスプレイリスト生成部
１３…ディスプレイリスト記憶部
１４…塗り漬し処理部
１５…出力バッファ
１６…出力装置制御部
１７…出力装置
２０…命令制御部
２１…文字処理管理部
２２…ディスプレイリスト変換部
２３…共有データ記憶部
２４…描画属性記憶部
４０…輪郭データ変換部
４１…アウトラインベクタ生成部
４２…ベクタデータ変換部
４１０…アウトラインベクタ生成制御部
４１１…アウトラインベクタ算出部
４１２…接続点計算部
【図１】
0003823730.tif 000003
【図２】
0003823730.tif 000004
【図３】
0003823730.tif 000005
【図４】
0003823730.tif 000006
【図５】
0003823730.tif 000007
【図６】
0003823730.tif 000008
【図７】
0003823730.tif 000009
【図８】
0003823730.tif 000010
【図９】
0003823730.tif 000011
【図１０】
0003823730.tif 000012
【図１１】
0003823730.tif 000013
【図１２】
0003823730.tif 000014
【図１３】
0003823730.tif 000015