(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024162182
(43)【公開日】2024-11-21
(54)【発明の名称】プリンタ
(51)【国際特許分類】
B41J 5/30 20060101AFI20241114BHJP
【FI】
B41J5/30
【審査請求】未請求
【請求項の数】15
【出願形態】OL
(21)【出願番号】P 2023077487
(22)【出願日】2023-05-09
(71)【出願人】
【識別番号】000005267
【氏名又は名称】ブラザー工業株式会社
(74)【代理人】
【識別番号】110000291
【氏名又は名称】弁理士法人コスモス国際特許商標事務所
(72)【発明者】
【氏名】橋本 直樹
(72)【発明者】
【氏名】中島 健志郎
【テーマコード(参考)】
2C187
【Fターム(参考)】
2C187AE08
2C187AE18
2C187AE19
2C187BF01
2C187BF13
2C187BF22
2C187BF41
2C187BG02
2C187BG03
2C187BG15
2C187BG17
2C187BG26
2C187DB44
2C187HA12
(57)【要約】
【課題】プリンタにおいて、印刷データの種類とフォントデータの形式との組み合わせに簡単に対応できる技術を提供すること。
【解決手段】プリンタ1は、PDF形式の印刷データに対応するグリフデータを含むフォントファイル、例えば、トゥルータイプフォント形式のフォント情報をメモリ12に記憶する。そして、プリンタ1は、PCL5形式の印刷データを取得した場合、メモリ12に記憶されているフォントファイルに含まれるグリフデータであって、PDF形式の印刷データに対応するグリフデータに基づいて、PCL5形式の印刷データに対応するPCLフォントのグリフデータを生成する。さらに、プリンタ1は、生成したPCLフォントのグリフデータを用いて、取得した印刷データに指定されているテキストを描画することができる。
【選択図】
図1
【特許請求の範囲】
【請求項1】
メモリと、
印刷エンジンと、
コントローラと、
を備えるプリンタであって、
前記メモリには、
第1種の印刷データに対応する第1形式のフォントデータを記憶可能であり、
前記コントローラは、
印刷データを取得する取得処理と、
前記取得処理にて取得された前記印刷データが、第2種の印刷データであった場合に、前記メモリに記憶されている前記第1形式のフォントデータに基づいて、前記第2種の印刷データに対応する第2形式のフォントデータを生成する生成処理と、
前記生成処理にて生成された前記第2形式のフォントデータを用いて、前記印刷データに指定されるテキストを描画する描画処理と、
を実行可能である、
ように構成されるプリンタ。
【請求項2】
請求項1に記載するプリンタであって、
前記コントローラは、
前記取得処理にて取得された前記印刷データが、前記第2種の印刷データであった場合に、取得された前記印刷データに指定されるフォントを特定するフォント特定処理を実行し、
前記コントローラはさらに、
前記フォント特定処理にて特定されたフォントの前記フォントデータとして、前記メモリに、前記第1形式のフォントデータが記憶されている場合に、前記生成処理を実行する、
ように構成されるプリンタ。
【請求項3】
請求項2に記載するプリンタであって、
前記メモリには、
前記第2種の印刷データに対応する第2形式のフォントデータを記憶可能であり、
前記コントローラは、
前記フォント特定処理にて特定されたフォントの前記フォントデータとして、前記メモリに、前記第2形式のフォントデータが記憶されている場合、前記メモリに前記第1形式のフォントデータが記憶されている場合であっても前記生成処理を実行せず、前記メモリに記憶されている前記第2形式のフォントデータを用いて、前記印刷データに指定されるテキストを描画する、
ように構成されるプリンタ。
【請求項4】
請求項2に記載するプリンタであって、
前記メモリには、
前記第1形式の複数のフォントデータを含む第1フォントファイルを記憶可能であり、
前記第1フォントファイルには、フォントの識別情報として、第1識別情報を関連付けて記憶することが可能であり、
前記印刷データには、フォントを指定するコマンドとして、第2識別情報を示すコマンドを含めることが可能であり、
前記コントローラは、
前記メモリに記憶されている前記第1フォントファイルに関連付けられた前記第1識別情報を取得し、
前記メモリに、前記コマンドに示される前記第2識別情報と一致する前記第1識別情報が関連付けられた前記第1フォントファイルが記憶されている場合に、前記生成処理を実行する、
ように構成されるプリンタ。
【請求項5】
請求項1に記載するプリンタであって、
前記メモリには、
前記第1形式のフォントデータに基づいて、前記第2形式のフォントデータを生成するための生成プログラムを記憶可能であり、
前記コントローラは、
前記生成処理にて、前記生成プログラムを使用して、前記メモリに記憶されている前記第1形式のフォントデータに基づいて、前記第2形式のフォントデータを生成する、
ように構成されるプリンタ。
【請求項6】
請求項1に記載するプリンタであって、
前記コントローラは、
前記生成処理では、前記取得処理にて取得された前記印刷データに使用される文字に対応する前記第1形式のフォントデータについて、前記第2形式のフォントデータを生成する、
ように構成されるプリンタ。
【請求項7】
請求項6に記載するプリンタであって、
前記コントローラは、
前記生成処理にて、
前記取得処理にて取得された前記印刷データから使用される文字を1文字ずつ取得する文字取得処理を実行し、
さらに前記生成処理にて、前記文字取得処理にて取得された文字ごとに、
対象の文字に対応する前記第2形式のフォントデータがなければ、前記対象の文字に対応する前記生成処理にて生成された前記第2形式のフォントデータを記憶する文字記憶処理を実行し、
前記対象の文字に対応する前記第2形式のフォントデータがあれば、前記文字記憶処理を実行しない、
ように構成されるプリンタ。
【請求項8】
請求項6に記載するプリンタであって、
前記コントローラは、
前記取得処理にて取得された前記印刷データに基づくジョブの終了後、前記生成処理にて生成された前記第2形式のフォントデータを前記メモリに保存しない、
ように構成されるプリンタ。
【請求項9】
請求項1に記載するプリンタであって、
前記メモリには、
前記第1形式の複数のフォントデータを含む第1フォントファイルを記憶可能であり、
前記コントローラは、
前記生成処理では、前記第1フォントファイルに記憶されている前記第1形式の複数のフォントデータについて、前記第2形式のフォントデータを生成する、
ように構成されるプリンタ。
【請求項10】
請求項9に記載するプリンタであって、
前記コントローラは、
前記取得処理にて取得された前記印刷データに基づくジョブの終了後、前記生成処理にて生成された前記第2形式のフォントデータを前記メモリに保存する保存処理を実行する、
ように構成されるプリンタ。
【請求項11】
請求項10に記載するプリンタであって、
前記コントローラは、
前記取得処理にて取得された前記印刷データの印刷に必要なフォントデータとして、前記メモリに前記第2形式のフォントデータが記憶されている場合には、前記生成処理を実行せず、前記メモリから前記第2形式のフォントデータを読み出す、
ように構成されるプリンタ。
【請求項12】
請求項1に記載するプリンタであって、
前記コントローラは、
前記第1形式の複数のフォントデータを含む第1フォントファイルを外部デバイスから受信して前記メモリに保存することが可能であり、
前記取得処理にて取得された前記印刷データが、前記第1種の印刷データであった場合に、前記メモリに記憶された前記第1フォントファイルに含まれる前記第1形式の複数のフォントデータを用いて、前記印刷データに指定されるテキストを描画することが可能であり、
前記取得処理にて取得された前記印刷データが、前記第2種の印刷データであった場合に、前記生成処理および前記描画処理を実行可能である、
ように構成されるプリンタ。
【請求項13】
請求項12に記載するプリンタであって、
前記メモリには、
前記第2形式の複数のフォントデータを含む第2フォントファイルを記憶可能であり、
前記コントローラは、
前記取得処理にて取得された前記印刷データが、前記第2種の印刷データであった場合に、取得された前記印刷データの印刷に必要なフォントデータを特定するフォントデータ特定処理を実行し、
前記描画処理では、前記メモリに記憶されている前記第2フォントファイルに含まれている前記第2形式の複数のフォントデータのうち、前記フォントデータ特定処理にて特定された前記フォントデータを用いて、あるいは前記メモリに記憶されている前記第1フォントファイルに含まれている前記第1形式の複数のフォントデータのうち、前記フォントデータ特定処理にて特定された前記フォントデータに基づいて、前記生成処理によって生成された前記第2形式のフォントデータを用いて、前記印刷データに指定されるテキストを描画する、
ように構成されるプリンタ。
【請求項14】
請求項13に記載するプリンタであって、
前記コントローラは、
前記フォントデータ特定処理では、取得された前記印刷データに使用される文字に対応するフォントデータを、取得された前記印刷データの印刷に必要なフォントデータとして特定する、
ように構成されるプリンタ。
【請求項15】
請求項13または請求項14に記載するプリンタであって、
前記コントローラは、
前記描画処理では、前記フォントデータ特定処理にて特定された前記フォントデータが前記メモリに記憶されている前記第2フォントファイルに含まれていない場合、前記メモリに記憶されている前記第1フォントファイルに含まれている前記第1形式の複数のフォントデータのうち、前記フォントデータ特定処理にて特定された前記フォントデータに基づいて、前記生成処理によって生成された前記第2形式のフォントデータを用いて、前記印刷データに指定されるテキストを描画する、
ように構成されるプリンタ。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書に開示される技術分野は、ページ記述言語で記述された印刷データに基づく印刷が可能なプリンタに関する。
【背景技術】
【0002】
従来、ページ技術言語で記述された印刷データに基づく印刷が可能なプリンタには、例えば特許文献1に開示されているように、フォント情報を記憶している構成がある。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
フォントデータの形式は、印刷データの種類によって異なる場合がある。そのため、ユーザは、印刷データの種類に合ったフォントデータを用意し、プリンタにそのフォントデータを記憶させる必要がある。しかしながら、フォントデータを用意するのに印刷データの種類まで考慮しなければならないのは使い勝手が悪い。
【課題を解決するための手段】
【0005】
この課題の解決を目的としてなされたプリンタは、メモリと、印刷エンジンと、コントローラと、を備えるプリンタであって、前記メモリには、第1種の印刷データに対応する第1形式のフォントデータを記憶可能であり、前記コントローラは、印刷データを取得する取得処理と、前記取得処理にて取得された前記印刷データが、第2種の印刷データであった場合に、前記メモリに記憶されている前記第1形式のフォントデータに基づいて、前記第2種の印刷データに対応する第2形式のフォントデータを生成する生成処理と、前記生成処理にて生成された前記第2形式のフォントデータを用いて、前記印刷データに指定されるテキストを描画する描画処理と、を実行可能である、ように構成される。
【0006】
本明細書に開示されるプリンタは、第2種の印刷データを取得し、メモリに記憶されている第1種の印刷データに対応する第1形式のフォントデータに基づいて、第2種の印刷データに対応する第2形式のフォントデータを生成して描画する。つまり、プリンタは、第2種の印刷データであっても、第1形式のフォントデータに基づいてテキストを印刷することができる。従って、ユーザは、第1形式のフォントデータをプリンタに記憶させれば、第2種の印刷データに基づく印刷においても、そのプリンタでそのフォントを使用させることができる。これにより、フォントデータの形式や印刷データの種類を考慮する必要がなく、フォントを利用し易い。
【0007】
上記プリンタを含む印刷システム、プリンタの機能を実現するための制御方法、コンピュータプログラム、当該プログラムを格納するコンピュータにて読取可能な記憶媒体も、新規で有用である。
【発明の効果】
【0008】
本明細書に開示される技術によれば、プリンタにおいて、印刷データの種類とフォントデータの形式との組み合わせに簡単に対応できる技術が実現される。
【図面の簡単な説明】
【0009】
【
図1】プリンタの概略構成を示すブロック図である。
【
図2】印刷ジョブ処理の手順を示すフローチャートである。
【
図3】第1形式のフォント情報の概略構成を示す説明図である。
【
図4】第2形式のフォント情報の概略構成を示す説明図である。
【
図5】フォント登録処理の手順を示すフローチャートである。
【
図6】文字中間データ生成処理の手順を示すフローチャートである。
【
図7】印刷ジョブ処理の手順を示すフローチャートである。
【
図8】フォント登録処理の手順を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、第1の実施の形態にかかるプリンタについて、添付図面を参照しつつ詳細に説明する。本実施の形態は、ページ記述言語で記述された印刷データに基づく印刷が可能なプリンタを開示するものである。
【0011】
プリンタ1は、
図1に示すように、CPU11と、メモリ12と、を含む制御部10を備えている。また、プリンタ1は、ユーザインタフェース(以下、「ユーザIF」とする)13と、通信インタフェース(以下、「通信IF」とする)14と、印刷エンジン15と、を備えている。CPU11は、コントローラの一例である。ユーザIF13と通信IF14と印刷エンジン15とは、いずれも、制御部10に電気的に接続されている。なお、
図1中の制御部10は、プリンタ1の制御に利用されるハードウェアやソフトウェアを纏めた総称であって、実際にプリンタ1に存在する単一のハードウェアを表すとは限らない。
【0012】
CPU11は、メモリ12から読み出したプログラムに従って、または、ユーザの操作に基づいて、各種の処理を実行する。メモリ12には、各種のプログラムや各種のデータが記憶されている。メモリ12は、各種の処理が実行される際の作業領域としても利用される。メモリ12は、CPU11が備えるバッファを含んでも良い。
【0013】
なお、メモリ12の一例は、プリンタ1に内蔵されるROM、RAM、HDD等に限らず、CPU11が読み取り可能かつ書き込み可能なストレージ媒体であってもよい。例えば、通信IF14を介してプリンタ1に接続されているUSBメモリ、HDD等の外部メモリや、通信IF14を介してプリンタ1に接続されている装置に備えられるメモリやHDDも、メモリ12の一例である。
【0014】
メモリ12には、例えば、
図1に示すように、印刷制御プログラム21と、第1フォント情報22と、第2フォント情報23と、生成プログラム24と、が記憶されている。なお、第1フォント情報22と第2フォント情報23とは、いずれも、プリンタ1の工場出荷時には、メモリ12に記憶されていても良いし、記憶されていなくても良い。各プログラムやデータの詳細については、後述する。
【0015】
ユーザIF13は、ユーザに情報を報知するための画面を表示するハードウェアと、ユーザによる操作を受け付けるハードウェアと、を含む。ユーザIF13は、タッチパネルを含んでも良いし、表示部と操作ボタンとの組み合わせであっても良い。
【0016】
通信IF14は、外部装置と通信を行うためのハードウェアを含む。通信IF14の通信規格は、イーサネット(登録商標)、Wi-Fi(登録商標)、USBなどである。プリンタ1は、複数の通信規格に対応する複数の通信IF14を備えていても良い。
【0017】
印刷エンジン15は、例えば、電子写真方式、インクジェット方式、によって、画像データに基づく印刷を実行可能なデバイスを含む。印刷エンジン15は、複数色の着色材を備えてカラー印刷を実行可能なものであっても良いし、1色のみの着色材を備えて単色印刷を行うものであっても良い。
【0018】
なお、プリンタ1は、通信IF14を介して、例えば、
図1に示すように、サーバ100と通信可能である。サーバ100は、フォントの情報を記憶している外部デバイスであっても良い。プリンタ1は、ユーザの指示に基づいて、サーバ100からフォントの情報を含むファイルを受信してメモリ12に記憶することができる。また、ユーザは、例えば、フォントの情報が記憶されているUSBメモリをプリンタ1に接続することで、プリンタ1にUSBメモリに記憶されているフォントの情報を利用させることができる。
【0019】
次に、第1の実施の形態のプリンタ1の動作について説明する。なお、以下の処理は、基本的に、プログラムに記述された命令に従ったCPU11の処理を示す。CPU11による処理は、オペレーティングシステム(以下、「OS」とする)のAPIを介したハードウェア制御も含む。本明細書では、OSの記載を省略して各プログラムの動作を説明する場合がある。また、「取得」は、要求して取得する場合と要求せずに取得する場合とを含む概念で用いる。そして、実質的な意味内容が同じでフォーマットが異なるデータは、同一のデータとして扱われるものとする。
【0020】
プリンタ1は、印刷ジョブを取得して、取得した印刷ジョブに基づく印刷を実行できる。印刷ジョブに基づく印刷の手順を含む印刷ジョブ処理の手順について、
図2のフローチャートを参照して説明する。印刷ジョブ処理は、印刷制御プログラム21に基づいて、プリンタ1のCPU11にて実行される。なお、プリンタ1は、印刷ジョブを、通信IF14を介して外部装置から受信して取得しても良いし、通信IF14に装着されたUSBメモリから読み出して取得しても良い。
【0021】
印刷ジョブは、例えば、印刷対象の画像を示すデータであって、ページ記述言語で記述されるPDLデータと、印刷に関する各種のパラメータを示すPJLデータと、を含む。印刷ジョブに含まれるPDLデータには、例えば、ヒューレットパッカード(登録商標)によって提供されているPCL5形式、PDF形式等の複数の種類がある。PCL5形式のPDLデータは、第2種の印刷データの一例である。PDF形式のPDLデータは、第1種の印刷データの一例である。プリンタ1は、例えば、PJLデータに基づいてPDLデータの種類を特定できる。
【0022】
図2に示す印刷ジョブ処理は、PCL5形式のPDLデータを含む印刷ジョブについて、実行指示を受け付けた場合に実行される処理である。本明細書では、PCL5形式以外の形式のPDLデータを含む印刷ジョブの処理については、説明を省略する。
【0023】
印刷ジョブ処理では、CPU11は、フォントを識別するためのフォントIDを取得する(S101)。フォントIDは、各フォントに関連付けられている情報である。フォントIDは、第1識別情報の一例である。フォントIDは、例えば、数値である。フォントIDは、文字列であっても良い。
【0024】
具体的には、CPU11は、S101にて、メモリ12に記憶されている第1フォント情報22や第2フォント情報23に含まれる全てのフォントについて、各フォントの情報に関連付けられているフォントIDを取得する。また、CPU11は、プリンタ1に接続されているUSBメモリにフォントの情報が記憶されている場合、USBメモリに記憶されているフォントの情報に関連付けられているフォントIDを取得する。
【0025】
プリンタ1は、各フォントの情報を、フォントごとに、例えば、フォントファイルとして記憶可能である。第1フォント情報22や第2フォント情報23は、複数のフォントファイルを含んでいても良い。各フォントファイルは、ファイルシステムによって管理されるものに限らず、1つのフォントについて、文字の形状を示すグリフデータを複数含む情報である。グリフデータは、フォントデータの一例である。
【0026】
フォントIDは、フォントファイルに含まれていても良いし、フォントファイルに関連付けて、フォントファイルとは別に記憶されていても良い。また、プリンタ1は、例えば、外部デバイスからフォントファイルをダウンロードした場合、フォントIDを生成して、外部デバイスからダウンロードしたフォントファイルに関連付けて記憶しても良い。
【0027】
第1フォント情報22は、PDF形式PDLデータに対応する第1形式のグリフデータが記憶されるフォントファイルを含む。第1形式のグリフデータを含むフォントファイルとしては、例えば、トゥルータイプフォント、オープンタイプフォント、ポストスクリプトフォント、がある。第1フォント情報22に含まれるフォントファイルは、第1フォントファイルの一例である。なお、プリンタ1は、PCL5形式のPDLデータを含む印刷ジョブの処理では、第1フォント情報22に含まれるフォントファイルを、そのままでは印刷に利用できない。
【0028】
第1フォント情報22のトゥルータイプフォント形式のフォントファイルは、例えば、
図3に示すような構成のフォント情報30を含む。フォント情報30は、ヘッダテーブル31と、文字テーブル32と、場所テーブル33と、グリフテーブル34と、を含む。なお、フォント情報30は、さらに、各文字について、印字位置を示す情報や文字幅を示す情報を含んでいても良い。
【0029】
ヘッダテーブル31は、文字テーブル32の位置情報と、場所テーブル33の位置情報と、グリフテーブル34の位置情報と、を含む情報を記憶するテーブルである。文字テーブル32は、各文字の文字コードと当該文字のグリフIDとを関連付けたテーブルである。文字コードは、各文字を識別する情報である。場所テーブル33は、グリフIDごとに、グリフIDとそのグリフIDに対応するグリフデータの位置情報とを関連付けたテーブルである。グリフIDは、各文字のグリフデータを識別する識別情報である。
【0030】
グリフテーブル34は、グリフデータ341、342などの複数のグリフデータを格納するテーブルである。各グリフデータは、各文字のアウトラインを示す情報であって、それぞれに固有のグリフIDが付与されている。
【0031】
第2フォント情報23は、PCL5形式のPDLデータに対応する第2形式のグリフデータが記憶されるフォントファイルを含む。第2フォント情報23に含まれるフォントファイルは、第2フォントファイルの一例である。プリンタ1は、PCL5形式のPDLデータを含む印刷ジョブの処理では、第2フォント情報23に含まれるフォントファイルを、そのままで印刷に利用可能である。以下では、PCL5形式の印刷データに対応するフォントファイルのフォントを、「PCLフォント」とする。
【0032】
第2フォント情報23に含まれるPCLフォントのフォントファイルは、例えば、
図4に示すような構成のフォント情報40を含む。フォント情報40は、フォントヘッダ41と、分割情報42と、複数のグリフデータ43、44等と、を含む。
【0033】
フォントヘッダ41は、フォントIDを含み、このフォントの全体に関する情報を記憶するヘッダである。分割情報42には、例えば、フォント情報30(
図3参照)のヘッダテーブル31に相当する情報が記憶される。また、各文字のグリフデータは、グリフヘッダと、グリフデータ本体と、を含む。グリフヘッダ431は、グリフデータ43に関する情報であり、例えば、フォーマット情報、サイズ情報、グリフIDを含む。グリフデータ本体432は、グリフデータ43の文字のアウトラインを示す情報であり、フォント情報30(
図3参照)のグリフデータ341、342などに相当する。
【0034】
つまり、第1フォント情報22のフォントファイルに含まれるグリフデータ(例えば、
図3のグリフデータ341)と、第2フォント情報23のフォントファイルに含まれるグリフデータ(例えば、
図4のグリフデータ43)と、は異なる形式のグリフデータである。そして、プリンタ1は、印刷ジョブに含まれるPDLデータの種類によって、異なる形式のグリフデータを用いてテキストを描画する。
【0035】
図2の印刷ジョブ処理の説明に戻る。S101では、CPU11は、各フォント情報40(
図4参照)のフォントヘッダ41から、第2フォント情報23に含まれるフォントのフォントIDを取得できる。一方、第1フォント情報22に含まれる各フォント情報30(
図3参照)には、フォントIDが関連付けられていない可能性がある。CPU11は、メモリ12やUSBメモリに記憶されているフォントの情報にフォントIDが関連付けられていない場合、S101にて、フォントIDが関連付けられていないフォントに関連付けてフォントIDを設定しても良い。
【0036】
次に、CPU11は、印刷ジョブに含まれる印刷データを取得する(S102)。S1102は、取得処理の一例である。そして、CPU11は、取得した印刷データに基づいて、印刷対象の文字のフォントを指定するフォントID選択コマンドを取得したか否かを判断する(S111)。フォントID選択コマンドは、フォントIDを含み、そのフォントIDによって、印刷に利用するフォントを指定するコマンドである。
【0037】
取得した印刷データがフォントID選択コマンドであると判断した場合(S111:YES)、CPU11は、フォント登録処理を実行する(S112)。S111にて取得したフォントID選択コマンドに含まれるフォントIDは、第2識別情報の一例である。
【0038】
フォント登録処理の手順について、
図5のフローチャートを参照して説明する。フォント登録処理では、CPU11は、各フォントファイルのフォントIDから、フォントID選択コマンドにて指定されたフォントIDと一致するフォントIDを検索する(S201)。具体的には、CPU11は、印刷ジョブ処理のS101にて取得した各フォントIDのうち、フォントID選択コマンドにて指定されたフォントIDと一致するフォントIDを抽出する。これにより、CPU11は、印刷データに指定されるフォントを特定する。S201は、フォント特定処理の一例である。
【0039】
さらに、CPU11は、S201にて特定されたフォントとして、PCLフォントが有るか否かを判断する(S202)。例えば、S201にて複数のフォントが検索された場合、CPU11は、S202では、検索されたフォントのうちに、PCLフォントが有るか否かを判断する。S201にて1つのフォントが検索された場合、CPU11は、S202では、検索されたフォントがPCLフォントであるか否かを判断する。
【0040】
PCLフォントが無いと判断した場合(S202:NO)、CPU11は、S201にて特定されたフォントのフォントファイルを、メモリ12の揮発性の領域に読み出す(S203)。なお、CPU11は、S201にてフォントIDを検索できなかった場合や、S203にてフォントファイルを読み出せなかった場合、エラーとしても良いし、記憶されている他のフォントで代用するとしても良い。
【0041】
さらに、CPU11は、読み出したフォントファイルのヘッダ情報に基づいて、PCLフォントのフォントヘッダを生成する(S204)。CPU11は、例えば、
図4に示したフォント情報40に含まれるフォントヘッダ41と同様の構成のフォントヘッダを生成する。S204にて生成されるフォントヘッダには、文字コードとグリフデータとを関連付けるための情報が含まれ、各文字のグリフデータは含まれない。
【0042】
S204の後、または、PCLフォントが有ると判断した場合(S202:YES)、CPU11は、フォントヘッダを内部的に登録する(S205)。CPU11は、S204にて生成したフォントヘッダ、または、特定されたPCLフォントのフォントヘッダを登録する。S205の後、CPU11は、フォント登録処理を終了して、印刷ジョブ処理に戻る。
【0043】
図2の印刷ジョブ処理の説明に戻る。印刷ジョブ処理では、S112のフォント登録処理の後、CPU11は、S102に進み、さらに印刷データを取得する。そして、取得した印刷データがフォントID選択コマンドではないと判断した場合(S111:NO)、CPU11は、取得した印刷データが印刷対象の文字を指定する文字コードであるか否かを判断する(S121)。
【0044】
取得した印刷データが文字コードであると判断した場合(S121:YES)、CPU11は、印刷対象の1文字ごとに文字中間データ生成処理を実行する(S122)。印刷対象の文字の文字コードを取得するS121は、文字取得処理の一例である。
【0045】
文字中間データ生成処理の手順について、
図6のフローチャートを参照して説明する。CPU11は、フォントヘッダが登録されているフォントファイルに、印刷データにて指定された印刷対象の文字のグリフデータが登録されているか否かを判断する(S301)。フォントヘッダの登録は、前述したフォント登録処理(
図5参照)のS205にて実行される。
【0046】
なお、文字中間データ生成処理の開始時に、フォントヘッダが登録されていない場合、CPU11は、エラーとしても良いし、他の代用フォントを利用するとしても良い。例えば、代用フォントとして、メモリ12にPCLフォントのフォントファイルが記憶されていれば、CPU11は、S301にて、メモリ12に記憶されているPCLフォントのフォントファイルを読み出して、フォントヘッダを登録するとしても良い。
【0047】
印刷対象の文字のグリフデータが登録されていると判断した場合(S301:YES)、CPU11は、ラスタライズに用いるグリフデータとして、登録されているグリフデータを取得する(S302)。S302にて取得されるグリフデータは、PCLフォントのグリフデータであり、PCL5形式の印刷データに対応する形式のグリフデータである。S302は、フォントデータ特定処理の一例である。
【0048】
例えば、フォント登録処理(
図5参照)のS201にて検索されたフォントがPCLフォントであれば、CPU11は、フォント登録処理のS205にて登録したフォントヘッダに基づいて、各文字のグリフデータを取得できる。なお、PCLフォントであって、文字コードに対応するグリフデータが無い場合、CPU11は、例えば、空白文字の中間データを生成するとしても良い。
【0049】
一方、フォント登録処理のS201にて検索されたフォントがPCLフォントではない場合、フォントヘッダは登録済みであっても、各文字のグリフデータは、登録されているとは限らない。印刷対象の文字のグリフデータが登録されていないと判断した場合(S301:NO)、CPU11は、フォント登録処理のS203にて読み出したフォントファイルに基づいて、文字データに対応するグリフIDを取得する(S311)。グリフIDは、各グリフデータを識別する情報であり、各文字のグリフデータの記憶場所を示す情報でもある。
【0050】
さらに、CPU11は、読み出したフォントファイルから、取得したグリフIDに対応する文字のグリフデータを取得する(S312)。特定されているフォントがPCLフォントではないことから、S312にて取得されるグリフデータは、PCLフォントのグリフデータではない。
【0051】
そこで、CPU11は、S312にて取得したグリフデータに基づいて、PCLフォントのグリフデータを生成する(S313)。CPU11は、例えば、S312にて取得したトゥルータイプフォント形式のフォントのグリフデータに、文字のフォーマット情報、サイズ情報、グリフID等を付加して、PCLフォントの構成のグリフデータを生成する。S313は、生成処理の一例である。
【0052】
なお、CPU11は、S313の処理を生成プログラム24に基づいて実行する。生成プログラム24は、印刷制御プログラム21に含まれていても良いし、印刷制御プログラム21から呼び出されて実行されるプログラムであっても良い。
【0053】
さらに、CPU11は、生成した1文字分のグリフデータを、登録済みのフォントヘッダに関連付けて登録する(S314)。つまり、CPU11は、S313によって取得したグリフデータを、印刷対象の文字の文字コードに対応するグリフデータとして記憶する。S314は、文字記憶処理の一例である。
【0054】
生成したグリフデータを登録することで、CPU11は、次回の文字中間データ生成処理のS302では、登録したグリフデータを取得可能である。また、S302にて登録済みのグリフデータを取得した場合、CPU11は、取得したグリフデータを登録しない。つまり、1つの印刷ジョブにて同じ文字を複数回印刷する場合、CPU11は、毎回同じグリフデータを生成または登録する必要はない。これにより、処理の無駄が軽減される。
【0055】
S302またはS314の後、CPU11は、取得したグリフデータを用いて、印刷対象の文字の中間データを生成する(S321)。さらに、CPU11は、生成した中間データを、そのページの中間データの適切な位置に配置する。S321の後、CPU11は、文字中間データ生成処理を終了して、印刷ジョブ処理に戻る。
【0056】
なお、フォント登録処理のS205にて登録されるフォントヘッダや、文字中間データ生成処理のS314にて登録されるグリフデータは、メモリ12の揮発性の領域に記憶される。つまり、これらの情報は、実行中の印刷ジョブの終了後にはメモリ12に保存されない。
【0057】
図2の印刷ジョブ処理の説明に戻る。印刷ジョブ処理では、S112のフォント登録処理の後、CPU11は、S102に進み、さらに印刷データを取得する。そして、取得した印刷データが印刷対象の文字を指定する文字コードではないと判断した場合(S121:NO)、CPU11は、取得した印刷データが文字以外の印刷を示す描画オブジェクトであるか否かを判断する(S131)。
【0058】
文字以外の印刷を示す描画オブジェクトであると判断した場合(S131:YES)、CPU11は、文字以外の中間データを生成して、配置する(S132)。文字以外の中間データを生成する処理については、説明を省略する。
【0059】
取得した印刷データが文字以外の印刷を示す描画オブジェクトではないと判断した場合(S131:NO)、CPU11は、取得した印刷データがページの終端を示すページ終端コマンドであるか否かを判断する(S141)。ページ終端コマンドを取得したと判断した場合(S141:YES)、CPU11は、生成した中間データに基づいて、1ページ分のラスタデータを生成する(S142)。S142は、描画処理の一例である。
【0060】
なお、プリンタ1の印刷エンジン15は、生成されたラスタデータに基づいて、1ページ分の印刷を実行することができる。これにより、フォントID選択コマンドによって指定されたフォントで描画されたテキストを含む印刷物が出力される。
【0061】
取得した印刷データがページの終端を示すページ終端コマンドではないと判断した場合(S141:NO)、CPU11は、取得した印刷データがジョブ終了コマンドであるか否かを判断する(S151)。ジョブ終了コマンドではないと判断した場合(S151:NO)、CPU11は、S102に進み、さらに印刷データを取得する。ジョブ終了コマンドを取得したと判断した場合(S151:YES)、CPU11は、印刷ジョブ処理を終了する。
【0062】
以上、詳細に説明したように、第1の実施の形態のプリンタ1は、PCL5形式の印刷データに基づく印刷を実行する場合、メモリ12に記憶されている第1フォント情報22のグリフデータに基づいて、PCLフォントのグリフデータを生成することで、このフォントを用いてテキストを描画できる。従って、プリンタ1は、例えば、トゥルータイプフォント形式のフォントデータがメモリ12に記憶されていれば、PDF形式の印刷データに基づく印刷にも、PCL5形式の印刷データに基づく印刷にも、メモリ12に記憶されているフォントデータを利用可能である。
【0063】
これにより、ユーザは、例えば、トゥルータイプフォント形式のフォントデータを含むフォントファイルをダウンロードするだけで、印刷データの種類に関わらず、ダウンロードしたフォントファイルを印刷に利用できる。ユーザは、同じフォントについて、複数の形式のフォントファイルを用意する必要はなく、また、印刷データの種類を考慮する必要もない。
【0064】
続いて、第2の実施の形態にかかるプリンタについて、添付図面を参照しつつ詳細に説明する。本実施の形態は、印刷ジョブにてPCLフォントではないフォントが指定されている場合に、フォントヘッダのみではなく各文字のグリフデータを含むPCLフォントのフォント情報を生成して登録する点で、フォントヘッダのみを登録する第1の実施の形態のプリンタ1とは異なる。以下では、第1の実施の形態のプリンタ1と同様の構成や手順については、第1の実施の形態と同じ符号を付して、簡略に説明する。
【0065】
第2の実施の形態のプリンタ1にて実行される印刷ジョブ処理の手順について、
図7のフローチャートを参照して説明する。第2の実施の形態のプリンタ1のCPU11は、フォントを指定するフォントID選択コマンドを取得したと判断した場合(S111:YES)、
図5に示したフォント登録処理に代えて、
図8に示すフォント登録処理を実行する(S401)。
【0066】
第2の実施の形態のプリンタ1にて実行されるフォント登録処理の手順について、
図8のフローチャートを参照して説明する。このフォント登録処理では、CPU11は、フォントID選択コマンドにて指定されたフォントIDを検索する(S201)。そして、CPU11は、PCLフォントが検索されたか否かを判断する(S202)。
【0067】
PCLフォントが無いと判断した場合(S202:NO)、CPU11は、特定されたフォントのフォントファイルを読み出す(S203)。そして、CPU11は、読み出したフォントファイルに基づいて、PCLフォントのフォントヘッダを生成する(S204)。S204の後、または、PCLフォントが有ると判断した場合(S202:YES)、CPU11は、フォントヘッダを内部的に登録する(S205)。
【0068】
そして、CPU11は、S205にて登録したフォントヘッダに関連付けて、全ての文字のグリフデータが登録されているか否かを判断する(S501)。S201にて特定されたフォントがPCLフォントである場合、S205にて登録したフォントヘッダに関連付けて、全ての文字のグリフデータが登録されている。登録されていると判断した場合(S501:YES)、CPU11は、フォント登録処理を終了して、
図7の印刷ジョブ処理に戻る。
【0069】
一方、特定されたフォントがPCLフォントではない場合、CPU11は、S205ではフォントヘッダのみを登録し、各文字のグリフデータを登録していない。グリフデータが登録されていないと判断した場合(S501:NO)、CPU11は、S203にて読み出したフォントファイルに含まれる各文字のグリフデータに基づいて、PCLフォントのグリフデータを生成する。
【0070】
具体的には、CPU11は、登録済みではない文字のグリフIDを取得する(S502)。そして、CPU11は、読み出したフォントファイルから、取得したグリフIDに対応する文字のグリフデータを取得する(S503)。さらに、CPU11は、S503にて取得したグリフデータに基づいて、PCLフォントのグリフデータを生成する(S504)。そして、CPU11は、生成したグリフデータを登録する(S505)。S503~S505は、第1の形態の文字中間データ生成処理(
図6参照)のS312~S314と同様の処理である。
【0071】
S505の後、CPU11は、S501に進んで、読み出したフォントファイルに含まれる全てのグリフデータの登録が終了したか否かを判断する。そして、未登録のグリフデータがある場合(S501:NO)、CPU11は、S502~S505を繰り返す。
【0072】
全てのグリフデータの登録が終了したら(S501:YES)、CPU11は、フォント登録処理を終了して、
図7の印刷ジョブ処理に戻る。なお、フォント登録処理によって登録されたフォントヘッダや各グリフデータは、メモリ12の揮発性の領域に記憶されている。
【0073】
図7の印刷ジョブ処理の説明に戻る。CPU11は、S401のフォント登録処理の後、S102に進んで、さらに印刷データを取得する。そして、取得した印刷データが、文字コードであると判断した場合(S121:YES)、CPU11は、フォント登録処理にて登録した各グリフデータの中から、取得した印刷データの文字コードに対応するグリフデータを取得する(S411)。
【0074】
さらに、CPU11は、取得したグリフデータを利用して、文字の中間データを生成する(S412)。なお、文字コードに対応するグリフデータが見つからない場合、CPU11は、例えば、空白文字の中間データを生成するとしても良い。
【0075】
取得した印刷データが、文字以外の描画オブジェクトであると判断した場合(S121:YES)、CPU11は、描画オブジェクトに基づいて、中間データを生成する(S132)。
【0076】
また、ページ終端コマンドを取得したと判断した場合(S141:YES)、CPU11は、生成した中間データに基づいて、1ページ分のラスタデータを生成する(S142)。印刷エンジン15は、ラスタデータに基づいて、1ページ分の印刷を実行する。
【0077】
ジョブ終了コマンドを取得したと判断した場合(S151:YES)、CPU11は、S401のフォント登録処理にて生成したPCLフォントのフォントヘッダや各グリフデータを、フォントファイルとして保存する(S421)。CPU11は、PCLフォントのフォントファイルを、メモリ12の不揮発性の領域、あるいはプリンタ1に接続されているUSBメモリに記憶する。S421は、保存処理の一例である。S421の後、CPU11は、印刷ジョブ処理を終了する。
【0078】
S421にて、CPU11は、このフォントファイルに関連付けて、既に記憶済みの各フォントファイルとは異なるフォントIDを生成して記憶する。また、例えば、CPU11は、このフォントファイルに関連付けて、フォント登録処理(
図8参照)のS203にて読み出した元のフォントファイル、すなわち、PCLフォントではないフォントのフォントファイルと、同じフォントIDを記憶しても良い。あるいは、CPU11は、元のフォントファイルと同じフォントであって形式が異なることを示す情報を付与したフォントIDを記憶しても良い。
【0079】
以上、詳細に説明したように、第2の実施の形態のプリンタ1は、第1の実施の形態のプリンタ1と同様に、第1フォント情報22のグリフデータに基づいて、PCLフォントのグリフデータを生成する。従って、ユーザは、印刷データの種類を考慮せずに、例えば、ダウンロードしたフォント情報を利用できる。
【0080】
さらに、第2の実施の形態のプリンタ1は、全ての文字のグリフデータを生成して、フォントファイルとして保存する。従って、例えば、以後の印刷ジョブにて同じフォントが指定された場合、プリンタ1は、保存したフォントファイルをメモリ12から読み出して使用することができる。これにより、以後の印刷ジョブの処理にてグリフデータの生成にかかる時間を省くことができ、印刷の高速化が期待できる。また、全ての文字のグリフデータを生成することで、印刷に利用する文字のみについてグリフデータを生成する第1の実施の形態のプリンタ1に比較して、処理のアルゴリズムがシンプルになる。
【0081】
一方、第1の実施の形態のプリンタ1は、生成したグリフデータをメモリ12に保存しない。第1の実施の形態では、全ての文字のグリフデータを生成したとは限らないことから、プリンタ1は、フォントファイルとして保存しないことで、以後の印刷ジョブでのエラーを抑制できる。そして、第1の実施の形態では、プリンタ1は、印刷に必要な文字のみのグリフデータを生成するので、全ての文字のグリフデータを生成する場合と比較して、グリフデータの生成に要する処理負荷が軽減されている。この手順は、和文フォントのような文字の種類が多いフォントの場合に、特に有効である。
【0082】
なお、実施の形態は単なる例示にすぎず、本発明を何ら限定するものではない。従って本明細書に開示される技術は当然に、その要旨を逸脱しない範囲内で種々の改良、変形が可能である。例えば、プリンタ1は、印刷単機能のものに限らず、複合機、複写機、FAX装置等、印刷機能を備えるものであれば適用可能である。
【0083】
また、第1フォント情報22と第2フォント情報23との区別は、必須ではない。つまり、プリンタ1は、フォントごとにフォントファイルを記憶していれば良い。また、第1の実施の形態であっても、印刷ジョブの処理中で全ての文字のグリフデータを生成した場合には、全ての文字のグリフデータを生成したフォントのフォントファイルを保存しても良い。
【0084】
また、第1の実施の形態では、ジョブ内で印刷対象となった文字のグリフデータを登録し、同じジョブ内では再利用するとしたが、再利用しなくても良い。具体的には、第1の実施の形態の文字中間データ生成処理(
図6参照)のS301とS302とは、無くても良い。その場合、CPU11は、印刷対象として文字が指定されるごとに、トゥルータイプフォント形式等のフォント情報から、指定された文字のグリフデータを読み出す。さらに、CPU11は、読み出したグリフデータに基づいて、PCLフォントのグリフデータを生成して利用すれば良い。
【0085】
また、第2の実施の形態のプリンタ1は、印刷ジョブの処理を終了したら、生成したPCLフォントのフォントファイルをメモリ12の不揮発性の領域に保存するとしたが、保存しなくても良い。具体的には、第2の実施の形態の印刷ジョブ処理(
図7参照)のS421は、無くても良い。また、プリンタ1は、保存するか否かのユーザの設定を受け付け可能であっても良い。
【0086】
また、プリンタ1は、第1の実施の形態の処理と、第2の実施の形態の処理と、のいずれも実行可能であっても良い。その場合、例えば、フォントファイルに含まれる文字数が所定の数より多い場合には、第1の実施の形態の処理を実行し、所定の数より多くない場合には、第2の実施の形態の処理を実行するとしても良い。また、プリンタ1は、第1の実施の形態の処理と、第2の実施の形態の処理と、のいずれを実行するかに関するユーザの設定を受け付け可能であっても良い。
【0087】
また、プリンタ1は、PCL5形式の印刷データの処理のみでなく、例えば、PDF形式の印刷データの処理も実行可能である。プリンタ1は、PDF形式の印刷データの処理では、第1フォント情報22のフォントファイルをそのまま利用して、テキストを描画できる。なお、プリンタ1は、PDF形式の印刷データの処理にて、PCLフォントのフォントファイルを利用可能であっても良い。
【0088】
また、実施の形態に開示されている任意のフローチャートにおいて、任意の複数のステップにおける複数の処理は、処理内容に矛盾が生じない範囲で、任意に実行順序を変更できる、または並列に実行できる。
【0089】
また、実施の形態に開示されている処理は、単一のCPU、複数のCPU、ASICなどのハードウェア、またはそれらの組み合わせで実行されても良い。また、実施の形態に開示されている処理は、その処理を実行するためのプログラムを記録した記録媒体、または方法等の種々の態様で実現することができる。
【符号の説明】
【0090】
1 プリンタ
11 CPU
12 メモリ
15 印刷エンジン