(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024109165
(43)【公開日】2024-08-14
(54)【発明の名称】プリンタ
(51)【国際特許分類】
B41J 5/44 20060101AFI20240806BHJP
H04N 1/21 20060101ALI20240806BHJP
【FI】
B41J5/44
H04N1/21
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023013796
(22)【出願日】2023-02-01
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110000291
【氏名又は名称】弁理士法人コスモス国際特許商標事務所
(72)【発明者】
【氏名】中島 健志郎
【テーマコード(参考)】
2C187
【Fターム(参考)】
2C187AC06
2C187AC08
2C187BF02
2C187BF22
2C187BG03
2C187BG24
2C187BG26
2C187FB13
2C187FC24
2C187HA12
(57)【要約】
【課題】ページ記述言語で記述された印刷データに基づく印刷が可能なプリンタであって、印刷開始の遅延が抑制される技術を提供すること。
【解決手段】プリンタ1は、ページ記述言語で記述された印刷データを取得し、取得された印刷データに基づいて、DLフォントが選択された場合に、DLフォント情報23を第1メモリ121から第2メモリ122に読み出し、グリフデータが登録されていない第2インデックスを構築する。プリンタ1は、ラスタライズ時に、文字コードに対応するグリフデータが第2インデックスに登録されていない場合、DLフォント情報23からグリフデータを取得して、第2インデックスに登録し、文字コードに対応するグリフデータが第2インデックスに登録されている場合、第2インデックスからグリフデータを取得する。プリンタ1は、グリフデータを用いてラスタデータを生成し、印刷エンジン15に印刷させる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
不揮発性の第1メモリと、
揮発性の第2メモリと、
印刷エンジンと、
コントローラと、
を備えるプリンタであって、
前記第1メモリには、
文字のアウトラインを示す情報を含むグリフデータが複数含まれているフォント情報が記憶されており、
前記コントローラは、
ページ記述言語で記述された印刷データを取得する印刷データ取得処理と、
前記印刷データ取得処理にて取得された前記印刷データに基づいて、前記フォント情報に対応するフォントが選択された場合に、前記フォント情報を前記第1メモリから前記第2メモリに読み出す読出し処理と、
前記読出し処理にて読み出された前記フォント情報に含まれる複数の前記グリフデータを登録可能なグリフ索引テーブルであって、前記グリフデータが登録されていない前記グリフ索引テーブルを、前記第2メモリに構築する構築処理と、
前記印刷データ取得処理にて取得された前記印刷データをラスタライズする場合に、前記印刷データに含まれる文字コードに対応する前記グリフデータが前記グリフ索引テーブルに登録されているか否かを判定する第1判定処理と、
前記第1判定処理にて、前記印刷データに含まれる文字コードに対応する前記グリフデータが前記グリフ索引テーブルに登録されていないと判定された場合に、前記第2メモリに読み出された前記フォント情報から、前記印刷データに含まれる文字コードに対応する前記グリフデータを取得する第1グリフデータ取得処理と、
前記第1グリフデータ取得処理にて取得された前記グリフデータを前記グリフ索引テーブルに登録する登録処理と、
前記第1判定処理にて、前記印刷データに含まれる文字コードに対応する前記グリフデータが前記グリフ索引テーブルに登録されていると判定された場合に、前記第2メモリに構築された前記グリフ索引テーブルから、前記印刷データに含まれる文字コードに対応する前記グリフデータを取得する第2グリフデータ取得処理と、
前記印刷データに含まれる文字コードに対応する前記グリフデータを用いてラスタデータを生成し、生成された前記ラスタデータに基づく印刷を、前記印刷エンジンに行わせる印刷処理と、
を実行する、
ように構成されるプリンタ。
【請求項2】
請求項1に記載するプリンタであって、
前記フォント情報には、
複数の前記グリフデータを格納するグリフテーブルと、
文字コードとグリフIDとを関連付けた文字テーブルと、
前記グリフIDごとに前記グリフテーブルの中での前記グリフデータの位置情報を関連付けた場所テーブルと、
が含まれており、
前記グリフ索引テーブルには、
前記グリフIDと、
前記グリフデータと、
を関連付けて登録可能であり、
前記コントローラは、
前記構築処理では、
前記読出し処理にて読み出された前記フォント情報から前記文字テーブルと前記場所テーブルとを取得して前記第2メモリに保持しておき、前記グリフデータが登録されていない前記グリフ索引テーブルを構築し、
前記登録処理では、
前記第1グリフデータ取得処理にて取得された前記グリフデータを、前記印刷データに含まれる文字コードに対応する前記グリフIDに関連付けて、前記グリフ索引テーブルに登録する、
ように構成されるプリンタ。
【請求項3】
請求項1に記載するプリンタであって、
前記コントローラは、
前記第1判定処理にて、前記印刷データに含まれる文字コードに対応する前記グリフデータが前記グリフ索引テーブルに登録されていないと判定された場合に、前記第2メモリに読み出された前記フォント情報から、登録されていないと判定された文字コードに対応する前記グリフデータを検索する検索処理を実行し、
前記コントローラは、さらに、
前記検索処理にて前記グリフデータが検索された場合に、検索された前記グリフデータを取得する前記第1グリフデータ取得処理を実行し、
前記検索処理にて前記グリフデータが検索されなかった場合に、あらかじめ決められている特定のグリフデータを取得する代替処理を実行する、
ように構成されるプリンタ。
【請求項4】
請求項3に記載するプリンタであって、
前記コントローラは、
前記検索処理にて前記グリフデータが検索されなかった場合に、前記グリフデータが存在しないことを示すエラー情報を、前記印刷データに含まれる文字コードと関連付けて記憶する記憶処理と、
前記印刷データ取得処理にて取得された前記印刷データをラスタライズする場合であって、前記第1判定処理を実行する前に、前記印刷データに含まれる文字コードに前記エラー情報が関連付けられているか否かを判定する第2判定処理を実行し、
前記コントローラは、さらに、
前記第2判定処理にて前記印刷データに含まれる文字コードに前記エラー情報が関連付けられていないと判定された場合に、前記第1判定処理を実行し、
前記第2判定処理にて前記印刷データに含まれる文字コードに前記エラー情報が関連付けられていると判定された場合に、前記第1判定処理を実行せず、前記代替処理を実行する、
ように構成されるプリンタ。
【請求項5】
請求項1に記載するプリンタであって、
前記コントローラは、
前記印刷データに基づく印刷が完了した後、前記第2メモリから前記構築処理にて構築された前記グリフ索引テーブルを消去するグリフ索引テーブル消去処理を実行し、
前記コントローラは、さらに、
前記グリフ索引テーブル消去処理の実行後、前記印刷データ取得処理にて新たに取得された前記印刷データに基づいて、前記フォント情報に対応するフォントが選択された場合に、前記構築処理を実行して、新たに前記グリフ索引テーブルを前記第2メモリに構築する、
ように構成されるプリンタ。
【請求項6】
請求項1に記載するプリンタであって、
前記コントローラは、
前記印刷データに基づく印刷が完了した後、前記第2メモリから前記読出し処理にて読み出された前記フォント情報を消去するフォント情報消去処理を実行し、
前記コントローラは、さらに、
前記フォント情報消去処理を実行した後、前記印刷データ取得処理にて新たに取得された前記印刷データに基づいて、前記フォント情報に対応するフォントが選択された場合に、前記読出し処理を実行して、新たに取得した前記印刷データによって選択された前記フォント情報を前記第1メモリから前記第2メモリに読み出す、
ように構成されるプリンタ。
【請求項7】
請求項1に記載するプリンタであって、
前記フォント情報には、前記フォント情報に含まれる前記グリフデータの数を示す情報が含まれ、
前記コントローラは、
前記読出し処理を実行した後、前記第2メモリに読み出された前記フォント情報に含まれる前記グリフデータの数が閾値よりも多いか否かを判定する第3判定処理を実行し、
前記コントローラは、さらに、
前記第3判定処理にて前記グリフデータの数が前記閾値よりも多いと判定された場合、前記構築処理を実行し、
前記第3判定処理にて前記グリフデータの数が前記閾値よりも多くないと判定された場合、前記構築処理を実行せず、前記フォント情報に含まれる全ての前記グリフデータが登録されている前記グリフ索引テーブルを、前記第2メモリに構築する本構築処理を実行する、
ように構成されるプリンタ。
【請求項8】
請求項7に記載するプリンタであって、
前記コントローラは、
前記第3判定処理にて前記グリフデータの数が前記閾値よりも多くないと判定された場合であって、前記印刷データ取得処理にて取得された前記印刷データをラスタライズする場合に、前記第1判定処理を実行し、前記第1判定処理にて前記文字コードに対応する前記グリフデータが前記グリフ索引テーブルに登録されていないと判定された場合に、あらかじめ決められている特定のグリフデータを取得する代替処理を実行し、前記第1判定処理にて前記文字コードに対応する前記グリフデータが前記グリフ索引テーブルに登録されていると判定された場合に、前記第2グリフデータ取得処理を実行する、
ように構成されるプリンタ。
【請求項9】
請求項1に記載するプリンタであって、
前記第1メモリに記憶可能な前記フォント情報には、
出荷時から前記第1メモリに記憶されている内蔵フォントに関する前記フォント情報である内蔵フォント情報と、
出荷後に外部デバイスから前記第1メモリに記憶されるダウンロードフォントに関する前記フォント情報であるダウンロードフォント情報と、があり、
前記コントローラは、
前記プリンタの起動時に、前記内蔵フォント情報を前記第1メモリから前記第2メモリに読み出し、前記内蔵フォント情報に含まれる全ての前記グリフデータを登録した前記グリフ索引テーブルを、前記第2メモリに構築する初期処理を実行し、
前記コントローラは、さらに、
前記印刷データ取得処理にて取得された前記印刷データに基づいて、前記ダウンロードフォント情報に対応するフォントが選択された場合に、前記構築処理を実行し、
前記印刷データ取得処理にて取得された前記印刷データに基づいて、前記内蔵フォント情報に対応するフォントが選択された場合に、前記読出し処理および前記構築処理を実行しない、
ように構成されるプリンタ。
【請求項10】
請求項9に記載するプリンタであって、
前記コントローラは、
前記印刷データ取得処理にて取得された前記印刷データに基づいて、前記内蔵フォント情報に対応するフォントが選択された場合であって、前記印刷データ取得処理にて取得された前記印刷データをラスタライズする場合に、前記第1判定処理を実行し、前記第1判定処理にて前記文字コードに対応する前記グリフデータが前記グリフ索引テーブルに登録されていないと判定された場合に、あらかじめ決められている特定のグリフデータを取得する代替処理を実行し、前記第1判定処理にて前記文字コードに対応する前記グリフデータが前記グリフ索引テーブルに登録されていると判定された場合に、前記第2グリフデータ取得処理を実行する、
ように構成されるプリンタ。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書に開示される技術分野は、ページ記述言語で記述された印刷データに基づく印刷が可能なプリンタに関する。
【背景技術】
【0002】
従来、ページ記述言語で記述された印刷データに基づく印刷が可能なプリンタには、アウトラインフォントのフォント情報をフォントの種類に応じて幾つか記憶しているものがある。また、そのような内蔵フォントを印刷に用いる構成として、例えば特許文献1には、ホストコンピュータによって指定されたフォントを、あらかじめ記憶されている内蔵フォントに対応付けるフォント置換情報を有するプリンタであって、フォント置換情報に基づいて、指定されたフォントを内蔵フォントに置き換える構成が開示されている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1に開示されている技術では、ホストコンピュータによって指定されたフォントを内蔵フォントに置換して印刷しているが、内蔵フォント以外のアウトラインフォントを外部デバイスからダウンロードしておき、そのダウンロードフォントを印刷に用いる場合については開示されていない。ダウンロードフォントには、数万種類以上のグリフデータが登録されているものがあり、印刷を開始するまでに時間を要する可能性があることから、改善の余地がある。
【課題を解決するための手段】
【0005】
この課題の解決を目的としてなされたプリンタは、不揮発性の第1メモリと、揮発性の第2メモリと、印刷エンジンと、コントローラと、を備えるプリンタであって、前記第1メモリには、文字のアウトラインを示す情報を含むグリフデータが複数含まれているフォント情報が記憶されており、前記コントローラは、ページ記述言語で記述された印刷データを取得する印刷データ取得処理と、前記印刷データ取得処理にて取得された前記印刷データに基づいて、前記フォント情報に対応するフォントが選択された場合に、前記フォント情報を前記第1メモリから前記第2メモリに読み出す読出し処理と、前記読出し処理にて読み出された前記フォント情報に含まれる複数の前記グリフデータを登録可能なグリフ索引テーブルであって、前記グリフデータが登録されていない前記グリフ索引テーブルを、前記第2メモリに構築する構築処理と、前記印刷データ取得処理にて取得された前記印刷データをラスタライズする場合に、前記印刷データに含まれる文字コードに対応する前記グリフデータが前記グリフ索引テーブルに登録されているか否かを判定する第1判定処理と、前記第1判定処理にて、前記印刷データに含まれる文字コードに対応する前記グリフデータが前記グリフ索引テーブルに登録されていないと判定された場合に、前記第2メモリに読み出された前記フォント情報から、前記印刷データに含まれる文字コードに対応する前記グリフデータを取得する第1グリフデータ取得処理と、前記第1グリフデータ取得処理にて取得された前記グリフデータを前記グリフ索引テーブルに登録する登録処理と、前記第1判定処理にて、前記印刷データに含まれる文字コードに対応する前記グリフデータが前記グリフ索引テーブルに登録されていると判定された場合に、前記第2メモリに構築された前記グリフ索引テーブルから、前記印刷データに含まれる文字コードに対応する前記グリフデータを取得する第2グリフデータ取得処理と、前記印刷データに含まれる文字コードに対応する前記グリフデータを用いてラスタデータを生成し、生成された前記ラスタデータに基づく印刷を、前記印刷エンジンに行わせる印刷処理と、を実行する、ように構成される。
【0006】
本明細書に開示されるプリンタは、印刷データを取得した際にフォント情報を揮発性の第2メモリに読み出し、そのフォント情報に含まれるグリフデータをマッピングしない状態としておく。そして、その印刷データをラスタライズする際に、プリンタは、印刷データに含まれる文字コードに対応するグリフデータを第2メモリのフォント情報から取得する。プリンタは、さらに一度取得したグリフデータをグリフ索引テーブルに登録、すなわちマッピングしておき、同じ文字のグリフデータを取得する場合には、フォント情報からではなくグリフ索引テーブルから取得する。これにより、フォント情報に含まれる全てのグリフデータをマッピングしてからラスタライズを行う場合と比較して、グリフデータをマッピングするための時間が無くなり、早期の印刷開始が期待できる。
【0007】
上記プリンタを含む印刷システム、プリンタの機能を実現するための制御方法、コンピュータプログラム、当該プログラムを格納するコンピュータにて読取可能な記憶媒体も、新規で有用である。
【発明の効果】
【0008】
本明細書に開示される技術によれば、ページ記述言語で記述された印刷データに基づく印刷が可能なプリンタであって、印刷開始の遅延が抑制される技術が実現される。
【図面の簡単な説明】
【0009】
【
図1】プリンタの概略構成を示すブロック図である。
【
図2】フォント情報の構成の例を示す説明図である。
【
図3】第1インデックス構築処理の手順を示すフローチャートである。
【
図4】第1インデックスの構成の例を示す説明図である。
【
図5】プリンタの概略構成を示すブロック図である。
【
図6】印刷ジョブ処理の手順を示すフローチャートである。
【
図7】文字中間データ生成処理の手順を示すフローチャートである。
【
図8】第1検索処理の手順を示すフローチャートである。
【
図9】第2インデックス構築処理の手順を示すフローチャートである。
【
図10】第2インデックスの構成の例を示す説明図である。
【
図11】第2検索処理の手順を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、実施の形態にかかるプリンタについて、添付図面を参照しつつ詳細に説明する。本実施の形態は、ページ記述言語で記述された印刷データに基づく印刷が可能なプリンタを開示するものである。
【0011】
プリンタ1は、
図1に示すように、CPU11と、メモリ12と、を含む制御部10を備えている。また、プリンタ1は、ユーザインタフェース(以下、「ユーザIF」とする)13と、通信インタフェース(以下、「通信IF」とする)14と、印刷エンジン15と、を備えている。CPU11は、コントローラの一例である。制御部10がコントローラの一例であっても良い。ユーザIF13と通信IF14と印刷エンジン15とは、いずれも、制御部10に電気的に接続されている。なお、
図1中の制御部10は、PC1の制御に利用されるハードウェアやソフトウェアを纏めた総称であって、実際にPC1に存在する単一のハードウェアを表すとは限らない。
【0012】
CPU11は、メモリ12から読み出したプログラムに従って、または、ユーザの操作に基づいて、各種の処理を実行する。メモリ12には、各種のプログラムや各種のデータが記憶されている。メモリ12は、各種の処理が実行される際の作業領域としても利用される。メモリ12は、CPU11が備えるバッファを含んでも良い。
【0013】
なお、メモリ12の一例は、プリンタ1に内蔵されるROM、RAM、HDD等に限らず、CPU11が読み取り可能かつ書き込み可能なストレージ媒体であっても良い。コンピュータが読み取り可能なストレージ媒体とは、non-transitoryな媒体である。non-transitoryな媒体には、上記の例の他に、CD-ROM、DVD-ROM等の記録媒体も含まれる。また、non-transitoryな媒体は、tangibleな媒体でもある。一方、インターネット上のサーバなどからダウンロードされるプログラムを搬送する電気信号は、コンピュータが読み取り可能な媒体の一種であるコンピュータが読み取り可能な信号媒体であるが、non-transitoryなコンピュータが読み取り可能なストレージ媒体には含まれない。
【0014】
ユーザIF13は、ユーザに情報を報知するための画面を表示するハードウェアと、ユーザによる操作を受け付けるハードウェアと、を含む。ユーザIF13は、タッチパネルを含んでも良いし、表示部と操作ボタンとの組み合わせであっても良い。
【0015】
通信IF14は、外部装置と通信を行うためのハードウェアを含む。通信IF14の通信規格は、イーサネット(登録商標)、Wi-Fi(登録商標)、USBなどである。プリンタ1は、複数の通信規格に対応する複数の通信IF14を備えていても良い。
【0016】
印刷エンジン15は、例えば、電子写真方式、インクジェット方式、によって、画像データに基づく印刷を実行可能なデバイスを含む。印刷エンジン15は、複数色の着色材を備えてカラー印刷を実行可能であっても良いし、1色のみの着色材を備え単色印刷を行うものであっても良い。
【0017】
メモリ12には、不揮発性の第1メモリ121と、揮発性の第2メモリ122と、が含まれる。
図1に示しているのは、起動されていない状態のプリンタ1である。この状態では、第1メモリ121に、例えば、印刷制御プログラム21と、内蔵フォント情報22と、ダウンロードフォント情報(以下、「DLフォント情報」とする)23と、が記憶されている。内蔵フォント情報22とDLフォント情報23とは、それぞれ、複数の文字のグリフデータを含む。グリフデータは、各文字のアウトラインを示す情報である。内蔵フォント情報22とDLフォント情報23とは、いずれも、フォント情報の一例である。
【0018】
内蔵フォント情報22は、内蔵フォントのフォント情報である。内蔵フォント情報22は、プリンタ1の工場出荷時にメモリ12に記憶されている情報である。
【0019】
DLフォント情報23は、ダウンロードフォント(以下、「DLフォント」とする)のフォント情報である。DLフォント情報23は、プリンタ1の工場出荷時には記憶されていない情報である。プリンタ1は、出荷後に、例えば、ユーザの指示に基づいて、内蔵フォント情報22とは別のDLフォントの情報をダウンロードして、DLフォント情報23として記憶可能である。
【0020】
プリンタ1は、例えば、
図1に示すように、通信IF14を介して、フォントの情報を備えているサーバ100と通信可能である。そして、プリンタ1は、サーバ100からフォント情報をダウンロードすることができる。サーバ100は、外部デバイスの一例である。また、ユーザは、DLフォント情報23が記憶されているUSBメモリをプリンタ1に接続することで、プリンタ1にDLフォント情報23を利用させることができる。なお、DLフォント情報23は、例えば、トゥルータイプフォント、オープンタイプフォント、ポストスクリプトフォント、の形式の情報として提供される。
【0021】
次に、実施の形態のプリンタ1の動作について説明する。なお、以下の処理は、基本的に、プログラムに記述された命令に従ったCPU11の処理を示す。CPU11による処理は、オペレーティングシステム(以下、「OS」とする)のAPIを介したハードウェア制御も含む。本明細書では、OSの記載を省略して各プログラムの動作を説明する場合がある。また、「取得」は、要求して取得する場合と要求せずに取得する場合とを含む概念で用いる。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。
【0022】
プリンタ1は、ページ記述言語で記述された印刷データを取得して、取得した印刷データに基づく印刷を実行できる。ページ記述言語で記述された印刷データには、印刷対象の各文字の情報として、フォント種、文字コード、文字サイズ、文字色等の情報が含まれ、文字の形状を直接示す情報は含まれない。文字を含む印刷データをラスタライズする場合、プリンタ1は、内蔵フォント情報22やDLフォント情報23に含まれる情報、すなわち、文字のアウトラインを示す情報を利用する。
【0023】
プリンタ1の備える内蔵フォント情報22は、例えば、トゥルータイプフォントの形式で記憶されている。内蔵フォント情報22は、例えば、
図2に示すように、ヘッダテーブル31と、文字テーブル32と、場所テーブル33と、グリフテーブル34と、を含む。
【0024】
ヘッダテーブル31は、文字テーブル32の位置情報と、場所テーブル33の位置情報と、グリフテーブル34の位置情報と、を含む情報を記憶するテーブルである。
【0025】
文字テーブル32は、各文字の文字コードと当該文字のグリフIDとを関連付けたテーブルである。グリフIDは、各文字のグリフデータを識別する識別情報である。各グリフデータは、各文字のアウトラインを示す情報であって、それぞれに固有のグリフIDが付与されている。
【0026】
場所テーブル33は、グリフIDと、そのグリフIDに対応するグリフデータのグリフテーブル34の中での記憶位置を示す位置情報とを、グリフIDごとに関連付けたテーブルである。
【0027】
グリフテーブル34は、複数のグリフデータ341、342、…を格納するテーブルである。
【0028】
なお、内蔵フォント情報22は、複数のフォント種の情報を含んでいても良い。その場合は、内蔵フォント情報22は、フォントごとに、
図2に示す構成の情報を備えている。なお、内蔵フォント情報22は、さらに、各文字について、印字位置を示す情報や文字幅を示す情報を含んでいても良い。
【0029】
前述したように、プリンタ1が起動されていない状態では、各種のプログラムやデータが、不揮発性の第1メモリ121に記憶されている。不揮発性の記憶領域からの情報の読み出しは、揮発性の記憶領域からの読み出しに比較して時間がかかる。そのため、プリンタ1は、起動時に、印刷に利用する情報の一部を、不揮発性の記憶領域である第1メモリ121から読み出して、揮発性の記憶領域である第2メモリ122に記憶させる。
【0030】
具体的には、プリンタ1は、起動時に、印刷制御プログラム21を第2メモリ122に展開する。これにより、プリンタ1は、印刷ジョブを受け付けた場合に、早期に印刷を開始できる。また、プリンタ1は、起動時の初期設定の一部として、内蔵フォント情報22に基づいて、フォント種ごとの第1種のグリフインデックスを第2メモリ122内に構築する。グリフインデックスは、フォント情報に含まれる複数のグリフデータを登録可能なテーブルである。グリフインデックスは、例えば、印刷データに含まれる文字コードに基づいて、その文字コードに対応するグリフデータを取得するために用いられる。以下では、第1種のグリフインデックスを、「第1インデックス」とする。
【0031】
次に、第1インデックス構築処理の手順について、
図3のフローチャートを参照して説明する。第1インデックス構築処理は、例えば、内蔵フォント情報22に基づいて、第1インデックスを第2メモリ122内に構築する処理である。第1インデックス構築処理は、例えば、プリンタ1の起動時に、内蔵フォント情報22に基づいて、CPU11にて実行される。起動時に実行される第1インデックス構築処理は、初期処理の一例である。
【0032】
第1インデックス構築処理では、CPU11は、まず、処理対象のフォントについて、フォント情報を第1メモリ121から読み出し、第2メモリ122にコピーする(S101)。CPU11は、読み出したフォント情報からヘッダテーブル31を取得する(S102)。さらに、CPU11は、空の第1インデックスを第2メモリ122に用意する(S103)。
【0033】
例えば、
図4に示すように、第1インデックス40は、文字ごとに、グリフIDとグリフデータとを関連付けて登録されるテーブルである。第1インデックス40には、各文字のグリフデータが、例えば、グリフIDの順序に基づいて記憶される。第1インデックス40は、グリフ索引テーブルの一例である。なお、S103では、CPU11は、グリフデータが1つも登録されていない第1インデックス40を用意する。
【0034】
CPU11は、S101にて第2メモリ122にコピーしたフォント情報から、1文字分のグリフデータを取得する(S105)。さらに、CPU11は、取得したグリフデータを、第1インデックス40に登録する(S106)。S106では、CPU11は、プリンタ1での印刷に適したデータとなるように、必要に応じてグリフデータを変換しても良い。
【0035】
CPU11は、第2メモリ122にコピーしたフォント情報に含まれる全ての文字について、S105とS106との処理が終了したか否かを判断する(S107)。終了していないと判断した場合(S107:NO)、CPU11は、次の文字についてさらに、S105とS106とを実行する。
【0036】
コピーしたフォント情報に含まれる全ての文字についてS105とS106との処理が終了したと判断した場合(S107:YES)、CPU11は、S101にてコピーしたフォント情報を第2メモリ122から消去する(S109)。S109の後、CPU11は、第1インデックス構築処理を終了する。これにより、このフォント情報に含まれる各文字のグリフデータが記憶された第1インデックス40が、第2メモリ122に構築される。
【0037】
なお、プリンタ1は、内蔵フォント情報22に含まれる全てのフォント種について、それぞれ第1インデックス構築処理を実行し、フォント種ごとに第1インデックス40を構築する。第1インデックス40は、ラスタライズを行うプログラムに組み込まれても良い。また、プリンタ1は、文字コードとグリフIDとの関連付けを示す情報を、第1インデックス40とは別に第2メモリ122に記憶する。
【0038】
内蔵フォント情報22に含まれる内蔵フォントは、印刷に利用される可能性が高いフォントとしてあらかじめプリンタ1に用意されているフォントである。プリンタ1は、起動時に内蔵フォント情報22に含まれる各フォントについて、全てのグリフデータを登録した第1インデックス40を構築する。従って、その第1インデックス40を印刷時のラスタライズで利用できる。つまり、ラスタライズを行うプログラムは、第1インデックス40に基づいて、印刷対象の文字のグリフデータを短時間で取得できる。従って、印刷時の処理負荷が軽減されている。ラスタライズを行うプログラムは、印刷制御プログラム21の一部であっても良いし、印刷制御プログラム21とは別のプログラムであっても良い。
【0039】
起動時の処理が終了した後であって、印刷ジョブを受け付けていない状態では、プリンタ1の第2メモリ122には、
図5に示すように、印刷制御プログラム21と第1インデックス40とが記憶されている。一方、DLフォント情報23に含まれるグリフデータは、第2メモリ122には登録されていない。
【0040】
次に、プリンタ1にて実行される印刷ジョブ処理の手順について、
図6のフローチャートを参照して説明する。この印刷ジョブ処理は、印刷ジョブの実行指示を受け付けたことを契機に、印刷制御プログラム21に基づいて、プリンタ1のCPU11にて実行される。なお、プリンタ1は、印刷ジョブを、通信IF14を介して外部装置から受信して取得しても良いし、通信IF14に装着されたUSBメモリから読み出して取得しても良い。
【0041】
CPU11は、受け付けた印刷ジョブの解析を開始し、印刷対象の画像を示す印刷データを取得する(S201)。S201は、印刷データ取得処理の一例である。印刷ジョブは、例えば、ページ記述言語で記述され、印刷対象の画像を示す画像データであるPDLデータと、印刷に関する各種のパラメータを示すPJLデータと、を含む。PDLデータは、例えば、PCL、PDF等の形式のデータである。さらに、CPU11は、1ページ分の画像を書き込むためのメモリ領域を確保する(S202)。
【0042】
CPU11は、印刷ジョブに含まれる画像データから描画オブジェクトを検出する(S211)。CPU11は、描画オブジェクトが検出された場合、検出された描画オブジェクトが文字の描画を示すテキストオブジェクトであるか否かを判断する(S212)。検出されたオブジェクトがテキストオブジェクトであると判断した場合(S212:YES)、CPU11は、文字中間データ生成処理を実行する(S215)。
【0043】
文字中間データ生成処理の手順について、
図7のフローチャートを参照して説明する。文字中間データ生成処理では、CPU11は、検出されたテキストオブジェクトに指定されているフォントのフォント種を取得する(S301)。さらに、CPU11は、取得したフォント種のグリフインデックスを構築済みであるか否かを判断する(S302)。例えば、指定されたフォント種が内蔵フォントであれば、CPU11は、起動時に実行した第1インデックス構築処理によって、グリフインデックスである第1インデックス40を構築済みである。
【0044】
印刷対象のフォントのグリフインデックスを構築済みであると判断した場合(S302:YES)、CPU11は、そのグリフインデックスのタイプを確認する(S305)。プリンタ1は、前述した第1インデックス40(
図4参照)とは異なる構成の第2種のグリフインデックスを利用可能である。以下では、第2種のグリフインデックスを、「第2インデックス」とする。S305では、CPU11は、構築済みのグリフインデックスが、第1インデックス40であるか第2インデックスであるかを判断する。第2インデックスの詳細については、後述する。
【0045】
構築済みのグリフインデックスが第1インデックス40であると判断した場合(S305:第1インデックス)、CPU11は、第1検索処理を実行する(S307)。第1検索処理は、構築済みの第1インデックス40を用いて、印刷対象の文字のグリフデータを取得する処理である。プリンタ1は、実行指示を受け付けた印刷ジョブの画像データに、例えば、内蔵フォントの文字が含まれている場合、起動時に構築した第1インデックス40を参照して、印刷対象の文字のグリフデータを取得する。
【0046】
第1検索処理の手順について、
図8のフローチャートを参照して説明する。CPU11は、印刷対象の文字の文字コードを取得する(S401)。印刷対象の文字の文字コードは、画像データから検出されたテキストオブジェクトに指定されている。さらに、CPU11は、文字コードに対応するグリフIDの取得を試行する(S402)。文字コードとグリフIDとの関連付けを示す情報は、第1インデックス40とは別に第2メモリ122に保持されている。
【0047】
CPU11は、グリフIDを取得できたか否かを判断する(S405)。取得できたと判断した場合(S405:YES)、CPU11は、取得したグリフIDに対応するグリフデータが、第1インデックス40に登録されているか否かを判断する(S406)。S405とS406とは、第1判定処理の一例である。グリフデータが有ると判断した場合(S406:YES)、CPU11は、そのグリフデータを第1インデックス40から取得する(S408)。S408は、第2グリフデータ取得処理の一例である。
【0048】
一方、グリフIDを取得できなかったと判断した場合(S405:NO)、または、グリフデータが無いと判断した場合(S406:NO)、CPU11は、空白文字を印刷すると決定する(S409)。S409は、代替処理の一例である。空白文字は、特定のグリフデータの一例である。なお、CPU11は、空白文字に限らず、例えば、あらかじめ決められている特定の記号を示すグリフデータを取得しても良い。S408またはS409の後、CPU11は、第1検索処理を終了して、文字中間データ生成処理に戻る。
【0049】
印刷データに含まれる文字コードに対応するグリフIDが無い場合や、グリフIDは有ってもグリフデータが無い場合には、プリンタ1は、その文字を適切に印刷することができない。この場合に、プリンタ1は、空白文字などのあらかじめ決められている特定のグリフデータを印刷する。従って、その文字が完全に消去されて、前後の文字間が詰められた画像が印刷されるといった不具合を回避できる。
【0050】
図7の文字中間データ生成処理の説明に戻る。S301にて取得したフォント種のグリフインデックスを構築済みではないと判断した場合(S302:NO)、CPU11は、取得したフォント種のグリフ数を取得する(S311)。グリフ数は、当該フォントに含まれる文字の種類の数であり、グリフデータの数を示す情報である。グリフ数の情報は、DLフォント情報23に含まれる。なお、前述したように、CPU11は、内蔵フォント情報22に含まれるフォント種については、起動時に第1インデックス構築処理を実行している。つまり、S302にてグリフインデックスを構築済みではないと判断されるフォント種は、DLフォント情報23に含まれるフォントである。
【0051】
そして、CPU11は、取得したグリフ数が、所定の閾値よりも多いか否かを判断する(S312)。S312は、第3判定処理の一例である。所定の閾値は、例えば、1000である。グリフ数が所定の閾値よりも多くないと判断した場合(S312:NO)、CPU11は、このフォントのフォント情報に基づいて、
図3に示した第1インデックス構築処理を実行する(S314)。S314は、本構築処理の一例である。
【0052】
具体的には、CPU11は、S314にて、DLフォント情報23から当該フォント種のフォント情報を読み出し、
図4に示したものと同様の構成であって、全てのグリフデータが記憶されている第1インデックス40を、第2メモリ122に構築する。さらに、CPU11は、S307に進み、S314にて構築した第1インデックス40を利用して、
図8に示した第1検索処理を実行する。
【0053】
グリフ数が少なければ、そのフォントの全てのグリフデータを登録した第1インデックス40を構築したとしても、その構築に要する時間は長くない。従って、印刷ジョブを受け付けてから第1インデックス40を構築しても、早期の印刷開始が可能である。さらに、第1インデックス40を構築すれば、その後は、構築済みの第1インデックス40を利用して、このフォントの各文字のグリフデータを取得できる。つまり、同じフォントの文字を印刷するための処理負荷が軽減される。
【0054】
一方、グリフ数が所定の閾値より多いと判断した場合(S312:YES)、CPU11は、第2インデックス構築処理を実行する(S315)。第2インデックス構築処理は、DLフォント情報23に基づいて、第2インデックスを構築する処理である。
【0055】
第2インデックス構築処理の手順について、
図9のフローチャートを参照して説明する。なお、第2インデックス構築処理は、印刷データに含まれるテキストオブジェクトに指定されたフォント種が、DLフォント情報23に含まれるフォント種である場合に実行される。指定されたフォント種が、内蔵フォント情報22にもDLフォント情報23にも含まれないフォントである場合、プリンタ1は、例えば、エラーメッセージを表示して、印刷を実行しない。
【0056】
第2インデックス構築処理では、CPU11は、印刷データに含まれる文字のフォント種に対応するフォント情報を、第1メモリ121のDLフォント情報23から読み出し、第2メモリ122にコピーする(S501)。S501は、読出し処理の一例である。そして、CPU11は、読み出したフォント情報からヘッダ情報を取得する(S502)。DLフォント情報23は、
図2に示した内蔵フォント情報22と同様の構成である。ヘッダ情報は、フォント情報のヘッダテーブルと文字テーブルと場所テーブルとに含まれる情報である。
【0057】
さらに、CPU11は、空の第2インデックスを第2メモリ122に用意する(S503)。S503は、構築処理の一例である。S503の後、CPU11は、第2インデックス構築処理を終了して、
図7の文字中間データ生成処理に戻る。第2インデックス構築処理の終了後には、S501にて読み出されたフォント情報と、S503にて構築された空の第2インデックスとが、第2メモリ122に記憶されている。
【0058】
第2インデックスの構成について説明する。例えば、
図10に示すように、第2インデックス50は、グリフIDと、グリフデータと、エラー情報と、が互いに関連付けられたテーブルである。第2インデックス50は、グリフ索引テーブルの一例である。
【0059】
第2インデックス構築処理のS503で構築される第2インデックス50では、全てのグリフデータは、空データであり、全てのエラー情報は、エラー無し情報である。空の第2インデックス50には、例えば、グリフ数に対応する個数のグリフIDのみが記憶されている。CPU11は、グリフ数に応じて、第2インデックス50のサイズを決定し、決定したサイズの記憶領域を確保する。
【0060】
図7の文字中間データ生成処理の説明に戻る。S315の第2インデックス構築処理にて空の第2インデックス50を構築した後、または、構築済みのグリフインデックスが第2インデックスであると判断した場合(S305:第2インデックス)、CPU11は、第2検索処理を実行する(S317)。第2検索処理は、第2インデックス50を用いて、印刷対象の文字のグリフデータを取得する処理である。
【0061】
第2検索処理の手順について、
図11のフローチャートを参照して説明する。CPU11は、印刷対象の文字の文字コードを取得する(S601)。印刷対象の文字の文字コードは、テキストオブジェクトに指定されている。さらに、CPU11は、文字コードに対応するグリフIDの取得を試行する(S602)。CPU11は、例えば、第2メモリ122に保持されているフォント情報の文字テーブル(
図2参照)に基づいて、文字コードに対応するグリフIDの取得を試行する。
【0062】
CPU11は、グリフIDを取得できたか否かを判断する(S605)。取得できたと判断した場合(S605:YES)、CPU11は、第2インデックス50のエラー情報に、グリフIDに関連付けて、エラー有りの情報が記憶されているか否かを判断する(S606)。S606は、第2判定処理の一例である。エラー有りの情報は、そのグリフIDに対応するグリフデータが存在しないことを示す情報である。エラー有りの情報は、エラー情報の一例である。
【0063】
エラー有りの情報が記憶されていないと判断した場合(S606:NO)、CPU11は、第2インデックス50に、取得したグリフIDに対応するグリフデータが登録されているか否かを判断する(S607)。S607は、第1判定処理の一例である。グリフデータが登録済みであると判断した場合(S607:YES)、CPU11は、そのグリフデータを第2インデックス50から取得する(S608)。S608は、第2グリフデータ取得処理の一例である。
【0064】
グリフデータが登録済みではないと判断した場合(S607:NO)、CPU11は、第2メモリ122に記憶されているフォント情報に基づいて、グリフデータの取得を試行する(S611)。S611は、第1グリフデータ取得処理の一例である。そして、CPU11は、グリフデータを取得できたか否かを判断する(S612)。S612は、検索処理の一例である。
【0065】
グリフデータを取得できたと判断した場合(S612:YES)、CPU11は、取得したグリフデータを第2インデックス50に登録する(S615)。S615は、登録処理の一例である。なお、第2インデックス50に当該文字のグリフIDが記憶されていない場合には、CPU11は、グリフIDとグリフデータとを関連付けて、ともに登録する。また、CPU11は、取得したグリフデータをラスタライズに利用するグリフデータとする。
【0066】
グリフデータを取得できなかったと判断した場合(S612:NO)、CPU11は、第2インデックス50のグリフIDに関連付けたエラー情報に、エラー有りの情報を記憶する(S617)。つまり、CPU11は、エラー無しの情報をエラー有りの情報に書き換える。S617は、記憶処理の一例である。プリンタ1は、印刷対象の文字のグリフデータがフォント情報から取得できなかった場合に、その文字の文字コードやグリフIDと関連付けてエラー有りの情報を記憶する。これにより、この印刷データに同じ文字の文字コードが含まれる場合に、CPU11は、S606にてYESと判断するので、フォント情報を再度検索することはない。従って、毎回これらを検索する場合に比較して、処理時間が短縮される。
【0067】
S617の後、または、グリフIDを取得できなかったと判断した場合(S605:NO)、または、グリフIDに関連付けてエラー有りの情報が記憶されていると判断した場合(S606:NO)、CPU11は、空白文字を印刷すると決定する(S618)。S618は、代替処理の一例である。S608、S615、S618のいずれかの後、CPU11は、第2検索処理を終了して、文字中間データ生成処理に戻る。
【0068】
図7の文字中間データ生成処理の説明に戻る。S307の第1検索処理、または、S317の第2検索処理、の終了後、CPU11は、この文字の中間データを生成する(S321)。CPU11は、S307の第1検索処理またはS317の第2検索処理にて取得したグリフデータまたは空白文字のデータに基づいて、1文字分の中間データを生成する。S321の後、CPU11は、文字中間データ生成処理を終了して、印刷ジョブ処理に戻る。
【0069】
図6の印刷ジョブ処理の説明に戻る。検出された描画オブジェクトがテキストオブジェクトではないと判断した場合には(S212:NO)、CPU11は、オブジェクトごとに中間データを生成する(S216)。さらに、CPU11は、S215の文字中間データ生成処理のS321にて生成した中間データ、または、S216にて生成した中間データを、S202にて確保したメモリ領域の描画位置に配置する(S217)。
【0070】
さらに、CPU11は、ページの終端を示すデータを取得したか否かを判断する(S218)。ページの終端ではないと判断した場合(S218:NO)、CPU11は、そのページの画像データに含まれる描画オブジェクトごとにS211~S217を行って、1ページ分の中間データを作成する。
【0071】
ページの終端であると判断したら(S218:YES)、CPU11は、生成した中間データに基づいてラスタデータを生成し(S221)、生成したラスタデータを印刷エンジン15に渡す(S222)。S222は、印刷処理の一例である。印刷エンジン15は、受け取ったラスタデータに基づいて、印刷を実行する。
【0072】
そして、CPU11は、受け付けた印刷ジョブの印刷が完了したか否かを判断する。具体的には、CPU11は、印刷ジョブに含まれる全てのページの処理が終了したか否かを判断する(S224)。終了していないと判断した場合(S224:NO)、CPU11は、S202に進んで、次のページの画像データの処理を行う。なお、CPU11は、全てのページの印刷データを印刷エンジン15に渡して終わっていれば、印刷エンジン15による印刷が終了していなくても、印刷が完了したと判断しても良い。
【0073】
印刷ジョブの処理が終了したと判断した場合(S224:YES)、CPU11は、この印刷ジョブの処理において、DLフォント情報23に含まれるフォントを利用したか否かを判断する(S231)。DLフォントを利用したと判断した場合(S231:YES)、CPU11は、DLフォントに関する情報を第2メモリ122から消去する(S232)。具体的には、CPU11は、DLフォント情報23に基づいて構築した第1インデックス40、または、DLフォント情報23に基づいて構築した第2インデックス50と第2メモリ122に保持しているフォント情報とを、消去する。S232は、グリフ索引テーブル消去処理およびフォント情報消去処理の一例である。
【0074】
別の印刷ジョブにて同じDLフォントが利用される可能性は小さい。プリンタ1は、DLフォント情報23に基づいて構築した各種の情報を、印刷ジョブの印刷が完了した後に第2メモリ122から消去するので、第2メモリ122の負荷を軽減できる。一方、内蔵フォント情報22のフォントは再度利用される可能性が大きい。プリンタ1は、印刷ジョブの印刷が完了した後も、内蔵フォントの第1インデックス40を第2メモリ122から消去しないので、次回の印刷ジョブにて内蔵フォントが選択されていれば、早期に印刷を開始できる。
【0075】
S232の後、または、DLフォントを利用しなかったと判断した場合(S231:NO)、CPU11は、印刷ジョブ処理を終了する。印刷ジョブ処理の実行を終了した後、プリンタ1は、
図5に示したように、内蔵フォントの第1インデックス40が第2メモリ122に記憶され、DLフォントの情報は第2メモリ122に記憶されていない状態となる。プリンタ1は、印刷ジョブ処理の実行後、新たに印刷ジョブを受け付けた場合、新たに取得された印刷データに基づいて、再度、
図6の印刷ジョブ処理を実行する。
【0076】
以上、詳細に説明したように、実施の形態のプリンタ1は、印刷データを取得した際に、取得した印刷データにてDLフォントが選択されていた場合、DLフォント情報23を第2メモリ122に読み出すのみとし、グリフデータの登録、すなわち、マッピングを行わない。そして、プリンタ1は、その印刷データをラスタライズする際に印刷データに含まれる文字コードに対応するグリフデータのみを、そのDLフォント情報23から取得する。さらに、プリンタ1は、一度取得したグリフデータは第2インデックス50に登録しておき、同じ文字のグリフデータを取得する場合には、DLフォント情報23からではなく第2インデックス50から取得する。これにより、DLフォント情報23に含まれる全てのグリフデータをマッピングしてからラスタライズを行う場合と比較して、グリフデータのマッピングするための時間が無くなり、早期の印刷開始が期待できる。
【0077】
例えば、DLフォントを使用する印刷データを受信した場合に、その使用するDLフォントのDLフォント情報に含まれる全てのグリフデータをマッピングしたグリフインデックスを構築することが考えられる。しかし、DLフォントには、数万種類以上のグリフデータが登録されているものがある。そのような多数のフォントについて全てのグリフデータをマッピングするには時間がかかるため、印刷を開始するまでの待ち時間が長くなってしまう。実施の形態のプリンタ1は、グリフ数が多いDLフォントの場合には、フォントが選択された時点ではマッピングを行わない。従って、早期の印刷開始が期待できる。一方、グリフ数が多くないDLフォントの場合には、プリンタ1は、フォントが選択された時点でマッピングを行う。従って、印刷終了までに要する時間の短縮が期待できる。
【0078】
なお、実施の形態は単なる例示にすぎず、本発明を何ら限定するものではない。従って本明細書に開示される技術は当然に、その要旨を逸脱しない範囲内で種々の改良、変形が可能である。例えば、プリンタは、印刷単機能のものに限らず、複合機、複写機、FAX装置等、印刷機能を備えるものであれば適用可能である。
【0079】
また、明細書中に図示したフォント情報やグリフインデックスの構成は、いずれも一例であり、これに限らない。例えば、第2インデックス50(
図10参照)には、グリフIDに関連付けてエラー情報が記憶されるとしたが、エラー情報は無くても良い。つまり、第2インデックス50は、第1インデックス40(
図4参照)と同じ構成であっても良い。ただし、エラー情報が関連付けられていれば、グリフデータが存在しないことが一度判明した文字について、再度検索することを抑制でき、処理時間が軽減される。
【0080】
また、実施の形態では、プリンタ1は、空の第2インデックス50を構築する際に(第2インデックス構築処理のS503)、エラー無しの情報が記憶されたエラー情報を設けるとしたが、エラー情報は空データであっても良い。また、グリフデータが無い場合、プリンタ1は、エラー無しの情報をエラー有りの情報に書き換えるとしたが(第2検索処理のS617)、単に、エラー無しの情報を消去するのみとしても良い。
【0081】
また、実施の形態では、プリンタ1は、DLフォントのグリフ数に応じて、第1インデックス40を構築するか第2インデックス50を構築するかを判断するとしたが(文字中間データ生成処理のS312)、判断しなくても良い。つまり、プリンタ1は、DLフォントについては、グリフ数に関わらず、常に第2インデックス50を構築するとしても良い。この場合、文字中間データ生成処理のS311とS312とS314とは無く、S302にてNOと判断した場合には、CPU11は、S315に進む。
【0082】
また、実施の形態では、プリンタ1は、印刷ジョブ処理の終了時に、第2メモリ122に記憶した第2インデックス50やDLフォント情報23を消去するとしたが(印刷ジョブ処理のS231とS232)、消去しなくても良い。プリンタ1は、DLフォントの情報を、例えば、後続の印刷ジョブでも利用できるように残しておいても良い。
【0083】
また、実施の形態では、プリンタ1は、内蔵フォントについては、起動時に第1インデックス40を構築するとしたが(第1インデックス構築処理)、構築しなくても良い。つまり、プリンタ1は、内蔵フォントについても、印刷データにて利用が判明した際に第1インデックス40を構築するとしても良い。
【0084】
また、実施の形態に開示されている任意のフローチャートにおいて、任意の複数のステップにおける複数の処理は、処理内容に矛盾が生じない範囲で、任意に実行順序を変更できる、または並列に実行できる。
【0085】
また、実施の形態に開示されている処理は、単一のCPU、複数のCPU、ASICなどのハードウェア、またはそれらの組み合わせで実行されても良い。また、実施の形態に開示されている処理は、その処理を実行するためのプログラムを記録した記録媒体、または方法等の種々の態様で実現することができる。
【符号の説明】
【0086】
1 プリンタ
11 CPU
121 第1メモリ
122 第2メモリ
15 印刷エンジン