(57)【要約】【課題】描画処理に要する時間を短縮できる文字処理装置を提供する。【解決手段】グリフデータ取得部２０１が、文字の描画に用いる第１グリフデータを取得すると、グリフデータ変換部２０２が、第１グリフデータを構成するパスの開始点を、ラスタライザにおける描画速度が速くなるように決定される所定の変更基準に従って変更することにより、第１グリフデータと等価の描画結果を生じさせる第２グリフデータに変換する。グリフデータ出力部２０３は、この第２グリフデータをラスタライザへ出力する。【選択図】図２
2017227795.tif 000002
【特許請求の範囲】
【請求項１】
文字の描画に用いる第１グリフデータを取得する取得手段と、
前記第１グリフデータを構成するパスの開始点を所定の変更基準に従って変更することにより、前記第１グリフデータと等価の描画結果を生じさせる第２グリフデータに変換する変換手段と、
前記第２グリフデータを出力する出力手段と、
を備えることを特徴とする、文字処理装置。
【請求項２】
前記第１グリフデータまたは前記第２グリフデータをラスター化するラスタライザの特性に応じて前記変更基準を決定する決定手段をさらに備えることを特徴とする、
請求項１に記載の文字処理装置。
【請求項３】
前記決定手段は、前記ラスタライザで、所定のテストグリフデータに対する描画処理を行ったときの処理時間を測定し、前記処理時間に基づいて前記変更基準を決定することを特徴とする、
請求項２に記載の文字処理装置。
【請求項４】
前記パスがそれぞれ描画する位置が異なる複数の部分パスから構成されており、
前記変換手段は、前記部分パスの相対的な描画位置に応じて、あるいは、前記変更基準に従って前記複数の部分パスの順序を変更することを特徴とする、
請求項１乃至３のいずれか一項に記載の文字処理装置。
【請求項５】
前記相対的な位置関係は、前記部分パスを包含する図形によって決定されることを特徴とする、
請求項４に記載の文字処理装置。
【請求項６】
前記変換手段は、前記相対的な描画位置に代えて、個々の前記部分パスの方向が時計回りか反時計回りかを判別し、この判別結果に応じ、かつ、前記変更基準に従って前記複数の部分パスの順序を変更することを特徴とする、
請求項４に記載の文字処理装置。
【請求項７】
複数の前記部分パスのうち一の前記部分パスが他の前記部分パスを包含する場合、
前記変換手段は、包含関係にある二つの前記部分パスの方向をそれぞれ逆順とすることを特徴とする、
請求項６に記載の文字処理装置。
【請求項８】
前記複数の部分パスの描画位置がＸ，Ｙ座標系で定められており、
前記変換手段は、各部分パスについて、部分パス上の頂点のうちＸ座標とＹ座標の和が最大となる点を当該部分パスの開始点とし、複数の部分パスの各々の開始点をそれぞれＸ座標とＹ座標の和の大きい順序に変更することを特徴とする、
請求項１乃至３のいずれか一項に記載の文字処理装置。
【請求項９】
前記変換手段は、各部分パスの開始点を通る共通の傾きの直線の位置関係を比較することにより、前記Ｘ座標とＹ座標の和が最大となる点を前記開始点と決定することを特徴とする、
請求項８に記載の文字処理装置。
【請求項１０】
前記変換手段は、各部分パスを包含するＸ，Ｙ軸に平行な最小矩形を計算し、その最小矩形におけるＸ座標またはＹ座標の最大値を前記開始点と決定することを特徴とする、
請求項９に記載の文字処理装置。
【請求項１１】
前記変換手段は、前記複数の部分パスの順序を変更することなく、または、前記順序と共に少なくともいずれかの前記部分パスの開始点を変更することを特徴とする、
請求項４乃至１０のいずれか一項に記載の文字処理装置。
【請求項１２】
ラスタライザにより文字を描画する文字処理装置が実行する方法であって、
前記文字処理装置が、
前記文字を描画するための第１グリフデータを複数の部分パスに分割する工程と、
前記ラスタライザの特性に応じて定まる所定の変更基準に従って各部分パスの開始点または順序を変更するとともに、変更した部分パスを結合し、これにより、前記第１グリフデータを当該第１グリフデータと等価の描画結果を生じさせる第２グリフデータに変換する工程と、
前記第２グリフデータを前記ラスタライザへ出力する工程と、
を有することを特徴とする、文字処理方法。
【請求項１３】
コンピュータを請求項１乃至１１のいずれか１項に記載の文字処理装置として機能させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はグリフデータに基づいて文字を描画する文字処理装置に関する。
【背景技術】
【０００２】
アウトラインフォントを用いて文字を高速に描画するために、アウトラインフォントのベクトルデータを他のベクトルデータに変換して描画する技術が知られている。例えば特許文献１に開示された技術では、アウトラインフォントのベクトルデータを複数の図形に分割する必要があるかどうかを示す指標として分割判定フラグを用いる。そして、分割する必要がある場合、図形を分割し、分割された図形で描画処理を行う。また、特許文献２に開示された技術では、アウトラインフォントのベクトルデータに曲線情報フラグを付加して記憶し、展開時にそれを参照する。その際、ベクトルデータのサイズが指定のサイズより小さい場合、展開するベクトルデータを間引きして高速に描画する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−３３１１６６号公報
【特許文献２】特開２００２−２４４６３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１，２などに開示された従来技術では、アウトラインフォントのベクトルデータから描画に用いる他のベクトルデータへの変換が等価的なものでない。そのため、例えばフォントのサイズの指定が大きいときには、変換処理をやり直す必要が生じる。また、変換済みのベクトルデータをそのまま適用すると描画結果が異なるものとなる可能性がある。いずれにしても、文字の描画処理に要する時間が長くなり、高速な描画が困難となる。
そこで本発明は、描画処理に要する時間を短縮できる文字処理装置を提供することを主たる課題とする。
【課題を解決するための手段】
【０００５】
本発明が提供する文字処理装置は、文字の描画に用いる第１グリフデータを取得する取得手段と、前記第１グリフデータを構成するパスの開始点を所定の変更基準に従って変更することにより、前記第１グリフデータと等価の描画結果を生じさせる第２グリフデータに変換する変換手段と、前記第２グリフデータを出力する出力手段とを備えることを特徴とする。
【発明の効果】
【０００６】
本発明によれば、第１グリフデータを構成するパスの開始点を所定の変更基準に従って変更するので、変更基準に従う処理速度で第２グリフデータに変換することができる。第２グリフデータは、第１グリフデータと等価の描画結果を生じさせるので、変換処理をやり直す必要が生じない。そのため、描画処理に要する時間を従前よりも短縮することができる。
【図面の簡単な説明】
【０００７】
【図１】第１実施形態に係る文字処理装置のハードウェア構成図。
【図２】第１実施形態に係る文字処理装置の機能構成図。
【図３】第１実施形態による文字処理方法の全体手順説明図。
【図４】（ａ）〜（ｆ）はグリフデータの説明図。
【図５】（ａ），（ｂ）はグリフデータ変換処理の手順説明図。
【図６】（ａ）〜（ｆ）はスキャンライン法の説明図。
【図７】第２実施形態に係る文字処理装置の機能構成図。
【図８】（ａ），（ｂ）は第２実施形態にかかる文字処理方法の手順説明図。
【図９】（ａ）〜（ｌ）は第２実施形態による文字処理方法の補足説明図。
【発明を実施するための形態】
【０００８】
以下、本発明を特定のラスタライザにより文字を描画する文字処理装置に適用した場合の実施の形態例を説明する。ラスタライザとは、グリフデータを入力とし、ラスター化（例えばビットマップ化）する処理を実行するものである。この文字処理装置では、文字の描画に用いるグリフデータを他のグリフデータに変換する。以後の説明では、変換前のグリフデータを第１グリフデータ、変換後のグリフデータを第２グリフデータと呼ぶ。詳細は後述するが、第１グリフデータと第２グリフデータは、変換前後で描画結果に差異がない。つまり両グリフデータは等価なものである。
各グリフデータはアウトライン形式であり、グリフデータが格納されているフォントデータはＴｒｕｅＴｙｐｅフォーマットであるものとする。ＴｒｕｅＴｙｐｅフォーマットでは、パス（線分）の描画方向に対して右側が塗りつぶされるが、グリフデータのパスの開始点などは規定されておらず、フォントをデザインするデザイナーに依存する。
【０００９】
［第１実施形態］
本実施形態に係る文字処理装置のハードウェア構成図を図１に示す。図１において、文字処理装置１００は、システムバス１０１に接続されたＣＰＵ１０２、ＲＯＭ１０３、ＲＡＭ１０４を有するコンピュータを備える。ＣＰＵ（Central Processing Unit）１０２は、本発明のコンピュータプログラムを実行することにより、コンピュータを文字処理装置１００として動作させる。ＲＯＭ（Read Only Memory）１０３は変更を必要としないプログラムや各種パラメータを格納する。ＲＡＭ（Random Access Memory）１０４はＣＰＵ１０２のワークエリアとして機能する。また、図示しない外部装置などから供給されるプログラムやデータを一時記憶する。ＲＡＭ１０４は、ＳＤＲＡＭ（(Synchronous Dynamic Random Access Memory)あるいはＤＲＡＭ（Dynamic Random Access Memory）などで構成される。なお、図示しないハードディスクドライブ装置などのストレージを備え、本発明のコンピュータプログラムをこのストレージにインストールするようにしてもよい。
【００１０】
図２は、文字処理装置１００の機能構成図である。各機能部は、ＣＰＵ１０２が、本発明のコンピュータプログラムをＲＡＭ１０４に展開して実行することで実現される。図２を参照すると、本実施形態の文字処理装置１００は、グリフデータ取得部２０１、グリフデータ変換部２０２およびグリフデータ出力部２０３を有する。
グリフデータ取得部２０１は、文字の描画に用いる第１グリフデータを取得する取得手段として機能する。グリフデータ変換部２０２は、第１グリフデータを構成するパスの開始点を所定の変更基準に従って変更することにより、第１グリフデータと等価の描画結果を生じさせる第２グリフデータに変換する変換手段として機能する。グリフデータ出力部２０３は、第２グリフデータを出力する出力手段として機能する。
【００１１】
次に、上記の文字処理装置１００が実行する文字処理方法について説明する。まず、グリフデータを変更することによってラスタライザの処理が高速になることについて説明する。例えば公知のスキャンライン法を用いてグリフを描画する場合、ラスタライザは、グリフデータを受け取り、グリフ（字形）とＸ軸に平行なスキャンラインとの交点を求め、スキャンラインごとに、内部であれば塗りつぶす処理を行う。スキャンライン法の概要を図６に示す。
【００１２】
図６（ａ）はグリフとグリフデータの一例を示す。Ａ〜Ｇは、Ｘ，Ｙ座標系における線分の始点乃至終点（座標）である。ＭとＬはパスコマンドであり、Ｍは移動コマンド、Ｌは線分コマンドである。スキャンラインとグリフデータの交点は、入力されたパスコマンド順に計算される。本例では、図６（ｂ）のようにまず線分ＡＢとスキャンライン６０１との交点Ｐｎ（図示の例ではｎは１，２，３）を計算する。続いて線分ＢＣとスキャンライン６０１の交点を計算するが、スキャンライン６０１との交点は存在しない。そのため、図６（ｃ）のように、線分ＣＤとスキャンライン６０１との交点Ｑｎ（図示の例ではｎは１，２，３）を計算する。同様に、図６（ｄ）のように線分ＥＦとの交点Ｒｎ（図示の例ではｎは１，２，３）を計算し、さらに図６（ｅ）のように線分ＦＧとの交点Ｓｎ（図示の例ではｎは１，２，３）を計算する。その後、スキャンライン６０１ごとに、スキャンライン上のどの範囲を塗りつぶすかを判定する。図６（ｆ）は、スキャンラインを１本抜き出して示した説明図である。図６（ｆ）において、スキャンライン上の交点Ｐ２、交点Ｑ２、交点Ｒ２、交点Ｓ２をＸ軸方向にソートする。交点として計算された順は、交点Ｐ２、交点Ｑ２、交点Ｒ２、交点Ｓ２である。これをＸ軸方向にＸ座標の小さい順にソートすると、点Ｒ２、点Ｓ２、点Ｑ２、点Ｐ２となる。ソートしたあと、Ｒ２Ｓ２、Ｑ２Ｐ２を塗りつぶす範囲と判定することができる。
【００１３】
ここでのソートアルゴリズムについては限定されないが、採用しているソートアルゴリズムによっては、高速に処理できる入力順が存在する。例えば、一般的なクイックソートでは平均計算時間は、公知のランダウのＯ（ビッグオー）記法で示すと、Ｏ（ｎ・ｌｏｇｎ）であるが、入力によっては計算時間のＯ（ｎ２）となることが知られている。また、挿入ソートは一般的に、あらかじめほぼ整列されているデータに対しては高速にソート処理ができることが知られている。スキャンライン法以外を採用したラスタライザでも、ラスタライズ時のアルゴリズムによって高速に描画処理できる入力順が存在する。本実施形態では、この点に着目し、描画処理の速度をできるだけ高速にする文字処理方法を実現するものである。
【００１４】
図３は、第１実施形態による文字処理方法の全体手順説明図である。Ｓは処理の工程を表す。文字処理装置１００では、まず、対象となるフォントデータからグリフデータを取得する（Ｓ３０１）。グリフデータの取得はグリフデータ取得部２０１が行う。本例では、図４（ａ）に示される、フォントデータに含まれる漢字の「阿」のグリフデータを取得したものとする。図４（ｂ）は、図４（ａ）に示したグリフデータのパスコマンドと座標の配列である。図中、「コマンド」とあるのはパスコマンドを意味する（以下同じ）。なお、曲線コマンドに対応する座標は制御点と呼ばれる点の座標を必要とするが、ここでは省略する。
文字処理装置１００は、グリフデータ取得部２０１でグリフデータを取得すると、グリフデータ変換部２０２でグリフデータ変換処理を行う（Ｓ３０２）。
【００１５】
ここで、図３のＳ３０２におけるグリフデータ変換処理について詳しく説明する。グリフデータ変換処理には様々な態様がある。図５（ａ），（ｂ）はそれぞれグリフデータ変換処理の手順例を示すものである。
図５（ａ）を参照すると、グリフデータ変換部２０２は、第１グリフデータをそれぞれ描画する位置が異なる複数の部分パスに分割する（Ｓ５０１）。部分パスとは、パスコマンドの配列に存在する移動コマンド（Ｍ）によって区切られた、第１グリフデータにおけるパス（線分）の一部をいう。パスコマンドの配列の先頭にだけ移動コマンド（Ｍ）が存在する場合、分割後の部分パスの開始点と第１グリフデータのパスの開始点は一致する。図４（ｂ）を参照すると、「阿」の第１グリフデータは、移動コマンド４０１，４０２，４０３，４０４によって４つの部分パスに分割される。すなわち、点Ａ１〜点Ａ１３で構成される部分パスを部分パス４０５、点Ｂ１〜点Ｂ１２で構成される部分パスを部分パス４０６、点Ｃ１〜点Ｃ６で構成される部分パスを部分パス４０７、点Ｄ１〜点Ｄ４で構成される部分パスを部分パス４０８として分割される。
【００１６】
いずれの部分パスにおいても、当該部分パス上の始端と終端の座標は一致する。また、部分パス４０５，４０６，４０７は時計回りとなるように定義されているが、部分パス４０８は反時計回りとなるように定義されている。これは、塗りつぶし処理の際、公知のノンゼロワインディング規則を適用した場合に、パスによって刳り抜きを行うためである。
【００１７】
グリフデータ変換部２０２は、次に、所定の変更基準に従って各部分パスの開始点を変更する（Ｓ５０２）。所定の変更基準は、使用するラスタライザの種類乃至特性に応じてパスの描画速度が速くなるように、例えばグリフデータ変換部２０２において予め決定される。つまり、第１実施形態では、グリフデータ変換部２０２が変更基準の決定手段としても機能する。図５（ａ）は、ラスタライザが採用するアルゴリズムの特性上、時計回りの場合、部分パスの開始点を右上（反時計回りの場合は左下）に変更すると高速にパスを描画することができる点に着目し、変更基準をそのように定めた場合の例である。部分パスの描画位置がＸ，Ｙ座標系で定められている場合、第１グリフデータの右上の点は、部分パスに含まれる点の座標の配列から、Ｘ座標とＹ座標の和が最も大きくなる点を見つけることで特定できる。パスの描画方向（時計回り／反時計回り）は、第１グリフデータにおける座標配列から判別することができる。
【００１８】
図４（ａ）の例でいえば、部分パス４０５の右上の点は点Ａ２である。そのため、部分パス４０５の開始点を点Ａ１から点Ａ２に変更し、以後、点Ａ３、点Ａ４、…、点Ａ１３、点Ａ１、点Ａ２という順に、線分あるいは曲線で接続するように変更する。同様に、部分パス４０６は、開始点を点Ｂ１から点Ｂ２に変更し、以後、点Ｂ３、点Ｂ４、…、点Ｂ１２、点Ｂ１、点Ｂ２の順に線分あるいは曲線で接続するように変更する。また、部分パス４０７は、開始点を点Ｃ１から点Ｃ２に変更し、以後、点Ｃ３、点Ｃ４、点Ｃ５、点Ｃ６、点Ｃ１、点Ｃ２の順に線分で接続するように変更する。
他方、部分パス４０８は、反時計回りなので、開始点を点Ｄ１から点Ｄ２に変更し、以後、点Ｄ３、点Ｄ４、点Ｄ１、点Ｄ２の順に線分で接続するように変更する。
【００１９】
グリフデータ変換部２０２は、次に、開始点を変更した部分パス４０５，４０６，４０７，４０８を結合する（Ｓ５０３）。図４（ｃ）はＳ５０３の処理で結合された第２グリフデータのパスコマンドと座標の配列である。Ｓ５０３の処理を完了すると、グリフデータ変換部２０２は、グリフデータ変換処理（Ｓ３０２）を終了する。
【００２０】
次に、図５（ｂ）を参照して、グリフデータ変換処理（Ｓ３０２）の別の手法を説明する。この手法は、ラスタライザが採用するアルゴリズムの特性上、時計回りの場合、部分パスの順序を右上から左下に並ぶように（反時計回りの場合はその逆）変更すると高速にパスを描画することができる点に着目した変更基準の例である。図５（ｂ）を参照すると、グリフデータ変換部２０２は、Ｓ３０１で取得した第１グリフデータを部分パスに分割する（Ｓ５０４）。この処理は図５（ａ）のＳ５０１の処理と同じである。その後、グリフデータ変換部２０２は、上記の変更基準に従って各部分パスの順序を変更する（Ｓ５０５）。ここでは、部分パスの順序をＸ，Ｙ座標系の右上から左下に並ぶようにするために、各部分パスの各々の頂点のうち、Ｘ座標とＹ座標の和が最大となる点を取得し、これを各部分パスの基準点と決定する。
【００２１】
図４（ａ）の例では、部分パス４０５の基準点は点Ａ２であり、部分パス４０６の基準点は点Ｂ２、部分パス４０７の基準点は点Ｃ２、部分パス４０８の基準点は点Ｄ４である。次に、各部分パス４０５〜４０８の基準点を、それぞれＸ座標とＹ座標の和の大きい順に並べる。図４（ａ）の例では、各基準点を通る共通の傾き、例えばＸ，Ｙ座標系で「−１」の傾きの直線４１１〜４１４の位置関係を比較すると、Ｘ座標とＹ座標の和の大きい順に、点Ｂ２、点Ｃ２、点Ａ２、点Ｄ４となる。次に、基準点の順に合わせて、部分パスを、部分パス４０６、部分パス４０７、部分パス４０５、部分パス４０８の順序になるように変更する。次に、部分パス４０６，４０７，４０５，４０８を結合する（Ｓ５０６）。図４（ｄ）はＳ５０６の処理で接続された第２グリフデータのパスコマンドと座標の配列である。Ｓ５０６の処理を完了すると、グリフデータ変換部２０２は、グリフデータ変換処理（Ｓ３０２）を終了する。
【００２２】
なお、図５（ａ），（ｂ）では、部分パスの相対的な位置関係に応じ、かつ、所定の変更基準に従って複数の部分パスの開始点又は基準点を変更する例について説明したが、相対的な位置関係については他の方法であってもよい。例えば、部分パスを包含するＸ，Ｙ軸に平行な最小矩形（図形）を導出し、その図形におけるＸ座標の最大値、Ｙ座標の最大値を計算し、これにより開始点を変更するようにしてもよい。例えば、図４（ａ）に示される「阿」のグリフでは、部分パス４０５を包含する最小矩形のＸ座標とＹ座標が最大になる点は点Ａ２である。同様に、部分パス４０６では点Ｂ２、部分パス４０７では点Ｃ２、部分パス４０８では点Ｄ４となり、この場合、結果として得られるパスは図４（ｄ）に示したパスと一致する。
【００２３】
また、部分パスの相対的位置関係として、一の部分パスと他の部分パスとの包含関係を用いてもよい。例えば、包含関係にある部分パスが存在した場合、包含されている部分パスが先になるように順序を変更すると高速にパスを描画することができるラスタライザがあるとする。ここでの包含関係とは、２つの部分パスが交点を持たず、一方の部分パスのある点が他方の部分パスの内部に存在することとする。図４（ａ）において、部分パス４０８は部分パス４０７に包含されているので、部分パス４０７と部分パス４０８の順序を変更し、図４（ｅ）のような第２グリフデータが得られる。
【００２４】
また、反時計回りの部分パスが先になるように順序を変更すると高速にパスを描画することができるラスタライザであれば、部分パスが時計回りかどうかを判別し、判別結果に応じて部分パスの順序を変更してもよい。また、部分パスが時計回りかどうかの判別結果に応じて部分パスの開始点の変更を行ってもよい。また、時計回りよりも反時計回りの方が高速にパスを描画することができるラスタライザであれば、反時計回りの部分パスが多くなるように部分パスの頂点の順序を変更してもよい。図４（ａ）および図４（ｂ）に示した例では、時計回りの部分パスが３つで反時計回りの部分パスが１つとなっている。そこで、部分パスごとに頂点順を逆順に変更すると、図４（ｆ）に示したような第２グリフデータが得られる。
【００２５】
また、ある部分パスと領域が重なる部分パスについて、時計回りと反時計回りを入れ替えるようにしてもよい。なお、ＴｒｕｅＴｙｐｅのフォント仕様では、パスの描画方向に対して右側が塗りつぶされることになっているが、ラスタライザとしては、公知のノンゼロワインディング規則で描画する上ではどちらでも構わない。
【００２６】
ここまで、グリフデータ変換処理Ｓ３０２についてさまざまなパターンについて説明を行ったが、これら以外の変更基準に従って変換するように構成してもよいのはもちろんである。また、上記のパターンを組み合わせたものを変更基準としてもよい。
【００２７】
図３に戻り、グリフデータ変換処理Ｓ３０２を終了すると、グリフデータ出力部２０３は、グリフデータ変換部２０２で変換された第２グリフデータをＲＡＭ１０４に出力する（Ｓ３０３）。ＲＡＭ１０４上に出力された第２グリフデータは、ラスタライザに入力され、文字として描画される。同じグリフデータを複数回描画する場合は、第２グリフデータをキャッシュしておき、繰り返し用いることで、より効率的にラスタライザで描画処理を行うことが可能である。また、ＲＡＭ１０４に出力された第２グリフデータをＳ３０１でアクセスしたフォントデータに上書きすることにより、特定のラスタライザに最適化されたフォントデータを作成することが可能である。
【００２８】
以上説明したとおり、第１実施形態によれば、第１グリフデータを第２グリフデータに変換した上で、対象となっているラスタライザへ出力する。そのため、第１グリフデータと等価の描画結果を生じさせつつ、描画処理に要する処理時間を、変換前よりも、高速にすることができる。
【００２９】
［第２実施形態］
第２実施形態における文字処理装置１００の機能構成を示した機能構成例を図７に示す。これらの各機能部は、ＣＰＵ１０２が、本発明のコンピュータプログラムをＲＡＭ１０４に展開して実行することにより実現される。図２に示した第１実施形態と異なるのは、変更基準決定部７０１が追加された点である。変更基準決定部７０１は、第１グリフデータまたは第２グリフデータをラスター化するラスタライザの特性に応じて変更基準を決定する決定手段として機能する。第１実施形態で説明した変更基準は、この変更基準決定部７０１において決定したものを用いることができる。
【００３０】
図８（ａ）は第２実施形態による処理の全体手順例、同（ｂ）は変更基準決定処理の手順例を示す。Ｓは処理の工程を表す。第２実施形態では、まず、変更基準決定部７０１において変更基準決定処理を実行する（Ｓ８０１）。変更基準決定部７０１は、まず、所定のグリフデータとして、ラスタライザで描画した結果に影響がない等価なテストグリフパターンを複数用意する。そして、すべてのテストグリフパターンについて、以下の処理を行う（Ｓ８０３）。
ここでは、図９（ａ）〜（ｈ）に示される８つのテストグリフパターンを用意したとする。図９（ａ）〜（ｈ）において黒丸で示された点がテストグリフデータの開始点、矢印がパスの方向を示している。開始点の変更や方向（時計回りまたは反時計回り）の変更は、描画結果に影響を与えない。
【００３１】
まず、Ｎ個のうち１個目のテストグリフパターンとして、図９（ａ）の順序、方向で描画処理を行う（Ｓ８０４）。次に、そのテストグリフパターンの描画処理に要した時間を測定し（Ｓ８０５）、処理時間の測定結果をＲＡＭ１０４に格納する（Ｓ８０６）。Ｓ８０４〜Ｓ８０６の処理を、図９（ｂ）〜（ｈ）に示した他のテストグリフパターンについて同様に繰り返す。その後、図９（ａ）〜（ｈ）の各テストグリフパターンの描画処理に要した処理時間を分析し、最速であったものを抽出する（Ｓ８０７）。その後、抽出した処理時間に基づいて変更基準を決定する（Ｓ８０８）。例えば、Ｓ８０７の解析によれば最速のテストグリフパターンが図９（ｆ）に示したものであったとする。この場合、第１グリフデータあるいはその部分パスの開始点を左上に設定し、方向を反時計回りにすることを変更基準とする。
【００３２】
あるいはＳ８０７の解析によれば図９（ｇ）に示したテストグリフパターンが最速であったが、図９（ｃ）に示したテストグリフパターンの速度と有意な差が認められなかったとする。この場合は、方向は描画の高速化に寄与しないと判断し、開始点を右上に設定することを変更基準としてもよい。
【００３３】
ここでは、第１グリフデータの開始点と方向に注目したテストグリフパターンを用意したが、ラスタライザで描画した結果には影響がない等価なパターンであれば、他のテストグリフパターンであってもよい。
図９（ｉ）は、部分パスＡＢＣＤが先で部分パスＥＦＧＨが後になったテストグリフパターンを示している。図９（ｊ）は、部分パスＥＦＧＨが先になった、ラスタライザで描画した結果が図９（ｉ）に示したテストグリフパターンと同じになる等価なパターンである。この２つのテストグリフパターンの描画の処理速度を比較することで、部分パスの順序を右からに変換するか、または左からに変換するかを判定することが可能となる。
また、図９（ｉ）〜（ｊ）に示したテストグリフパターンについて、開始点や方向を変更したテストグリフパターンを追加し、Ｓ８０４〜Ｓ８０６の処理を行うことによって、さらに詳細な変更基準を決定することが可能である。また、図９（ｋ）〜（ｌ）に示したような、包含関係にある部分パスのテストグリフパターンを用意することによって、内側から外側に変換するか、外側から内側に変換するかを変更基準として決定することも可能である。
【００３４】
図８（ａ）に戻り、Ｓ８０１で変更基準を決定した後、文字処理装置１００は、すべての対象となるグリフについてＳ３０１〜Ｓ３０３の処理を行う（Ｓ８０２）。Ｓ３０１〜Ｓ３０３の処理については第１実施形態で説明した処理と同じなので、説明を省略する。
【００３５】
なお、第２実施形態では、テストグリフパターンをラスタライザで描画し、描画の処理速度の測定結果を比較することで変更基準を決定したが、他の方法によって決定されても構わない。例えば、変更基準決定部７０１において、ラスタライザに対して、パスの開始点の推奨位置、推奨方向、あるいは部分パスの推奨順序を取得し、その取得した値をもとに変更基準を決定してもよい。
【００３６】
以上説明したとおり、第２実施形態によれば、使用するラスタライザの特性や種類に応じて描画速度が速くなるように第１グリフデータを第２グリフデータに変換した上でラスタライザへ出力する。そのため、第１グリフデータと等価の描画結果を生じさせつつ、描画処理に要する処理時間を、より高速にすることができる。
【００３７】
なお、第１および第２実施形態では、グリフデータ変換部２０２において、部分パスの開始点と順序を変更する場合の例を説明したが、変更の態様を任意に変えることができる。例えば、複数の部分パスの順序を変更することなく、または、順序と共に少なくともいずれかの部分パスの開始点を変更するようにしてもよい。
【００３８】
また、本発明は、１以上の機能を実現するプログラムを、ネットワークまたは記憶媒体を介してシステムまたは装置に供給し、そのシステムまたは装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する態様でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
2017227795.tif 000003
【図２】
2017227795.tif 000004
【図３】
2017227795.tif 000005
【図４】
2017227795.tif 000006
【図５】
2017227795.tif 000007
【図６】
2017227795.tif 000008
【図７】
2017227795.tif 000009
【図８】
2017227795.tif 000010
【図９】
2017227795.tif 000011