(57)【要約】【課題】  画像記述言語で記述された描画処理命令を解釈して画像を形成する場合、アフィン変換処理命令やテキストのレイアウト命令が多重に記述されていると、画像形成装置でそれらの命令を逐次解釈して実行することになる。プロセッサにかかる負荷が非常に大きい。【解決手段】  多重に記述された第１の描画処理命令を予め演算し（アフィン変換計算部２０６）、描画処理命令の個数を変更した第２の描画処理命令に置換する（ページ記述データ変換部２０３）ことで、プロセッサの負荷を軽減する。【選択図】  図２
2006338478.tif 000002
【特許請求の範囲】
【請求項１】
ページ記述言語または構造化言語を含む画像記述言語で記述された画像記述データを保持する保持手段を含む装置で実行される画像記述データ処理方法であって、
前記保持手段から第１の画像記述データを取得する取得工程と、
前記第１の画像記述データから第１描画命令の記述を抽出する抽出工程と、
前記第１描画命令を演算することによって第２描画命令の記述に置換する置換演算工程と、
前記第２描画命令の記述を含む第２の画像記述データを前記保持手段に格納する格納工程とを備えることを特徴とする画像記述データ処理方法。
【請求項２】
前記保持手段に保持された前記第２の画像記述データを画像形成装置に送出する送出工程を更に備えることを特徴とする請求項１記載の画像記述データ処理方法。
【請求項３】
前記第２の画像記述データに基づいて描画された画像を形成する画像形成工程を更に備えることを特徴とする請求項１または２記載の画像記述データ処理方法。
【請求項４】
前記画像記述データは、ＸＭＬ（ｅＸｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）を含む構造化言語の仕様に従って記述されていることを特徴とする請求項１記載の画像記述データ処理方法。
【請求項５】
前記画像記述データは、ＰｏｓｔＳｃｒｉｐｔを含むページ記述言語の仕様に従って記述されていることを特徴とする請求項１記載の画像記述データ処理方法。
【請求項６】
前記描画命令の記述は、矩形、楕円、円、楕円弧、円弧、線分、多角形、折れ線、曲線、テキストまたはそれらの組み合わせを描画する命令を記述することを特徴とする請求項１記載の画像記述データ処理方法。
【請求項７】
前記描画命令の記述に、アフィン変換命令を含むことを特徴とする請求項１記載の画像記述データ処理方法。
【請求項８】
前記描画命令の記述に、レイアウト命令を含むことを特徴とする請求項１記載の画像記述データ処理方法。
【請求項９】
前記置換演算工程で、前記第１描画命令の記述個数を変更する演算を行うことを特徴とする請求項１記載の画像記述データ処理方法。
【請求項１０】
前記置換演算工程で、前記第１描画命令の行列演算を行うことを特徴とする請求項１記載の画像記述データ処理方法。
【請求項１１】
前記置換演算工程で、前記第１の描画命令の記述個数を変更する記述方法が複数ある場合、前記画像形成装置の適性に応じて置換演算することを特徴とする請求項１または２記載の画像記述データ処理方法。
【請求項１２】
ページ記述言語または構造化言語を含む画像記述言語で記述された画像記述データを保持する保持手段と、
前記保持手段から第１の画像記述データを取得する取得手段と、
前記第１の画像記述データから第１描画命令の記述を抽出する抽出手段と、
前記第１描画命令の記述を演算することによって第２描画命令の記述に置換する置換演算手段と、
前記第２描画命令の記述を含む第２の画像記述データを前記保持手段に格納する格納手段とを備えることを特徴とする画像記述データ処理装置。
【請求項１３】
ページ記述言語または構造化言語を含む画像記述言語で記述された画像記述データを保持する保持手段を含む装置で実行されるプログラムであって、
前記保持手段から第１の画像記述データを取得する取得ステップと、
前記第１の画像記述データから第１描画命令の記述を抽出する抽出ステップと、
前記第１描画命令の記述を演算することによって第２描画命令の記述に置換する置換演算ステップと、
前記第２描画命令の記述を含む第２の画像記述データを前記保持手段に格納する格納ステップとを備えることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像記述言語で表現された画像記述データの処理方法、装置及びプログラムに関する。
【背景技術】
【０００２】
従来より、情報処理装置でデータ処理された結果をレーザプリンタなどに高品質に出力することが行われている。そのため、画像記述言語の一種であるページ記述言語の解析装置をプリンタ装置に搭載し、プリンタ装置上でページ記述データの解析を実行することによって描画処理している。ページ記述言語として代表的なものに、アドビシステムズ社のＰｏｓｔＳｃｒｉｐｔがある。
【０００３】
既存のページ記述言語では、座標や色の指定だけではなく、図形や文字に対するアフィン変換命令が用意されているものがある。アフィン変換処理とは、図形あるいは文字に対する拡大、縮小、回転、平行移動処理などを含む、図形の幾何学的な変換処理のことである。一般的には、線形変換と平行移動を伴うことが多い。アフィン変換処理は多重に行なうことができ、たとえば図形あるいは文字に対して回転の変換を行なった後に平行移動するような処理も、既存のページ記述言語では表現が可能である。
【０００４】
従来、ページ記述データで記述された描画処理命令にアフィン変換処理命令が含まれていれば、その記述にしたがって、例えばプリンタ装置内部で繰り返し計算を行なって描画処理を行っていた。図１１はＰｏｓｔＳｃｒｉｐｔの記述仕様に従い、多重にアフィン変換を施して矩形を描画した例である。図１１において、（ａ）はＰｏｓｔＳｃｒｉｐｔ言語で記述したページ記述データ、（ｂ）は描画処理を行なった結果である。図１１（ａ）において、３〜５行目でアフィン変換処理命令を実行し、７〜１１行目で図形を描画するように記述している。７〜１１行目で描画するように指定している図形はＸ、Ｙ軸に平行で、頂点の１点を原点とする長方形であるが、３〜５行目でのアフィン変換処理により、実際に描画される図形は図１１（ｂ）に示したような平行四辺形となる。
【０００５】
さらに、既存のページ記述言語では、文字列を描画する際にレイアウトを指定して描画することができる。図１２は指定された点に対して相対的に先頭揃え、中央揃え、末尾揃えさせるよう記述した例である。（ａ）はＰｏｓｔＳｃｒｉｐｔ言語で記述したページ記述データ、（ｂ）は描画処理を行った結果である。図１２（ａ）において、５〜１０行目で中央揃え、１２〜１７行目で右揃えするための定義を行なっている。１９〜２１行目では、それぞれ同じＸ座標を指定している。その他、中央揃え、或いは右揃えの定義を参照するように記述することによって、指定した点に対するレイアウトを計算し、図１２（ｂ）のような描画結果を得ることができる。また、図１４に示したように、文字間のピッチを広げることや、図１５に示したように、曲線上（ここでは円弧上）に文字を配置する例は「ＰＯＳＴＳＣＲＩＰＴチュートリアル＆クックブック」（ＡｄｏｂｅＳｙｓｔｅｍｓ著、アスキー出版技術部監修）に記載されている。
【０００６】
また従来、ページ記述データとして記述された図１２（ａ）、図１４（ａ）、図１５（ａ）で示したようなデータを、例えばプリンタ装置のような画像形成装置において内部的にレイアウト計算を行ない、描画処理を行っていた。
【０００７】
また、最近ではＷ３Ｃ（Ｗｏｒｌｄ  Ｗｉｄｅ  Ｗｅｂ  Ｃｏｎｓｏｒｔｉｕｍ）によってＳＶＧ（Ｓｃａｌａｂｌｅ  Ｖｅｃｔｏｒ  Ｇｒａｐｈｉｃｓ）の仕様が策定され、ページ記述言語としての応用が検討されている。ＳＶＧはＰｏｓｔＳｃｒｉｐｔと同様に任意の図形あるいは文字を、座標や色を指定したり、アフィン変換処理を指定して描画することができる。また、文字のレイアウトの指定方法が多岐にわたり、柔軟に指定できるような仕様となっている。
【０００８】
従来のページ記述言語、ＳＶＧなどの構造化言語などを画像記述言語と呼ぶ。上記のように、ページ記述言語で、多重にアフィン変換命令が記述された場合、処理が繰り返し行われており、構造化言語でも、木構造が必要以上に深く記述されていたりする。構造化言語では、木構造の階層を減らしたり、構造変換したりすることが行われている（例えば［特許文献１］［特許文献２］参照）。
【特許文献１】特開２００２−１０８８５０号公報
【特許文献２】特開２００４−２４０４９１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、従来のようなページ記述データの処理に関しては、以下のような問題があった。
【００１０】
一般的に図形のアフィン変換処理は、図１３（ａ）に示したように、３×３の行列とベクトル（Ｘ，Ｙ，１）の掛け算の処理を行う必要がある。複雑な図形の場合は頂点や制御点にすべてについてアフィン変換処理をする必要がある。また、多重にアフィン変換処理命令が呼び出されるときは、図１３（ｂ）に示したように、アフィン変換行列同士の掛け算処理が発生する。
【００１１】
座標値やアフィン変換行列の要素の値は実数で表現されることがほとんどである。ベクトルと行列あるいは行列同士の掛け算には、ベクトルや行列の各成分同士の掛け算や足し算を数回行う必要がある。従って、複雑な図形に対するアフィン変換や多重のアフィン変換処理はこれらの処理を繰り返し行うことによってプロセッサに負荷がかかり、高速なプロセッサを搭載していない機器では処理速度が大きく低下する恐れがある。
【００１２】
また、文字のレイアウト処理として、図１２に示したような例の場合、概念的には直線上に文字列を並べて描画し、文字列の始点と終点を計算し、その結果を元にレイアウト処理を行なう必要がある。この場合、文字の数が増加するほどプロセッサに負荷がかかることになり、同じように処理速度の低下を引き起こす可能性がある。また図１５で示した例では、曲線上のどの位置に文字を配置すべきかを画像形成装置内で画像形成時に評価しているが、このような処理は非常にプロセッサに負荷をかける。
【００１３】
そこで本願では、図形、テキストのアフィン変換処理やテキストのレイアウト計算を画像形成装置に送る前に行い、文字ごとに位置と回転角を予め計算することを行う。そして、元の画像記述データで表現された内容と描画結果が同一になることが保証されるように前処理を反映した画像記述データの置換処理を行うことにより、従来による手法に比較して処理を高速化する。
【課題を解決するための手段】
【００１４】
上記の課題を解決するため、本発明による画像記述データ処理方法は以下の構成を備える。すなわち、ページ記述言語または構造化言語を含む画像記述言語で記述された画像記述データを保持する保持手段を含む装置で実行される画像記述データ処理方法であって、前記保持手段から第１の画像記述データを取得する取得工程と、前記第１の画像記述データから第１描画命令の記述を抽出する抽出工程と、前記第１描画命令を演算することによって第２描画命令の記述に置換する置換演算工程と、前記第２描画命令の記述を含む第２の画像記述データを前記保持手段に格納する格納工程。
【００１５】
上記の課題を解決するため、本発明による画像記述データ処理装置は以下の構成を備える。すなわち、ページ記述言語または構造化言語を含む画像記述言語で記述された画像記述データを保持する保持手段と、前記保持手段から第１の画像記述データを取得する取得手段と、前記第１の画像記述データから第１描画命令の記述を抽出する抽出手段と、前記第１描画命令の記述を演算することによって第２描画命令の記述に置換する置換演算手段と、前記第２描画命令の記述を含む第２の画像記述データを前記保持手段に格納する格納手段。
【００１６】
上記の課題を解決するため、本発明によるプログラムは以下の構成を備える。すなわち、ページ記述言語または構造化言語を含む画像記述言語で記述された画像記述データを保持する保持手段を含む装置で実行されるプログラムであって、前記保持手段から第１の画像記述データを取得する取得ステップと、前記第１の画像記述データから第１描画命令の記述を抽出する抽出ステップと、前記第１描画命令の記述を演算することによって第２描画命令の記述に置換する置換演算ステップと、前記第２描画命令の記述を含む第２の画像記述データを前記保持手段に格納する格納ステップ。
【発明の効果】
【００１７】
本発明によれば、画像記述言語を置換する演算処理を前処理として行うので、画像形成装置が画像記述データを高速に処理することが可能になる。
【発明を実施するための最良の形態】
【００１８】
＜実施形態１＞
本発明における、ページ記述データ処理の第１の実施形態について、添付図面を参照しながら説明する。
【００１９】
図１は本発明の実施例に係る、ページ記述データ処理装置を含む情報処理装置の構成について説明したブロック図である。
【００２０】
図１において、ＣＰＵ１０１はシステム制御部であり、装置全体を制御する。ＲＯＭ１０２はＣＰＵ１０１の制御プログラムや各種固定データが格納されている。ＲＡＭ１０３は、ＳＤＲＡＭ、ＤＲＡＭなどによって構成され、プログラム制御変数、各種枠バッファなどを格納する。また、通信制御部１０４は通信インタフェース１０５を経由したデータ通信の制御を行なうためのものである。通信インタフェース１０５はＩＥＥＥ１３９４インタフェース、ＩＥＥＥ１２８４インタフェース、有線ＬＡＮインタフェース、無線ＬＡＮインタフェースなどでよく、本実施例では特定しない。ページ記述データ処理装置１０は、ＲＡＭ１０３に格納されたページ記述データを置換し、再びＲＡＭ１０３に格納する処理を行なう。ページ記述データ処理装置１０については次に詳述する。
【００２１】
図２は本発明の第１の実施例に係る、ページ記述データ処理装置１０の構成を説明したブロック図である。ページ記述データ取得部２０１は、第１のページ記述データをＲＡＭ１０３から取得する。ページ記述データ解釈部２０２は、ページ記述データ取得部２０１で取得した第１のページ記述データを描画命令ごとに解釈する。アフィン変換処理命令抽出部２０５は、ページ記述データ解釈部２０２で分割された描画命令に含まれるアフィン変換処理命令を抽出する。アフィン変換計算処理部２０６は、アフィン変換処理命令抽出部２０５で取得したアフィン変換処理命令を計算処理する。ページ記述データ置換部２０３は、アフィン変換計算処理部２０６の計算結果をもとにページ記述データ解釈部２０２で得られた描画命令を置換し、第２のページ記述データを生成する。ページ記述データ出力部２０４は、ページ記述データ置換部２０３で生成された第２のページ記述データをＲＡＭ１０３に格納する。以上により、ＲＡＭ１０３に保持された第２のページ記述データは、プリンタなどの画像形成装置に送られ、画像形成装置は、第２のページ記述データを解釈して画像を形成する。
【００２２】
次に、本発明の第１の実施例に係る、ページ記述データ処理装置１０の処理の流れについて図３を参照して説明する。図３はページ記述データ処理装置１０の処理の流れについて説明したフローチャートである。
【００２３】
入力される第１のページ記述データはＲＡＭ１０３に確保されたバッファ領域に格納されている。まずページ記述データ取得部２０１においてＲＡＭ１０３上のバッファ領域から第１のページ記述データを取得する（ステップＳ３０２）。次に、ページ記述データ解釈部２０２において、取得した第１のページ記述データを解釈し、個々の描画命令に分解する（ステップＳ３０３）。続いて、分解された個々の描画命令ごとに以下の処理を繰り返す（ステップＳ３０４）。
【００２４】
まず、描画命令がアフィン変換処理をあらわしたものであるか、あるいはアフィン変換処理を含んだ処理であるかを判定する（ステップＳ３０５）。条件に該当する場合はアフィン変換抽出部２０５においてアフィン変換処理命令を抽出し、アフィン変換計算部２０６においてアフィン変換計算を行ない、計算結果をＲＡＭ１０３に格納する（ステップＳ３０６）。条件に該当しない場合はステップＳ３０６の処理は行われない。次にページ記述データ置換部２０３において、現在処理の対象となっている描画命令について、ＲＡＭ１０３に格納されているアフィン変換計算結果をもとにページ記述データを置換する（ステップＳ３０７）。さらに、ページ記述データ出力部２０４において置換結果をＲＡＭ１０３に格納する（ステップＳ３０８）。
【００２５】
図４に示したページ記述データの例を用いて、ステップＳ３０４〜Ｓ３０８の処理をさらに詳しく説明する。本発明では画像記述言語を特定しないが、ここではＳＶＧを使用した場合について説明する。
【００２６】
図５はステップＳ３０４〜Ｓ３０８の処理について説明した模式図である。図４に示したページ記述データを描画処理命令ごとに分解したものである。スタック５３０はアフィン変換計算結果を格納する領域で、初期状態としては空になっている。
【００２７】
ページ記述データ処理は、処理命令を読み込んだ順に処理するので、処理命令５０２を読み込む。ｔｒａｎｓｆｏｒｍ属性はアフィン変換処理命令を示しており、属性値がアフィン変換オペレーションであることを示している。ここではｔｒａｎｓｌａｔｅ（１５０  ２００）がアフィン変換オペレーションであるので、これを取得し、内部形式５２２に変換する。変換結果をスタック５３０に積む。この結果がスタック状態５３２である。このときスタック最上部のアフィン変換内部形式は５４２とする。このとき、処理命令５０２は図形の描画処理命令ではないので、ページ記述データ置換処理やページ記述データ出力処理は行われない（ステップＳ５７２）。
【００２８】
次に処理命令５０３を取得し、同様にアフィン変換内部形式５２３に置換する。この時点でスタックは空ではなくなっているので、スタックの最上部にあるアフィン変換内部形式５４２とアフィン変換内部形式５０２を掛け算し、アフィン変換内部形式５４３としてスタックに新たに積む。その結果がスタック状態５３３である。このとき、処理命令５０３は図形の描画処理命令ではないので、ページ記述データ置換処理やページ記述データ出力処理は行われない（ステップＳ５７３）。
【００２９】
さらに次の処理命令５０４を取得する。処理命令５０４には、矩形描画命令にアフィン変換処理命令が含まれている。まずアフィン変換処理命令を抽出し、アフィン変換内部形式５２４に変換し、スタック最上部のアフィン変換処理内部形式５４３と掛け算した結果を新たにアフィン変換内部形式５４４としてスタックに積む。その結果がスタック状態５３４である（ステップＳ５７４）。
【００３０】
次に処理命令５０４の矩形の描画命令を解釈する。処理命令５０４では、矩形についての形状が指定されており、矩形の場合は左上の頂点座標（ｘ属性、ｙ属性）および幅（ｗｉｄｔｈ属性）、高さ（ｈｅｉｇｈｔ属性）によって決定されている。ｘ、ｙ、ｗｉｄｔｈ、ｈｅｉｇｈｔの各属性値をｘ、ｙ、ｗ、ｈとし、頂点Ａを（ｘ，ｙ）、頂点Ｂを（ｘ＋ｗ，ｙ）、頂点Ｃを（ｘ＋ｗ，ｙ＋ｈ），頂点Ｄを（ｘ，ｙ＋ｈ）とする。Ａ−Ｂ−Ｃ−Ｄ−Ａを順に線分で接続して得られる領域がその形状となる。図４で示した例では、Ａ（−３０，―２０）、Ｂ（３０，−２０）、Ｃ（３０，２０）、Ｄ（−３０，２０）となる。
【００３１】
次に、この時点でスタック最上部のアフィン変換内部形式としてアフィン変換内部形式５４４を取得し、頂点Ａと掛け合わせた結果を頂点Ａ’としてＲＡＭ１０３に格納する。頂点Ｂ〜Ｄについても同様に頂点Ｂ’〜Ｄ’としてＲＡＭ１０３に格納する。
【００３２】
続いて、頂点Ａ’〜Ｄ’の座標値を参照して処理命令５０４を置換する。具体的にはここではパスの処理命令に置換する。ＳＶＧにおいて、パスの処理命令は＜ｐａｔｈ＞要素で記述され、形状の情報はｄ属性によって記述する。まず頂点Ａ’のＸ、Ｙ座標を文字列化し、カンマ（，）で区切り、文字’Ｍ’のあとに続けて、ｄ属性コマンド５１２を生成する。次に頂点Ｂ’のＸ、Ｙ座標を文字列化し、カンマ（，）で区切り、文字’Ｌ’のあとに続けて、ｄ属性コマンド５１３を生成する。同様に頂点Ｃ’、Ｄ’のＸ、Ｙ座標を文字列化し、カンマ（，）で区切り、文字’Ｌ’のあとに続けて、ｄ属性コマンド５１４、５１５を生成する。最後に図形の開始点と終了点を接続するために、文字’Ｚ’だけのｄ属性コマンド５１６を生成する。ｄ属性コマンド５１２〜５１６を直列化し、ｄ属性値５１１を得る（ステップＳ５７５）。
【００３３】
この結果得られた処理命令５１０が処理命令５０４の置換結果であり、つまり図４における２〜７行目に記述されている内容の置換結果でもある。
【００３４】
ここでは＜ｒｅｃｔ＞要素による矩形の描画処理命令について説明した。その他の図形描画命令、あるいは曲線や線分を組み合わることのできる描画処理命令であるパス（＜ｐａｔｈ＞）といった描画処理命令であっても、同様の処理が可能である。図形描画命令には、円（＜ｃｉｒｃｌｅ＞）、楕円（＜ｅｌｌｉｐｓｅ＞）、多角形（＜ｐｏｌｙｇｏｎ＞）、折れ線（＜ｐｏｌｙｌｉｎｅ＞）、線分（＜ｌｉｎｅ＞）などがある。
【００３５】
このような置換処理が効果的な場合について説明する。たとえば画像形成装置が、必ず本実施形態におけるページ記述データ処理装置によって処理されたページ記述データを受信するような環境においては、図形描画処理命令の種類をｐａｔｈだけ対応すればよい。画像形成装置におけるプログラムの軽量化が可能になる。
【００３６】
以上、すべてのアフィン変換処理命令をすべて除去したパスの描画処理命令に置換する方法について説明した。それ以外の方法として、多重となっているアフィン変換命令を除去し、描画処理命令の図形の種類は変更せず、アフィン変換処理命令を０個または１個含む処理命令に置換して出力する方法について説明する。
【００３７】
図５において、ステップＳ５７２〜Ｓ５７４までは同じ処理を行う。次に処理命令５０４の矩形の描画命令を解釈し、ｔｒａｎｓｆｏｒｍ属性以外の属性名および属性値の組をすべてＲＡＭ１０３に格納する。次に、処理命令５０４と同じ図形の処理命令を生成し、その属性としてＲＡＭ１０３に格納されたすべての属性の情報をセットする。次に、５０４でスタック５３０に格納された、スタック最上部のアフィン変換内部形式５４４を取得し、ＳＶＧのｔｒａｎｓｆｏｒｍ属性として指定する。具体的には、３×３の行列で表現されたアフィン変換内部形式が図６（ａ）で示したような表現になっていた場合、図６（ｂ）に示した文字列の表現が指定すべきｔｒａｎｓｆｏｒｍ属性となる。そこで、図４で示したページ記述データの例では、ｔｒａｎｓｆｏｒｍ属性値５９１が求められる。次にｔｒａｎｓｆｏｒｍ属性値５９１およびＲＡＭ１０３に格納された属性の情報と合わせて、処理命令５９０が得られる（ステップＳ５７６）。
【００３８】
この結果得られた処理命令５９０が処理命令５０４の置換結果であり、つまり図４における２〜７行目に記述されている内容の置換結果である。
【００３９】
この置換処理は、画像形成装置が特定の図形の処理が高速である場合などに効果がある。たとえば一般楕円の画像形成が高速である場合、楕円や円のアフィン変換処理結果の図形は必ず一般楕円になることが知られている。この場合、パスに置換するより、入力された描画処理命令が円あるいは楕円の描画命令であることを情報として残しておくほうが、画像形成装置における描画処理の高速化に寄与する。
【００４０】
＜実施形態２＞
次に、本発明におけるページ記述データ処理装置の第２の実施形態を、添付図面を参照しながら、レイアウト処理について説明する。
【００４１】
図７は、本発明の第２の実施例に係る、ページ記述データ処理装置の構成を説明したブロック図である。ページ記述データ取得部７０１は、第１のページ記述データを取得する。ページ記述データ解釈部７０２は、ページ記述データ取得部７０１で取得した第１のページ記述データを描画命令ごとに解釈する。テキストレイアウト命令取得部７０５は、ページ記述データ解釈部７０２で分割されたテキスト描画命令に含まれるテキストレイアウト命令を取得する。テキストレイアウト計算部７０６は、テキストレイアウト命令取得部７０５で取得したテキストレイアウト命令を計算処理する。ページ記述データ置換部７０３は、テキストレイアウト計算部７０６で処理したテキストレイアウト計算結果をもとにページ記述データ解釈部７０２で得られたテキスト描画命令を置換し、第２のページ記述データを生成する。ページ記述データ出力部７０４は、ページ記述データ置換部７０３で生成された第２のページ記述データをＲＡＭ１０３に格納する。
【００４２】
次に、本発明の第２の実施例に係る、ページ記述データ処理装置１０の処理の流れについて、図を参照して説明する。
【００４３】
図８は本発明の第２の実施例に係るページ記述データ処理装置１０の処理の流れについて説明したフローチャートである。入力されるページ記述データはＲＡＭ１０３に確保されたバッファ領域に格納されている。まずページ記述データ取得部７０１においてＲＡＭ１０３上のバッファ領域からページ記述データを取得する（ステップＳ８０１）。次にページ記述データ解釈部７０２において、取得したページ記述データを解釈し、個々の処理命令に分割する（ステップＳ８０２）。次に分割された個々の処理命令ごとに以下の処理を、読み込んだ順に行う（ステップＳ８０３）。
【００４４】
まず処理命令がテキスト描画処理命令であるかどうかを判定する（ステップＳ８０４）。テキスト描画処理命令でなければ、ページ記述データ置換部７０３においては何も置換処理を行なわずに、ページ記述データ出力部７０４において、そのままＲＡＭ１０３に出力する（ステップＳ８０８）。
【００４５】
ステップＳ８０４においてテキスト描画処理命令であると判定された場合は、そのテキスト描画処理に含まれるレイアウト処理命令を抽出する（ステップＳ８０５）。テキスト描画処理命令にはレイアウト処理命令が明示されない場合もあるが、多くの場合は、たとえば文字列を描画する場合は１つ前の文字を描画した直後にレイアウトする、といった暗黙のレイアウトルールがある。ここでの処理はそのような暗黙のレイアウトルールも含むものとする。次にテキスト描画処理命令で描画しようとしている文字それぞれに対して、レイアウト計算を行なう（ステップＳ８０６）。続いて、そのレイアウト計算結果をもとに処理命令を置換し（ステップＳ８０７）、ページ記述データ出力部７０３よりＲＡＭ１０３に出力する（ステップＳ８０８）。
【００４６】
図９に示したページ記述データの例を用いて、ステップＳ８０３〜Ｓ８０８の処理についてさらに詳しく説明する。本発明におけるページ記述言語のフォーマットは特定しないが、ここではページ記述言語としてＳＶＧを使用した場合について説明する。
【００４７】
図９に示したページ記述データは２〜４行目で１つのテキスト描画処理命令となっており、Ｘ座標１０、Ｙ座標１００の位置を開始点として“ＡＢＣＤ”という文字列を描画することを指示した内容になっている。＜ｔｅｘｔ＞要素のｄｘ属性は文字をＸ軸方向にずらす量を指定する。通常であれば“ＡＢＣＤ”という文字列が詰まった状態で描画されるが、ｄｘ属性を指定することによって文字間に間隔を入れたりすることができる。この例では、文字間に１０ピクセルの間隔を空けるように指示したものとなっている。
【００４８】
図１０は処理の流れを説明した模式図である。ステップＳ８０４において、図９に示したページ記述データはテキスト描画処理命令であると判断されるので、図１０におけるテキスト描画処理命令取得部に処理命令が入力される。まずレイアウトパラメータ取得部１００２において、＜ｔｅｘｔ＞要素のレイアウト処理命令である、ｘ属性、ｙ属性、ｄｘ属性、ｆｏｎｔ−ｓｉｚｅ属性の各属性値を取得し、数値化してＲＡＭ１０３に格納する。次に文字列分割処理部１００３で描画対象となっている文字列“ＡＢＣＤ”を‘Ａ’，‘Ｂ’，‘Ｃ’，‘Ｄ’と１文字ずつに分割する。
【００４９】
次に、レイアウト計算処理部１００４において、文字ごとにレイアウトする位置の計算を行なう。まず‘Ａ’のレイアウト位置の座標（ｘ１，ｙ１）を求める。‘Ａ’は文字列の先頭なので、レイアウトパラメータの文字列の開始点（ｘ，ｙ）にｄｘ属性によるずらしの量ｄｘ［１］を加えた座標が求めるべき座標となる。図９に示した例では、ｘ＝１０、ｙ＝１００、ｄｘ＝１０なので、求める座標は（２０，１００）である。また、ここで‘Ａ’１文字分の幅を計算する。文字の幅はフォントの種類によって異なり、また文字によって異なる場合もある。ここでは固定ピッチフォント（すべての文字が同じ幅となるように定義されたフォント）を使用し、フォントサイズとして２０を指定した場合はフォントの幅が２０となるようなフォントであると仮定して説明する。ここで求まるフォントの幅ｗ１は２０ピクセルである。
【００５０】
続いて、‘Ｂ’のレイアウト位置の座標（ｘ２，ｙ２）を求める。‘Ｂ’は直前の文字を描画した位置からｄｘ属性によって＋１０ピクセルＸ軸方向にずらすように指定されている。従って‘Ａ’のレイアウト位置（ｘ１，ｙ１）から‘Ａ’１文字分の幅ｗ１およびｄｘ属性によるずらしの量ｄｘ［２］を加えて求めることができ、レイアウト位置の座標（ｘ２，ｙ２）は（５０，１００）と求まる。
【００５１】
さらに、‘Ｃ’，‘Ｄ’についても同じような処理を行ない、それぞれのレイアウト位置座標はＣ（ｘ３，ｙ３）＝（８０，１００）、Ｄ（ｘ４，ｙ４）＝（１１０，１００）と求まる。
【００５２】
次に、レイアウト計算処理部１００４での計算結果をもとに、テキスト描画処理命令を置換する。すでにレイアウト計算処理部１００４で‘Ａ’，‘Ｂ’，‘Ｃ’，‘Ｄ’のそれぞれの位置の計算は完了しているので、この座標情報を＜ｔｅｘｔ＞要素のｘ属性、ｙ属性として指定する。ｘ，ｙ属性はｘ＝“ｘ１，ｘ２，ｘ３，ｘ４”，ｙ＝“ｙ１，ｙ２，ｙ３，ｙ４”というように記述することによって、描画対象文字列のレイアウトを指定できる。図９で示した例を入力とすれば、置換処理されたテキスト描画処理命令は図１０のテキスト描画処理命令１００６で示したような記述となり、テキスト描画処理命令出力部１００５よりＲＡＭ１０３へ出力される。
【００５３】
以上の処理により、描画処理装置ではテキストのレイアウトに関する計算処理を行なうことなく、単純に指定したｘ、ｙ属性値のみを参照して描画することができ、描画処理装置の処理の高速化が可能となる。
【００５４】
以上、文字間のピッチを広げて文字列をレイアウトする例についての処理を示した。他にも曲線上に文字列を配置したり（図１５）、指定した点に対して相対的に先頭揃え、中央揃え、末尾揃えして配置する（図１２）ような場合でも、上記のような方法でレイアウト計算し、置換することが可能である。なお、文字が回転する場合については、ＳＶＧでは＜ｔｅｘｔ＞要素のｒｏｔａｔｅ属性を使用することによって可能となる。
【００５５】
本発明の目的は前述した実施例の機能を実現するソフトウエアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵまたはＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行することによっても、達成されることは言うまでもない。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することとなり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００５６】
プログラムコードを供給するための記憶媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤなどを用いることができる。
【００５７】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施例の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ（ＯＳ）などが実際の処理の一部または全部を行い、その処理によって前述した実施例の機能が実現される場合も含まれることは言うまでもない。
【００５８】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書きこまれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００５９】
【図１】本発明の実施形態に係る、ページ記述データ処理装置を含む情報処理装置の構成を示したブロック図である。
【図２】本発明の第１の実施例に係る、ページ記述データ処理装置の構成について説明したブロック図である。
【図３】本発明の第１の実施例における、ページ記述データ処理装置の処理の流れについて説明したフローチャートである。
【図４】本発明の第１の実施例における、ページ記述言語としてＳＶＧを用いたときのページ記述データの一部である。
【図５】本発明の第１の実施例による、ページ記述データ処理装置における、ページ記述データ置換処理について説明した模式図である。
【図６】本発明の第１の実施例による、ページ記述データ処理装置における、ページ記述データ置換処理について補足説明した図である。
【図７】本発明の第２の実施例に係る、ページ記述データ処理装置の構成について説明したブロック図である。
【図８】本発明の第２の実施例における、ページ記述データ処理装置の処理の流れについて説明したフローチャートである。
【図９】本発明の第２の実施例における、ページ記述言語としてＳＶＧを用いたときのページ記述データの一部である。
【図１０】本発明の第２の実施例による、ページ記述データ処理装置における、ページ記述データ置換処理について説明した模式図である。
【図１１】多重のアフィン変換処理をともなって図形描画処理命令を実行するページ記述データの例と、その描画結果について示した図である。
【図１２】テキストの描画処理を、指定した点に対して相対的に先頭揃え、中央揃え、末尾揃えさせてレイアウトするページ記述データの例と、その描画結果について示した図である。
【図１３】一般的な２次元のＸＹ座標系において、アフィン変換処理を行なうときの計算方法について示した図である。
【図１４】テキストの描画処理を、文字間のピッチを広げてレイアウトするページ記述データの例と、その描画結果について示した図である。
【図１５】テキストの描画処理を、指定した曲線上にレイアウトするページ記述データの例と、その描画結果について示した図である。
【符号の説明】
【００６０】
１０  ページ記述データ処理装置
【図１】
2006338478.tif 000003
【図２】
2006338478.tif 000004
【図３】
2006338478.tif 000005
【図４】
2006338478.tif 000006
【図５】
2006338478.tif 000007
【図６】
2006338478.tif 000008
【図７】
2006338478.tif 000009
【図８】
2006338478.tif 000010
【図９】
2006338478.tif 000011
【図１０】
2006338478.tif 000012
【図１１】
2006338478.tif 000013
【図１２】
2006338478.tif 000014
【図１３】
2006338478.tif 000015
【図１４】
2006338478.tif 000016
【図１５】
2006338478.tif 000017