(57)【要約】【課題】グリフ検索による文字描画処理において、合成文字に関しての描画処理時間を短縮する。【解決手段】文字データ登録コマンド実行部４４０は、グリフを含む描画指示を受け取ったとき、コンポジットグリフとシンプルグリフの双方を第１検索テーブルTBL1に登録するとともに、シンプルグリフは第２検索テーブルTBL2にも登録する。文字描画時には、文字描画コマンド実行部４６０は、各グリフを第１検索テーブルTBL1から読み出し、シンプルグリフのときはそのまま読み出したシンプルグリフに基づく文字描画を指示する。コンポジットグリフのときには、それを構成する部品グリフを第２検索テーブルTBL2の検索による文字描画を指示する。【選択図】図２
2010217819.tif 000002
【特許請求の範囲】
【請求項１】
字形の定義情報を記憶する複数の文字定義情報記憶部と、
字形の定義情報を含む描画指示を受け取ったとき、前記描画指示に含まれる各文字について、前記字形の定義情報が字形そのものを定義する字形定義情報であるのか定義情報の組合せを定義する組合せ定義情報であるのかに応じて、各字形の定義情報を前記複数の文字定義情報記憶部の何れへ登録するかを切り替える文字情報登録部と、
前記描画指示に含まれる各文字について、処理対象の文字に対応する前記字形の定義情報を前記複数の文字定義情報記憶部から読み出して文字の描画処理を行なうように指示する文字描画処理指示部と、
を備えた描画処理装置。
【請求項２】
前記文字情報登録部は、
前記字形の定義情報が前記字形定義情報であるのか前記組合せ定義情報であるのかに関わらず全ての前記字形の定義情報を第１の前記文字定義情報記憶部に登録するとともに、
前記字形定義情報についてはさらに第２の前記文字定義情報記憶部にも登録する
請求項１に記載の描画処理装置。
【請求項３】
前記文字描画処理指示部は、
処理対象の文字に対応する前記字形の定義情報を前記第１の文字定義情報記憶部から読み出したとき、
読み出した字形の定義情報が前記字形定義情報であるときは、その前記字形定義情報に基づく描画処理を指示し、
読み出した字形の定義情報が前記組合せ定義情報であるときは、前記組合せ定義情報で規定されている定義情報を前記第２の文字定義情報記憶部から読み出して文字の描画処理を指示する
請求項２に記載の描画処理装置。
【請求項４】
前記文字描画処理指示部は、
前記組合せ定義情報で規定されている定義情報を前記第２の文字定義情報記憶部から読み出すことができないときには、さらに前記第１の文字定義情報記憶部から読み出して文字の描画処理を指示する
請求項３に記載の描画処理装置。
【請求項５】
前記文字情報登録部は、前記第１の文字定義情報記憶部から読み出した前記組合せ定義情報で規定されている定義情報に基づく前記文字の描画処理が完了した後には、前記組合せ定義情報で規定されている定義情報を前記第２の文字定義情報記憶部にも登録する
請求項４に記載の描画処理装置。
【請求項６】
前記文字情報登録部は、
前記字形の定義情報が前記字形定義情報であるのか前記組合せ定義情報であるのかに関わらず全ての前記字形の定義情報を第１の前記文字定義情報記憶部に登録するとともに、
前記字形定義情報と前記組合せ定義情報の内、文字の書体に占める構成率の少ない方をさらに第２の前記文字定義情報記憶部にも登録する
請求項１に記載の描画処理装置。
【請求項７】
前記文字描画処理指示部は、
前記組合せ定義情報で規定されている定義情報を一方の前記文字定義情報記憶部から読み出すことができないときには、さらに他方の前記文字定義情報記憶部から読み出して文字の描画処理を指示する
請求項６に記載の描画処理装置。
【請求項８】
前記文字情報登録部は、前記他方の文字定義情報記憶部から読み出した前記組合せ定義情報で規定されている定義情報に基づく前記文字の描画処理が完了した後には、前記組合せ定義情報で規定されている定義情報を前記一方の文字定義情報記憶部にも登録する
請求項７に記載の描画処理装置。
【請求項９】
前記文字情報登録部は、前記字形定義情報と前記組合せ定義情報を、それぞれ異なる前記文字定義情報記憶部に登録する
請求項１に記載の描画処理装置。
【請求項１０】
前記字形定義情報で規定される文字の字体画像を記憶する文字画像記憶部をさらに備え、
前記文字描画処理指示部は、
処理対象の文字の字体画像が前記文字画像記憶部に記憶されているときには前記文字画像記憶部から前記処理対象の文字の字体画像を読み出して文字の描画処理を行なうように指示し、
前記処理対象の文字の字体画像が前記文字画像記憶部に記憶されていないときには前記処理対象の文字に対応する前記字形の定義情報を前記複数の文字定義情報記憶部から読み出して文字の描画処理を行なうように指示する
請求項１〜９の内の何れか一項に記載の描画処理装置。
【請求項１１】
前記文字情報登録部は、前記文字定義情報記憶部から読み出した前記定義情報に基づく前記文字の描画処理が完了した後には、描画された文字の字体画像を前記文字画像記憶部に登録する
請求項１０に記載の描画処理装置。
【請求項１２】
前記組合せ定義情報で規定される文字を構成する各部品文字の字体画像を記憶する部品画像記憶部をさらに備え、
前記文字描画処理指示部は、
前記組合せ定義情報で規定される部品文字の字体画像が前記部品画像記憶部に記憶されているときには前記部品画像記憶部から前記組合せ定義情報で規定される部品文字の字体画像を読み出して部品文字の描画処理を行なうように指示し、
前記組合せ定義情報で規定される部品文字の字体画像が前記部品画像記憶部に記憶されていないときには前記組合せ定義情報を前記複数の文字定義情報記憶部から読み出して部品文字の描画処理を行なうように指示する
請求項１〜１１の内の何れか一項に記載の描画処理装置。
【請求項１３】
前記文字情報登録部は、前記文字定義情報記憶部から読み出した前記定義情報に基づく前記組合せ定義情報で規定される部品文字の描画処理が完了した後には、描画された部品文字の字体画像を前記部品画像記憶部に登録する
請求項１２に記載の描画処理装置。
【請求項１４】
字形の定義情報を記憶する複数の文字定義情報記憶部と、
字形の定義情報を含む描画指示を受け取ったとき、前記描画指示に含まれる各文字について、前記字形の定義情報が字形そのものを定義する字形定義情報であるのか定義情報の組合せを定義する組合せ定義情報であるのかに応じて、各字形の定義情報を前記複数の文字定義情報記憶部の何れへ登録するかを切り替える文字情報登録部と、
前記描画指示に含まれる各文字について、処理対象の文字に対応する前記字形の定義情報を前記複数の文字定義情報記憶部から読み出して文字の描画処理を行なうように指示する文字描画処理指示部と、
描画された文字に基づき画像を出力媒体に出力する画像出力部と、
を備えた画像出力装置。
【請求項１５】
字形の定義情報を含む描画指示を受け取ったとき、前記描画指示に含まれる各文字について、前記字形の定義情報が字形そのものを定義する字形定義情報であるのか定義情報の組合せを定義する組合せ定義情報であるのかに応じて、字形の定義情報を記憶する複数の文字定義情報記憶部の何れへ前記字形の定義情報を登録するかを切り替える文字情報登録部と、
前記描画指示に含まれる各文字について、処理対象の文字に対応する前記字形の定義情報を前記複数の文字定義情報記憶部から読み出して文字の描画処理を行なうように指示する文字描画処理指示部と、
して電子計算機を機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、描画処理装置、画像出力装置、プログラムに関する。
【背景技術】
【０００２】
たとえばワープロソフトや表計算ソフトなどの文書作成ツールで作成された電子データに基づいて、プリンタなどの画像形成装置で印刷出力したり、ＣＲＴやＬＣＤ（液晶）などの表示デバイスを持つ画像表示装置で表示出力したりするために描画処理の仕組みが使用される。
【０００３】
ここで、文字の描画処理を行なうときに、キャッシュ検索を利用する仕組みがある。特許文献１には、複数の部品文字の合成でなる合成文字（コンポジット文字）のキャッシュ検索に関しての提案がなされている。
【０００４】
この特許文献１に記載の仕組みでは、文字を形成する複数の部品ごとにビットマップデータを生成し、それらのビットマップデータを部品キャッシュ記憶部に記憶し、文字の描画処理時には、部品キャッシュ記憶部から読み出した部品のビットマップデータを結合することにより文字のビットマップデータを作成するようにしている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平９−１７１３８０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、字形の定義情報を含む描画指示を受け取ったときに、合成文字に関しての描画処理時間を短縮することのできる仕組みを提供することを目的とする。
【課題を解決するための手段】
【０００７】
請求項１に記載の発明は、字形の定義情報を記憶する複数の文字定義情報記憶部と、字形の定義情報を含む描画指示を受け取ったとき、前記描画指示に含まれる各文字について、前記字形の定義情報が字形そのものを定義する字形定義情報であるのか定義情報の組合せを定義する組合せ定義情報であるのかに応じて、各字形の定義情報を前記複数の文字定義情報記憶部の何れへ登録するかを切り替える文字情報登録部と、前記描画指示に含まれる各文字について、処理対象の文字に対応する前記字形の定義情報を前記複数の文字定義情報記憶部から読み出して文字の描画処理を行なうように指示する文字描画処理指示部と、を備えた描画処理装置である。
【０００８】
請求項２に記載の発明は、請求項１に記載の発明において、前記文字情報登録部は、前記字形の定義情報が前記字形定義情報であるのか前記組合せ定義情報であるのかに関わらず全ての前記字形の定義情報を第１の前記文字定義情報記憶部に登録するとともに、前記字形定義情報についてはさらに第２の前記文字定義情報記憶部にも登録する。
【０００９】
請求項３に記載の発明は、請求項２に記載の発明において、前記文字描画処理指示部は、処理対象の文字に対応する前記字形の定義情報を前記第１の文字定義情報記憶部から読み出したとき、読み出した字形の定義情報が前記字形定義情報であるときは、その前記字形定義情報に基づく描画処理を指示し、読み出した字形の定義情報が前記組合せ定義情報であるときは、前記組合せ定義情報で規定されている定義情報を前記第２の文字定義情報記憶部から読み出して文字の描画処理を指示する。
【００１０】
請求項４に記載の発明は、請求項３に記載の発明において、前記文字描画処理指示部は、前記組合せ定義情報で規定されている定義情報を前記第２の文字定義情報記憶部から読み出すことができないときには、さらに前記第１の文字定義情報記憶部から読み出して文字の描画処理を指示する。
【００１１】
請求項５に記載の発明は、請求項４に記載の発明において、前記文字情報登録部は、前記第１の文字定義情報記憶部から読み出した前記組合せ定義情報で規定されている定義情報に基づく前記文字の描画処理が完了した後には、前記組合せ定義情報で規定されている定義情報を前記第２の文字定義情報記憶部にも登録する。
【００１２】
請求項６に記載の発明は、請求項１に記載の発明において、前記文字情報登録部は、前記字形の定義情報が前記字形定義情報であるのか前記組合せ定義情報であるのかに関わらず全ての前記字形の定義情報を第１の前記文字定義情報記憶部に登録するとともに、前記字形定義情報と前記組合せ定義情報の内、文字の書体に占める構成率の少ない方をさらに第２の前記文字定義情報記憶部にも登録する。
【００１３】
請求項７に記載の発明は、請求項６に記載の発明において、前記文字描画処理指示部は、前記組合せ定義情報で規定されている定義情報を一方の前記文字定義情報記憶部から読み出すことができないときには、さらに他方の前記文字定義情報記憶部から読み出して文字の描画処理を指示する。
【００１４】
請求項８に記載の発明は、請求項７に記載の発明において、前記文字情報登録部は、前記他方の文字定義情報記憶部から読み出した前記組合せ定義情報で規定されている定義情報に基づく前記文字の描画処理が完了した後には、前記組合せ定義情報で規定されている定義情報を前記一方の文字定義情報記憶部にも登録する。
【００１５】
請求項９に記載の発明は、請求項１に記載の発明において、前記文字情報登録部は、前記字形定義情報と前記組合せ定義情報を、それぞれ異なる前記文字定義情報記憶部に登録する。
【００１６】
請求項１０に記載の発明は、請求項１〜９の内の何れか一項に記載の発明において、前記字形定義情報で規定される文字の字体画像を記憶する文字画像記憶部をさらに備え、前記文字描画処理指示部は、処理対象の文字の字体画像が前記文字画像記憶部に記憶されているときには前記文字画像記憶部から前記処理対象の文字の字体画像を読み出して文字の描画処理を行なうように指示し、前記処理対象の文字の字体画像が前記文字画像記憶部に記憶されていないときには前記処理対象の文字に対応する前記字形の定義情報を前記複数の文字定義情報記憶部から読み出して文字の描画処理を行なうように指示する。
【００１７】
請求項１１に記載の発明は、請求項１０に記載の発明において、前記文字情報登録部は、前記文字定義情報記憶部から読み出した前記定義情報に基づく前記文字の描画処理が完了した後には、描画された文字の字体画像を前記文字画像記憶部に登録する。
【００１８】
請求項１２に記載の発明は、請求項１〜１１の内の何れか一項に記載の発明において、前記組合せ定義情報で規定される文字を構成する各部品文字の字体画像を記憶する部品画像記憶部をさらに備え、前記文字描画処理指示部は、前記組合せ定義情報で規定される部品文字の字体画像が前記部品画像記憶部に記憶されているときには前記部品画像記憶部から前記組合せ定義情報で規定される部品文字の字体画像を読み出して部品文字の描画処理を行なうように指示し、前記組合せ定義情報で規定される部品文字の字体画像が前記部品画像記憶部に記憶されていないときには前記組合せ定義情報を前記複数の文字定義情報記憶部から読み出して部品文字の描画処理を行なうように指示する。
【００１９】
請求項１３に記載の発明は、請求項１２に記載の発明において、前記文字情報登録部は、前記文字定義情報記憶部から読み出した前記定義情報に基づく前記組合せ定義情報で規定される部品文字の描画処理が完了した後には、描画された部品文字の字体画像を前記部品画像記憶部に登録する。
【００２０】
請求項１４に記載の発明は、字形の定義情報を記憶する複数の文字定義情報記憶部と、字形の定義情報を含む描画指示を受け取ったとき、前記描画指示に含まれる各文字について、前記字形の定義情報が字形そのものを定義する字形定義情報であるのか定義情報の組合せを定義する組合せ定義情報であるのかに応じて、各字形の定義情報を前記複数の文字定義情報記憶部の何れへ登録するかを切り替える文字情報登録部と、前記描画指示に含まれる各文字について、処理対象の文字に対応する前記字形の定義情報を前記複数の文字定義情報記憶部から読み出して文字の描画処理を行なうように指示する文字描画処理指示部と、描画された文字に基づき画像を出力媒体に出力する画像出力部と、を備えた画像出力装置である。
【００２１】
請求項１５に記載の発明は、字形の定義情報を含む描画指示を受け取ったとき、前記描画指示に含まれる各文字について、前記字形の定義情報が字形そのものを定義する字形定義情報であるのか定義情報の組合せを定義する組合せ定義情報であるのかに応じて、字形の定義情報を記憶する複数の文字定義情報記憶部の何れへ前記字形の定義情報を登録するかを切り替える文字情報登録部と、前記描画指示に含まれる各文字について、処理対象の文字に対応する前記字形の定義情報を前記複数の文字定義情報記憶部から読み出して文字の描画処理を行なうように指示する文字描画処理指示部と、して電子計算機を機能させるプログラムである。
【発明の効果】
【００２２】
請求項１，１４，１５に記載の発明によれば、合成文字に関しての描画処理を、１つの文字定義情報記憶部のみを検索して実行するよりも短時間で実行できる。
【００２３】
請求項２に記載の発明によれば、第２の文字定義情報記憶部への字形定義情報の登録数を、第１の文字定義情報記憶部への全登録数よりも少なくすることができる。
【００２４】
請求項３に記載の発明によれば、描画指示に含まれる字形の定義情報が字形定義情報であるときには本発明を適用しない場合と同様に第１の文字定義情報記憶部から検索して描画処理を実行でき、描画指示に含まれる字形の定義情報が組合せ定義情報であるときには、その組合せ定義情報で規定される字形定義情報を第１の文字定義情報記憶部から検索して描画処理を実行するよりも短時間で実行できる。
【００２５】
請求項４に記載の発明によれば、組合せ定義情報で規定されている定義情報がさらに組合せ定義情報である場合でも、第１の文字定義情報記憶部から検索して描画処理を実行することができる。
【００２６】
請求項５に記載の発明によれば、組合せ定義情報で規定されている定義情報がさらに組合せ定義情報である場合でも、その組合せ定義情報を第１の文字定義情報記憶部から検索して描画処理を実行するよりも短時間で実行できる。
【００２７】
請求項６に記載の発明によれば、字形定義情報と組合せ定義情報の内の文字の書体に占める構成率の少ない方の第２の文字定義情報記憶部への登録数を、第１の文字定義情報記憶部への全登録数よりも少なくすることができる。
【００２８】
請求項７に記載の発明によれば、組合せ定義情報で規定されている定義情報を、何れかの文字定義情報記憶部から確実に読み出して描画処理することができる。
【００２９】
請求項８に記載の発明によれば、同じ定義情報についての描画処理を、一方の文字定義情報記憶部のみを検索して描画処理を実行するよりも短時間で実行できる。
【００３０】
請求項９に記載の発明によれば、合成文字に関しての描画処理を、１つの文字定義情報記憶部のみを検索して実行するよりも短時間で実行できる。
【００３１】
請求項１０に記載の発明によれば、文字のキャッシュ登録があるときには本請求項１０に記載の発明を適用しない場合よりも高速に文字描画ができ、文字のキャッシュ登録がないときでも、合成文字に関しての描画処理を１つの文字定義情報記憶部のみを検索して実行するよりも短時間で実行できる。
【００３２】
請求項１１に記載の発明によれば、同じ合成文字に関しての描画処理を、本請求項１１に記載の発明を適用しない場合よりも短時間で実行できる。
【００３３】
請求項１２に記載の発明によれば、部品文字のキャッシュ登録があるときには本請求項１２に記載の発明を適用しない場合よりも高速に文字描画ができ、部品文字のキャッシュ登録がないときでも、合成文字に関しての描画処理を１つの文字定義情報記憶部のみを検索して実行するよりも短時間で実行できる。
【００３４】
請求項１３に記載の発明によれば、同じ合成文字に関しての描画処理を、本請求項１３に記載の発明を適用しない場合よりも短時間で実行できる。
【図面の簡単な説明】
【００３５】
【図１】画像出力システムの一例である印刷システムの構成例を示す図である。
【図２】第１実施形態の画像処理部３５０Ａの構成例を示す図である。
【図３】第１実施形態の文字描画処理の全体的な処理手順を説明するフローチャートである。
【図４】第１実施形態の各ページ処理における描画展開処理の処理手順を説明するフローチャートである。
【図５】第１実施形態のコマンド実行処理（Ｓ２３０）の処理手順の詳細を説明するフローチャートである。
【図６】第１実施形態の文字データ登録コマンド実行処理（Ｓ２４０）の処理手順の詳細を説明するフローチャートである。
【図７】シンプルグリフとコンポジットグリフの判別処理（Ｓ２５４）の具体例を説明する図である。
【図８】第１実施形態の文字描画コマンド実行処理（Ｓ２６０）の処理手順の詳細を説明するフローチャートである。
【図９】第１実施形態のコンポジットグリフ文字描画処理（Ｓ２９４）の処理手順の詳細を説明するフローチャートである。
【図１０】第１実施形態の適用例で使用する印刷データを示す図である。
【図１０Ａ】図１０に示す印刷データで使用されているコンポジットグリフの構造を説明する図である。
【図１０Ｂ】第１実施形態の適用例における検索テーブルの登録情報の例を示す図である。
【図１０Ｃ】第１実施形態の適用例で使用するフォントデータにおけるコンポジットグリフとシンプルグリフの占める割合を説明する図である。
【図１１】図１１は、第２実施形態（第１例）のコンポジットグリフ文字描画処理（Ｓ２９４）の処理手順の詳細を説明するフローチャートである。
【図１２】第２実施形態（第１例）で使用する印刷データを示す図である。
【図１２Ａ】図１２に示す印刷データで使用されているコンポジットグリフの構造を説明する図である。
【図１２Ｂ】第２実施形態（第１例）の適用例における検索テーブルの登録情報の例を示す図である。
【図１３】第２実施形態（第２例）の画像処理部の構成例を示す図である。
【図１４】第２実施形態（第２例）のコンポジットグリフ文字描画処理（Ｓ２９４）の処理手順の詳細を説明するフローチャートである。
【図１５】第２実施形態（第２例）の適用例で使用する印刷データを示す図である。
【図１５Ａ】第２実施形態（第２例）の適用例における検索テーブルの登録情報の例を示す図である。
【図１６】第２実施形態（第３例）の適用例で使用する印刷データを示す図である。
【図１６Ａ】図１６に示す印刷データで使用されているコンポジットグリフの構造を説明する図である。
【図１６Ｂ】第２実施形態（第３例）の適用例における検索テーブルの登録情報の例を示す図である。
【図１７】第３実施形態の画像処理部の構成例を示す図である。
【図１８】第３実施形態の文字描画コマンド実行処理（Ｓ２６０）の処理手順の詳細を説明するフローチャートである。
【図１９】第３実施形態のコンポジットグリフ文字描画処理（Ｓ２９４）の処理手順の詳細を説明するフローチャートである。
【図２０】第３実施形態の適用例で使用する印刷データを示す図である。
【図２０Ａ】第３実施形態の適用例における文字キャッシュ記憶部の登録情報の例を示す図である。
【図２０Ｂ】第３実施形態の適用例における部品キャッシュ記憶部の登録情報の例を示す図である。
【図２１】グリフ検索による文字描画処理の制御機構を、電子計算機を利用して構成するときの構成例を示すブロック図である。
【発明を実施するための形態】
【００３６】
以下、図面を参照して本発明の実施形態について詳細に説明する。
【００３７】
画像出力装置は、紙やＯＨＰ（Over Head Projector ）シートなどの印刷媒体に文字を印刷出力する形態の画像形成装置（いわゆる印刷装置）であってもよいし、液晶やＣＲＴ（陰極線管）などの表示媒体に文字を表示する形態の表示装置であってもよい。以下では、代表して、画像出力装置として印刷装置を使用する印刷システムを例に説明する。
【００３８】
＜システム構成＞
図１は、画像出力システムの一例である印刷システムの構成例を示す図である。本実施形態の印刷システム１は、クライアントが使用するホスト側装置２と、ＳＯＣを利用して構成された画像出力装置の一例である印刷装置３が、通信線の一例である伝送路９（通信回線）で接続されている。印刷装置３は、印刷機能のみを持つ単機能機（いわゆるプリンタ）でもよいし、印刷機能だけでなく複写やＦＡＸなどの他の機能も持ついわゆる複合機でもよい。
【００３９】
伝送路９としては、ローカルエリアネットワーク（ＬＡＮ：Local Area Network）や電話回線などの有線通信回線、無線ＬＡＮなどの無線通信回線、これらの通信回線を組み合わせたもの、などが適用される。
【００４０】
システム構成的には、ＳＯＣを有する画像処理装置を含んで画像形成装置の一例である印刷装置３が構成され、この印刷装置３を含んで画像出力システムの一例である印刷システム１が構築されている。
【００４１】
ホスト側装置２は、印刷装置３に処理対象の画像を供給する画像供給装置の一例である。このホスト側装置２は、文字や図形や写真を含む文書データを作成して出力するもので、たとえばパーソナルコンピュータ（パソコン）が使用される。ホスト側装置２によって作成される文字・図形・写真を含む文書データは、ＰＤＬ（Page Description Language ）で記述された印刷データ（ＰＤＬデータ）として印刷装置３に送られる。ＰＤＬデータは、画像（写真、イメージ）、図形（グラフィックス）、文字などを同様に取り扱い、図形や文字などの拡大、回転、変形などが自由に制御できるデータである。
【００４２】
［ホスト側装置］
ホスト側装置２は、情報処理部として機能するもので、文書や図形などの画像データを生成するデータ取得部２１０と、ホスト側装置２の各部の動作を制御する中央制御部２２０と、印刷装置３との間のインタフェース機能をなすインタフェース部２３０（ＩＦ部）を有する。図示しないが、ハードディスクなどの記憶装置や、ＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory ）などで構成される記憶部も設けられる。
【００４３】
データ取得部２１０には、たとえば、文書や図形などのデータを生成するためのアプリケーションプログラムが組み込まれる。なお、データ取得部２１０は、外部で生成されたデータを取り込んで印刷出力に供するものであってもよい。
【００４４】
中央制御部２２０には、ホスト側装置２の全体を制御するソフトウェアであるＯＳ（オペレーティングシステム）や印刷装置３を制御するためのソフトウェアであるプリンタドライバＰＤが組み込まれる。
【００４５】
これにより、ホスト側装置２は、印刷装置３に対して印刷指示を発する装置を、プログラムに基づいてソフトウェア的に実現するようになる。すなわち、各機能部を構成するためのプログラムを格納したＣＤ−ＲＯＭなどからプログラムを読み出して図示しないハードディスク装置などにインストールさせておき、ハードディスク装置からプログラムを読み出して中央制御部２２０を構成する図示しないＣＰＵ（Central Processing Unit ）やＭＰＵ（Micro Processing Unit ）が決められた処理手順を実行することにより、各機能をソフトウェア的に実現する。
【００４６】
ホスト側装置２内のハードウェアや各種の装置、および、各種のソフトウェアは、オペレーティングシステムＯＳによって制御、管理されている。このオペレーティングシステムＯＳによる制御および管理の元で、アプリケーションプログラムが動作する。アプリケーションプログラムは、文字や画像などを印刷する指示を行なう。ここでは、印刷する内容はページ記述言語によって記述された描画情報として出力されるものとする。
【００４７】
たとえば、ホスト側装置２に組み込まれているアプリケーションプログラムから、イメージ描画命令、グラフィック描画命令、フォント描画命令などの命令種別を持った描画命令が順次プリンタドライバＰＤに入力される。
【００４８】
プリンタドライバＰＤは、通常、印刷装置３に付属して提供されるものであり、ホスト側装置２にロードされて機能するプログラムである。またプリンタドライバＰＤは、通常、特定の印刷装置３での使用が予想される様々なデータ形式にホスト側装置２を対応させるために使用される。プリンタドライバＰＤは、アプリケーションプログラムから描画情報を受け取ると、印刷装置３に送信する前に、様々な処理ステップを実行する。たとえば、アプリケーションプログラムから受け取った描画情報を印刷装置３で解釈可能なコマンドおよび描画オブジェクトの列に変換して送信する。
【００４９】
本実施形態では、プリンタドライバＰＤは描画命令を印刷装置３が理解可能なプリント命令としてＰＤＬデータに変換してインタフェース部２３０に出力する。インタフェース部２３０に入力されたプリント命令は、伝送路９（接続ケーブルやネットワーク）を通り印刷装置３に伝送される。印刷装置３は、受け取ったＰＤＬデータに従って、用紙に画像を印刷（画像出力）する。
【００５０】
［印刷装置］
印刷装置３は、画像出力装置の一例であり、ホスト側装置２から出力された印刷データ（ＰＤＬデータ）に基づいて印刷処理を実行する。ここでＰＤＬで作成されている印刷データは、ページ内の任意位置の画像、図形、文字を表現する描画命令およびデータを任意の順で配置した命令およびデータ列で構成されている。印刷装置３は、ページプリンタであり、印刷前に出力単位ごと（１ページごと）に画像データをレンダリング（描画展開）してからプリンタエンジン部にそのラスタデータを出力する。
【００５１】
このような機能の実現のために、印刷装置３は、ＳＯＣ（System On a Chip：システム・オン・チップ）と称される半導体集積回路を有する画像形成処理部３０と、画像形成処理部３０からの画像データに基づき印刷処理を実行する画像出力部３９を備える。
【００５２】
画像形成処理部３０は、中央演算制御処理部３１０、ＲＡＭ３１２、ＲＯＭ３１４、インタフェース部３３０、ＰＤＬデータ解釈部３４０（インタプリタ部）、描画処理装置として機能する画像処理装置の一例である画像処理部３５０を備える。また、画像形成処理部３０は、印刷制御部３７０（出力制御部）とハードディスク装置３８０（ＨＤＤ）を備える。
【００５３】
中央演算制御処理部３１０は、印刷装置３の全体を制御する。たとえば、ＲＯＭ３１４からＲＡＭ３１２へ制御プログラムやアプリケーションプログラムを読み込んで実行することにより、画像形成処理（画像処理）を実行する。この画像形成処理を実行するとき、中央演算制御処理部３１０は、画像形成処理の少なくとも一部を画像処理部３５０に分担させることで、画像処理部３５０との協調処理によって全体として画像形成処理を完結させる。
【００５４】
インタフェース部３３０は、ホスト側装置２との間のインタフェース機能をなす。たとえば、伝送路９を介して、ホスト側装置２との間でデータの送受信を行ない、印刷装置３（のプリンタドライバ）から送信されたＰＤＬ形式の印刷データを受信する。
【００５５】
ＰＤＬデータ解釈部３４０は、ＰＤＬデータを解釈し、得た描画命令を画像処理部３５０に渡す描画命令出力装置の一例である。ＰＤＬデータ解釈部３４０は、取り込んだ描画情報やコマンドと描画データの列などを認識し、コマンドと引数に組み立ててコマンドを解釈する。
【００５６】
画像処理部３５０は、ＰＤＬデータ解釈部３４０から受けとった解釈命令に基づいて、グラフィックス描画、文字描画、イメージ描画を行なうことで、ビットマップデータ（Bit Map Data：ラスタデータとも称する）を生成する。このとき、画像処理部３５０は、生成したデータを一旦、ＲＡＭ３１２やハードディスク装置３８０に記憶させる。たとえばカラー印刷を行なうのであれば、それぞれの色ごとに、たとえばＣ（シアン），Ｍ（マゼンタ），Ｙ（イエロ），Ｋ（ブラック）の４プレーンにラスタ化し、ハードディスク装置３８０のページメモリ領域（ページバッファ）に個別に記憶させる。なお、ハードディスク装置３８０にページメモリ領域を確保するのに代えて、ＲＡＭ３１２にページメモリ領域を確保してもよい。
【００５７】
また、本実施形態では、処理対象の文字がグリフ（字形の定義情報）のときに、グリフデータの記憶領域としてハードディスク装置３８０やＲＡＭ３１２が利用される。さらに、処理対象の文字がグリフであって、そのグリフがコンポジットグリフのときには、そのコンポジットグリフを構成する各グリフの描画処理時に生成したデータを一旦、ＲＡＭ３１２やハードディスク装置３８０のグリフメモリ領域（合成バッファ）に記憶させる。
【００５８】
また、本実施形態において、キャッシュ検索機能を適用する形態にする場合、キャッシュデータの記憶領域としてハードディスク装置３８０やＲＡＭ３１２が利用される。
【００５９】
印刷制御部３７０は、出力制御部の一例であり、画像処理部３５０により描画展開されたビットマップデータに基づいてプリンタエンジン部３９０による印刷処理を制御する。プリンタエンジン部３９０は、印刷制御部３７０の指令に従って印刷処理を実行する。プリンタエンジン部３９０とシステムバスとの間にはプリンタＩＦ部３９８が設けられる。プリンタエンジン部３９０は、画像処理部３５０にて処理されたデータに基づいて、画像を出力媒体に形成する画像形成部（画像出力部）の一例である。
【００６０】
印刷制御部３７０は、印刷を行なう際に、プリンタエンジン部３９０を起動し、出力単位分のビットマップデータを、プリンタＩＦ部３９８を介してプリンタエンジン部３９０に供給する。
【００６１】
ハードディスク装置３８０は、不揮発性の記憶媒体の一例であり、画像処理部３５０により生成されたラスタデータを記憶するだけでなく、ＰＤＬデータ解釈部３４０で解釈・変換した描画オブジェクトおよび描画演算指示（纏めて描画命令とも称する）を一時的に格納しておくためデータ格納部の一例としても機能する。
【００６２】
画像出力部３９は、画像形成処理部３０から受け付けた画像データに基づいて、画像出力処理の一例として、印刷処理を実行する。この機能の実現のため、画像出力部３９は、プリンタエンジン部３９０、画像処理部３９２、給紙部３９４、排出部３９６、後処理部３９７、プリンタＩＦ部３９８を備える。
【００６３】
プリンタエンジン部３９０は、出力処理部の一例であり、プリンタＩＦ部３９８を介して供給されるビットマップデータに従って、用紙に画像を形成して出力する。すなわち、プリンタエンジン部３９０は、ページメモリ領域に格納された画像データに従って実際に被記録媒体上に画像を形成する。プリンタエンジン部３９０としては、たとえばレーザ方式を始め、種々の方式の記録方法を採用してよい。このとき、画像処理部３９２にて、２値化処理やスクリーン処理を行なうこともある。
【００６４】
給紙部３９４は、図示しないが、１つまたは複数の給紙トレイを具備しておち、プリンタエンジン部３９０に供給される印刷媒体の一例である用紙を収容する。
【００６５】
排出部３９６は、図示しないが、プリンタエンジン部３９０にて印刷処理が実行された後の用紙が排出される排出トレイを具備する。排出部３９６は、印刷制御部３７０から回転角とともに回転指示を受けたとき、その指示に従った回転角で用紙を回転させてから排出する。
【００６６】
後処理部３９７は、印刷指示に後処理の指示が添付されているときは、その指示に従って後処理を行なう。「後処理」としては、たとえば、出力される用紙に対してステイプラによりステイプル処理する（用紙を短辺綴じ長辺綴じにする）ことや、用紙の短辺または長辺にパンチ穴を開けるパンチ処理などがある。
【００６７】
＜画像処理部：第１実施形態＞
［装置構成］
図２は、第１実施形態の画像処理部３５０Ａの構成例を示す図である。ここでは、グリフデータの記憶領域も画像処理部３５０Ａに含むものとして示すが、このことは必須ではなく、一般的には、前述のように、ディスク装置３８０やＲＡＭ３１２がその記憶領域として利用される。
【００６８】
画像処理部３５０Ａは、コマンド種類判別部４１０、文字データ格納部４２０、文字データ登録コマンド実行部４４０、文字描画コマンド実行部４６０、および描画実行部４８０を備える。
【００６９】
コマンド種類判別部４１０は、描画指示種類判別部の一例であり、印刷データのコマンドを取得し、そのコマンドの種類を判別する。
【００７０】
文字データ格納部４２０は、字形の定義情報を記憶する文字定義情報記憶部の一例であり、第１検索テーブルTBL1と第２検索テーブルTBL2を有する。
【００７１】
文字データ登録コマンド実行部４４０は、グリフが字形を定義するシンプルグリフ（字形定義情報）であるのか定義情報の組合せを定義するコンポジットグリフ（組合せ定義情報）であるのかに応じて、各文字のグリフ（定義情報）を第１検索テーブルTBL1と第２検索テーブルTBL2の何れへ登録するかを切り替える文字情報登録部の一例である。この文字データ登録コマンド実行部４４０は、フォント名取得部４４２、フォーマット取得部４４４、および登録処理部４４６を有する。
【００７２】
フォント名取得部４４２は、書体名取得部の一例であり、文字のフォント（書体）の名称を取得する。
【００７３】
フォーマット取得部４４４は、形式取得部の一例であり、フォントの形式を取得する。
【００７４】
登録処理部４４６は、文字の登録コマンドを順次処理し、コンポジットグリフとシンプルグリフの双方を第１検索テーブルTBL1に登録するとともに、シンプルグリフはさらに第２検索テーブルTBL2にも登録する。
【００７５】
なお、本実施形態では、特に、グリフの扱いに特徴があるが、実際には、ビットマップ形式の文字データを受け付けることもある。この場合の対処のため、登録処理部４４６は、トゥルータイプ形式のグリフデータとビットマップ形式の文字データの両方を第１検索テーブルTBL1に登録する。
【００７６】
文字描画コマンド実行部４６０は、描画指示（印刷データ）に含まれる各文字について、処理対象の文字に対応する字形の定義情報（グリフ）を文字データ格納部４２０（第１検索テーブルTBL1や第２検索テーブルTBL2）から読み出して文字の描画処理を行なうように指示する文字描画処理指示部の一例である。この文字描画コマンド実行部４６０は、フォント名取得部４６２、パラメータ取得部４６４、および検索処理部４６６を有する。
【００７７】
フォント名取得部４６２は、書体名取得部の一例であり、フォント名取得部４４２と同様に、文字のフォントの名称を取得する。
【００７８】
パラメータ取得部４６４は、変数取得部の一例であり、文字を描画する際のサイズ、色、などの変数を取得する。
【００７９】
検索処理部４６６は、文字の描画コマンドを順次処理し、コンポジットグリフは第１検索テーブルTBL1から取得し、シンプルグリフは第２検索テーブルTBL2から取得して、取得した各グリフを描画実行部４８０に渡す。
【００８０】
描画実行部４８０は、シンプルグリフ描画部４８２（第１描画部）、コンポジットグリフ描画部４８４（第２描画部）、および第３描画部４８６を有する。
【００８１】
シンプルグリフ描画部４８２は、シンプルグリフの描画処理を担当する。コンポジットグリフ描画部４８４はコンポジットグリフの描画処理を担当する。第３描画部４８６は、シンプルグリフとコンポジットグリフを除くその他の文字や図形（グラフィックス）や写真（イメージ）の描画処理を担当する。
【００８２】
コンポジットグリフ描画部４８４は、識別子取得部５２０、配置情報取得部５２２、および合成部５２６を有する。識別子取得部５２０は、コンポジットグリフを構成するグリフを特定する識別子（ＩＤ）を取得する。配置情報取得部５２２は、コンポジットグリフを構成するグリフの配置位置の情報を取得する。合成部５２６は、シンプルグリフ描画部４８２で生成されるコンポジットグリフを構成するシンプルグリフのイメージ（部品イメージと称する）を合成用バッファに描画することでコンポジットグリフの合成イメージを生成する。
【００８３】
＜文字描画処理の問題点と改善手法の原理＞
トゥルータイプフォント形式の文字（キャラクタ）はグリフ（字形の定義情報）と呼ばれるが、グリフには字形そのものの形を定義するシンプルグリフ（Simple Glyph：字形定義情報）と、複数のグリフの組み合わせを定義するコンポジットグリフ（ Composite Glyph：組合せ定義情報）がある。
【００８４】
たとえば、ハングル文字では、母音と子音を示す記号を組み合わせて１つの文字を構成するが、トゥルータイプフォントでは、それぞれの記号をシンプルグリフとして、実際の文字をコンポジットグリフとして構成する。
【００８５】
たとえば、ページ記述言語（ＰＤＬ）の中のＰＣＬ５／６では、ホスト側装置２にあるフォントデータのうち、必要なグリフを印刷データ中に埋め込むソフトフォント（ Soft Font）やダウンローダブルフォントと称される仕組みを持つ。印刷装置３においてソフトフォントにより各グリフをホスト側装置２から受信すると、各グリフを区別無く検索テーブルに格納する。検索テーブルには、シンプルグリフとコンポジットグリフの両者が含まれる。
【００８６】
この場合に、前記のようなコンポジット形式のトゥルータイプフォントがソフトフォントとして送信されると、１文字を描画処理（ラスタライズ）するときに、先ずコンポジットグリフをその検索テーブルから取得し、さらに、この検索テーブルから取得したコンポジットグリフを構成するシンプルグリフを同じ検索テーブルから取得するという手順を経て文字の描画処理を行なう。コンポジットグリフの文字描画では、シンプルグリフとコンポジットグリフの両者が含まれる登録数の多い検索テーブルに対してグリフの探索を複数回行なうことになるため、コンポジットグリフの文字の描画処理が遅くなる。
【００８７】
また、シンプルグリフの描画処理時には、シンプルグリフとコンポジットグリフの両者が含まれる登録数の多い検索テーブルに対してシンプルグリフの探索を行なうことになるため、ヒットしないコンポジットグリフもサーチ対象となってしまい（無駄な検索が実行される）、シンプルグリフの文字の描画処理も遅くなる。
【００８８】
また、文字のビットマップデータを記憶しておき、キャッシュ検索を利用した文字描画の仕組みをとることも考えられる。たとえば、文字を形成する複数の部品ごとに、フォントデータを記憶部に記憶しておく。記憶されたフォントデータからビットマップデータを生成し、部品キャッシュ記憶部に、それらのビットマップデータを記憶する。そして、それら部品のビットマップデータを結合することにより、文字のビットマップデータを作成する。この仕組みは、シンプルグリフごとの描画処理結果をキャッシュすることで高速化しようとするものである。
【００８９】
ただし、このキャッシュでは、文字が編集（たとえばサイズ変更）されるとキャッシュを使うことができない。コンポジットグリフの場合は各グリフをスケーリングして組み合わせることもあり、このような場合は各シンプルグリフのキャッシュを使い回せず、キャッシュ機能が有効に機能しないことが起こる。キャッシュ機能が効果的でないときは、キャッシュ機能なしの場合と同様に検索が遅いということになる。
【００９０】
これに対して、本実施形態では、印刷装置３において、文字データ格納部４２０の検索テーブル（文字定義情報記憶部）として、複数の検索テーブルを用意し、各グリフがシンプルグリフかコンポジットグリフかに応じて登録先（格納先）を切り替える。
【００９１】
複数の検索テーブルを用意するときの考え方としては、先ず、コンポジットグリフとシンプルグリフの別に検索テーブルを用意する、つまり、コンポジットグリフ専用とシンプルグリフ専用の２種の検索テーブルを用意する第１の手法が考えられる。
【００９２】
また、受信したグリフの全てを（つまりコンポジットグリフとシンプルグリフを混在させて）格納する混在検索テーブルと、シンプルグリフおよびコンポジットグリフの何れか一方を主に（第１実施形態では「のみを」）格納する個別検索テーブルの組合せが考えられる。この場合、個別検索テーブルに関しては、あるフォントの全てのグリフに占める割合（構成率）の少ない方を適用するのが好ましい。たとえば、シンプルグリフの構成率の方がコンポジットグリフの構成率よりも低いときは、シンプルグリフ用の個別検索テーブルを用意することで登録数を混在検索テーブルよりも少なくする第２の手法をとる。シンプルグリフの描画時にはこの登録数の少ないシンプルグリフ用の個別検索テーブルからシンプルグリフを取得して描画する。
【００９３】
また、コンポジットグリフの構成率の方がシンプルグリフの構成率よりも低いときは、コンポジットグリフ用の個別検索テーブルを用意することで登録数を混在検索テーブルよりも少なくする第３の手法をとる。コンポジットグリフの描画時にはこの登録数の少ないコンポジットグリフ用の個別検索テーブルからコンポジットグリフを取得し、さらにそのコンポジットグリフを構成するシンプルグリフを混在検索テーブルから取得して描画する。ただし、この第３の手法は原理的には考え得るというもので、実態としては効果は少ないと考えられる。
【００９４】
なお、２つの検索テーブルを用意する場合に、コンポジットグリフ（組合せ定義情報）で規定されているグリフ（定義情報）を一方の検索テーブル（文字定義情報記憶部）から読み出すことができないときには、さらに他方の検索テーブル（文字定義情報記憶部）を検索して読み出して文字の描画処理を指示するのがよい。この場合、さらに好ましくは、この描画処理の指示に基づく文字描画処理が完了した後には、そのコンポジットグリフで規定されているグリフを一方の検索テーブルにも登録するようにするのがよい。
【００９５】
これらの各組合せの内、第１実施形態（後述の第２実施形態も）では、後述する適用例を踏まえて、第２の手法をとる。ソフトフォントにより各グリフをホスト側装置２から受信すると、各グリフがシンプルグリフかコンポジットグリフかを判別し、シンプルグリフとコンポジットグリフの両者が含まれる第１検索テーブルTBL1（従前のものと同じ）とシンプルグリフのみを含む第２検索テーブルTBL2を構築する。
【００９６】
文字の描画処理時には、文字（ Glyph）の識別子（ＩＤ）が最初に指定される。印刷装置３では、第１検索テーブルTBL1からその文字のグリフを取得する。取得されたグリフがコンポジットグリフのときは、コンポジットグリフを構成する各シンプルグリフについては、シンプルグリフ用の第２検索テーブルTBL2を用いて検索を行なう。
【００９７】
［全体動作：第１実施形態］
図３は、第１実施形態の文字描画処理の全体的な処理手順を説明するフローチャートである。
【００９８】
文書の出力処理を開始すると、画像処理部３５０Ａは、処理対象ページのオペレータｐを「１」に設定する（Ｓ１１０）。
【００９９】
その後、処理対象ページｐに関して、画像処理部３５０Ａは、ページ処理を実行する（Ｓ１２０）。
【０１００】
ページ処理が完了したとき、画像処理部３５０Ａは、残ページの有無を確認し（Ｓ１８０）、残ページがある場合には（Ｓ１８０−ＹＥＳ）、処理対象ページのオペレータｐを「１」インクリメント（増分）して（Ｓ１８２）、ページ処理（ステップＳ１２０）に戻ることで次ページの処理を実行する。
【０１０１】
［描画展開処理：第１実施形態］
図４は、第１実施形態の各ページ処理における描画展開処理の処理手順を説明するフローチャートである。
【０１０２】
各ページ処理では、先ず、ＰＤＬデータ解釈部３４０は、ＰＤＬデータを受け取り（Ｓ２１０）、ＰＤＬデータを解釈して得た描画命令を画像処理部３５０Ａに渡す。画像処理部３５０Ａは、描画命令に基づきビットマップデータを生成する。
【０１０３】
このとき、画像処理部３５０Ａは、コマンドの有無を確認する（Ｓ２２０）。コマンドが存在していれば（Ｓ２２０−ＹＥＳ）、画像処理部３５０Ａはそのコマンドを読み込み（Ｓ２２２）、読み込んだコマンドの実行処理を行なう（Ｓ２３０）。
【０１０４】
［コマンド実行処理：第１実施形態］
図５は、第１実施形態のコマンド実行処理（Ｓ２３０）の処理手順の詳細を説明するフローチャートである。
【０１０５】
コマンド実行処理（Ｓ２３０）では、コマンド種類判別部４１０は、コマンドの種類を確認する（Ｓ２３２）。ここでのコマンドの種類の確認は「文字データの登録コマンド」や「文字の描画コマンド」であるか否かである。「文字データの登録コマンド」や「文字の描画コマンド」以外のときは、画像処理部３５０Ａは、その他のコマンドに従った実行処理を行なう（Ｓ２３２−その他，Ｓ２３４）。
【０１０６】
「文字データの登録コマンド」のときは、文字データ登録コマンド実行部４４０は、「文字データの登録コマンド」に従った実行処理を行なう（Ｓ２３２−登録，Ｓ２４０）。
【０１０７】
「文字の描画コマンド」のときは、文字描画コマンド実行部４６０は、「文字の描画コマンド」に従った実行処理を行なう（Ｓ２３２−描画，Ｓ２６０）。
【０１０８】
［文字データ登録コマンド実行処理：第１実施形態］
図６は、第１実施形態の文字データ登録コマンド実行処理（Ｓ２４０）の処理手順の詳細を説明するフローチャートである。
【０１０９】
文字データ登録コマンド実行処理（Ｓ２４０）では、文字データ登録コマンド実行部４４０は先ず、フォント名取得部４４２がフォント定義コマンドからフォント名を取得し登録処理部４４６に渡す（Ｓ２４２）。
【０１１０】
登録処理部４４６は、文字コマンドがグリフであるときにグリフ検索で文字描画を行なうための検索テーブルを取得する（Ｓ２４４）。本実施形態では、検索テーブルとして、第１検索テーブルTBL1と第２検索テーブルTBL2を用意する。
【０１１１】
フォーマット取得部４４４は、文字データの登録コマンドからフォントのフォーマット（format）を取得して登録処理部４４６に渡す（Ｓ２４６）。
【０１１２】
ここで、フォントのフォーマットは、たとえば、ビットマップフォントとアウトラインフォントの２つに区分けされる。ビットマップフォントは、点（ドット）の集合体で構成されるフォントであり、「ドットフォント」や「スクリーンフォント」とも称される。アウトラインフォントは、文字のアウトラインのデータを持っているフォントであり、たとえば、「トゥルータイプフォント（ True Type FONT）」、「ポストスクリプトフォント（Post Script FONT」、「オープンタイプフォント（Open Type Font）」などが該当する。本実施形態では、これらの内、ビットマップフォントであるのか、アウトラインフォントの内のトゥルータイプフォントであるのかに応じて処理を切り替える。
【０１１３】
登録処理部４４６は、登録処理対象の文字がビットマップフォントであるのかトゥルータイプフォントであるのかを確認する（Ｓ２５０）。ビットマップフォントのときは（Ｓ２５０−Bit Map ）、登録処理部４４６は、ビットマップ形式の文字データを第１検索テーブルにTBL1に追加（登録）した後に、この文字データ登録コマンド実行処理を完了させる（Ｓ２５１）。
【０１１４】
トゥルータイプフォントのときは（Ｓ２５０− True Type）、登録処理部４４６は、そのグリフを第１検索テーブルにTBL1に追加（登録）する（Ｓ２５３）。なお、登録済みの場合は上書きする。
【０１１５】
登録処理部４４６は、そのグリフがシンプルグリフであるのか否かを判定する（Ｓ２５４）。処理対象の文字がコンポジットグリフであるときは、登録処理部４４６は、文字データ登録コマンド実行処理を完了させる（Ｓ２５４−ＮＯ）。シンプルグリフであるときは（Ｓ２５４−ＹＥＳ）、登録処理部４４６は、そのシンプルグリフを第２検索テーブルTBL2に追加した後に文字データ登録コマンド実行処理を完了させる（Ｓ２５７）。なお、登録済みの場合は上書きする。
【０１１６】
この結果、第１検索テーブルTBL1にはコンポジットグリフとシンプルグリフが混在して登録され、第２検索テーブルTBL2にはシンプルグリフのみが登録される。
【０１１７】
［シンプルグリフとコンポジットグリフの判別手法］
図７は、処理対象の文字がシンプルグリフであるのかコンポジットグリフであるのかの判別処理（Ｓ２５４）の具体例を説明する図である。ここでは「PCL5 Format15 形式」における、グリフデータの種別判定方法を例に説明する。
【０１１８】
「DescSize」＋６バイト目から トゥルータイプフォントの仕様に従いグリフデータが記述されている。
【０１１９】
登録処理部４４６は、グリフデータの先頭から２バイト目の「DescriptorSize値」を読み込む。この値が配置位置を示すものであり、トゥルータイプフォントのグリフ記述の開始位置を示す。
【０１２０】
次に登録処理部４４６は、「６＋DescSize」バイト目と、「７＋DescSize」バイト目を読み込む。この２バイトが両方とも「０ｘＦＦ」であれば、コンポジットグリフであり、そうでなければシンプルグリフであると判別する。
【０１２１】
［文字描画コマンド実行処理：第１実施形態］
図８は、第１実施形態の文字描画コマンド実行処理（Ｓ２６０）の処理手順の詳細を説明するフローチャートである。
【０１２２】
文字描画コマンド実行処理（Ｓ２６０）では、文字描画コマンド実行部４６０のフォント名取得部４６２が、フォント定義コマンドからフォント名を取得して検索処理部４６６に渡す（Ｓ２６２）。
【０１２３】
次に文字描画コマンド実行部４６０は、文字コマンドがグリフであるときにグリフ検索により文字描画を行なうための検索テーブルを取得する（Ｓ２６４）。前述のように、本実施形態では、第１検索テーブルTBL1と第２検索テーブルTBL2を用意する。
【０１２４】
さらにパラメータ取得部４６４は、文字の描画コマンドから描画パラメータを取得して検索処理部４６６に渡す（Ｓ２６６）。
【０１２５】
検索処理部４６６は、描画処理対象の文字がビットマップフォントであるのかトゥルータイプフォントであるのかを確認する（Ｓ２７０）。ビットマップフォントのときは（Ｓ２７０−Bit Map ）、検索処理部４６６は、そのビットマップフォントの文字描画コマンドに従ってページバッファに描画して（Ｓ２９８）、文字描画登録コマンド実行処理を完了させる。「ページバッファ」とは、１ページ分の文書の描画処理を実行する際に、各過程で生成されるイメージデータを格納する記憶領域を意味する。
【０１２６】
トゥルータイプフォントのときは（Ｓ２７０− True Type）、検索処理部４６６は、描画対象のトゥルータイプフォント形式のキャラクタ（文字）であるグリフのデータを第１検索テーブルTBL1から取得する（Ｓ２７２）。
【０１２７】
検索処理部４６６は、そのグリフがコンポジットグリフであるのか否かを判定する（Ｓ２９０）。処理対象の文字がシンプルグリフであるときは（Ｓ２９０−ＮＯ）、検索処理部４６６はそのシンプルグリフをシンプルグリフ描画部４８２に渡す。シンプルグリフ描画部４８２は、シンプルグリフの描画展開を実行し（Ｓ２９２）、描画展開した文字のイメージデータ（ビットマップデータ）をページバッファに描画して（Ｓ２９８）、文字描画登録コマンド実行処理を完了させる。
【０１２８】
処理対象の文字がコンポジットグリフであるときは（Ｓ２９０−ＹＥＳ）、検索処理部４６６はコンポジットグリフ描画部４８４に対してコンポジットグリフの描画展開を指示する。コンポジットグリフ描画部４８４はコンポジットグリフの描画処理を実行し（Ｓ２９４）、描画展開した文字のイメージデータ（ビットマップデータ）をページバッファに描画して（Ｓ２９８）、文字描画登録コマンド実行処理を完了させる。
【０１２９】
［コンポジットグリフ文字描画処理：第１実施形態］
図９は、第１実施形態のコンポジットグリフ文字描画処理（Ｓ２９４）の処理手順の詳細を説明するフローチャートである。コンポジットグリフを構成するグリフを以下では「部品グリフ」とも称する。
【０１３０】
第１実施形態のコンポジットグリフ文字描画処理（Ｓ２９４）では、コンポジットグリフ描画部４８４は先ず、合成用バッファを用意する（Ｓ３１０）。「合成用バッファ」は、コンポジットグリフを構成する各部品グリフ（第１実施形態ではシンプルグリフのみ）のイメージデータを合成するための作業用の記憶領域（作業用バッファ）を意味する。この「合成用バッファ」を用意するときは、指定されている文字サイズに対応した大きさの記憶領域を確保するようにする。
【０１３１】
次にコンポジットグリフ描画部４８４の識別子取得部５２０は、コンポジットグリフを構成する各シンプルグリフの識別子（グリフＩＤ）を取得して検索処理部４６６に検索を指示する（Ｓ３１０）。さらに、配置情報取得部５２２は、コンポジットグリフを構成する部品グリフとしての各シンプルグリフの配置情報を取得する（Ｓ３３０）。ここで、「配置情報」とは、どの位置に各シンプルグリフを貼り付けることでコンポジットグリフを完成させるかの位置情報を意味する。
【０１３２】
シンプルグリフの検索指示を受けた検索処理部４６６は、部品グリフとしての各シンプルグリフを第２検索テーブルTBL2から取得してシンプルグリフ描画部４８２に渡す（Ｓ３４０）。シンプルグリフ描画部４８２は、シンプルグリフの描画展開を実行して各シンプルグリフのイメージデータ（ビットマップデータ：部分イメージ）を生成して合成部５２６に渡す（Ｓ３７４）。合成部５２６は、シンプルグリフ描画部４８２が描画展開した各シンプルグリフの部品イメージを合成用バッファのそれぞれ対応する位置に描画することで部品イメージを合成する（Ｓ３８０）。
【０１３３】
このような処理をコンポジットグリフを構成する全ての部品グリフ（第１実施形態ではシンプルグリフのみ）について行なう。つまり、処理対象のコンポジットグリフを構成する部品グリフの部品イメージを合成した後には、画像処理部３５０Ａは、処理対象のコンポジットグリフを構成する残りの部品グリフの有無を確認し（Ｓ３９０）、残りの部品グリフがあるときは（Ｓ３９０−ＮＯ）、ステップＳ３２０に戻ることで、次の部品グリフの描画処理を実行する。残りの部品グリフが無くなったら（Ｓ３９０−ＹＥＳ）、画像処理部３５０Ａは、コンポジットグリフの文字描画処理を完了させる。
【０１３４】
［適用例：第１実施形態］
図１０〜図１０Ｃは、第１実施形態の適用例を説明する図である。ここで、図１０は、この適用例で使用する印刷データを示す図である。図１０Ａは、図１０に示す印刷データで使用されているコンポジットグリフの構造を説明する図である。図１０Ｂは、この適用例における第１検索テーブルTBL1と第２検索テーブルTBL2の登録情報の例を示す図である。図１０Ｃは、この適用例で使用する「HYShortSamul-Medium 」のフォントデータにおけるコンポジットグリフとシンプルグリフの占める割合を説明する図である。
【０１３５】
なお、この適用例で示している各グリフの例は、第１実施形態の具体的な説明のために使用している擬似的なもの（擬似コード）であり、実際のものと同じか異なるかは無視する。
【０１３６】
この適用例では、図１０に示すような印刷データ（擬似コード）を描画展開する場合で説明する。図１０のトゥルータイプフォントのグリフ「 Glyph 54596」，「 Glyph 54736」は、図１０Ａに示すようなコンポジット構造を持つ。コンポジットグリフ「 Glyph 54596」は、３つのシンプルグリフ「 Glyph 65607」，「 Glyph 65650」，「 Glyph 65681」の組合せで構成されている。コンポジットグリフ「 Glyph 54736」は、２つのシンプルグリフ「 Glyph 66257」，「 Glyph 65681」の組合せで構成されている。
【０１３７】
図１０に示す印刷データが、図１に示したホスト側装置２のプリンタドライバにより生成され、インタフェース部２３０および伝送路９を経て印刷装置３のインタフェース部３３０により受信される。
【０１３８】
印刷装置３においては、描画展開処理部として機能する画像処理部３５０Ａは、図４に示した処理手順に従ってページごとに、描画展開処理を実行する。
【０１３９】
この際、画像処理部３５０Ａは、印刷データのコマンドを順に取得する（Ｓ２２２）。図１０に示すように、最初のコマンド「Define Font HYShortSamul-Medium <HYShortSamul-Mediumのデータ> 」はフォント定義コマンドのため、画像処理部３５０Ａは、そのフォント定義コマンドを読み込み、図５に示すコマンド実行処理（Ｓ２３０）へ進む。
【０１４０】
コマンド実行処理（Ｓ２３０）に入ったとき、コマンドの種類は「その他のコマンド」に該当するので、画像処理部３５０Ａは、そのフォント定義コマンドに応じた適切な処理（フォント定義処理）を実行し、このコマンドの実行を終了する（Ｓ２３２−その他，Ｓ２３４）。「フォント定義処理」は本実施形態に特有のものではなく一般的なものであるので、ここではその詳細説明を割愛する。
【０１４１】
画像処理部３５０Ａは、図１０に示す印刷データの次のコマンド「Define Glyph 54596 <Glyph54596( Composite)データ> 」を読み込み（Ｓ２２２：図４）、図５に示すコマンド実行処理（Ｓ２３０）へ進む。次のコマンドは「 Glyph 54596」の定義コマンドのため、画像処理部３５０Ａは、「グリフ登録コマンド」の処理のために、図６に示す文字データ登録コマンド実行処理（Ｓ２４０）へ進む。
【０１４２】
文字データ登録コマンド実行処理（Ｓ２４０）へ入ると、画像処理部３５０Ａは先ず、フォント名を取得する（Ｓ２４２）。この場合、前に定義されている「HYShortSamul-Medium 」がフォント名として使用される。
【０１４３】
画像処理部３５０Ａはさらに、２つの検索テーブル（第１検索テーブルTBL1と第２検索テーブルTBL2）を取得する（Ｓ２４４）。各検索テーブルは、この時点で空である。
【０１４４】
画像処理部３５０Ａは、処理対象文字のフォーマットを取得する（Ｓ２４６）。この場合、「 Glyph 54596」からトゥルータイプフォント形式であることが分かる（Ｓ２５０− True Type）。よって、画像処理部３５０Ａは、その「 Glyph 54596」を第１検索テーブルTBL1に登録する（Ｓ２５３）。
【０１４５】
トゥルータイプフォントはコンポジット可能なフォーマットであるため、画像処理部３５０Ａは、「 Glyph 54596」がシンプルグリフであるか否かを判定する（Ｓ２５４）。「 Glyph 54596」はコンポジットグリフであるため（Ｓ２５４−ＮＯ）、画像処理部３５０Ａは、グリフ登録コマンドの実行を終了する。
【０１４６】
画像処理部３５０Ａは、図１０に示す印刷データの次のコマンド「Define Glyph 65607 <Glyph65607(Simple)データ> 」を読み込み（Ｓ２２２：図４）、図５に示すコマンド実行処理（Ｓ２３０）へ進む。次のコマンドは「 Glyph 65607」の定義コマンドのため、画像処理部３５０Ａは、「グリフ登録コマンド」の処理のために、図６に示す文字データ登録コマンド実行処理（Ｓ２４０）へ進む。
【０１４７】
文字データ登録コマンド実行処理（Ｓ２４０）へ入ると、画像処理部３５０Ａは、「 Glyph 54596」の場合と同様の処理を実行して、「 Glyph 65607」を第１検索テーブルTBL1に登録する（Ｓ２５３）。
【０１４８】
さらに画像処理部３５０Ａは、「 Glyph 65607」がシンプルグリフであるか否かを判定する（Ｓ２５４）。「 Glyph 65607」はシンプルグリフであるため（Ｓ２５４−ＹＥＳ）、画像処理部３５０Ａは、その「 Glyph 65607」を第２検索テーブルTBL2にも登録してグリフ登録コマンドの実行を終了する（Ｓ２５７）。
【０１４９】
画像処理部３５０Ａは、このような処理を、印刷データに含まれる全てのグリフの定義コマンド（「 Glyph 66257」まで）について順次実行する。
【０１５０】
この時点では、第１検索テーブルTBL1には、図１０Ｂ（１）に示すように、「 Glyph 54596」，「 Glyph 65607」，「 Glyph 65650」，「 Glyph 65681」，「 Glyph 54736」，「 Glyph 66257」が登録される。第２検索テーブルTBL2には、図１０Ｂ（２）に示すように、「 Glyph 65607」，「 Glyph 65650」，「 Glyph 65681」，「 Glyph 66257」が登録される。
【０１５１】
画像処理部３５０Ａは、図１０に示す印刷データの次のコマンド「Draw (100,100) 10pt <54596> 」を読み込み（Ｓ２２２：図４）、図５に示すコマンド実行処理（Ｓ２３０）へ進む。このコマンドは、座標（１００，１００）の位置に１０pt（ポイント）の大きさで「 Glyph 54596」を描画するコマンドであるため、画像処理部３５０Ａは、「文字描画コマンド」の処理のために、図８に示す文字描画コマンド実行処理（Ｓ２６０）へ進む。
【０１５２】
文字描画コマンド実行処理（Ｓ２６０）へ入ると、画像処理部３５０Ａは先ず、フォント名を取得する（Ｓ２６２）。この場合、前に定義されている「HYShortSamul-Medium 」がフォント名として使用される。
【０１５３】
画像処理部３５０Ａは、「HYShortSamul-Medium 」の検索テーブルを取得する（Ｓ２６４）。この場合、図１０Ｂに示した２種類のテーブル（第１検索テーブルTBL1と第２検索テーブルTBL2）を取得することになる。
【０１５４】
さらに画像処理部３５０Ａは、文字の描画コマンドから描画パラメータを取得する（Ｓ２６６）。この場合、フォントの大きさ「１０pt」がパラメータに当たる。
【０１５５】
画像処理部３５０Ａは、第１検索テーブルTBL1を検索して「 Glyph 54596」のデータを取得する（Ｓ２７２）。「 Glyph 54596」はコンポジットグリフであるため（２９０−ＹＥＳ）、画像処理部３５０Ａは、図９に示すコンポジットグリフの文字描画処理を実行する（Ｓ２９４）。
【０１５６】
コンポジットグリフ文字描画処理（Ｓ２９４）に入ると、画像処理部３５０Ａは先ず合成用バッファを用意し（Ｓ３１０）、処理対象のコンポジットグリフを構成する各シンプルグリフのグリフＩＤと配置情報を順次取得する（Ｓ３２０，Ｓ３３０）。ここでは、コンポジットグリフ「 Glyph 54596」を構成する３つのシンプルグリフ「 Glyph 65607」，「 Glyph 65650」，「 Glyph 65681」の内のたとえば「ＩＤ： 65607」とその配置情報を最初に取得する。
【０１５７】
画像処理部３５０Ａは、第２検索テーブルTBL2を検索してシンプルグリフ「 Glyph 65607」のデータを取得する（Ｓ３４０）。そして、画像処理部３５０Ａは、「 Glyph 65607」を指定された大きさで描画展開し、生成したイメージデータを「 Glyph 54596」の合成用バッファ上の「配置情報」に従った位置に貼り付ける（Ｓ３７４，Ｓ３８０）。
【０１５８】
さらに画像処理部３５０Ａは、コンポジットグリフ「 Glyph 54596」を構成する残りのシンプルグリフ「 Glyph 65650」，「 Glyph 65681」についても同様に処理を実行することで、コンポジットグリフ「 Glyph 54596」の合成された画像を生成する。そして、画像処理部３５０Ａは、合成用バッファにて合成したコンポジットグリフ「 Glyph 54596」の合成イメージデータ（合成画像）をページバッファの座標（１００，１００）の位置に貼り付ける（Ｓ２９８）。
【０１５９】
画像処理部３５０Ａは、残りのコンポジットグリフ「 Glyph 54736」についても、コンポジットグリフ「 Glyph 54596」と同様に処理する。たとえば、「 Glyph 54736」は、２つのシンプルグリフ「 Glyph 66257」，「 Glyph 65681」で構成されているので、画像処理部３５０Ａは、第２検索テーブルTBL2を検索してシンプルグリフ「 Glyph 66257」，「 Glyph 65681」のデータを取得し（Ｓ３４０）、それぞれを指定された大きさで描画展開し、生成したイメージデータを「 Glyph 54736」の合成用バッファ上の各「配置情報」に従った位置に貼り付けることでコンポジットグリフ「 Glyph 54736」の合成された画像を生成する（Ｓ３７４，Ｓ３８０）。そして、画像処理部３５０Ａは、合成用バッファにて合成したコンポジットグリフ「 Glyph 54736」の合成イメージデータ（合成画像）をページバッファの座標（１００，１２０）の位置に貼り付ける（Ｓ２９８）。
【０１６０】
以上により、図１０に示す印刷データに基づく文字描画処理は完了する。
【０１６１】
この第１実施形態の適用例では、グリフ検索による文字描画処理時には、２つのコンポジットグリフ「 Glyph 54596」，「 Glyph５４５７６」はコンポジットグリフとシンプルグリフが混在して登録されている第１検索テーブルTBL1（６個のグリフが登録）から検索し、４つのシンプルグリフ「 Glyph 65607」，「 Glyph 65650」，「 Glyph 65681」，「 Glyph 66257」はシンプルグリフのみが登録されている第２検索テーブルTBL2（４個のグリフが登録）から検索する。因みに、「 Glyph 65681」は２回の検索が行なわれる。
【０１６２】
これに対して、第１実施形態を適用しない場合は、第２検索テーブルTBL2が存在せず、４つのシンプルグリフ「 Glyph 65607」，「 Glyph 65650」，「 Glyph 65681」，「 Glyph 66257」についても第１検索テーブルTBL1のグリフ検索により文字描画処理を実行する。
【０１６３】
第２検索テーブルTBL2は、シンプルグリフのみが登録されるので第１検索テーブルTBL1よりも登録数が少ない。このため、第２検索テーブルTBL2も利用する第１実施形態の方が、第１検索テーブルTBL1のみを利用するより、検索処理は高速になる。
【０１６４】
ここで示した適用例では、文字数が少ないため、その差が大きくは現れない。しかし、実際の「HYShortSamul-Medium 」のフォントデータにおいては、図１０Ｃに示すように、第２検索テーブルTBL2に含まれるシンプルグリフは全体の僅か１４％のため、この構成率の傾向は印刷データにも現われ、第２検索テーブルTBL2は第１検索テーブルTBL1よりもサイズが小さくなる。たとえば、実測データで１／８〜１／２となることが期待される。混在検索テーブルである第１検索テーブルTBL1のみを用いる手法よりも第１実施形態を適用した方が検索処理が高速になる。たとえば、ハングル文字などのコンポジッット文字の描画処理に係るグリフ検索時間が短縮され、第１実施形態を適用しない場合よりも描画処理時間が短縮される。
【０１６５】
このことは、検索にヒットしないコンポジットグリフが大多数を占めている混在検索テーブル（本実施形態では第１検索テーブルTBL1）中から該当のシンプルグリフをサーチするよりも、シンプルグリフのみが存在している個別検索テーブル（本実施形態では第２検索テーブルTBL2）中から該当のシンプルグリフをサーチする方が、無駄なサーチをしなくても済みグリフ検索が効率的になることからも理解されよう。
【０１６６】
＜描画展開処理：第２実施形態（第１例）＞
以下に、第２実施形態（第１例）の描画展開処理を説明する。第２実施形態の描画展開処理は、処理対象のコンポジットグリフが、シンプルグリフのみを構成要素に持つものと、コンポジットグリフを構成要素に持つものとが混在している場合への対処例である点に特徴がある。たとえば、トゥルータイプフォントの仕様としては、コンポジットグリフを構成するグリフがコンポジットグリフである、という構成も許している。その場合への対処の仕組みである。
【０１６７】
第１実施形態において、コンポジットグリフを構成要素に持つコンポジットグリフを描画処理すると、ステップＳ３４０において第２検索テーブルTBL2を検索しても該当のコンポジットグリフは取得されず、描画展開できないことになる。
【０１６８】
この対処のため、第２実施形態（第１例）では、グリフ登録処理時には、第１実施形態と同様に、コンポジットグリフとシンプルグリフが混在して登録する第１検索テーブルTBL1とシンプルグリフを登録する第２検索テーブルTBL2を用意する。そして、コンポジットグリフの構成要素（シンプルグリフのときとコンポジットグリフのときがある）の描画処理時に、第２検索テーブルTBL2を検索しても該当のものが取得できないときは（つまりコンポジットグリフの構成要素がコンポジットグリフのときは）第１検索テーブルTBL1の検索も行なう点に特徴がある。
【０１６９】
第２実施形態（第１例）は、コンポジットグリフ文字描画処理が第１実施形態と異なり、その他の点は第１実施形態と同様である。以下、第１実施形態との相違点を中心に、具体的に説明する。なお、第２実施形態（第１例）の画像処理部３５０Ｂの構成は第１実施形態の画像処理部３５０Ａと同様である。ここでは図示を割愛する。
【０１７０】
［コンポジットグリフ文字描画処理：第２実施形態（第１例）］
図１１は、第２実施形態（第１例）のコンポジットグリフ文字描画処理（Ｓ２９４）の処理手順の詳細を説明するフローチャートである。第１実施形態と同様の処理ステップには、第１実施形態と同様のステップ番号を付す。
【０１７１】
第２実施形態（第１例）のコンポジットグリフ文字描画処理（Ｓ２９４）では、ステップＳ３４０までは第１実施形態と同様である。
【０１７２】
検索処理部４６６は、コンポジットグリフを構成する各グリフ（シンプルグリフのときとコンポジットグリフのときがある）の第２検索テーブルTBL2からの取得に成功したときは（Ｓ３５０−ＹＥＳ）、そのグリフをシンプルグリフ描画部４８２に渡す。シンプルグリフ描画部４８２は、第１実施形態と同様にシンプルグリフの文字描画処理を実行して各シンプルグリフの部分イメージを生成する（Ｓ３７４）。
【０１７３】
検索処理部４６６は、コンポジットグリフを構成するグリフの第２検索テーブルTBL2からの取得に失敗したときは（Ｓ３５０−ＮＯ）、第１検索テーブルTBL1から取得する（Ｓ３５２）。ここでは、取り敢えず、コンポジットグリフを構成するコンポジットグリフが第１検索テーブルTBL1から取得できるものとして説明を続ける。検索処理部４６６は、そのグリフをコンポジットグリフ描画部４８４に渡す。コンポジットグリフ描画部４８４は、この第２実施形態（第２例）のコンポジットグリフの文字描画処理を実行することで、そのコンポジットグリフを構成する各コンポジットグリフの部分イメージを生成する（Ｓ３５４）。
【０１７４】
コンポジットグリフ描画部４８４の合成部５２６は、シンプルグリフ描画部４８２が描画展開した各シンプルグリフのイメージデータを合成用バッファのそれぞれ対応する位置に描画することで部品イメージを合成する（Ｓ３８０）。
【０１７５】
ステップＳ３５４でのコンポジットグリフの文字描画処理で、そのコンポジットグリフがさらにコンポジットグリフを構成要素に持つ場合には、ステップＳ３５０−ＮＯの系統での処理が繰り返される。したがって、Ｎ段（Ｎは２以上の正の整数）にコンポジット構造が構造化された（ネストした）フォントであっても、正しく描画処理が実行される。
【０１７６】
［適用例：第２実施形態（第１例）］
図１２〜図１２Ｂは、第２実施形態（第１例）の適用例を説明する図である。ここで、図１２は、この適用例で使用する印刷データを示す図である。図１２Ａは、図１２に示す印刷データで使用されているコンポジットグリフの構造を説明する図である。図１２Ｂは、この適用例における第１検索テーブルTBL1と第２検索テーブルTBL2の登録情報の例を示す図である。なお、この適用例で示している各グリフの例は、第２実施形態（第１例）の具体的な説明のために使用している擬似的なもの（擬似コード）であり、実際のものと同じか異なるかは無視する。
【０１７７】
第２実施形態（第１例）の適用例は、処理対象のコンポジットグリフの中に、シンプルグリフとコンポジットグリフを構成要素に持つものが混在している場合である。
【０１７８】
たとえば、図１２に示すように、ここで適用する印刷データは、図１０に示した第１実施形態の適用例の印刷データに対して、「Define Glyph 66257 <Glyph66257(Simple)データ> 」の後に、「Define Glyph 20000 <Glyph20000( Composite)データ> 」が追加され、対応する文字描画コマンド「Draw (100,120) 10pt <20000> 」が存在する点が異なる。「Define Glyph 20000 <Glyph20000( Composite)データ> 」は「 Glyph 20000」の定義コマンドであるが、「 Glyph 20000」は、図１２Ａに示すように、コンポジットグリフのみを構成要素とするものではなく、コンポジットグリフ「 Glyph 54736」も構成要素にしている点が第１実施形態と異なる。因みに、この「 Glyph 20000」は現実のものではないが、トゥルータイプフォントの仕様を満たしており、説明のために設定した。
【０１７９】
これを正しく処理するため、第２実施形態（第１例）では、前述のように、コンポジットグリフ文字描画処理を第１実施形態とは異なるものとしている。
【０１８０】
図１２に示す印刷データが、図１に示したホスト側装置２のプリンタドライバにより生成され、インタフェース部２３０および伝送路９を経て印刷装置３のインタフェース部３３０により受信される。
【０１８１】
印刷装置３においては、描画展開処理部として機能する画像処理部３５０Ｂは、図４に示した処理手順に従ってページごとに、描画展開処理を実行する。
【０１８２】
第１実施形態と同様に、印刷データに含まれる全てのグリフの定義コマンド（「 Glyph 20000」まで）について順次実行する。
【０１８３】
この時点では、第１検索テーブルTBL1には、図１２Ｂ（１）に示すように、「 Glyph 54596」，「 Glyph 65607」，「 Glyph 65650」，「 Glyph 65681」，「 Glyph 54736」，「 Glyph 66257」，「 Glyph 20000」が登録される。第２検索テーブルTBL2には、図１２Ｂ（２）に示すように、「 Glyph 65607」，「 Glyph 65650」，「 Glyph 65681」，「 Glyph 66257」が登録される。
【０１８４】
画像処理部３５０Ｂは、図１２に示す印刷データの次のコマンド「Draw (100,100) 10pt <54596> 」を読み込み（Ｓ２２２：図４）、図５に示すコマンド実行処理（Ｓ２３０）へ進む。このコマンドは、座標（１００，１００）の位置に１０ptの大きさで「 Glyph 54596」を描画するコマンドであるため、画像処理部３５０Ｂは、「文字描画コマンド」の処理のために、図８に示す文字描画コマンド実行処理（Ｓ２６０）へ進む。
【０１８５】
画像処理部３５０Ｂは、第１検索テーブルTBL1を検索して「 Glyph 54596」のデータを取得する（Ｓ２７２）。「 Glyph 54596」はコンポジットグリフであるため（２９０−ＹＥＳ）、画像処理部３５０Ｂは、図１１に示すコンポジットグリフの文字描画処理を実行することになる（Ｓ２９４）。
【０１８６】
コンポジットグリフ文字描画処理（Ｓ２９４）に入ると、画像処理部３５０Ｂは先ず合成用バッファを用意し（Ｓ３１０）、処理対象のコンポジットグリフを構成する各グリフのグリフＩＤと配置情報を順次取得する（Ｓ３２０，Ｓ３３０）。ここでは、コンポジットグリフ「 Glyph 54596」を構成する３つのシンプルグリフ「 Glyph 65607」，「 Glyph 65650」，「 Glyph 65681」の内のたとえば「ＩＤ： 65607」とその配置情報を最初に取得する。
【０１８７】
画像処理部３５０Ｂは、第２検索テーブルTBL2を検索してシンプルグリフ「 Glyph 65607」のデータを取得する（Ｓ３４０，Ｓ３５０−ＹＥＳ）。そして、画像処理部３５０Ｂは、「 Glyph 65607」を指定された大きさで描画展開し、生成したイメージデータを「 Glyph 54596」の合成用バッファ上の「配置情報」に従った位置に貼り付ける（Ｓ３７４，Ｓ３８０）。
【０１８８】
さらに画像処理部３５０Ｂは、コンポジットグリフ「 Glyph 54596」を構成する残りのグリフ「 Glyph 65650」，「 Glyph 65681」についても同様に処理を実行する。これら残りも全てシンプルグリフであるので、画像処理部３５０Ｂは、第２検索テーブルTBL2から検索することで、コンポジットグリフ「 Glyph 54596」の合成された画像を生成する。そして、画像処理部３５０Ｂは、合成用バッファにて合成したコンポジットグリフ「 Glyph 54596」の合成イメージデータ（合成画像）をページバッファの座標（１００，１００）の位置に貼り付ける（Ｓ２９８）。
【０１８９】
画像処理部３５０Ｂは、次のコマンド「Draw (100,120) 10pt <20000> 」を読み込み（Ｓ２２２：図４）、図５に示すコマンド実行処理（Ｓ２３０）へ進む。このコマンドは、座標（１００，１２０）の位置に１０ptの大きさで「 Glyph 20000」を描画するコマンドである。
【０１９０】
画像処理部３５０Ｂは、第１検索テーブルTBL1を検索して「 Glyph 20000」のデータを取得する（Ｓ２７２）。「 Glyph 20000」はコンポジットグリフであるため（２９０−ＹＥＳ）、画像処理部３５０Ｂは、図１１に示すコンポジットグリフの文字描画処理を実行することになる（Ｓ２９４）。
【０１９１】
コンポジットグリフ文字描画処理（Ｓ２９４）に入ると、画像処理部３５０Ｂは先ず合成用バッファを用意し（Ｓ３１０）、処理対象のコンポジットグリフを構成するグリフのグリフＩＤと配置情報を順次取得する（Ｓ３２０，Ｓ３３０）。ここでは、コンポジットグリフ「 Glyph 20000」を構成するシンプルグリフ「 Glyph 65650」とコンポジットグリフ「 Glyph 54736」の内のたとえば「ＩＤ： 65650」とその配置情報を最初に取得する。
【０１９２】
画像処理部３５０Ｂは、第２検索テーブルTBL2を検索してグリフ「 Glyph 65650」の取得を試みる（Ｓ３４０）。シンプルグリフであるから取得に成功するので（Ｓ３５０−ＹＥＳ）、画像処理部３５０Ｂは、「 Glyph 65650」を指定された大きさで描画展開し、生成したイメージデータを「 Glyph 20000」の合成用バッファ上の「配置情報」に従った位置に貼り付ける（Ｓ３７４，Ｓ３８０）。
【０１９３】
次に画像処理部３５０Ｂは、残りの「ＩＤ： 54736」とその配置情報を取得する。画像処理部３５０Ｂは、第２検索テーブルTBL2を検索してグリフ「 Glyph 54736」の取得を試みる（Ｓ３４０）。グリフ「 Glyph 54736」は第２検索テーブルTBL2には未登録であり、取得は失敗する（Ｓ３５０−ＮＯ）。このため、画像処理部３５０Ｂは、第１検索テーブルTBL1を検索してグリフ「 Glyph 54736」の取得を試みる（Ｓ３５２）。第１検索テーブルTBL1には登録されているので取得に成功する。
【０１９４】
画像処理部３５０Ｂは、コンポジットグリフ「 Glyph 54736」について、第２実施形態（第１例）のコンポジットグリフの文字描画処理を実行することで、コンポジットグリフ「 Glyph 54736」を構成する各シンプルグリフの部分イメージを生成して合成することで「 Glyph 54736」の合成イメージを得る（Ｓ３５４）。さらに、コンポジットグリフ「 Glyph 54736」の合成イメージを「 Glyph 20000」の合成用バッファ上の「配置情報」に従った位置に貼り付ける（Ｓ３８０）。これによって、コンポジットグリフ「 Glyph 20000」の合成された画像が得られる。
【０１９５】
そして、画像処理部３５０Ｂは、合成用バッファにて合成したコンポジットグリフ「 Glyph 54736」の合成イメージデータ（合成画像）をページバッファの座標（１００，１２０）の位置に貼り付ける（Ｓ２９８）。以上により、図１２に示す印刷データに基づく文字描画処理は完了する。
【０１９６】
＜描画展開処理：第２実施形態（第２例）＞
以下に、第２実施形態（第２例）の描画展開処理を説明する。第２実施形態（第２例）では、第２実施形態（第１例）をベースに、コンポジットグリフの構成要素がコンポジットグリフのときに、第２検索テーブルTBL2には該当のものがなく第１検索テーブルTBL1から該当のものが取得できたときは、そのコンポジットグリフの描画展開後に、そのコンポジットグリフを第２検索テーブルTBL2に追加（登録）するに特徴がある。
【０１９７】
第２実施形態（第２例）は、コンポジットグリフ文字描画処理が第２実施形態（第１例）と異なり、その他の点は第２実施形態（第１例）と同様である。以下、第２実施形態（第１例）との相違点を中心に、具体的に説明する。
【０１９８】
［装置構成］
図１３は、第２実施形態（第２例）の画像処理部３５０Ｃの構成例を示す図である。第２実施形態（第２例）の画像処理部３５０Ｃは、第１実施形態の画像処理部３５０Ａをベースに、文字描画コマンド実行部４６０がグリフ判定部４６８を有するが異なる。
【０１９９】
グリフ判定部４６８は、検索処理部４６６が第２検索テーブルTBL2から取得したグリフが、シンプルグリフであるかコンポジットグリフであるかを判別する。その判別結果に応じて、検索処理部４６６が取得したグリフの渡し先（シンプルグリフ描画部４８２かコンポジットグリフ描画部４８４か）を切り替える。
【０２００】
［コンポジットグリフ文字描画処理：第２実施形態（第２例）］
図１４は、第２実施形態（第２例）のコンポジットグリフ文字描画処理（Ｓ２９４）の処理手順の詳細を説明するフローチャートである。第１実施形態と同様の処理ステップには、第１実施形態と同様のステップ番号を付す。
【０２０１】
第２実施形態（第２例）のコンポジットグリフ文字描画処理（Ｓ２９４）では、ステップＳ３５０までは第２実施形態（第１例）と同様である。
【０２０２】
検索処理部４６６がコンポジットグリフを構成する各グリフ（シンプルグリフのときとコンポジットグリフのときがある）の第２検索テーブルTBL2からの取得に成功したときは（Ｓ３５０−ＹＥＳ）、グリフ判定部４６８は、そのグリフがシンプルグリフであるか否かを確認する（Ｓ３６０）。シンプルグリフのときは、グリフ判定部４６８は、そのグリフをシンプルグリフ描画部４８２に渡す。シンプルグリフ描画部４８２は、第１実施形態と同様にシンプルグリフの文字描画処理を実行して各シンプルグリフの部分イメージを生成する（Ｓ３７４）。
【０２０３】
シンプルグリフでない（つまりコンポジットグリフ）のときは、グリフ判定部４６８は、そのグリフをコンポジットグリフ描画部４８４に渡す。コンポジットグリフ描画部４８４は、この第２実施形態（第２例）のコンポジットグリフの文字描画処理を実行することで、そのコンポジットグリフを構成する各コンポジットグリフの部分イメージを生成する処理に移行する（Ｓ３６４）。
【０２０４】
検索処理部４６６は、コンポジットグリフを構成するグリフの第２検索テーブルTBL2からの取得に失敗したときは（Ｓ３５０−ＮＯ）、第１検索テーブルTBL1から取得する（Ｓ３５２）。ここでは、取り敢えず、コンポジットグリフを構成するコンポジットグリフが第１検索テーブルTBL1から取得できるものとして説明を続ける。
【０２０５】
検索処理部４６６は、そのグリフをコンポジットグリフ描画部４８４に渡す。コンポジットグリフ描画部４８４は、この第２実施形態（第２例）のコンポジットグリフの文字描画処理を実行することで、そのコンポジットグリフを構成する各コンポジットグリフの部分イメージを生成する処理に移行する（Ｓ３５４）。コンポジットグリフ描画部４８４によるそのコンポジットグリフの描画展開後に、登録処理部４４６は、そのコンポジットグリフを第２検索テーブルTBL2に登録する（Ｓ３５６）。
【０２０６】
描画実行部４８０は、描画展開した各シンプルグリフのイメージデータを合成用バッファのそれぞれ対応する位置に描画することで部品イメージを合成する（Ｓ３８０）。
【０２０７】
第２実施形態（第２例）では、コンポジットグリフを構成するコンポジットグリフの文字描画処理後には第２検索テーブルTBL2にコンポジットグリフを登録するので（Ｓ３５６）で、その後に同じコンポジットグリフの文字描画処理が必要になったら、第１検索テーブルTBL1ではなく登録数の少ない第２検索テーブルTBL2からグリフが取得される（Ｓ３４０，Ｓ３５０−ＹＥＳ）。したがって、第２実施形態（第２例）の方が第２実施形態（第１例）よりも検索効率が向上する。グリフ検索時間が第１例よりも縮され、描画処理時間がさらに短縮される。
【０２０８】
［適用例：第２実施形態（第２例）］
図１５〜図１５Ａは、第２実施形態（第２例）の適用例を説明する図である。ここで、図１５は、この適用例で使用する印刷データを示す図である。図１５Ａは、この適用例における第１検索テーブルTBL1と第２検索テーブルTBL2の登録情報の例を示す図である。なお、この適用例で示している各グリフの例は、第２実施形態（第２例）の具体的な説明のために使用している擬似的なもの（擬似コード）であり、実際のものと同じか異なるかは無視する。
【０２０９】
図１５に示すように、ここで適用する印刷データは、図１２に示した第２実施形態（第１例）の適用例の印刷データに対して、「 Glyph 20000」に関する文字描画コマンドが複数存在するように変形している点が異なる。
【０２１０】
１つ目のコマンド「Draw (100,120) 10pt <20000> 」でのコンポジットグリフ文字描画処理（Ｓ２９４）で、画像処理部３５０Ｃは、コンポジットグリフ「 Glyph 20000」を構成するコンポジットグリフ「 Glyph 54736」を第２検索テーブルTBL2に追加する（Ｓ３５６）。これによって、第２検索テーブルTBL2には、図１５Ａ（３）に示すように、「 Glyph 65607」，「 Glyph 65650」，「 Glyph 65681」，「 Glyph 66257」，「 Glyph 54736」が登録される。
【０２１１】
したがって、２つ目のコマンド「Draw (100,180) 10pt <20000> 」でのコンポジットグリフ文字描画処理（Ｓ２９４）で、コンポジットグリフ「 Glyph 20000」を構成するコンポジットグリフ「 Glyph 54736」を描画するとき、画像処理部３５０Ｃは、第２検索テーブルTBL2からコンポジットグリフ「 Glyph 54736」のデータを取得する。ステップＳ３５０−ＮＯの系統での登録数の多い第１検索テーブルTBL1からの取得を実行せずに済み、検索効率が向上する。
【０２１２】
［適用例：第２実施形態（第３例）］
図１６〜図１６Ｂは、第２実施形態（第３例）の適用例を説明する図である。ここで、図１６は、この適用例で使用する印刷データを示す図である。図１６Ａは、図１６に示す印刷データで使用されているコンポジットグリフの構造を説明する図である。図１６Ｂは、この適用例における第１検索テーブルTBL1と第２検索テーブルTBL2の登録情報の例を示す図である。なお、この適用例で示している各グリフの例は、第２実施形態（第２例）の具体的な説明のために使用している擬似的なもの（擬似コード）であり、実際のものと同じか異なるかは無視する。
【０２１３】
第２実施形態（第３例）の適用例は、処理対象のコンポジットグリフの中に、複数のコンポジットグリフを構成要素に持つもの（典型的には２つのコンポジットグリフを構成要素とするもの）が混在している場合である。以下では、図１４に示した第２実施形態（第２例）のコンポジットグリフの文字描画処理を適用する場合で説明する。図示しないが、図１１に示した第２実施形態（第１例）のコンポジットグリフの文字描画処理を適用してもよい。
【０２１４】
この適用例では、図１６に示すような印刷データ（擬似コード）を描画展開する場合で説明する。図１６のトゥルータイプフォントのグリフ「 Glyph 20002」，「 Glyph 20003」，「 Glyph 20004」は、図１６Ａに示すようなコンポジット構造を持つ。コンポジットグリフ「 Glyph 20002」は、２つのシンプルグリフ「 Glyph 65607」，「 Glyph 65681」の組合せで構成されている。コンポジットグリフ「 Glyph 20003」は、２つのシンプルグリフ「 Glyph 66257」，「 Glyph 65681」の組合せで構成されている。コンポジットグリフ「 Glyph 20004」は、２つのコンポジットグリフ「 Glyph 20002」，「 Glyph 20003」の組合せで構成されている。
【０２１５】
図１０に示す印刷データが、図１に示したホスト側装置２のプリンタドライバにより生成され、インタフェース部２３０および伝送路９を経て印刷装置３のインタフェース部３３０により受信される。
【０２１６】
印刷装置３においては、描画展開処理部として機能する画像処理部３５０Ｃは、図４に示した処理手順に従ってページごとに、描画展開処理を実行する。
【０２１７】
第２実施形態（第２例）と同様に、印刷データに含まれる全てのグリフの定義コマンド（「 Glyph 20004」まで）について順次実行する。
【０２１８】
この時点では、第１検索テーブルTBL1には、図１６Ｂ（１）に示すように、「 Glyph 65607」，「 Glyph 65681」，「 Glyph 20003」，「 Glyph 66257」，「 Glyph 20003」，「 Glyph 20004」が登録される。第２検索テーブルTBL2には、図１６Ｂ（２）に示すように、「 Glyph 65607」，「 Glyph 65681」，「 Glyph 66257」が登録される。
【０２１９】
画像処理部３５０Ｃは、図１６に示す印刷データの次のコマンド「Draw (100,120) 10pt <20004> 」を読み込み（Ｓ２２２：図４）、図５に示すコマンド実行処理（Ｓ２３０）へ進む。このコマンドは、座標（１００，１２０）の位置に１０ptの大きさで「 Glyph 20004」を描画するコマンドであるため、画像処理部３５０Ｃは、「文字描画コマンド」の処理のために、図８に示す文字描画コマンド実行処理（Ｓ２６０）へ進む。
【０２２０】
画像処理部３５０Ｃは、第１検索テーブルTBL1を検索して「 Glyph 20004」のデータを取得する（Ｓ２７２）。「 Glyph 20004」はコンポジットグリフであるため（２９０−ＹＥＳ）、画像処理部３５０Ｃは、図１４に示すコンポジットグリフの文字描画処理を実行することになる（Ｓ２９４）。
【０２２１】
コンポジットグリフ文字描画処理（Ｓ２９４）に入ると、画像処理部３５０Ｃは先ず合成用バッファを用意し（Ｓ３１０）、処理対象のコンポジットグリフを構成する各グリフのグリフＩＤと配置情報を順次取得する（Ｓ３２０，Ｓ３３０）。ここでは、コンポジットグリフ「 Glyph 20004」を構成する２つのコンポジットグリフ「 Glyph 20002」，「 Glyph 20003」の内のたとえば「ＩＤ： 20002」とその配置情報を最初に取得する。「Glyph 20002」は、「 Glyph 20004」の左上隅に配置する、という情報が得られる。
【０２２２】
画像処理部３５０Ｃは、第２検索テーブルTBL2を検索してグリフ「 Glyph 20002」の取得を試みる（Ｓ３４０）。この時点では、グリフ「 Glyph 20002」が第２検索テーブルTBL2には未登録であり、取得は失敗する（Ｓ３５０−ＮＯ）。このため、画像処理部３５０Ｃは、第１検索テーブルTBL1を検索してグリフ「 Glyph 20002」の取得を試みる（Ｓ３５２）。第１検索テーブルTBL1には登録されているので取得に成功する。
【０２２３】
画像処理部３５０Ｃは、コンポジットグリフ「 Glyph 20002」について、第２実施形態（第２例）のコンポジットグリフの文字描画処理を実行することで、コンポジットグリフ「 Glyph 20002」を構成する各シンプルグリフの部分イメージを生成して合成することで「 Glyph 20002」の合成イメージを得る（Ｓ３５４）。さらに、画像処理部３５０Ｃは、コンポジットグリフ「 Glyph 20004」を構成するコンポジットグリフ「 Glyph 20002」を第２検索テーブルTBL2に追加する（Ｓ３５６）。さらに、コンポジットグリフ「 Glyph 20002」の合成イメージを「 Glyph 20004」の合成用バッファ上の「配置情報」に従った位置に貼り付ける（Ｓ３８０）。
【０２２４】
次に画像処理部３５０Ｃは、残りの「ＩＤ： 20003」とその配置情報を取得する。「Glyph 20003」は、「 Glyph 20002」の下に配置する、という情報が得られる。
【０２２５】
画像処理部３５０Ｃは、第２検索テーブルTBL2を検索してグリフ「 Glyph 20003」の取得を試みる（Ｓ３４０）。この時点では、グリフ「 Glyph 20003」が第２検索テーブルTBL2には未登録であり、取得は失敗する（Ｓ３５０−ＮＯ）。このため、画像処理部３５０Ｃは、第１検索テーブルTBL1を検索してグリフ「 Glyph 20003」の取得を試みる（Ｓ３５２）。第１検索テーブルTBL1には登録されているので取得に成功する。
【０２２６】
画像処理部３５０Ｃは、コンポジットグリフ「 Glyph 20003」について、第２実施形態（第２例）のコンポジットグリフの文字描画処理を実行することで、コンポジットグリフ「 Glyph 20003」を構成する各シンプルグリフの部分イメージを生成して合成することで「 Glyph 20003」の合成イメージを得る（Ｓ３５４）。さらに、画像処理部３５０Ｃは、コンポジットグリフ「 Glyph 20004」を構成するコンポジットグリフ「 Glyph 20003」を第２検索テーブルTBL2に追加する（Ｓ３５６）。さらに、コンポジットグリフ「 Glyph 20003」の合成イメージを「 Glyph 20004」の合成用バッファ上の「配置情報」に従った位置に貼り付ける（Ｓ３８０）。これによって、コンポジットグリフ「 Glyph 20000」の合成された画像が得られる。
【０２２７】
そして、画像処理部３５０Ｃは、合成用バッファにて合成したコンポジットグリフ「 Glyph 20004」の合成イメージデータ（合成画像）をページバッファの座標（１００，１２０）の位置に貼り付ける（Ｓ２９８）。以上により、図１６に示す印刷データに基づく文字描画処理は完了する。
【０２２８】
第２検索テーブルTBL2には、図１６Ｂ（３）に示すように、「 Glyph 65607」，「 Glyph 65681」，「 Glyph 66257」，「 Glyph 20002」，「 Glyph 20003」が登録される。したがって、この後に、同じコンポジットグリフ「 Glyph 20002」，「 Glyph 20002」の文字描画の際には、画像処理部３５０Ｃは、第２検索テーブルTBL2からこれらのコンポジットグリフ「 Glyph 20002」，「 Glyph 20002」のデータを取得する。ステップＳ３５０−ＮＯの系統での登録数の多い第１検索テーブルTBL1からの取得を実行せずに済み、検索効率が向上する。
【０２２９】
＜描画展開処理：第３実施形態＞
以下に、第３実施形態の描画展開処理を説明する。第３実施形態の描画展開処理は、第１〜第２実施形態の仕組みをキャッシュ検索を利用した文字描画処理と併用する点に特徴がある。キャッシュ機能が効果的に機能するときはキャッシュ検索を適用して高速に文字描画処理を実行し、キャッシュ機能が効果的でないときは第１〜第２実施形態を適用することで、全体として、より高速な文字描画処理を実現するものである。以下では、代表して、第１実施形態との組合せで説明する。
【０２３０】
［装置構成］
図１７は、第３実施形態の画像処理部３５０Ｄの構成例を示す図である。第３実施形態の画像処理部３５０Ｄは、第１実施形態の画像処理部３５０Ａをベースに、キャッシュ機能用の機能部を備える。ここでは、キャッシュデータの記憶領域も画像処理部３５０Ｄに含むものとして示すが、このことは必須ではなく、一般的には、前述のように、ディスク装置３８０やＲＡＭ３１２がその記憶領域として利用される。
【０２３１】
キャッシュ機能用の機能部としては、キャッシュ処理用のデータを処理するキャッシュデータ処理部とキャッシュデータを記憶するキャッシュ記憶部に大別される。
【０２３２】
画像処理部３５０Ｄは、キャッシュデータ処理部として、文字キャッシュ判定部６１０、部品キャッシュ判定部６２０を備える。画像処理部３５０Ｄは、キャッシュ記憶部として、文字キャッシュ記憶部６３０、部品キャッシュ記憶部６４０を備える。
【０２３３】
文字キャッシュ判定部６１０は、入力された文字がシンプルグリフであるときに、その文字が文字キャッシュ記憶部６３０に登録されるべきグリフであるか否かやそのグリフが既に文字キャッシュ記憶部６３０に登録されているか否かを確認する。
【０２３４】
部品キャッシュ判定部６２０は、入力されたグリフがコンポジットグリフであるとき、そのコンポジットグリフを構成するグリフが部品キャッシュ記憶部６４０に登録されるべきグリフであるか否かやそのグリフが既に部品キャッシュ記憶部６４０に登録されているか否かを確認する。
【０２３５】
画像処理部３５０Ｄは、これらキャッシュ機能用の機能部と第１実施形態の画像処理部３５０Ａの機能部との協調処理により、文字のフォントデータから、その文字のビットマップデータを生成したり、その文字を形成するグリフのビットマップデータを生成したりする。
【０２３６】
文字キャッシュ記憶部６３０は、各グリフについて、ビットマップデータとキャッシュ登録情報を記憶している。本実施形態では、キャッシュ登録情報には、少なくとも、フォント名、グリフを特定する識別子（ＩＤ）、および文字サイズを含む。
【０２３７】
画像処理部３５０Ｄは、入力されたグリフの文字描画処理が完了すると一時的にそのグリフのビットマップデータを文字キャッシュ記憶部６３０に記憶し、同じグリフの描画処理時にはそのキャッシュデータを出力データとして利用する。
【０２３８】
部品キャッシュ記憶部６４０は、各部品グリフについて、ビットマップデータとキャッシュ登録情報を記憶している。本実施形態では、キャッシュ登録情報には、少なくとも、フォント名、部品グリフを特定する識別子（ＩＤ）、および文字サイズを含む。
【０２３９】
画像処理部３５０Ｄは、入力されたグリフがコンポジットグリフである場合に、それを構成する部品グリフの文字描画処理が完了すると一時的にその部品グリフのビットマップデータを部品キャッシュ記憶部６４０に記憶し、同じ部品グリフの描画処理時にはそのキャッシュデータを出力データとして利用する。
【０２４０】
［文字描画コマンド実行処理：第３実施形態］
図１８は、第３実施形態の文字描画コマンド実行処理（Ｓ２６０）の処理手順の詳細を説明するフローチャートである。第１実施形態と同様の処理ステップには、第１実施形態と同様のステップ番号を付す。
【０２４１】
第３実施形態の文字描画コマンド実行処理（Ｓ２６０）では、ステップＳ２７２までは第１実施形態と同様である。
【０２４２】
描画対象のグリフを検索処理部４６６が第１検索テーブルTBL1から取得したら（Ｓ２７２）、文字キャッシュ判定部６１０は、そのグリフのキャッシュデータが文字キャッシュ記憶部６３０に登録されているか否かを判定する（Ｓ２８０）。キャッシュ登録があるときは（Ｓ２８０−ＹＥＳ）、画像処理部３５０Ｄは、対応するキャッシュデータを文字キャッシュ記憶部６３０から読み出して（Ｓ２８２）、ページバッファの決められた配置位置に描画する（Ｓ２９８）。
【０２４３】
キャッシュ登録がないときは（Ｓ２８０−ＮＯ）、画像処理部３５０Ｄは、第１実施形態と同様に、そのグリフがコンポジットグリフであるのか否かを判定して、その結果に応じた描画処理を実行する（Ｓ２９０〜Ｓ２９４）。その後、生成した文字のイメージデータを文字キャッシュ記憶部６３０に登録するとともに（Ｓ２９６）、ページバッファの決められた配置位置に描画し（Ｓ２９８）、文字描画登録コマンド実行処理を完了させる。
【０２４４】
［コンポジットグリフ文字描画処理：第３実施形態］
図１９は、第３実施形態のコンポジットグリフ文字描画処理（Ｓ２９４）の処理手順の詳細を説明するフローチャートである。
【０２４５】
第３実施形態のコンポジットグリフ文字描画処理（Ｓ２９４）では、ステップＳ３４０までは第１実施形態と同様である。
【０２４６】
検索処理部４６６は、第２検索テーブルTBL2から描画対象の各部品グリフのデータを取得して部品キャッシュ判定部６２０に渡す（Ｓ３４０）。ここでの「各グリフ」は、第１実施形態との組合せのときはシンプルグリフのみであり、第２実施形態との組合せのときはシンプルグリフのときとコンポジットグリフのときがある。
【０２４７】
部品キャッシュ判定部６２０は、その部品グリフのキャッシュデータ（各グリフの部分イメージ）が部品キャッシュ記憶部６４０に登録されているか否かを判定する（Ｓ３４２）。キャッシュ登録（エントリ）があるときは（Ｓ３４２−ＹＥＳ）、画像処理部３５０Ｄは、対応するキャッシュデータを部品キャッシュ記憶部６４０から読み出して（Ｓ３４４）、その各グリフの部分イメージを合成用バッファのそれぞれ対応する位置に描画することで部品イメージを合成する（Ｓ３８０）。
【０２４８】
キャッシュ登録がないときは（Ｓ３４２−ＮＯ）、シンプルグリフ描画部４８２は、シンプルグリフの描画展開を実行してその部分イメージを生成し（Ｓ３７４）、生成した部分イメージを部品キャッシュ記憶部６４０に登録する（Ｓ３７６）。合成部５２６は、シンプルグリフ描画部４８２が描画展開した各グリフの部分イメージを合成用バッファのそれぞれ対応する位置に描画することで部品イメージを合成する（Ｓ３８０）。
【０２４９】
［適用例：第３実施形態］
図２０〜図２０Ｂは、第３実施形態の適用例を説明する図である。ここで、図２０は、この適用例で使用する印刷データを示す図である。図２０Ａは、この適用例における文字キャッシュ記憶部６３０の登録情報の例を示す図である。図２０Ｂは、この適用例における部品キャッシュ記憶部６４０の登録情報の例を示す図である。図２０に示す印刷データで使用されているコンポジットグリフの構造は図１０Ａに示したものと同じである。なお、この適用例で示している各グリフの例は、第３実施形態の具体的な説明のために使用している擬似的なもの（擬似コード）であり、実際のものと同じか異なるかは無視する。
【０２５０】
図２０に示す印刷データが、図１に示したホスト側装置２のプリンタドライバにより生成され、インタフェース部２３０および伝送路９を経て印刷装置３のインタフェース部３３０により受信される。
【０２５１】
印刷装置３においては、描画展開処理部として機能する画像処理部３５０Ｄは、図４に示した処理手順に従ってページごとに、描画展開処理を実行する。
【０２５２】
第１実施形態と同様に、印刷データに含まれる全てのグリフの定義コマンド（「 Glyph 66257」まで）について順次実行する。
【０２５３】
この時点では、第１検索テーブルTBL1には、図１０Ｂ（１）に示すように、「 Glyph 54596」，「 Glyph 65607」，「 Glyph 65650」，「 Glyph 65681」，「 Glyph 54736」，「 Glyph 66257」が登録される。第２検索テーブルTBL2には、図１０Ｂ（２）に示すように、「 Glyph 65607」，「 Glyph 65650」，「 Glyph 65681」，「 Glyph 66257」が登録される。また、図２０Ａ（１）に示すように、文字キャッシュ記憶部６３０には登録済みの文字キャッシュは存在しないし、図２０Ｂ（１）に示すように、部品キャッシュ記憶部６４０には登録済みの部品キャッシュは存在しない。
【０２５４】
＊「Draw (100,100) 10pt <54596> 」の処理：
画像処理部３５０Ｄは、図２０に示す印刷データの次のコマンド「Draw (100,100) 10pt <54596> 」を読み込み（Ｓ２２２：図４）、図５に示すコマンド実行処理（Ｓ２３０）へ進む。このコマンドは、座標（１００，１００）の位置に１０ptの大きさで「 Glyph 54596」を描画するコマンドであるため、画像処理部３５０Ｄは、「文字描画コマンド」の処理のために、図１８に示す文字描画コマンド実行処理（Ｓ２６０）へ進む。
【０２５５】
画像処理部３５０Ｄは、第１検索テーブルTBL1を検索して「 Glyph 54596」のデータを取得し（Ｓ２７２）、さらに描画パラメータを取得する（Ｓ２７４）。ここでは、フォントの大きさ指定１０ptが取得される。
【０２５６】
トゥルータイプフォントであるので、文字キャッシュ判定部６１０は、そのグリフのキャッシュデータが文字キャッシュ記憶部６３０に登録されているか否かを判定する（Ｓ２８０）。この時点では、文字キャッシュが空なので（Ｓ２８０−ＮＯ）、画像処理部３５０Ｄは、グリフがコンポジットグリフであるのか否かを判定する（Ｓ２９０）。「 Glyph 54596」はコンポジットグリフであるため（２９０−ＹＥＳ）、画像処理部３５０Ｄは、図１９に示すコンポジットグリフの文字描画処理を実行することになる（Ｓ２９４）。
【０２５７】
コンポジットグリフ文字描画処理（Ｓ２９４）に入ると、画像処理部３５０Ｄは先ず合成用バッファを用意し（Ｓ３１０）、処理対象のコンポジットグリフを構成する各グリフのグリフＩＤと配置情報を順次取得する（Ｓ３２０，Ｓ３３０）。ここでは、コンポジットグリフ「 Glyph 54596」を構成する３つのシンプルグリフ「 Glyph 65607」，「 Glyph 65650」，「 Glyph 65681」の内のたとえば「ＩＤ： 65607」とその配置情報を最初に取得する。「 Glyph 65607」は「 Glyph 54596」の左上に配置するという情報が得られる。
【０２５８】
画像処理部３５０Ｄは、第２検索テーブルTBL2を検索してシンプルグリフ「 Glyph 65607」のデータを取得する（Ｓ３４０）。部品キャッシュ判定部６２０は、その部品グリフのキャッシュデータが部品キャッシュ記憶部６４０に登録されているか否かを判定する（Ｓ３４２）。この時点では、部品キャッシュ記憶部６４０が空なので（Ｓ３４２−ＮＯ）、シンプルグリフ描画部４８２は、シンプルグリフ「 Glyph 65607」の描画展開を実行して部分イメージを生成し（Ｓ３７４）、生成した部分イメージを部品キャッシュ記憶部６４０に登録する（Ｓ３７６）。合成部５２６は、シンプルグリフ描画部４８２が描画展開したシンプルグリフ「 Glyph 65607」の部分イメージを合成用バッファの左上に貼り付ける（Ｓ３８０）。
【０２５９】
ここでは、１０ptの大きさで「 Glyph 65607」のビットマップデータが生成され、図２０Ｂ（２）に示すように、「ＩＤ： 65607」のビットマップデータおよび生成時のサイズ１０ptが部品キャッシュ記憶部６４０に追加される。
【０２６０】
さらに画像処理部３５０Ｄは、コンポジットグリフ「 Glyph 54596」を構成する残りのグリフ「 Glyph 65650」，「 Glyph 65681」についても同様に処理を実行する。これら残りも全てシンプルグリフであり、部品キャッシュ記憶部６４０へのキャッシュ登録がないので（Ｓ３４２−ＮＯ）、画像処理部３５０Ｄは、第２検索テーブルTBL2から検索することで、それそれの部分イメージを生成してコンポジットグリフ「 Glyph 54596」の合成された画像を生成するとともに、このときに生成した各部分イメージを部品キャッシュ記憶部６４０に登録する（Ｓ３７４〜Ｓ３８０）。ここでは、１０ptの大きさで「 Glyph 65650」，「 Glyph 65681」のビットマップデータが生成され、図２０Ｂ（３）に示すように、「ＩＤ： 65650」，「ＩＤ： 65681」の各ビットマップデータおよび生成時のサイズ１０ptが部品キャッシュ記憶部６４０に追加される。
【０２６１】
画像処理部３５０Ｄは、合成用バッファにて合成したコンポジットグリフ「 Glyph 54596」の合成イメージデータ（合成画像）を文字キャッシュ記憶部６３０に登録するとともに（Ｓ２９６）、ページバッファの座標（１００，１００）の位置に貼り付け（Ｓ２９８）、文字描画登録コマンド実行処理を完了させる。この時点では、図２０Ａ（２）に示すように、コンポジットグリフ「 Glyph 54596」のビットマップデータおよび生成時のサイズ１０ptが文字キャッシュ記憶部６３０に追加される。
【０２６２】
＊「Draw (100,120) 10pt <54736> 」の処理：
画像処理部３５０Ｄは、次のコマンド「Draw (100,120) 10pt <54736> 」を読み込み（Ｓ２２２：図４）、図５に示すコマンド実行処理（Ｓ２３０）へ進む。このコマンドは、座標（１００，１２０）の位置に１０ptの大きさで「 Glyph 54736」を描画するコマンドであるため、画像処理部３５０Ｄは、「文字描画コマンド」の処理のために、図１８に示す文字描画コマンド実行処理（Ｓ２６０）へ進む。
【０２６３】
画像処理部３５０Ｄは、第１検索テーブルTBL1を検索して「 Glyph 54736」のデータを取得し（Ｓ２７２）、さらに描画パラメータを取得する（Ｓ２７４）。ここでは、フォントの大きさ指定１０ptが取得される。
【０２６４】
トゥルータイプフォントであるので、文字キャッシュ判定部６１０は、そのグリフのキャッシュデータが文字キャッシュ記憶部６３０に登録されているか否かを判定する（Ｓ２８０）。この時点では、図２０Ａ（２）に示すように、「ＩＤ： 54736」およびサイズ１０ptに対応したエントリがないので（Ｓ２８０−ＮＯ）、画像処理部３５０Ｄは、グリフがコンポジットグリフであるのか否かを判定する（Ｓ２９０）。「 Glyph 54736」はコンポジットグリフであるため（２９０−ＹＥＳ）、画像処理部３５０Ｄは、図１９に示すコンポジットグリフの文字描画処理を実行することになる（Ｓ２９４）。
【０２６５】
コンポジットグリフ文字描画処理（Ｓ２９４）に入ると、画像処理部３５０Ｄは先ず１０ptの大きさに対応した合成用バッファを用意し（Ｓ３１０）、処理対象のコンポジットグリフを構成する各グリフのグリフＩＤと配置情報を順次取得する（Ｓ３２０，Ｓ３３０）。ここでは、コンポジットグリフ「 Glyph 54736」を構成する２つのシンプルグリフ「 Glyph 66257」，「 Glyph 65681」の内のたとえば「ＩＤ： 66257」とその配置情報を最初に取得する。「 Glyph 66257」は「 Glyph 54736」の左上に配置するという情報が得られる。
【０２６６】
画像処理部３５０Ｄは、第２検索テーブルTBL2を検索してシンプルグリフ「 Glyph 66257」のデータを取得する（Ｓ３４０，Ｓ３５０−ＹＥＳ）。部品キャッシュ判定部６２０は、その部品グリフのキャッシュデータが部品キャッシュ記憶部６４０に登録されているか否かを判定する（Ｓ３４２）。この時点では、部品キャッシュ記憶部６４０は図２０Ｂ（３）に示すように、「ＩＤ： 66257」およびサイズ１０ptに対応したエントリがないので（Ｓ３４２−ＮＯ）、シンプルグリフ描画部４８２は、シンプルグリフ「 Glyph 66257」の描画展開を実行して部分イメージを生成し（Ｓ３７４）、生成した部分イメージを部品キャッシュ記憶部６４０に登録する（Ｓ３７６）。合成部５２６は、シンプルグリフ描画部４８２が描画展開したシンプルグリフ「 Glyph 66257」の部分イメージを合成用バッファの左上に貼り付ける（Ｓ３８０）。
【０２６７】
ここでは、１０ptの大きさで「 Glyph 66257」のビットマップデータが生成され、図２０Ｂ（４）に示すように、「ＩＤ： 66257」のビットマップデータおよび生成時のサイズ１０ptが部品キャッシュ記憶部６４０に追加される。
【０２６８】
さらに画像処理部３５０Ｄは、コンポジットグリフ「 Glyph 54736」を構成する残りのグリフ「 Glyph 65681」についても同様に処理を実行する。処理対象のシンプルグリフ「 Glyph 65681」のグリフＩＤと配置情報を取得する（Ｓ３２０，Ｓ３３０）。ここでは、「ＩＤ： 65681」とその配置情報を最初に取得する。「 Glyph 65681」は「 Glyph 54736」の右下に配置するという情報が得られる。
【０２６９】
画像処理部３５０Ｄは、第２検索テーブルTBL2を検索してシンプルグリフ「 Glyph 65681」のデータを取得する（Ｓ３４０）。部品キャッシュ判定部６２０は、その部品グリフのキャッシュデータが部品キャッシュ記憶部６４０に登録されているか否かを判定する（Ｓ３４２）。この時点では、部品キャッシュ記憶部６４０は図２０Ｂ（４）に示すように、「ＩＤ： 65681」およびサイズ１０ptに対応したエントリがあるので（Ｓ３４２−ＹＥＳ）、画像処理部３５０Ｄは、「ＩＤ： 65681」およびサイズ１０ptのビットマップデータを部品キャッシュ記憶部６４０から読み出して（Ｓ３４４）、合成用バッファの右下に貼り付けることで部品イメージを合成する（Ｓ３８０）。
【０２７０】
画像処理部３５０Ｄは、合成用バッファにて合成したコンポジットグリフ「 Glyph 54736」の合成イメージデータ（合成画像）を文字キャッシュ記憶部６３０に登録するとともに（Ｓ２９６）、ページバッファの座標（１００，１２０）の位置に貼り付け（Ｓ２９８）、文字描画登録コマンド実行処理を完了させる。この時点では、図２０Ａ（３）に示すように、コンポジットグリフ「 Glyph 54736」のビットマップデータおよび生成時のサイズ１０ptが文字キャッシュ記憶部６３０に追加される。
【０２７１】
＊「Draw (100,140) 10pt <54596> 」の処理：
画像処理部３５０Ｄは、図２０に示す印刷データの次のコマンド「Draw (100,140) 10pt <54596> 」を読み込み（Ｓ２２２：図４）、図５に示すコマンド実行処理（Ｓ２３０）へ進む。このコマンドは、座標（１００，１４０）の位置に１０ptの大きさで「 Glyph 54596」を描画するコマンドであるため、画像処理部３５０Ｄは、「文字描画コマンド」の処理のために、図１８に示す文字描画コマンド実行処理（Ｓ２６０）へ進む。
【０２７２】
画像処理部３５０Ｄは、第１検索テーブルTBL1を検索して「 Glyph 54596」のデータを取得し（Ｓ２７２）、さらに描画パラメータを取得する（Ｓ２７４）。ここでは、フォントの大きさ指定１０ptが取得される。
【０２７３】
トゥルータイプフォントであるので、文字キャッシュ判定部６１０は、そのグリフのキャッシュデータが文字キャッシュ記憶部６３０に登録されているか否かを判定する（Ｓ２８０）。この時点では、図２０Ａ（３）に示すように、「ＩＤ： 54596」およびサイズ１０ptに対応したエントリがあるので（Ｓ２８０−ＹＥＳ）、画像処理部３５０Ｄは、「ＩＤ： 54596」およびサイズ１０ptのビットマップデータを文字キャッシュ記憶部６３０から読み出して（Ｓ３４４）、ページバッファの座標（１００，１４０）に貼り付け（Ｓ２９８）、文字描画登録コマンド実行処理を完了させる。
【０２７４】
＊「Draw (120,100) 12pt <54596> 」の処理：
画像処理部３５０Ｄは、図２０に示す印刷データの次のコマンド「Draw (120,100) 12pt <54596> 」を読み込み（Ｓ２２２：図４）、図５に示すコマンド実行処理（Ｓ２３０）へ進む。このコマンドは、座標（１２０，１００）の位置に１２ptの大きさで「 Glyph 54596」を描画するコマンドであるため、画像処理部３５０Ｄは、「文字描画コマンド」の処理のために、図１８に示す文字描画コマンド実行処理（Ｓ２６０）へ進む。
【０２７５】
画像処理部３５０Ｄは、第１検索テーブルTBL1を検索して「 Glyph 54596」のデータを取得し（Ｓ２７２）、さらに描画パラメータを取得する（Ｓ２７４）。ここでは、フォントの大きさ指定１２ptが取得される。
【０２７６】
トゥルータイプフォントであるので、文字キャッシュ判定部６１０は、そのグリフのキャッシュデータが文字キャッシュ記憶部６３０に登録されているか否かを判定する（Ｓ２８０）。この時点では、図２０Ａ（３）に示すように、「ＩＤ： 54596」およびサイズ１２ptに対応したエントリがないので（Ｓ２８０−ＮＯ）、画像処理部３５０Ｄは、グリフがコンポジットグリフであるのか否かを判定する（Ｓ２９０）。「 Glyph 54596」はコンポジットグリフであるため（２９０−ＹＥＳ）、画像処理部３５０Ｄは、図１９に示すコンポジットグリフの文字描画処理を実行することになる（Ｓ２９４）。
【０２７７】
コンポジットグリフ文字描画処理（Ｓ２９４）に入ると、画像処理部３５０Ｄは先ず１２ptの大きさに対応した合成用バッファを用意し（Ｓ３１０）、処理対象のコンポジットグリフを構成する各グリフのグリフＩＤと配置情報を順次取得する（Ｓ３２０，Ｓ３３０）。ここでは、コンポジットグリフ「 Glyph 54596」を構成する３つのシンプルグリフ「 Glyph 65607」，「 Glyph 65650」，「 Glyph 65681」の内のたとえば「ＩＤ： 65607」とその配置情報を最初に取得する。「 Glyph 65607」は「 Glyph 54596」の左上に配置するという情報が得られる。
【０２７８】
画像処理部３５０Ｄは、第２検索テーブルTBL2を検索してシンプルグリフ「 Glyph 65607」のデータを取得する（Ｓ３４０）。部品キャッシュ判定部６２０は、その部品グリフのキャッシュデータが部品キャッシュ記憶部６４０に登録されているか否かを判定する（Ｓ３４２）。この時点では、「ＩＤ： 65607」およびサイズ１２ptに対応したエントリがないので（Ｓ３４２−ＮＯ）、シンプルグリフ描画部４８２は、シンプルグリフ「 Glyph 65607」の描画展開を実行して部分イメージを生成し（Ｓ３７４）、生成した部分イメージを部品キャッシュ記憶部６４０に登録する（Ｓ３７６）。合成部５２６は、シンプルグリフ描画部４８２が描画展開したシンプルグリフ「 Glyph 65607」の部分イメージを合成用バッファの左上に貼り付ける（Ｓ３８０）。
【０２７９】
ここでは、１２ptの大きさで「 Glyph 65607」のビットマップデータが生成され、図２０Ｂ（５）に示すように、「ＩＤ： 65607」のビットマップデータおよび生成時のサイズ１２ptが部品キャッシュ記憶部６４０に追加される。
【０２８０】
さらに画像処理部３５０Ｄは、コンポジットグリフ「 Glyph 54596」を構成する残りのグリフ「 Glyph 65650」，「 Glyph 65681」についても同様に処理を実行する。これら残りも全てシンプルグリフであり、１２ptでは部品キャッシュ記憶部６４０へのキャッシュ登録がないので（Ｓ３４２−ＮＯ）、画像処理部３５０Ｄは、第２検索テーブルTBL2から検索することで、それそれの部分イメージを生成してコンポジットグリフ「 Glyph 54596」の合成された画像を生成するとともに、このときに生成した各部分イメージを部品キャッシュ記憶部６４０に登録する（Ｓ３７４〜Ｓ３８０）。ここでは、１２ptの大きさで「 Glyph 65650」，「 Glyph 65681」のビットマップデータが生成され、図２０Ｂ（６）に示すように、「ＩＤ： 65650」，「ＩＤ： 65681」の各ビットマップデータおよび生成時のサイズ１２ptが部品キャッシュ記憶部６４０に追加される。
【０２８１】
画像処理部３５０Ｄは、合成用バッファにて合成したコンポジットグリフ「 Glyph 54596」の合成イメージデータ（合成画像）を文字キャッシュ記憶部６３０に登録するとともに（Ｓ２９６）、ページバッファの座標（１２０，１００）の位置に貼り付け（Ｓ２９８）、文字描画登録コマンド実行処理を完了させる。この時点では、図２０Ａ（４）に示すように、コンポジットグリフ「 Glyph 54596」のビットマップデータおよび生成時のサイズ１２ptが文字キャッシュ記憶部６３０に追加される。
【０２８２】
以上により、図２０に示す印刷データに基づく文字描画処理は完了する。
【０２８３】
この第３実施形態の適用例では、キャッシュ検索による文字描画処理と第１実施形態で示したグリフ検索による文字描画処理を組み合わせているので、キャッシュ登録があるときはキャッシュ検索による文字描画の高速処理が機能し、キャッシュ登録がないときは第１実施形態のグリフ検索による文字描画の高速処理が機能する。文字のキャッシュ登録がないときは、第１実施形態との組合せのないキャッシュ検索ではキャッシュ機能なしの場合と同様に文字描画処理が遅くなってしまうが、この第３実施形態では、第１実施形態でのグリフ検索が機能するので処理低下が抑制される。
【０２８４】
＜電子計算機による構成＞
図２１は、グリフ検索による文字描画処理の制御機構の他の構成例を示すブロック図である。ここでは、パーソナルコンピュータなどの電子計算機を利用して、ソフトウェアを実行するマイクロプロセッサなどから構築される印刷装置３のグリフ検索による文字描画処理の制御機構のより現実的なハードウェア構成を示している。
【０２８５】
すなわち、本実施形態において、グリフ検索による文字描画処理に関わる制御処理を行なう印刷装置３の制御機構の仕組みは、ハードウェア処理回路により構成することに限らず、その機能を実現するプログラムコードに基づき電子計算機（コンピュータ）を用いてソフトウェア的に実現される。よって、本実施形態に係る仕組みを、電子計算機（コンピュータ）を用いてソフトウェアで実現するために好適なプログラムあるいはこのプログラムを格納したコンピュータ読取可能な記憶媒体が発明として抽出される。ソフトウェアにより実行させる仕組みとすることで、ハードウェアの変更を伴うことなく、処理手順などが容易に変更されることとなる。
【０２８６】
前述の一連のグリフ検索による文字描画処理はハードウェアまたはソフトウェアの単独に限らずその両者の複合構成によっても実現され得る。ソフトウェアによる処理を実行する場合、処理手順を示したプログラムを、ハードウェアに組み込まれたコンピュータ内の記憶媒体に組み込んで（インストールして）実行させたり、各種処理が実行可能な汎用の電子計算機にプログラムを組み込んで実行させる。
【０２８７】
グリフ検索による文字描画処理機能をコンピュータに実行させるプログラムは、ＣＤ−ＲＯＭなどの記録媒体を通じて配布される。また、このプログラムは、ＣＤ−ＲＯＭではなくＦＤに格納されてもよい。また、ＭＯドライブを設け、ＭＯに前記プログラムを格納してもよく、またフラッシュメモリなどの不揮発性の半導体メモリカードなど、その他の記録媒体にプログラムを格納してもよい。さらに、ソフトウェアを構成するプログラムは、記録媒体を介して提供されることに限らず、有線または無線などの通信網を介して提供されてもよい。たとえば、他のサーバなどからインターネットなどのネットワークを経由してプログラムをダウンロードして取得したり、更新したりしてもよい。さらに、グリフ検索による文字描画処理を行なう機能を実現するプログラムコードを記述したファイルとしてプログラムが提供されるが、この場合、一括のプログラムファイルとして提供されることに限らず、コンピュータで構成されるシステムのハードウェア構成に応じて、個別のプログラムモジュールとして提供されてもよい。
【０２８８】
たとえば、コンピュータシステム９００は、中央制御部９１０、記憶部９１２、操作部９１４、図示を割愛したその他の周辺部材を有している。
【０２８９】
中央制御部９１０は、ＣＰＵ（Central Processing Unit ）やマイクロプロセッサ（microprocessor）で構成される。この中央制御部９１０は、コンピュータが行なう演算と制御の機能を超小型の集積回路に集約させたＣＰＵを代表例とする電子計算機の中枢をなすものと同様のものである。
【０２９０】
記憶部９１２は、読出専用の記憶部であるＲＯＭ（Read Only Memory）、または随時読出し・書込みが可能なメモリであるＲＡＭ（Random Access Memory）などを具備する。ＲＯＭにはグリフ検索による文字描画処理機能用の制御プログラムなどが格納される。操作部９１４は、利用者による操作を受け付けるためのユーザインタフェースである。
【０２９１】
コンピュータシステム９００の制御系としては、メモリカードなどの図示を割愛した外部記録媒体を挿脱可能に構成し、またインターネットなどの通信網との接続が可能に構成するとよい。このためには、制御系は、中央制御部９１０や記憶部９１２の他に、可搬型の記録媒体の情報を読み込むメモリ読出部９２０や外部との通信インタフェース手段としての通信Ｉ／Ｆ９２２を備えるようにするとよい。メモリ読出部９２０を備えることで外部記録媒体からプログラムのインストールや更新に対応する。通信Ｉ／Ｆ９２２を備えることで、通信網を介しプログラムのインストールや更新に対応する。基本的なグリフ検索による文字描画処理の仕組みは前記実施形態と同様である。
【０２９２】
ここでは、印刷装置３の制御機構をコンピュータにてソフトウェア上で実現する構成例で説明しているが、本実施形態のグリフ検索による文字描画処理を実現するための印刷装置３の制御機構の各部（機能ブロックを含む）の具体的手段は、ハードウェア、ソフトウェア、通信手段、これらの組み合わせ、その他の手段を用いることができ、このこと自体は当業者において自明である。また、機能ブロック同士が複合して１つの機能ブロックに集約されてもよい。また、コンピュータにプログラム処理を実行させるソフトウェアは、組合せの態様に応じて分散してインストールされる。
【０２９３】
以上、本発明について実施形態を用いて説明したが、本発明の技術的範囲は前記実施形態に記載の範囲には限定されない。発明の要旨を逸脱しない範囲で前記実施形態に多様な変更または改良を加えることができ、そのような変更または改良を加えた形態も本発明の技術的範囲に含まれる。
【０２９４】
また、前記の実施形態は、クレーム（請求項）にかかる発明を限定するものではなく、また実施形態の中で説明されている特徴の組合せの全てが発明の解決手段に必須であるとは限らない。前述した実施形態には種々の段階の発明が含まれており、開示される複数の構成要件における適宜の組合せにより種々の発明を抽出できる。実施形態に示される全構成要件から幾つかの構成要件が削除されても、効果が得られる限りにおいて、この幾つかの構成要件が削除された構成が発明として抽出され得る。
【０２９５】
たとえば、キャッシュ検索による文字描画と併用する第３実施形態では、文字キャッシュ記憶部６３０と部品キャッシュ記憶部６４０の双方を使用して文字と部品文字の双方についてキャッシュ検索を適用したが、文字と部品文字の何れか一方のみについてキャッシュ検索を適用するようにしてもよい。
【符号の説明】
【０２９６】
１…印刷システム、２…ホスト側装置、３…印刷装置、９…伝送路、３０…画像形成処理部、３９…画像出力部、３１０…中央演算制御処理部、３３０…インタフェース部、３４０…ＰＤＬデータ解釈部、３５０…画像処理部、３７０…印刷制御部、３８０…ハードディスク装置、３９０…プリンタエンジン部、４１０…コマンド種類判別部、４２０…文字データ格納部、４４０…文字データ登録コマンド実行部、４４２…フォント名取得部、４４４…フォーマット取得部、４４６…登録処理部、４６０…文字描画コマンド実行部、４６２…フォント名取得部、４６４…パラメータ取得部、４６６…検索処理部、４６８…グリフ判定部、４８０…描画実行部、４８２…シンプルグリフ描画部、４８４…コンポジットグリフ描画部、４８６…第３描画部、５２０…識別子取得部、５２２…配置情報取得部、５２６…合成部、６１０…文字キャッシュ判定部、６２０…部品キャッシュ判定部、６３０…文字キャッシュ記憶部、６４０…部品キャッシュ記憶部
【図１】
2010217819.tif 000003
【図２】
2010217819.tif 000004
【図３】
2010217819.tif 000005
【図４】
2010217819.tif 000006
【図５】
2010217819.tif 000007
【図６】
2010217819.tif 000008
【図７】
2010217819.tif 000009
【図８】
2010217819.tif 000010
【図９】
2010217819.tif 000011
【図１０】
2010217819.tif 000012
【図１０Ａ】
2010217819.tif 000013
【図１０Ｂ】
2010217819.tif 000014
【図１０Ｃ】
2010217819.tif 000015
【図１１】
2010217819.tif 000016
【図１２】
2010217819.tif 000017
【図１２Ａ】
2010217819.tif 000018
【図１２Ｂ】
2010217819.tif 000019
【図１３】
2010217819.tif 000020
【図１４】
2010217819.tif 000021
【図１５】
2010217819.tif 000022
【図１５Ａ】
2010217819.tif 000023
【図１６】
2010217819.tif 000024
【図１６Ａ】
2010217819.tif 000025
【図１６Ｂ】
2010217819.tif 000026
【図１７】
2010217819.tif 000027
【図１８】
2010217819.tif 000028
【図１９】
2010217819.tif 000029
【図２０】
2010217819.tif 000030
【図２０Ａ】
2010217819.tif 000031
【図２０Ｂ】
2010217819.tif 000032
【図２１】
2010217819.tif 000033