(57)【要約】      （修正有）【課題】フォントラスタライズ処理において複数のコアを効果的に使用する。【解決手段】データ処理装置は、Ｎ個のコアを有するＣＰＵ、メモリと、制御プログラムを格納する記憶部とを有する。制御プログラムは、データ処理装置に、印刷データに含まれている文字データによって特定される複数の文字のうちメモリにラスターデータが格納されていない文字である新規文字を検索し、検索された新規文字の数をカウントする検索工程と、Ｎ個のコアのうちカウントされた新規文字の数に基づいて決定された数であるＭ個のスレッドを生成するスレッド生成工程と、Ｍ個のスレッドのそれぞれにＮ個のコアのいずれか１つを使用し、複数の文字をＭ個のスレッドに分散して割り当てて、新規文字のラスターデータを生成するラスターデータ生成工程と、文字データに対応するラスターデータを使用して、複数の文字を描画する描画処理工程とを含む工程を実施させる。【選択図】図１
2019029020.tif 000002
【特許請求の範囲】
【請求項１】
データ処理装置であって、
Ｎ個（Ｎは２以上の整数）のコアを有するプロセッサと、
メモリと、
コンピュータ読み取り可能なプログラム命令を格納するデータ格納部であって、前記プログラム命令が、前記プロセッサによる実行の際に、前記データ処理装置に、
印刷データに含まれている文字データによって特定される複数の文字のうち前記メモリにラスターデータが格納されていない文字である新規文字を検索し、前記検索された新規文字の数をカウントする検索工程と、
前記Ｎ個のコアのうち前記カウントされた新規文字の数に基づいて決定された数であるＭ個（ＭはＮ以下の整数）のスレッドを生成するスレッド生成工程と、
前記Ｍ個のスレッドのそれぞれに前記Ｎ個のコアのいずれか１つを使用し、前記複数の文字を前記Ｍ個のスレッドに分散して割り当てて、前記新規文字のラスターデータを生成するラスターデータ生成工程と、
前記文字データに対応するラスターデータを使用して、前記複数の文字を描画する描画処理工程と、
を含む工程を実施させるプログラム命令を格納するデータ格納部と、
備えるデータ処理装置。
【請求項２】
請求項１記載のデータ処理装置であって、
前記描画処理工程は、前記Ｎ個のコアのうち前記Ｍ個のスレッドの処理に使用されるコアとは相違するコアを使用して前記複数の文字を描画するデータ処理装置。
【請求項３】
請求項２記載のデータ処理装置であって、
前記印刷データは、ページ記述言語によって記述されており、
前記描画処理工程は、前記印刷データを解析して前記複数の文字の描画処理の順序が変更可能であるか否かを判断する工程を含み、
前記ラスターデータ生成工程は、前記変更可能でないと判断した場合には、前記描画処理工程に使用されているコアを前記新規文字のラスターデータの生成に割り当てる工程を含むデータ処理装置。
【請求項４】
請求項１乃至３のいずれか１項に記載のデータ処理装置であって、
前記印刷データは、ページ記述言語によって記述されており、
前記描画処理工程は、前記印刷データを解析して前記複数の文字の描画処理の順序が変更可能であるか否かを判断する工程を含み、
前記描画処理工程は、前記変更可能であると判断された場合には、前記ラスターデータが生成中の文字の描画をスキップする工程と、前記ラスターデータの生成完了に応じて前記スキップされた文字の描画を実行する工程とを含むデータ処理装置。
【請求項５】
Ｎ個（Ｎは２以上の整数）のコアを有するプロセッサとメモリとを使用してデータを処理する方法であって、
印刷データに含まれている文字データによって特定される複数の文字のうち前記メモリにラスターデータが格納されていない文字である新規文字を検索し、前記検索された新規文字の数をカウントする検索工程と、
前記Ｎ個のコアのうち前記カウントされた新規文字の数に基づいて決定された数であるＭ個（ＭはＮ以下の整数）のスレッドを生成するスレッド生成工程と、
前記Ｍ個のスレッドのそれぞれに前記Ｎ個のコアのいずれか１つを使用し、前記複数の文字を前記Ｍ個のスレッドに分散して割り当てて、前記新規文字のラスターデータを生成するラスターデータ生成工程と、
前記文字データに対応するラスターデータを使用して、前記複数の文字を描画する描画処理工程と、
備えるデータ処理方法。
【請求項６】
Ｎ個（Ｎは２以上の整数）のコアを有するプロセッサとメモリとを有するデータ処理装置を制御するためのプログラムであって、
印刷データに含まれている文字データによって特定される複数の文字のうち前記メモリにラスターデータが格納されていない文字である新規文字を検索し、前記検索された新規文字の数をカウントする検索工程と、
前記Ｎ個のコアのうち前記カウントされた新規文字の数に基づいて決定された数であるＭ個（ＭはＮ以下の整数）のスレッドを生成するスレッド生成工程と、
前記Ｍ個のスレッドのそれぞれに前記Ｎ個のコアのいずれか１つを使用し、前記複数の文字を前記Ｍ個のスレッドに分散して割り当てて、前記新規文字のラスターデータを生成するラスターデータ生成工程と、
前記文字データに対応するラスターデータを使用して、前記複数の文字を描画する描画処理工程と、
を含む工程を前記データ処理装置に実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理方法、データ処理装置及びプログラムに関し、特にフォント処理に関する。
【背景技術】
【０００２】
画像形成装置（たとえばプリンター、多機能プリンター、又は複合機（Ｍｕｌｔｉｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ））は、ページ記述言語（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）で記述された印刷ジョブに基づいて印刷処理を行うことができる。印刷処理には、印刷ジョブに含まれるフォントデータ（たとえばアウトラインフォントのデータ）に基づいてラスタライズしてラスターデータを生成するフォントラスタライズ処理が含まれることがある。フォントラスタライズ処理は、処理コストの大きな処理なので、ラスターデータは、一般にフォントキャッシュに格納されて再利用される。一方、プロセッサ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）には、複数のコアを有することによって処理能力が向上しつつあるものがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願公開第２０１１／００５８６０８号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
このような状況において、本願発明者は、フォントラスタライズ処理において複数のコアを効果的に使用する方法に着目した。
【０００５】
本発明は、このような状況に鑑みてなされたものであり、フォントラスタライズ処理において複数のコアを効果的に使用する技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明のデータ処理装置は、Ｎ個（Ｎは２以上の整数）のコアを有するプロセッサと、メモリと、コンピュータ読み取り可能なプログラム命令を格納するデータ格納部であって、前記プログラム命令が、前記プロセッサによる実行の際に、前記データ処理装置に、印刷データに含まれている文字データによって特定される複数の文字のうち前記メモリにラスターデータが格納されていない文字である新規文字を検索し、前記検索された新規文字の数をカウントする検索工程と、前記Ｎ個のコアのうち前記カウントされた新規文字の数に基づいて決定された数であるＭ個（ＭはＮ以下の整数）のスレッドを生成するスレッド生成工程と、前記Ｍ個のスレッドのそれぞれに前記Ｎ個のコアのいずれか１つを使用し、前記複数の文字を前記Ｍ個のスレッドに分散して割り当てて、前記新規文字のラスターデータを生成するラスターデータ生成工程と、前記文字データに対応するラスターデータを使用して、前記複数の文字を描画する描画処理工程とを含む工程を実施させるプログラム命令を格納するデータ格納部と備える。
【０００７】
本発明のデータ処理方法は、Ｎ個（Ｎは２以上の整数）のコアを有するプロセッサとメモリとを使用してデータを処理する。前記データ処理方法は、印刷データに含まれている文字データによって特定される複数の文字のうち前記メモリにラスターデータが格納されていない文字である新規文字を検索し、前記検索された新規文字の数をカウントする検索工程と、前記Ｎ個のコアのうち前記カウントされた新規文字の数に基づいて決定された数であるＭ個（ＭはＮ以下の整数）のスレッドを生成するスレッド生成工程と、前記Ｍ個のスレッドのそれぞれに前記Ｎ個のコアのいずれか１つを使用し、前記複数の文字を前記Ｍ個のスレッドに分散して割り当てて、前記新規文字のラスターデータを生成するラスターデータ生成工程と、前記文字データに対応するラスターデータを使用して、前記複数の文字を描画する描画処理工程と備える。
【０００８】
本発明のプログラムは、Ｎ個（Ｎは２以上の整数）のコアを有するプロセッサとメモリとを有するデータ処理装置を制御する。前記プログラムは、印刷データに含まれている文字データによって特定される複数の文字のうち前記メモリにラスターデータが格納されていない文字である新規文字を検索し、前記検索された新規文字の数をカウントする検索工程と、前記Ｎ個のコアのうち前記カウントされた新規文字の数に基づいて決定された数であるＭ個（ＭはＮ以下の整数）のスレッドを生成するスレッド生成工程と、前記Ｍ個のスレッドのそれぞれに前記Ｎ個のコアのいずれか１つを使用し、前記複数の文字を前記Ｍ個のスレッドに分散して割り当てて、前記新規文字のラスターデータを生成するラスターデータ生成工程と、前記文字データに対応するラスターデータを使用して、前記複数の文字を描画する描画処理工程とを含む工程を前記データ処理装置に実行させる。
【発明の効果】
【０００９】
本発明によれば、フォントラスタライズ処理において複数のコアを効果的に使用する技術を提供することができる。
【００１０】
他の態様、有利な点及び代替案と同様、これらのことは、必要に応じて添付図面を参照して以下の詳細な説明を読むことによって当業者にとって明白になるであろう。さらに、本明細書における当該概要及び他のセクションで提供されている説明は、請求されている主題を限定のためでなく例として示すことを意図していることを理解されたい。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態に係る画像形成装置１０の機能構成を示すブロックダイアグラムである。
【図２】一実施形態に係る画像形成装置１０の制御部１００のハードウェア構成を示す説明図である。
【図３】一実施形態に係る画像データ生成処理の内容を示すフローチャートである。
【図４】一実施形態に係るフォントデータロード処理の内容を示すフローチャートである。
【図５】一実施形態に係る文字描画処理の内容を示すフローチャートである。
【図６】一実施形態に係るキャッシュ生成処理の内容を示すフローチャートである。
【発明を実施するための形態】
【００１２】
Ａ．実施形態：
以下、本発明を実施するための形態（以下、「実施形態」という）を、図面を参照して説明する。
【００１３】
図１は、本発明の一実施形態に係る画像形成装置１０の機能構成を示すブロックダイアグラムである。画像形成装置１０は、制御部１００と、画像形成部２００と、操作表示部３００と、記憶部４００と、通信インターフェース部５００とを備えている。操作表示部３００は、タッチパネルとして機能し、様々なメニューを入力画面として表示してユーザーの操作入力を受け付ける。通信インターフェース部５００は、たとえばＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）プロトコル群を使用して通信を行う。
【００１４】
画像形成装置１０は、通信インターフェース部５００を介してページ記述言語（Ｐａｇｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）で記述されたＰＤＬデータを含む印刷ジョブを受信することができる。ページ記述言語には、たとえばＰＣＬ  ＸＬ、ＰｏｓｔＳｃｒｉｐｔ、ＰＣＬ、ＲＰＣＳ、ＰＤＦ（Ｐｏｒｔａｂｌｅ  Ｄｏｃｕｍｅｎｔ  Ｆｏｒｍａｔ）及びＸＰＳがある。ＰＤＬデータは、印刷データとも呼ばれる。
【００１５】
制御部１００は、ＰＤＬ処理部１１１と、描画処理部１１２と、フォント処理制御部１１３と、フォントラスタライザ１１４とを備えている。ＰＤＬ処理部１１１は、ＰＤＬデータを解析してＰＤＬデータに含まれるテキスト（文字）やイメージ、ベクターグラフィックスといったオブジェクトを抽出する。描画処理部１１２は、各オブジェクトを使用し、ＰＤＬデータに含まれる描画情報に基づいて画像データを生成する。なお、記憶部４００については後述する。
【００１６】
図２は、一実施形態に係る画像形成装置１０の制御部１００のハードウェア構成を示す説明図である。制御部１００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１２０と、ＲＡＭ１３０と、ＲＯＭ１４０と、ＮＶＲＡＭ１５０とを備えている。また、制御部１００は、各種Ｉ／Ｏ、ＵＳＢ（ユニバーサル・シリアル・バス）、バス、その他ハードウェア等のインターフェースに関連するコントローラ機能を備え、それぞれ画像形成装置１０の全体を制御する。
【００１７】
ＣＰＵ１２０は、第１コア１２１と、第２コア１２２と、第３コア１２３と、第４コア１２４の４つのコアを含むマルチコアプロセッサである。ＲＡＭ１３０は、ソフトウエアが動作するためのワークメモリとして利用される。ＮＶＲＡＭ１５０は、画像形成装置１０に設定された印刷条件などを保存しておく不揮発性メモリである。ＲＡＭ１３０は、文字のビットマップデータやラスターデータを格納するためのフォントキャッシュ格納領域１３１を有している。
【００１８】
記憶部４００は、非一時的な記録媒体であるハードディスクドライブやフラッシュメモリー等からなる記憶装置である。記憶部４００は、制御部１００が実行する処理の制御プログラム４１０やフォントキャッシュ４２０、フォントデータ４３０といった各種データを記憶している。制御プログラム４１０は、画像形成装置１０の起動時にＲＡＭ１３０にロードされる。制御部１００は、制御プログラム４１０を実行することによって画像形成装置１０の全体を制御する。フォントキャッシュ４２０は、画像形成装置１０の起動時にフォントキャッシュ格納領域１３１にロードされる。
【００１９】
フォントデータ４３０は、画像形成部２００で形成対象となる文字の描画において文字の形状を特定するためのデータである。フォントは、ある書体でデザインされた字形の集合である。フォントデータ４３０は、ビットマップフォントとアウトラインフォントのいずれかのフォントデータを含んでいる。ビットマップフォントは、２値のビットの集合が形成するパターンとしてグリフ（文字の字形）の形状を表現するフォントデータ形式である。ビットマップフォントは、２値のビットの集合であるビットマップデータを含んでいる。
【００２０】
アウトラインフォントでは、フォントデータは、文字コード、グリフインデックス及びアウトラインによるフォントの形状データの組合せである。形状データは、任意の座標点間を直線又は曲線で結び、輪郭線を構成することでグリフ（文字の字形）の形状を表現する。アウトラインフォントは、タイプスタイルや文字サイズといったフォントフェースに基づいてフォントラスタライザ１１４でラスターデータに変換された後に使用される。タイプスタイルは、ある書体のファミリを成す字形様式であり、たとえば欧文書体のイタリックやボールドが含まれる。文字サイズは、文字の大きさであり、ディジタルフォントでは仮想ボディの行送り方向の高さと等しい。
【００２１】
アウトラインフォントは、ラスターデータに変換され、フォントキャッシュ格納領域１３１に格納されて印刷処理に利用される。これにより、画像形成部２００は、アウトラインフォントからラスタライズされたラスターデータをフォントキャッシュ格納領域１３１から読み出して再利用することで高速かつ少ない処理コストで文字を描画することができる。このように、ラスタライズされたラスターデータを含むデータは、単にフォントキャッシュとも呼ばれる。ラスターデータは、たとえばアンチエイリアス処理がなされない場合には、２値のビットの集合となる。ラスターデータは、ページの解像度にスケール変換されており、スキャンラインでもよい。
【００２２】
図３は、一実施形態に係る画像データ生成処理の内容を示すフローチャートである。ステップＳ１００では、制御部１００のフォント処理制御部１１３は、たとえば第２コア１２２を使用してスレッド生成処理を実行する。スレッド生成処理では、フォント処理制御部１１３は、フォントのキャッシュ（後述する。）を生成するためのキャッシュ生成用スレッドを生成する。キャッシュ生成用スレッドは、ＣＰＵ１２０の複数のコア１２１乃至１２４を効率的に使ってフォントのキャッシュを生成することができる。
【００２３】
キャッシュ生成用スレッドの数は、最大でＣＰＵ１２０のコア数（この例では４個）である。本実施形態では、フォントキャッシュの作成中に並行して描画処理が実行されるので、フォント処理制御部１１３は、３つのキャッシュ生成用スレッドを生成する。３つのキャッシュ生成用スレッドには、それぞれ０番乃至２番の番号が付される。
【００２４】
ステップＳ２００では、制御部１００のＰＤＬ処理部１１１は、第１コア１２１を使用し、ＰＤＬデータを解析して処理内容がテキスト処理であるか否かを判断する。ＰＤＬ処理部１１１は、処理内容がテキスト処理である場合には、処理をステップＳ３００に進め、処理内容がテキスト処理でない場合には、処理をステップＳ６００に進める。ステップＳ６００では、描画処理部１１２は、イメージやベクターグラフィックスといったオブジェクトを使用して画像データを生成する。
【００２５】
ステップＳ３００では、ＰＤＬ処理部１１１は、第１コア１２１を使用して処理内容がフォントデータのロード処理であるか否かを判断する。具体的には、ＰＤＬ処理部１１１は、ＰＤＬデータを解析して描画対象の文字のフォントデータである文字データがＲＡＭ１３０のフォントキャッシュ格納領域１３１に格納されているか否かを判断する。文字データは、ＰＤＬ処理部１１１によって抽出された文字コード、タイプスタイル、文字サイズ及び書体の組合せである。
【００２６】
ＰＤＬ処理部１１１は、文字データが格納されていないと判断された場合には処理内容がロード処理となるので、処理をステップＳ４００に進め、文字データが格納されていると判断された場合には処理内容がロード処理ではないので、処理をステップＳ５００に進める。
【００２７】
図４は、一実施形態に係るフォントデータロード処理の内容を示すフローチャートである。ステップＳ４００では、フォント処理制御部１１３は、第２コア１２２を使用してロード処理を実行する。ロード処理では、フォント処理制御部１１３は、フォントキャッシュ格納領域１３１に格納されているフォントキャッシュでは描画することができない文字について、その文字を描画するためのフォントデータを記憶部４００のフォントデータ４３０から読み出してフォントキャッシュ格納領域１３１に格納する。
【００２８】
この例では、たとえばα、β及びγの文字のうちαの文字のフォントキャッシュがフォントキャッシュ格納領域１３１に格納され、β及びγの文字のフォントキャッシュがフォントキャッシュ格納領域１３１に格納されていない文字であるとする。フォント処理制御部１１３は、β及びγの文字に対応するフォントデータをフォントデータ４３０から読み出すことになる。β及びγの文字は、新規文字とも呼ばれる。
【００２９】
この例では、βの文字は、文字コードがフォントキャッシュ格納領域１３１に格納されていないものとする。一方、γの文字は、文字コードがフォントキャッシュ格納領域１３１に格納されているが、タイプスタイルが相違するラスターデータが格納されているものとする。
【００３０】
ステップＳ４１０では、フォント処理制御部１１３は、第２コア１２２を使用してβ及びγの文字に対応するフォントデータがビットマップフォントであるか否かを判断する。フォント処理制御部１１３は、ビットマップフォントである場合には、処理をステップＳ４２０に進め、ビットマップフォントでない場合には、処理をステップＳ４５０に進める。
【００３１】
ステップＳ４２０では、フォント処理制御部１１３は、第２コア１２２を使用してロードされたビットマップフォントの文字コードが新規でない場合には、処理をステップＳ４３０に進め、新規である場合には、処理をステップＳ４４０に進める。
【００３２】
ステップＳ４３０では、フォント処理制御部１１３は、第２コア１２２を使用してフォントキャッシュ格納領域１３１に格納されているフォントキャッシュを削除する。フォントキャッシュは、文字データとラスターデータの組合せである。具体的には、たとえばフォント処理制御部１１３は、フォントキャッシュ格納領域１３１に格納されている文字データにおいてタイプスタイルが標準である場合において、描画対象の文字のタイプスタイルとしてイタリックのフォントフェースが設定されている場合には、標準の文字データをラスターデータとともに削除する。
【００３３】
ステップＳ４４０では、フォント処理制御部１１３は、第２コア１２２を使用してフォントキャッシュ格納領域１３１に文字データを追加する。フォントキャッシュ格納領域１３１は、文字データが格納されているが、ラスターデータが格納されていない状態である。
【００３４】
ステップＳ４５０では、フォント処理制御部１１３は、第２コア１２２を使用してグリフインデックスの変換テーブルを更新する。グリフインデックスとは、１６ビットの一意の番号であり、グリフ（字形）を管理している。フォント処理制御部１１３は、変換テーブルを更新して新規文字であるβ及びγの文字を管理可能とする。
【００３５】
ステップＳ４６０では、フォント処理制御部１１３は、第２コア１２２を使用してロードされたアウトラインフォントの文字コードが新規でない場合には、処理をステップＳ４７０に進め、新規である場合には、処理をステップＳ４８０に進める。
【００３６】
ステップＳ４７０では、フォント処理制御部１１３は、第２コア１２２を使用してフォントキャッシュ格納領域１３１に格納されているフォントキャッシュ（文字データ及びラスターデータの組合せ）を削除する。ステップＳ４８０では、フォント処理制御部１１３は、フォントキャッシュ格納領域１３１に文字データ（文字コード、タイプスタイル、文字サイズ及び書体の組合せ）を追加する。
【００３７】
ステップＳ５００（図３参照）では、描画処理部１１２は、第１コア１２１を使用して文字描画処理を実行する。文字描画処理では、描画処理部１１２は、テキスト（文字）のオブジェクトを使用し、ＰＤＬデータに含まれる描画情報に基づいて画像データを生成する。
【００３８】
図５は、一実施形態に係る文字描画処理の内容を示すフローチャートである。ステップＳ５１０では、描画処理部１１２は、第１コア１２１を使用して文字列検索処理を実行する。文字列検索処理では、フォント処理制御部１１３は、フォントキャッシュが生成されていない文字を検索し、フォントキャッシュが未生成である新規文字の数をカウントする。新規文字の数は、たとえば文字コードが同一であってもタイプスタイルが２種類ある場合には、２個とカウントされる。これにより、画像形成装置１０は、フォントキャッシュの生成の早期開始を可能として描画処理を迅速に完了させることができる。
【００３９】
具体的には、たとえば文字列であるαβγβαがフォント処理制御部１１３によって検索された場合には、αの文字のフォントキャッシュがフォントキャッシュ格納領域１３１に格納され、β及びγの文字のフォントキャッシュがフォントキャッシュ格納領域１３１に格納されていない文字なので、β及びγの２つの文字がフォントキャッシュの生成対象となる。
【００４０】
ステップＳ５２０では、描画処理部１１２は、第１コア１２１を使用してキャッシュ作成依頼処理を実行する。キャッシュ作成依頼処理では、描画処理部１１２は、フォント処理制御部１１３に対してキャッシュの作成を依頼するとともに、処理をステップＳ５３０に進める。
【００４１】
これにより、描画処理部１１２は、第１コア１２１を使用して文字描画処理を実行し、フォントラスタライザ１１４は、他のコアを使用し、文字描画処理と並行してキャッシュ生成処理を実行することができる。他のコアは、第２コア１２２乃至第４コア１２４のうちの少なくとも１つである。
【００４２】
図６は、一実施形態に係るキャッシュ生成処理の内容を示すフローチャートである。キャッシュ生成処理では、フォントラスタライザ１１４は、マルチコアプロセッサであるＣＰＵ１２０の複数のコアを効率的に使用してフォントキャッシュを生成する。複数のコアは、０番乃至２番の番号が付された３つのキャッシュ生成用スレッドを使用してラスターデータを生成することができる。
【００４３】
フォント処理制御部１１３は、描画処理部１１２からキャッシュ作成依頼を待って待機している状態にある（ステップＳ５２１）。フォント処理制御部１１３は、キャッシュ作成依頼の受信に応じて処理をステップＳ５２２に進める。
【００４４】
ステップＳ５２２では、フォント処理制御部１１３は、たとえば第２コア１２２を使用してロードされたフォントデータがアウトラインフォントであるか否かを判断する。フォント処理制御部１１３は、アウトラインフォントである場合には、処理をステップＳ５２３に進め、アウトラインフォントでない場合には、処理をステップＳ５２４に進める。
【００４５】
ステップＳ５２３では、フォント処理制御部１１３は、第２コア１２２を使用してフォントフェースの更新処理を実行する。フォントフェースの更新処理は、たとえばＰＤＬデータで指定されているタイプスタイルがイタリックである場合に、フォントキャッシュ格納領域１３１に格納されている文字のタイプスタイルが標準であるときに、フォントフェースのタイプスタイルを標準からイタリックに更新する。
【００４６】
ステップＳ５２４では、フォント処理制御部１１３は、第２コア１２２を使用してフォント割当処理を実行する。この例では、フォント割当処理では、フォントラスタライザ１１４は、βの文字のキャッシュ生成処理を０番のスレッドである０番スレッドに割り当て、γの文字のキャッシュ生成処理を１番のスレッドである１番スレッドに割り当てる。
【００４７】
フォント割当処理は、この例では、利用可能な最大スレッド数が３個なので以下のように実行することができる。具体的には、フォント処理制御部１１３は、ＡＢＣＤＥＦＧＨＩＪの１０文字のキャッシュを生成する場合には、たとえば以下のように分散して割り当てることができる。
（１）０番スレッド：Ａ、Ｄ、Ｇ、Ｊ
（２）１番スレッド：Ｂ、Ｅ、Ｈ
（３）２番スレッド：Ｃ、Ｆ、Ｉ
この例では、フォント処理制御部１１３は、Ｎ番目の文字を０番スレッドに割り当て、（Ｎ＋１）番目の文字を１番スレッドに割り当て、（Ｎ＋２）番目の文字を２番スレッドに割り当てている。ここで、Ｎは、自然数である。
【００４８】
ステップＳ５２５では、フォントラスタライザ１１４は、この例では、第２コア１２２を使用してβの文字のラスターデータを生成し、第３コア１２３を使用してγの文字のラスターデータを生成する。βの文字のラスターデータは、βの文字データに含まれているタイプスタイル、文字サイズ及びアウトラインデータの組合せに基づいて０番スレッドの処理を実行することによって生成される。γの文字のラスターデータは、γの文字データに含まれているタイプスタイル、文字サイズ及びアウトラインデータの組合せに基づいて１番スレッドの処理を実行することによって生成される。アウトラインデータは、アウトラインによるフォントの形状データである。
【００４９】
第２コア１２２は、０番スレッドを使用してβの文字データとβの文字のラスターデータとを組み合わせてβの文字のフォントキャッシュを生成する。第３コア１２３は、１番スレッドを使用してγの文字データとγの文字のラスターデータとを組み合わせてγの文字のフォントキャッシュを生成する。βの文字のフォントキャッシュの生成は、γの文字のフォントキャッシュの生成と並行して行われる。
【００５０】
なお、フォントラスタライザ１１４は、ビットマップフォントについては、文字サイズに基づいて必要に応じてビットマップデータを拡大又は縮小することによって調整し、文字データと組み合わせてフォントキャッシュを生成することができる。生成されたフォントキャッシュは、フォントキャッシュ４２０とフォントキャッシュ格納領域１３１に格納される。
【００５１】
ステップＳ５２６では、フォント処理制御部１１３は、第４コア１２４を使用して完了通知処理を実行する。完了通知処理では、フォント処理制御部１１３は、βの文字のキャッシュ生成完了に応じて、βの文字のキャッシュ生成完了の旨を描画処理部１１２に通知し、γの文字のキャッシュ生成完了に応じて、γの文字のキャッシュ生成完了の旨を描画処理部１１２に通知する。
【００５２】
ステップＳ５３０では、描画処理部１１２は、ＰＤＬデータに基づいて描画順序が変更可能であるか否かを判断する。描画処理部１１２は、描画順序が変更可能である場合には、処理をステップＳ５５０に進め、描画順序が変更可能でない場合には、処理をステップＳ５４０に進める。描画順序が変更可能でない場合とは、たとえば描画対象の文字列を構成する複数の文字の描画処理の順序が複数の文字の順序に依存する場合である。
【００５３】
ステップＳ５４０では、描画処理部１１２は、文字描画処理を実行する。文字描画処理では、描画処理部１１２は、描画対象となる文字の描画順序を変更することなく描画処理（レンダリング）を実行する。
【００５４】
具体的には、描画処理部１１２は、フォントキャッシュ格納領域１３１にキャッシュが格納されている文字を使用して文字描画処理を実行し、描画対象となる文字のキャッシュがフォントキャッシュ格納領域１３１に格納されていない場合には、その文字のキャッシュ生成完了の旨を受信するまで描画処理を停止して待機する。描画処理部１１２は、キャッシュ生成完了の旨の受信に応じて描画処理を再開することができる。
【００５５】
ステップＳ５５０では、描画処理部１１２は、フォント処理制御部１１３から完了通知を受信しているか否かを判断する。描画処理部１１２は、完了通知を受信している場合には、処理をステップＳ５６０に進め、完了通知を受信していない場合には、処理をステップＳ５７０に進める。
【００５６】
ステップＳ５６０では、描画処理部１１２は、利用可能文字リストを更新する。利用可能文字リストは、フォントキャッシュ格納領域１３１にキャッシュが格納されて描画に利用可能な文字のリストである。描画処理部１１２は、たとえばβの文字のキャッシュ生成完了の旨の受信に応じて、利用可能文字リストにβの文字を追加登録する。
【００５７】
ステップＳ５７０では、描画処理部１１２は、文字描画処理とキャッシュ生成処理の並行処理を実行する。具体的には、描画処理部１１２は、フォントラスタライザ１１４によるキャッシュの生成完了を待つことなく、利用可能文字リストに登録されていない文字の描画処理をスキップし、利用可能文字リストに登録されている文字のみを使用して文字描画処理を実行する。
【００５８】
この例では、描画処理部１１２は、利用可能文字リストにβ及びγの文字が登録されていない場合には、β及びγの文字の文字描画処理をスキップし、他の文字の文字描画処理を実行する。ただし、描画処理部１１２は、利用可能文字リストの更新に応じて、新規に利用可能となった文字の描画を実行する。
【００５９】
具体的には、たとえばページ記述言語がＰＣＬ  ＸＬである場合には、文字描画オペレータのデータ中に文字列のデータとともに文字の位置送りデータが含まれている。描画処理部１１２は、フォントのキャッシュ作成済みの文字を描画して文字の位置送りデータによって描画位置を移動し、フォントのキャッシュ作成中の文字をスキップして、文字の位置送りデータによって描画位置を移動させる。描画処理部１１２は、フォントのキャッシュ作成完了通知に応じて、その描画位置に文字を描画することができる。
【００６０】
描画処理部１１２は、ステップＳ５１０乃至ステップＳ５７０の処理を最終文字描画データまで繰り返して描画処理を完了させる（ステップＳ５８０）。描画処理部１１２は、さらに、ステップＳ１００乃至Ｓ６００の処理を最終描画データまで繰り返して描画処理を完了させる（ステップＳ７００）。
【００６１】
このように、一実施形態に係る画像形成装置１０によれば、フォントラスタライズ処理を含む印刷処理において複数のコアを効率的に利用して高速で描画処理を実行することができる。さらに、画像形成装置１０は、フォントキャッシュの生成の早期開始を可能とするので、描画処理との並行処理によって描画処理を迅速に完了させることもできる。
【００６２】
Ｂ．変形例：
本発明は、上記各実施形態だけでなく、以下のような変形例でも実施することができる。
【００６３】
変形例１：上記実施形態では、フォントキャッシュの生成以外の処理に１個のコアを使用し、フォントキャッシュの生成に残りのコアを使用している。しかしながら、複数のコアの配分は、処理負担に応じて、たとえばフォントキャッシュの生成以外の処理に２個以上のコアを使用し、フォントキャッシュの生成に残りのコアを使用するようにしてもよいし、処理量に応じて自動的に割り当てを変更するようにしてもよい。
【００６４】
変形例２：上記実施形態では、印刷処理においてコアの１つを描画処理に割り当てているが、たとえば描画順序が変更可能でないと判断された場合には、全てのコア（実施形態では４個）を全てキャッシュの生成処理に割り当てるようにしてもよい。こうすれば、描画順序が変更可能でないと判断された場合において、描画処理をより高速とすることができる。
【００６５】
変形例３：上記実施形態では、本発明は画像形成装置における文字描画処理としてのデータ処理に適用されているが、ディスプレイその他の画像表示装置における文字描画処理としてのデータ処理にも本発明は適用可能である。
【符号の説明】
【００６６】
１０  画像形成装置
１００  制御部
１１１  ＰＤＬ処理部
１１２  描画処理部
１１３  フォント処理制御部
１１４  フォントラスタライザ
１２０  ＣＰＵ
１２１  第１コア
１２２  第２コア
１２３  第３コア
１２４  第４コア
１３１  フォントキャッシュ格納領域
２００  画像形成部
３００  操作表示部
４００  記憶部
４１０  制御プログラム
４２０  フォントキャッシュ
４３０  フォントデータ
５００  通信インターフェース部
【図１】
2019029020.tif 000003
【図２】
2019029020.tif 000004
【図３】
2019029020.tif 000005
【図４】
2019029020.tif 000006
【図５】
2019029020.tif 000007
【図６】
2019029020.tif 000008