(57)【要約】【課題】画像形成装置において、効果的にフォントのキャッシュを制御する。【解決手段】印刷対象の文字と前記印刷対象の文字のフォントファミリーとの入力を受け付ける描画制御部１６１と、入力された文字及びフォントファミリーの組み合わせに対応したパスハンドルを生成すること、及び、生成されたパスハンドルに基づいて、入力された文字及びフォントファミリーの組み合わせに対応したラスタデータを生成するグラフィックライブラリ１６４と、パスハンドルを一時的に記憶するＲＡＭ１３と、パスハンドルに含まれる曲線命令の数に基づいて、パスハンドルに関するパスハンドル優先度を計算すること、及び、計算されたパスハンドル優先度に基づいて、生成されたパスハンドルをキャッシュするか否かを判定し、判定結果が肯定的である場合、生成されたパスハンドルをＲＡＭ１３に記憶させるキャッシュ制御部１６２と、を備える。【選択図】図２
2010111088.tif 000002
【特許請求の範囲】
【請求項１】
印刷対象の文字と前記印刷対象の文字のフォントファミリーとの入力を受け付ける入力受付手段と、
前記入力された文字及びフォントファミリーの組み合わせに対応した第一のアウトライン特定データを生成する第一のアウトライン特定データ生成手段と、
前記生成された第一のアウトライン特定データに基づいて、前記入力された文字及びフォントファミリーの組み合わせに対応した画像形成用データを生成する画像形成用データ生成手段と、
前記第一のアウトライン特定データを一時的に記憶するキャッシュ手段と、
前記第一のアウトライン特定データに含まれる曲線命令の数に基づいて、前記第一のアウトライン特定データに関する優先度を計算する優先度計算手段と、
前記計算された優先度に基づいて、前記生成された第一のアウトライン特定データをキャッシュするか否かを判定し、前記判定結果が肯定的である場合、前記生成された第一のアウトライン特定データを前記キャッシュ手段に記憶させるキャッシュ制御手段と、
を備える画像形成装置。
【請求項２】
前記入力された文字及びフォントファミリーの組み合わせに対応した第二のアウトライン特定データを生成する第二のアウトライン特定データ生成手段、を更に備え、
前記第一のアウトライン特定データ生成手段は、前記生成された第二のアウトライン特定データに基づいて、前記入力された文字及びフォントファミリーの組み合わせに対応した第一のアウトライン特定データを生成し、
前記優先度計算手段は、前記第一のアウトライン特定データに含まれる曲線命令の数に基づいて、又は、前記第一のアウトライン特定データの代わりに前記第二のアウトライン特定データに含まれる曲線命令の数に基づいて優先度を計算し、
前記第一のアウトライン特定データ生成手段及び前記画像形成用データ生成手段は、OpenVGの仕様に準拠した入出力インタフェースを有し、
前記第一のアウトライン特定データは、OpenVGの仕様に準拠したデータ形式である、
請求項１記載の画像形成装置。
【請求項３】
前記優先度計算手段は、前記曲線命令の数に加えて直線命令の数に基づいて優先度を計算する、
請求項１又は２記載の画像形成装置。
【請求項４】
前記優先度計算手段は、前記曲線命令が二種類以上存在する場合、前記曲線命令が示す曲線の複雑度に応じた重み付けをして優先度を計算する、
請求項３記載の画像形成装置。
【請求項５】
前記優先度計算手段は、前記曲線命令を、当該曲線命令が示す曲線を表現する複数の直線のそれぞれを示す直線命令に置き換えた後、前記曲線命令の代わりに前記直線命令の数に基づいて優先度を計算する、
請求項３又は４記載の画像形成装置。
【請求項６】
キャッシュ可能な前記第一のアウトライン特定データの上限数が予め定められており、
前記キャッシュ手段には、第一のアウトライン特定データと当該第一のアウトライン特定データに関する優先度とが対応付けて記憶され、
前記キャッシュ制御手段は、キャッシュ済みの第一のアウトライン特定データの数がキャッシュ上限数に到達している場合、前記優先度計算手段によって計算された優先度が、キャッシュ済みの第一のアウトライン特定データのそれぞれに関する優先度のうち最も値の小さいもの以上であった場合、前記生成された第一のアウトライン特定データをキャッシュするものと判定する、
請求項１〜５のうちのいずれかに記載の画像形成装置。
【請求項７】
前記キャッシュ制御手段は、
キャッシュするか否かの判定基準として用いられる前記優先度の閾値を保持し、
前記優先度計算手段によって計算された優先度が前記閾値以上であった場合、前記生成された第一のアウトライン特定データをキャッシュするものと判定する、
請求項１〜５のうちのいずれかに記載の画像形成装置。
【請求項８】
印刷対象の文字と前記印刷対象の文字のフォントファミリーとの入力を受け付け、
前記入力された文字及びフォントファミリーの組み合わせに対応した第一のアウトライン特定データを生成し、
前記生成された第一のアウトライン特定データに基づいて、前記入力された文字及びフォントファミリーの組み合わせに対応した画像形成用データを生成し、
前記第一のアウトライン特定データに含まれる曲線命令の数に基づいて、前記第一のアウトライン特定データに関する優先度を計算し、
前記計算された優先度に基づいて、前記生成された第一のアウトライン特定データをキャッシュするか否かを判定し、前記判定結果が肯定的である場合、前記生成された第一のアウトライン特定データをキャッシュする、
画像形成方法。
【請求項９】
印刷対象の文字と前記印刷対象の文字のフォントファミリーとの入力を受け付け、
前記入力された文字及びフォントファミリーの組み合わせに対応した第一のアウトライン特定データを生成し、
前記生成された第一のアウトライン特定データに基づいて、前記入力された文字及びフォントファミリーの組み合わせに対応した画像形成用データを生成し、
前記第一のアウトライン特定データに含まれる曲線命令の数に基づいて、前記第一のアウトライン特定データに関する優先度を計算し、
前記計算された優先度に基づいて、前記生成された第一のアウトライン特定データをキャッシュするか否かを判定し、前記判定結果が肯定的である場合、前記生成された第一のアウトライン特定データをキャッシュする、
画像形成方法を実現するコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置に関し、特に、文字画像を印刷する場合におけるフォントのキャッシュに関する。
【背景技術】
【０００２】
例えば、特許文献１には、表示装置や印字装置等の出力装置において、所定数以下の文字のそれぞれについてそのラスタデータをキャッシュしておき、キャッシュ済みの文字については、再度ラスタデータの生成を行わずに出力する技術が開示されている。特許文献１では、キャッシュ優先度としてコスト情報を利用することで、キャッシュヒット率を向上させて出力処理の高速化を図っている。コスト情報としては、文字の出現頻度等が採用される。
【０００３】
【特許文献１】特開平６−１９５０５７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
一般に、プリンタ等の画像形成装置においては、印刷のための文字のフォントとしてアウトラインフォントが採用される。アウトラインフォントが採用される場合、文字の印刷時には、例えば、その文字のアウトラインを特定するためのデータ（以下、「アウトライン特定データ」）が生成され、生成されたアウトライン特定データからラスタデータが生成される。そして、生成されたラスタデータに基づいて文字の印刷が行われる。
【０００５】
プリンタ等の画像形成装置にも上述した技術を適用することができ、アウトライン特定データ或いはラスタデータのキャッシュの制御を、コスト情報に基づいて行うことができる。
【０００６】
しかしながら、画像形成装置が行うグラフィック画像の印刷においては、印刷対象の画像に文字が含まれることがそれ程多くはないため、文字の出現頻度に基づいて、キャッシュするか否かを決定することは効果的でない。
【０００７】
そこで、本発明の目的は、画像形成装置において、効果的にフォントのキャッシュを制御することである。
【課題を解決するための手段】
【０００８】
本発明に従う画像形成装置は、印刷対象の文字と前記印刷対象の文字のフォントファミリーとの入力を受け付ける入力受付手段と、前記入力された文字及びフォントファミリーの組み合わせに対応した第一のアウトライン特定データを生成する第一のアウトライン特定データ生成手段と、前記生成された第一のアウトライン特定データに基づいて、前記入力された文字及びフォントファミリーの組み合わせに対応した画像形成用データを生成する画像形成用データ生成手段と、前記第一のアウトライン特定データを一時的に記憶するキャッシュ手段と、前記第一のアウトライン特定データに含まれる曲線命令の数に基づいて、前記第一のアウトライン特定データに関する優先度を計算する優先度計算手段と、前記計算された優先度に基づいて、前記生成された第一のアウトライン特定データをキャッシュするか否かを判定し、前記判定結果が肯定的である場合、前記生成された第一のアウトライン特定データを前記キャッシュ手段に記憶させるキャッシュ制御手段と、を備える。
【０００９】
本発明に係る好適な実施形態では、前記入力された文字及びフォントファミリーの組み合わせに対応した第二のアウトライン特定データを生成する第二のアウトライン特定データ生成手段、を更に備え、前記第一のアウトライン特定データ生成手段は、前記生成された第二のアウトライン特定データに基づいて、前記入力された文字及びフォントファミリーの組み合わせに対応した第一のアウトライン特定データを生成し、前記優先度計算手段は、前記第一のアウトライン特定データに含まれる曲線命令の数に基づいて、又は、前記第一のアウトライン特定データの代わりに前記第二のアウトライン特定データに含まれる曲線命令の数に基づいて優先度を計算し、前記第一のアウトライン特定データ生成手段及び前記画像形成用データ生成手段は、OpenVGの仕様に準拠した入出力インタフェースを有し、前記第一のアウトライン特定データは、OpenVGの仕様に準拠したデータ形式であってもよい。
【００１０】
本発明に係る好適な実施形態では、前記優先度計算手段は、前記曲線命令の数に加えて直線命令の数に基づいて優先度を計算してもよい。
【００１１】
本発明に係る好適な実施形態では、前記優先度計算手段は、前記曲線命令が二種類以上存在する場合、前記曲線命令が示す曲線の複雑度に応じた重み付けをして優先度を計算してもよい。
【００１２】
本発明に係る好適な実施形態では、前記優先度計算手段は、前記曲線命令を、当該曲線命令が示す曲線を表現する複数の直線のそれぞれを示す直線命令に置き換えた後、前記曲線命令の代わりに前記直線命令の数に基づいて優先度を計算してもよい。
【００１３】
本発明に係る好適な実施形態では、キャッシュ可能な前記第一のアウトライン特定データの上限数が予め定められており、前記キャッシュ手段には、第一のアウトライン特定データと当該第一のアウトライン特定データに関する優先度とが対応付けて記憶され、前記キャッシュ制御手段は、キャッシュ済みの第一のアウトライン特定データの数がキャッシュ上限数に到達している場合、前記優先度計算手段によって計算された優先度が、キャッシュ済みの第一のアウトライン特定データのそれぞれに関する優先度のうち最も値の小さいもの以上であった場合、前記生成された第一のアウトライン特定データをキャッシュするものと判定してもよい。
【００１４】
本発明に係る好適な実施形態では、前記キャッシュ制御手段は、キャッシュするか否かの判定基準として用いられる前記優先度の閾値を保持し、前記優先度計算手段によって計算された優先度が前記閾値以上であった場合、前記生成された第一のアウトライン特定データをキャッシュするものと判定してもよい。
【発明を実施するための最良の形態】
【００１５】
以下、図面を参照しながら本発明の実施形態について詳細に説明する。
【００１６】
図１は、本発明の一実施形態に係るプリンタ１の構成例を示す図である。
【００１７】
プリンタ１は、例えば、ＣＰＵ（Central Processing Unit）１１と、ＲＯＭ（Read Only Memory）１２と、ＲＡＭ（Random Access Memory）１３と、ユーザＩ／Ｆ（インタフェース）部１４と、画像形成部１５とを備える。ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、ユーザＩ／Ｆ部１４及び画像形成部１５は、バス１７を介して接続される。
【００１８】
ＲＯＭ１２は、例えば、ブートプログラム、画像形成部１５を制御するための画像形成制御プログラム、文字描画処理部１６の機能を実現するための文字描画処理プログラム等の各種のプログラムを記憶する。ＲＡＭ１３は、プログラムやデータを記憶する領域として、或いは、ＣＰＵ１１による処理に使用しているデータを格納する作業領域として利用される。ユーザＩ／Ｆ部１４は、ユーザの操作を受け付けるとともにユーザに提示すべき各種画面を表示する装置である。ユーザＩ／Ｆ部１４としては、例えば、タッチパネル等が採用される。画像形成部１５は、例えば、紙、ＯＨＰシート、厚紙、封筒等の画像形成媒体に画像を形成する装置である。画像形成部１５は、例えば、文字描画処理部１６から入力されたラスタデータに基づいて、その入力されたラスタデータが表す文字（或いは文字列）の画像を、画像形成媒体に形成する。
【００１９】
ＣＰＵ１１は、ＲＯＭ１２に格納されているプログラムをＲＡＭ１３に読み出して実行することにより、各部１２〜１５の動作を制御する。例えば、ＣＰＵ１１は、画像形成制御プログラムを実行することにより、画像形成部１５の動作を制御する。また、ＣＰＵ１１は、文字描画処理プログラムを実行することにより、文字描画処理部１６の機能を実現する。文字描画処理部１６は、入力された文字（或いは文字列）の描画を行って、その文字（或いは文字列）に対応するラスタデータを生成する処理（以下、「文字描画処理」）を行う処理部である。文字描画処理の詳細については、後述する。
【００２０】
図２は、文字描画処理部１６の機能構成の一例を示す図である。
【００２１】
文字描画処理部１６は、例えば、描画制御部１６１と、キャッシュ制御部１６２と、フォント処理部１６３と、グラフィックライブラリ１６４とを備える。
【００２２】
描画制御部１６１は、文字描画処理部１６の全体を制御して文字描画処理を実行する。フォント処理部１６３は、対象とする文字（例えば、平仮名、片仮名、英数字、記号、漢字等）のフォントに関する情報を管理する。また、フォント処理部１６３は、入力された文字及びフォントの名称（フォントファミリー）の組み合わせに対応した、文字のアウトラインを特定するためのデータ（アウトライン特定データ）を生成する。本実施形態では、フォント処理部１６３が生成する、アウトライン特定データを「アウトラインデータ」と呼ぶ。尚、文字のアウトラインは、一以上の線分（直線又は曲線）が組み合わされることにより形成される。本実施形態では、文字のアウトラインを形成する個々の線分のことを「パス」と呼ぶ。
【００２３】
以下、図３（図３Ａ，３Ｂ）を参照して、アウトライン特定データについて説明する。ここでは、アウトライン特定データが、ＳＶＧ（Scalable Vector Graphics）と呼ばれる、ベクター画像の記述言語で定義された場合を例に採って説明する。
【００２４】
図３Ａは、アウトライン特定データを説明するためのＸＭＬ（Extensible Markup Language）文書３０の例である。
【００２５】
図３ＡのＸＭＬ文書３０中には、“Ｓ”、“Ｖ”及び“Ｇ”の各文字について、ＳＶＧによってフォントが定義されている。符号３１は、文字“Ｓ”に関するフォントを定義している箇所である。符号３２は、文字“Ｖ”に関するフォントを定義している箇所である。符号３３は、文字“Ｇ”に関するフォントを定義している箇所である。
【００２６】
それぞれのフォントの定義箇所３１，３２，３３には、アウトライン特定データ３４，３５，３６が含まれている。符号３４は、文字“Ｓ”に関するアウトライン特定データである。符号３５は、文字“Ｖ”に関するアウトライン特定データである。符号３６は、文字“Ｇ”に関するアウトライン特定データである。図３Ａに示されるように、アウトライン特定データ３４，３５，３６は、パスを描画することの命令（英字で示されたものであり、以下、「パス命令」という）と、その命令が適用される座標位置（数字で示されたもの）との組み合わせを、一以上含んだデータとなっている。例えば、文字“Ｖ”に関するアウトライン特定データ３５には、四つのパス命令“Ｌ”と、二つのパス命令“Ｈ”とが含まれている。後述するが、パス命令“Ｌ”は直線を描画することの命令を、パス命令“Ｈ”は水平線を描画することの命令をそれぞれ示している。従って、文字“Ｖ”のアウトライン特定データ３５は、四つの直線と二つの水平線とをそれぞれ描画することにより、文字“Ｖ”の描画が行われることを示している（言い換えると、文字“Ｖ”のアウトラインが、四つの直線と二つの水平線とから形成されることを示している）。図３Ａに示したようにフォントが定義された場合、文字列“ＳＶＧ”は、例えば、図３Ｂに示したように描画される。
【００２７】
尚、フォント処理部１６３が生成するアウトライン特定データ（アウトラインデータ）は、ＳＶＧで定義されたアウトライン特定データとはデータ形式が異なるが、基本的には、ＳＶＧで定義されたアウトライン特定データと同様の情報を含んでいる。即ち、フォント処理部１６３が生成するアウトライン特定データ（アウトラインデータ）も、パス命令と、そのパス命令が適用される座標位置との組み合わせを一以上含んだデータとなっている。
【００２８】
以上が、アウトライン特定データの説明である。以下、図２に戻って、文字描画処理部１６の説明を続ける。
【００２９】
グラフィックライブラリ１６４は、文字や図形等の描画のための汎用的なＡＰＩ（Application Programming Interface）（以下、「描画用ＡＰＩ」）を提供する。描画用ＡＰＩとしては、例えば、OpenVGやGDI+等が採用される。描画用ＡＰＩには、例えば、パスハンドルを生成するためのＡＰＩ（以下、「パスハンドル生成ＡＰＩ」）や、パスハンドルに対応した文字の描画を行うためのＡＰＩ（以下、「文字描画ＡＰＩ」）等が含まれる。ここで、パスハンドルとは、グラフィックライブラリ１６４において定義されたデータ構造を持つアウトライン特定データである。パスハンドルは、文字及びフォントファミリーの組み合わせごとに生成される。尚、上述したアウトラインデータもパスハンドルも、アウトライン特定データ（即ち、文字のアウトライン（文字のアウトラインを形成する個々のパス）を特定するためのデータ）であるが、両者は、データ構造が異なっている。文字描画処理部１６は、汎用的なＡＰＩである描画用ＡＰＩを利用して文字の描画を行うため、アウトラインデータをパスハンドルへ変換する。パスハンドルには、アウトラインデータと同様に、複数のパス命令が含まれている。
【００３０】
以下に、文字描画処理部１６によって行われる文字描画処理の概要を説明する。
【００３１】
まず、描画制御部１６１は、印刷対象の文字を示す情報（例えば、文字コード）と、印刷対象の文字のフォントファミリーとの入力を受け付ける。以下、描画制御部１６１が入力を受け付けた文字を「入力文字」と呼び、描画制御部１６１が入力を受け付けたフォントファミリーを「入力フォントファミリー」と呼ぶ。
【００３２】
次に、描画制御部１６１は、入力文字及び入力フォントファミリーの組み合わせに対応したアウトラインデータの生成を、フォント処理部１６３に要求する。この際、描画制御部１６１は、入力文字を示す情報（文字コード）と、入力フォントファミリーとを、フォント処理部１６３に通知する。アウトラインデータの生成要求を受けたフォント処理部１６３は、通知された文字及びフォントファミリーの組み合わせに対応したアウトラインデータを生成し、生成したアウトラインデータを描画制御部１６１に渡す。
【００３３】
アウトラインデータを受け取った描画制御部１６１は、グラフィックライブラリ１６４が提供するパスハンドルＡＰＩを呼び出して、入力文字及び入力フォントファミリーの組み合わせに対応したパスハンドルを、グラフィックライブラリ１６４に生成させる。具体的には、描画制御部１６４は、入力文字及び入力フォントファミリーの組み合わせに対応したアウトラインデータを指定して、パスハンドルＡＰＩを呼び出す。パスハンドルＡＰＩが呼び出されると、グラフィックライブラリ１６４は、指定されたアウトラインデータに基づいて、入力文字及び入力フォントファミリーの組み合わせに対応したパスハンドルを生成する。そして、グラフィックライブラリ１６４は、生成したパスハンドルを描画制御部１６１へ渡す。
【００３４】
パスハンドルを受け取った描画制御部１６１は、グラフィックライブラリ１６４が提供する文字描画ＡＰＩを呼び出して、入力文字を入力フォントファミリーが示すフォントで描画して、入力文字及び入力フォントファミリーの組み合わせに対応したラスタデータを、グラフィックライブラリ１６４に生成させる。具体的には、描画制御部１６１は、入力文字及び入力フォントファミリーの組み合わせに対応したパスハンドルを指定して、文字描画ＡＰＩを呼び出す。文字描画ＡＰＩが呼び出されると、グラフィックライブラリ１６４は、指定されたパスハンドルに基づいて、入力文字を入力フォントファミリーが示すフォントで描画して、入力文字及び入力フォントファミリーの組み合わせに対応したラスタデータを生成する。そして、グラフィックライブラリ１６４は、生成したラスタデータを描画制御部１６１へ渡す。
【００３５】
その後、描画制御部１６１は、グラフィックライブラリ１６４から受け取ったラスタデータを画像形成部１５に入力する。ラスタデータの入力を受け付けた画像形成部１５は、入力されたラスタデータが表す文字の画像を、画像形成媒体に形成する。
【００３６】
以上が、文字描画処理の概要である。本実施形態において、文字描画処理部１６は、グラフィックライブラリ１６４によって生成されたパスハンドルをキャッシュしておく（即ち、ＲＡＭ１３に記憶しておく）。これにより、キャッシュ済みのパスハンドルに対応した文字及びフォントファミリーの組み合わせについては、再度、フォント処理部１６３にアウトラインデータの生成を行わせることなく、且つ、グラフィックライブラリ１６４にパスハンドルの生成を行わせることなく、対応した文字を描画することが可能となる。尚、キャッシュ可能なパスハンドルの上限数（以下、「キャッシュ上限数」）は、ＲＡＭ１３の容量等を考慮して、予め定められる。そのため、キャッシュ済みのパスハンドルの数がキャッシュ上限数に到達している場合は、新たに生成されたパスハンドルのキャッシュは、キャッシュ済みのパスハンドルのいずれかを削除した上で行うことになる（即ち、キャッシュ済みのパスハンドルのいずれかと入れ替えて新たに生成されたパスハンドルをキャッシュすることになる）。
【００３７】
キャッシュ制御部１６２は、グラフィックライブラリ１６４によって生成されたパスハンドルのキャッシュを制御する。具体的には、キャッシュ制御部１６２は、キャッシュ済みのパスハンドルの数がキャッシュ上限数に到達している場合、パスハンドルが新たに生成されるごとに、その生成されたパスハンドルをキャッシュするか否かを判定する。この判定は、例えば、パスハンドルごと（即ち、文字及びフォントファミリーの組み合わせごと）に計算された優先度に基づいて行われる。以下、このパスハンドルごと（文字及びフォントファミリーの組み合わせごと）に計算される優先度を「パスハンドル優先度」と呼ぶ。
【００３８】
パスハンドル優先度は、例えば、その優先度を持つ文字及びフォントファミリーの組み合わせに対応したアウトラインデータに基づいて、或いはその優先度を持つパスハンドル自身に基づいて計算される。具体的には、パスハンドル優先度は、アウトラインデータ或いはパスハンドルに含まれるパス命令の種類（種類ごとに予め定められたポイント値）及びそのパス命令の数に基づいて、以下の数式により計算される。尚、Ｎ（Ｎは自然数）は、アウトラインデータ或いはパスハンドルに含まれるパス命令の総数である。ポイント値の詳細については、後述する。以下では、パスハンドル優先度が、アウトラインデータに基づいて計算されるものとして説明する。
【００３９】
パスハンドル優先度  ＝  （第一のパス命令の数）×（第一のパス命令のポイント値）
＋（第二のパス命令の数）×（第二のパス命令のポイント値）
＋（第三のパス命令の数）×（第三のパス命令のポイント値）
：
＋（第Ｎのパス命令の数）×（第Ｎのパス命令のポイント値）
キャッシュ制御部１６２は、キャッシュ済みのパスハンドルの数がキャッシュ上限数に到達している場合において、パスハンドルが新たに生成されたとき、新たに生成されたパスハンドルのパスハンドル優先度を、上記の数式に従って計算する。そして、キャッシュ制御部１６２は、新たに生成されたパスハンドルのパスハンドル優先度と、キャッシュ済みのパスハンドルのそれぞれのパスハンドル優先度のうち最も値の小さいもの（以下、「最下位優先度」）とを比較する。尚、ＲＡＭ１３には、キャッシュ済みのパスハンドルのそれぞれのパスハンドル優先度が、その優先度を持つパスハンドルと対応付けて記憶されている。従って、キャッシュ制御部は、ＲＡＭ１３に記憶されている複数のパスハンドル優先度の中から最下位優先度を選択することができる。新たに生成されたパスハンドルのパスハンドル優先度が最下位優先度以上であった場合、キャッシュ制御部１６２は、最下位優先度を持つパスハンドルをＲＡＭ１３から削除して、新たに生成されたパスハンドルをキャッシュする。この際、キャッシュ制御部１６２は、新たに生成されたパスハンドルのパスハンドル優先度を、新たに生成されたパスハンドルに対応付けてＲＡＭ１３に記憶する。キャッシュ制御部１３２は、その後にキャッシュするか否かの判定を行う際に、このＲＡＭ１３に記憶されたパスハンドル優先度を参照する。
【００４０】
図４は、パス命令の種類ごとに定められるポイント値の一例を示す図である。
【００４１】
図４には、幾つかのパス命令の例と、そのポイント値の例とが記されている。尚、図４では、アウトラインデータに含まれるパス命令４１は、ＳＶＧで定義された場合におけるアウトラインデータのパス命令を示している。また、パスハンドルに含まれるパス命令４２は、描画用ＡＰＩとしてOpenVGが採用された場合におけるパスハンドルのパス命令を示している。
【００４２】
例えば、アウトラインデータに含まれるパス命令“Ｌ”は、パスハンドルに含まれるパス命令“MOVE_TO”と同種であり、直線を描画することのパス命令（以下、「直線命令」）である。また、アウトラインデータに含まれるパス命令“Ｑ”は、パスハンドルに含まれるパス命令“QUAD_TO”と同種であり、二次ベジェ曲線を描画することのパス命令（以下、「二次ベジェ命令」）である。同様に、アウトラインデータに含まれるパス命令“Ｃ”は、パスハンドルに含まれるパス命令“CUBIC_TO”と同種であり、三次ベジェ曲線を描画することの命令（以下、「三次ベジェ命令」）である。二次ベジェ命令及び三次ベジェ命令は、曲線を描画することの命令（以下、「曲線命令」）に属する。その他様々なパス命令が存在する。
【００４３】
通常、アウトラインデータの生成に要する処理量は、アウトラインを形成するパスが曲線である場合の方が、直線である場合よりも大きい。即ち、アウトラインを形成するパスが曲線である場合の方が、直線である場合よりも、アウトラインデータの生成により多くの時間を要する。例えば、アウトラインがＸ個の曲線で形成される文字は、アウトラインがＸ個の直線で形成される文字に比較して、アウトラインデータの生成により多くの時間を要する。従って、例えば、曲線命令のポイント値は、直線命令のポイント値よりも大きく設定される。
【００４４】
また、アウトラインを形成するパスがより複雑な曲線であるほど、アウトラインデータの生成に要する処理量は大きく、アウトラインデータの生成により多くの時間を要する。例えば、三次ベジェ曲線は、二次ベジェ曲線よりも制御点の数が多く、二次ベジェ曲線よりも複雑な曲線である。そのため、例えば、アウトラインがＸ個の三次ベジェ曲線で形成される文字は、アウトラインがＸ個の二次ベジェ曲線で形成される文字に比較して、アウトラインデータの生成により多くの時間を要する。従って、例えば、曲線が複雑なものほど、その曲線を描画することのパス命令のポイント値は、大きく設定される。
【００４５】
更に、アウトラインデータの生成に要する処理量のうち直線部分に関する処理量（直線命令を示すデータを生成する処理量）が、曲線部分に関する処理量（曲線命令を示すデータを生成する処理量）に比較して極めて小さい場合は、直線部分に関する処理量を無視することもできる。この場合は、例えば、直線命令のポイント値を、“０”とすることができる。
【００４６】
図４の例では、直線命令のポイント値は、“０”に（即ち、直線を考慮しないように）設定されている。また、三次次ベジェ命令のポイント値は、二次ベジェ命令のポイント値（“３”）よりも大きい値（“５”）に設定されている。
【００４７】
このように、曲線命令のポイント値を直線命令のポイント値よりも大きく設定し、また、より複雑な曲線に関する曲線命令のポイント値をより大きく設定した場合、アウトラインデータの生成に要する処理量がより大きな文字及びフォントファミリーの組み合わせほど、それに対応したパスハンドル優先度は大きくなる。従って、キャッシュ制御部１６２は、アウトラインデータの生成に要する処理量がより大きな文字及びフォントファミリーの組み合わせほど、それに対応したパスハンドルを優先してキャッシュすることができる。つまり、アウトラインデータの生成に多くの処理時間を要する文字及びフォントファミリーの組み合わせについては、パスハンドルを優先してキャッシュしておき、再度、アウトラインデータ及びパスハンドルの生成を行うことなく、対応した文字を描画することが可能となる。
【００４８】
尚、パス命令の種類を考慮せずに、パス命令の数が多いものほど、アウトラインデータの生成に要する処理量が大きいものとして、パスハンドル優先度が大きくなるようにしてもよい。この場合は、例えば、全てのパス命令のポイント値を、“１”とすることができる。また、直線命令を無視した上で、パス命令の種類を考慮しないようにしてもよい。この場合は、例えば、直線命令のポイント値を“０”とし、曲線命令のポイント値を“１”することができる。
【００４９】
また、曲線は、複数の直線で近似して表現することもできる。従って、アウトラインデータに含まれる全ての曲線命令の各々を、複数の直線命令（即ち、曲線命令が示す曲線を表現する複数の直線のそれぞれを描画することの命令）に置き換えた上で、直線命令のみに基づいて、パスハンドル優先度を計算することもできる。この場合は、直線命令のポイント値は、“０”以外の値とされる。
【００５０】
図５は、本実施形態に係る文字描画処理のフローチャートである。
【００５１】
描画制御部１６１が、印刷対象の文字を示す情報（例えば、文字コード）と、印刷対象の文字のフォントファミリーとの入力を受け付けると、文字描画処理が開始される。
【００５２】
まず、描画制御部１６１は、入力を受け付けた文字（入力文字）及び入力を受け付けたフォントファミリー（入力フォントファミリー）の組み合わせに対応したパスハンドルが、キャッシュ済みか否かを判定する（Ｓ１０１）。
【００５３】
入力文字及び入力フォントファミリーの組み合わせに対応したパスハンドルがキャッシュ済みの場合は（Ｓ１０１：ＹＥＳ）、描画制御部１６１は、そのキャッシュ済みのパスハンドルを取得する（ＲＡＭ１３から読み出す）（Ｓ１１１）。その後、描画制御部１６１は、Ｓ１０９の処理を行う。
【００５４】
一方、入力文字及び入力フォントファミリーの組み合わせに対応するパスハンドルがキャッシュされていない場合は（Ｓ１０１：ＮＯ）、描画制御部１６１は、入力文字及び入力フォントファミリーの組み合わせに対応するアウトラインデータの生成を、フォント処理部１６３に要求する（Ｓ１０２）。要求を受けたフォント処理部１６３は、入力文字及び入力フォントファミリーの組み合わせに対応するアウトラインデータを生成し、生成したアウトラインデータを描画制御部１６１に渡す。
【００５５】
その後、描画制御部１６１は、Ｓ１０２で生成されたアウトラインデータを指定してパスハンドル生成ＡＰＩを呼び出し、入力文字及び入力フォントファミリーの組み合わせに対応したパスハンドルをグラフィックライブラリ１６４に生成させる（Ｓ１０３）。
【００５６】
その後、キャッシュ制御部１６２は、Ｓ１０２で生成されたアウトラインデータに基づいて、Ｓ１０３で生成されたパスハンドルのパスハンドル優先度（入力文字及び入力フォントファミリーの組み合わせに関するパスハンドル優先度）を計算する（Ｓ１０４）。
【００５７】
その後、キャッシュ制御部１６２は、キャッシュ済みのパスハンドルの数が、キャッシュ可能なパスハンドルの上限数（キャッシュ上限数）に到達しているか否かを判定する（Ｓ１０５）。
【００５８】
キャッシュ済みのパスハンドルの数がキャッシュ上限数に到達していない場合は（Ｓ１０５：ＮＯ）、Ｓ１０８の処理が行われる。
【００５９】
一方、キャッシュ済みのパスハンドルの数がキャッシュ上限数に到達している場合は（Ｓ１０５：ＹＥＳ）、キャッシュ制御部１６２は、Ｓ１０４で計算されたパスハンドル優先度と、キャッシュ済みのパスハンドルのそれぞれのパスハンドル優先度のうち最も値の小さいもの（最下位優先度）とを比較する。そして、キャッシュ制御部１６２は、Ｓ１０４で計算されたパスハンドル優先度が、最下位優先度以上か否かを判定する（Ｓ１０６）。
【００６０】
Ｓ１０４で計算されたパスハンドル優先度が最下位優先度より小さい場合は（Ｓ１０６：ＮＯ）、Ｓ１０９の処理が行われる。
【００６１】
一方、Ｓ１０４で計算されたパスハンドル優先度が最下位優先度以上の場合は（Ｓ１０６：ＹＥＳ）、キャッシュ制御部１６２は、最下位優先度を持つパスハンドルをキャッシュから削除する（Ｓ１０７）。
【００６２】
Ｓ１０８では、キャッシュ制御部１６２は、Ｓ１０３で生成されたパスハンドルをキャッシュする。
【００６３】
Ｓ１０９では、描画制御部１６１は、Ｓ１０３で生成されたパスハンドルを指定して文字描画ＡＰＩを呼び出し、入力文字及び入力フォントファミリーの組み合わせに対応したラスタデータをグラフィックライブラリ１６４に生成させる。
【００６４】
その後、描画制御部１６１は、Ｓ１０９で生成されたラスタデータを画像形成部１５に入力して、入力したラスタデータが表す文字の画像の形成を、画像形成部１５に行わせる（Ｓ１１０）。
【００６５】
上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱することなく、その他の様々な態様でも実施することができる。
【００６６】
本実施形態では、キャッシュ上限数が予め定められ、そのキャッシュ上限数の範囲内で、パスハンドル優先度のより大きいパスハンドルがキャッシュされたが、必ずしもこのようなやり方に限定されない。例えば、キャッシュするか否かの判定基準となるパスハンドル優先度の閾値を予め設定しておき、生成されたパスハンドルのパスハンドル優先度が閾値以上であれば、その生成されたパスハンドルをキャッシュするようにしてもよい。
【図面の簡単な説明】
【００６７】
【図１】本発明の一実施形態に係るプリンタの構成例を示す図である。
【図２】文字描画処理部１６の機能構成の一例を示す図である。
【図３】図３Ａは、アウトライン特定データを説明するためのＸＭＬ文書の例である。図３Ｂは、図３Ａに示したようにフォントが定義された場合における、文字列“ＳＶＧ”の描画例である。
【図４】パス命令の種類ごとに定められるポイント値の一例を示す図である。
【図５】本実施形態に係る文字描画処理のフローチャートである。
【符号の説明】
【００６８】
１…プリンタ、１１…ＣＰＵ、１２…ＲＯＭ、１３…ＲＡＭ、１４…ユーザＩ／Ｆ部、１５…画像形成部、１６…文字描画処理部、１７…バス
【図１】
2010111088.tif 000003
【図２】
2010111088.tif 000004
【図３】
2010111088.tif 000005
【図４】
2010111088.tif 000006
【図５】
2010111088.tif 000007