JP3962559B2 - 印刷制御装置及び印刷制御方法 - Google Patents
印刷制御装置及び印刷制御方法 Download PDFInfo
- Publication number
- JP3962559B2 JP3962559B2 JP2001197286A JP2001197286A JP3962559B2 JP 3962559 B2 JP3962559 B2 JP 3962559B2 JP 2001197286 A JP2001197286 A JP 2001197286A JP 2001197286 A JP2001197286 A JP 2001197286A JP 3962559 B2 JP3962559 B2 JP 3962559B2
- Authority
- JP
- Japan
- Prior art keywords
- font
- embedded
- intermediate data
- control command
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 52
- 230000008569 process Effects 0.000 claims description 37
- 238000006243 chemical reaction Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 6
- 230000006870 function Effects 0.000 description 152
- 238000012545 processing Methods 0.000 description 42
- 230000015654 memory Effects 0.000 description 34
- 238000010586 diagram Methods 0.000 description 13
- 238000004891 communication Methods 0.000 description 5
- 239000004065 semiconductor Substances 0.000 description 5
- 230000008859 change Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 2
- 230000015556 catabolic process Effects 0.000 description 2
- 238000006731 degradation reaction Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Images
Landscapes
- Record Information Processing For Printing (AREA)
Description
【発明が属する技術分野】
本発明は、プリンタ等の印刷装置に印刷用の制御コマンドを供給する印刷制御装置及び印刷制御方法に関し、特に、アプリケーションプログラムからの印刷命令を一旦、最終的に前記プリンタに送付する印刷データとは異なる形式のデータ形式(いわゆる中間コード)に変換した後、再度制御コマンドに変換する形式の印刷制御装置及び印刷制御方法に関する。
【0002】
【従来の技術】
図3は、従来、直接、あるいはネットワーク経由で接続されているプリンタ1500に対して印刷指示を行う印刷制御装置としてのホストコンピュータにおいて、印刷処理に関わる機能構成を大まかに示した図である。印刷処理は、ホストコンピュータのユーザが、ワードプロセッサプログラムや表計算プログラム等のアプリケーション201から、印刷指示を行うことによって開始する。
【0003】
アプリケーション201は、文字描画データ等を含むアプリケーションデータを解析して、例えばOS(基本ソフト)が提供するグラフィックエンジン202をコールする。
グラフィックエンジン202は、プリンタ1500の種類に合わせて用意されたプリンタドライバ203をロードし、アプリケーション201の出力をプリンタドライバ203に受け渡す。そして、アプリケーション201から受け取るGDI(Graphic Device Interface)関数からDDI(Device Driver Interface)関数に変換して、プリンタドライバ203へDDI関数を出力する。
【0004】
プリンタドライバ203は、グラフィックエンジン202から受け取ったDDI関数に基づいて、プリンタが認識可能な制御コマンド、例えばPDL(Page Description Language)に変換する。変換されたプリンタ制御コマンドは、システムスプーラ204を経てインターフェース21経由でプリンタ1500へ印刷データとして出力される。
プリンタ1500ではこの制御コマンドを解釈して、ビットマップデータへ展開し、最終的に紙などの記録媒体に印刷結果が出力される。
【0005】
図5は、印刷処理における文字描画に必要な情報を表す模式図である。図5に示すように、一般的に文字描画では以下の情報が必要である。
・文字コード
文字描画で伝えたいところの文字情報。ASCII、ShiftJIS、Unicode等、予め定められたコード体系に従ったコードが用いられる。
・フォント属性
文字描画に適応するフェース名、グリフへの修飾を表すイタリック/ボールド指定有無、文字の大きさを表すポイント数等の情報。
・フォント
ゴシックや明朝等のフェース名で指定される文字描画形状を表す情報。内部に文字毎の描画形状情報(グリフと以下呼ぶ)を有する。フォントの情報形式としては、大きくビットマップフォントとアウトラインフォントに分かれ、TrueType、OpenType等の各種フォーマットが定義されている。
・描画属性
文字の描画位置や、色、クリップの状態等を表す情報。
【0006】
そして、これらの情報全てが揃わなければ、ユーザが意図した通りの文字描画は成立しない。しかし、文字描画形状を表す情報であるフォントは、例えば著作権の関係等によって、すべての環境に必要とするフォントが存在する保証はない。言い換えるとユーザが文字描画データを作成した環境に存在したフォントが、文字描画が行われる環境で存在しない可能性がある。描画が行われる環境にユーザが意図したフォントが存在しない場合にも、ユーザが意図したフォントもしくはそれに近い形状のフォントで文字描画を行うために、従来、1)フォント置き換え、2)ビットマップ置き換え及び、3)フォント埋め込みという仕組みが知られている。以下、それぞれの仕組みを用いた場合の描画結果を示す図6を参照して、それぞれの仕組みについて説明する。
【0007】
1.フォント置き換え
文字描画実行環境において、文字描画データ中のフォント属性に近い別のフォントを用いて描画を行う方法。別のフォントを用いるため、図6右最上段に示すように、ユーザが意図していたものとは全く違った形状の文字描画が行われる可能性がある。最悪の場合、意図した文字コードに対応したフォントが文字描画実行環境において存在せず、文字として識別不可能な描画(印刷)が行われることもある。
【0008】
2.ビットマップ置き換え
文字描画データを作成する時点で文字描画をビットマップに変換して、文字描画をビットマップ描画に変換する方法。通常の見た目はユーザが意図した文字描画と同じになる。しかしビットマップであるために図6右中段に示すように拡大/縮小時にビットマップの解像度の影響で文字品位が落ちる場合がある。
【0009】
3.フォント埋め込み
文字描画データに対してフォントを埋め込み、文字描画が実際行われる環境までフォントを持っていく方法。埋め込まれたフォントは、文字描画前に文字描画実行環境へ登録されるため、すべての情報が揃いユーザが意図した形式で文字描画される。注意として登録の際には著作権を侵害しないように配慮する必要がある。例えば埋め込みフォントが描画する環境に元々存在しない場合には、印刷終了後に登録したフォントを必ず消去する必要がある。フォント埋め込みは指定されたフォントが文字描画領域になくてもユーザが意図した出力を得られるという利点があるが、フォント情報を文字描画データに埋め込むため、文字描画データが大きくなる傾向にある。特に日本語フォントのような文字種の多いフォントを埋め込む場合にこの問題が顕著である。
【0010】
図7に示すシーケンスチャートを用いて、フォントが埋め込みされた文字描画データを印刷する際の従来のアプリケーション201、グラフィックスエンジン202、及びプリンタドライバ203の動作について説明する。
【0011】
ステップA1. アプリケーション201は印刷ジョブが開始することを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してプリンタドライバ203へ引き渡す)。
ステップDRV1. プリンタドライバ203は、ジョブ開始制御のPDLコマンドを生成する。
【0012】
ステップA2. アプリケーション201はページ印刷が開始することを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202はA1.と同様にプリンタドライバ203へ引き渡す)。
ステップDRV2. プリンタドライバ203は、ページ開始制御のPDLコマンドを生成する。
【0013】
ステップA3. アプリケーション201は、アプリケーションデータ内の埋め込みフォントをグラフィックエンジン202に登録する。この登録により文字描画に不可欠なフォントの情報をこの環境下でも使用可能にすることができる。ステップG1. グラフィックエンジン202は、フォント情報を保持する。
ステップA4. アプリケーション201がステップA3.で登録したフォントを用いたGDI関数によって文字描画を行う(グラフィックエンジン202はステップA1.と同様にプリンタドライバ203へ引き渡す)。
【0014】
ステップDRV3. プリンタドライバ203は、文字描画コマンドを生成するために、以下の処理を行い文字のグリフを取得する。
ステップDRV3.1. プリンタドライバ203は、グラフィックエンジン202に対して文字グリフの取得要求を行う。
【0015】
ステップG2. グラフィックエンジン202はステップG1.で登録されたフォントより文字グリフを生成しプリンタドライバ203へ受け渡す。
ステップA5. アプリケーション201はステップA3で登録したフォントをグラフィックエンジン202より削除する。
ステップG3. グラフィックエンジン202で保持していた埋め込みフォントを破棄する。
【0016】
ステップA6. アプリケーション201はページ印刷が終了したことを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202はステップA1.と同様にプリンタドライバ203へ引き渡す)。
ステップDRV4. プリンタドライバ203は、ページ終了制御のPDLコマンドを生成する。
【0017】
ステップA7. アプリケーション201は印刷ジョブが終了することを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202はステップA1.と同様にプリンタドライバ203へ引き渡す)。
ステップDRV5. プリンタドライバ203は、ジョブ終了制御のPDLコマンドを生成する。
【0018】
上記の処理は1つのプロセスで行われており、アプリケーション201がGDI関数をコールすることにより、コールされたGDI関数の機能を実現するために必要なグラフックエンジン202及びプリンタドライバ203の処理ルーチンが動作し、コール内容に対応するPDLコマンドが生成される。
【0019】
アプリケーション201のGDI関数コールとグラフックエンジン202−プリンタドライバ203の処理が完全にリンクして動作しているので、アプリケーション201−グラフィックスエンジン202−プリンタドライバ203間での動作手順は保証される。そのためプリンタドライバ203での処理ステップであるステップDrv3.1.文字グリフ取得の際に、グラフィックエンジン202でフォントを保持していることが保証されている。
【0020】
図4は、図3に示した構成に加え、プリンタに送信される印刷データを生成する前に、一旦、最終的にプリンタに送付する印刷データとは異なる形式のデータ形式(いわゆる中間コード)での一時保存を行うスプーラを備え、この中間コード形式で一時保存されたデータから改めて最終的に前記プリンタに送付する印刷データを生成するデスプーラ及びその関連機能を備えるホストコンピュータの機能ブロック図を示す。すなわち、図4のホストコンピュータでは、グラフィックエンジン202からプリンタドライバ203へ印刷命令を送る際に、一旦、中間コードからなるスプールファイル303を生成し、その後デスプーラによってスプールファイルを印刷データに変換してプリンタに出力する。
【0021】
上述した図3のホストコンピュータにおいて、アプリケーション201が印刷処理から開放されるのは、プリンタドライバ203がグラフィックエンジン202からのすべての印刷命令をプリンタ1500の制御コマンドへ変換し終った時点である。これに対して、図4のホストコンピュータでは、スプーラ302がすべての印刷命令を中間コードデータに変換し、スプールファイル303に出力した時点でアプリケーション201が印刷処理から開放される。通常、後者(図4構成)の方が短時間でアプリケーション201が印刷処理から解放される。
【0022】
また、図4で示す構成を用いた場合、スプールファイル303の内容に対して印刷前に加工することができる。これにより拡大/縮小印刷や、複数(N)ページを1ページに縮小して印刷するNアップ印刷等、アプリケーションの持たない機能を実現する事ができる。尚、スプールファイル303の加工を行うためには、通常、プリンタドライバ203が提供するウインドウから設定を行い、プリンタドライバ203がその設定内容をRAMあるいはHD等のメモリ上に保管する。
このような利点から、上記図3に示した構成から、図4の如く中間コードデータでスプールするような構成への移行が進んでいる。
【0023】
次に、図4に示す機能構成を有するホストコンピュータにおいて、フォント埋め込みデータを印刷する際の処理を図8を参照して説明する。この場合、図7で説明した図3の機能構成の際の処理とは異なり、1つのプロセスでは処理できない。そして、複数のジョブを制御するために、アプリケーションプロセスとデスプーラプロセス間での待ち行列処理を実現する必要がある。実際には上記2つのプロセス間の通信はスプールファイルマネージャ304を介して行われるが、説明を簡潔に行うために待ち行列処理を含めスプールファイルマネージャ304を一つの通信媒介だと捉え、図8及び以下の説明からはあえて省略した。
【0024】
ステップA1. アプリケーション201は印刷ジョブが開始することを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をスプーラ302へ引き渡す)。
ステップS1. スプーラ302は用紙サイズ等のジョブに関する情報を保持するジョブファイルをスプールファイル303に生成し、別プロセスであるデスプーラ305を起動する。
【0025】
ステップD1. デスプーラ305はジョブファイルを読み印刷ジョブ開始のためのGDI関数をコールする(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をプリンタドライバ203へ引き渡す)。
ステップDRV1.プリンタドライバ203は、ジョブ開始制御のPDLコマンドを生成する。
【0026】
ステップA2. アプリケーション201はページ印刷が開始することを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をスプーラ302へ引き渡す)。
ステップS2. スプーラ302はページに関する情報を保持するページファイルをスプールファイル303に生成する。
【0027】
ステップA3. アプリケーション201は、アプリケーションデータ内の埋め込みフォントをグラフィックエンジン202に登録する。この登録により文字描画に不可欠なフォントの情報をこの環境下でも使用可能にすることができる。
ステップG1. グラフィックエンジン202は、フォント情報を保持する。
【0028】
ステップA4. アプリケーション201がステップA3で登録したフォントを含むフォントを用いて文字描画を行う(グラフィックエンジン202は描画時にコールされるGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をスプーラ302へ引き渡す)。
ステップS3. スプーラ302は、文字描画を表す情報を中間コードとしてスプールファイルのページファイルに書き込む。この中間コードにはDDI関数より取得可能な“文字コード、フォント属性、描画属性”のみ含まれており、フォントは含まれていない。
【0029】
ステップA5. アプリケーション201はステップA3で登録したフォントをグラフィックエンジン202より削除する。
ステップG3. グラフィックエンジン202で保持していた埋め込みフォントを破棄する。
【0030】
ステップA6. アプリケーション201はページ印刷が終了したことを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をスプーラ302へ引き渡す)。
ステップS4. スプーラ302は、ページファイルをクローズし、ページ再生をデスプーラ305に依頼する。
【0031】
ステップA7. アプリケーション201は印刷ジョブが終了することを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をスプーラ302へ引き渡す)。
ステップS4. スプーラ302は、ジョブファイルをクローズし、これ以上ページが増えないことをデスプーラ305に通知する。
【0032】
ステップD2. デスプーラ305が、ステップS2で生成されたページファイルに記述された中間コードを再生するために、ページ開始のためのGDI関数をコールする(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をプリンタドライバ203へ引き渡す)。
【0033】
ステップDRV2. プリンタドライバ203は、ページ開始制御のPDLコマンドを生成する。
ステップD3. デスプーラ305が、中間コードに記述された文字描画を再生するために、GDI関数をコールする(グラフィックエンジン202は描画時にコールされるGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をプリンタドライバ203へ引き渡す)。
【0034】
ステップDRV3. プリンタドライバ203は、文字描画コマンドを生成するために、以下の処理を行い文字のグリフを取得する。
ステップDRV3.1. プリンタドライバ203は、グラフィックエンジンに対して文字グリフの取得を行う。
【0035】
ステップG4. グラフィックエンジン202は、フォント属性に指定されているフェース名のフォントを探す。しかし(埋め込みされ、かつ当該環境に元々は存在しない)フォントは既にステップG3.で廃棄されており、該当フォントのグリフを要求されても受け渡すことはできない。よって予め定められた関係に基づきグリフを要求されたフォントに近い種類の代替えフォントを用いてグリフを作成し、その結果をプリンタドライバ203へ受け渡す。
【0036】
ステップD6. デスプーラ305はページ印刷が終了したことを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をプリンタドライバ203へ引き渡す)。
ステップDRV4. プリンタドライバ203は、ページ終了制御のPDLコマンドを生成する。
【0037】
ステップD7. デスプーラ305は印刷ジョブが終了することを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をプリンタドライバ203へ引き渡す)。
ステップDRV5. プリンタドライバ203は、ジョブ終了制御のPDLコマンドを生成する。
【0038】
上記の処理は図8に示すようにアプリケーションプロセスとデスプーラプロセスの2つのプロセスで行われており、アプリケーション201がグラフィックエンジン202に登録した埋め込みフォントが、デスプーラによるスプールファイルの再生時にもグラフィックエンジン202に存在することは保証されていない。
【0039】
グラフィックエンジン202に埋め込みフォントが存在しない場合は、ステップG4.で説明したようにフォント置き換えが発生し、中間データで指定されていたフォントとは異なるフォントに置き換えられてしまうため、図6右最上段に示したように、ユーザが意図した形状とは異なる形状で出力されてしまう可能性がある。
この問題を回避するため、ステップG4.でのフォント置き換えを防止するため、スプール時点でビットマップ置き換えを行う方法が考えられる。
【0040】
このようなスプール時にビットマップ置き換えを行う印刷処理として考えれられる動作を、図9を参照して説明する。
ステップA1. アプリケーション201は印刷ジョブが開始することを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をスプーラ302へ引き渡す)。
【0041】
ステップS1. スプーラ302は用紙サイズ等のジョブに関する情報を保持するジョブファイルをスプールファイル303に生成し、別プロセスであるデスプーラ305を起動する。
ステップD1. デスプーラ305はジョブファイルを読み印刷ジョブ開始のためのGDI関数をコールする(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をプリンタドライバ203へ引き渡す)。
【0042】
ステップDRV1.プリンタドライバ203は、ジョブ開始制御のPDLコマンドを生成する。
ステップA2. アプリケーション201はページ印刷が開始することを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をスプーラ302へ引き渡す)。
【0043】
ステップS2. スプーラ302はページに関する情報を保持するページファイルをスプールファイル303に生成する。
ステップA3. アプリケーション201は、アプリケーションデータ内の埋め込みフォントをグラフィックエンジン202に登録する。この登録により文字描画に不可欠なフォントの情報をこの環境下でも使用可能にすることができる。
【0044】
ステップG1. グラフィックエンジン202は、フォント情報を保持する。
ステップA4. アプリケーション201がステップA3で登録したフォントを含むフォントを用いて文字描画を行う(グラフィックエンジン202は描画時にコールされるGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をスプーラ302へ引き渡す)。
【0045】
ステップS3. スプーラ302は、文字描画を表す情報を中間コードとしてスプールファイルのページファイルに書き込む。この中間コードに含まれるフォント属性が埋め込みフォントであった場合は、フォント置き換えによる文字描画の差異を無くすために、以下の処理を行う。
ステップS3.1. スプーラ302は、グラフィックエンジン202に対して文字グリフの取得を行う。
【0046】
ステップG2. グラフィックエンジン202はフォントより文字グリフを生成しスプーラ302へ受け渡す。
ステップS3.2. スプーラ302は受け取った文字グリフを用いて文字描画をビットマップ描画に変換し、中間コードとしてスプールする。
【0047】
ステップA5. アプリケーション201はステップA3で登録したフォントをグラフィックエンジン202より削除する。
ステップG3. グラフィックエンジン202で保持していた埋め込みフォントを破棄する。
【0048】
ステップA6. アプリケーション201はページ印刷が終了したことを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をスプーラ302へ引き渡す)。
ステップS4. スプーラ302は、ページファイルをクローズし、ページ再生をデスプーラ305に依頼する。
【0049】
ステップA7. アプリケーション201は印刷ジョブが終了することを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をスプーラ302へ引き渡す)。
ステップS4. スプーラ302は、ジョブファイルをクローズし、これ以上ページが増えないことをデスプーラ305に通知する。
【0050】
ステップD2. デスプーラ305が、ページファイルに記述された中間コードを再生するために、ページ開始のためのGDI関数をコールする(グラフィックエンジン202はコールされたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をプリンタドライバ203へ引き渡す)。
【0051】
ステップDRV2. プリンタドライバ203は、ページ開始制御のPDLコマンドを生成する。
ステップD8. デスプーラ305は、ページファイル上の文字描画から変換したビットマップ描画の中間コードをGDI関数コールに変換する(グラフィックエンジン202はコールされたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をプリンタドライバ203へ引き渡す)。
【0052】
ステップDRV6. プリンタドライバ203は、ビットマップ描画をPDLコマンドに変換する。
ステップD6. デスプーラ305はページ印刷が終了したことを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をプリンタドライバ203へ引き渡す)。
【0053】
ステップDRV4. プリンタドライバ203は、ページ終了制御のPDLコマンドを生成する。
ステップD7. デスプーラ305は印刷ジョブが終了することを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をプリンタドライバ203へ引き渡す)。
ステップDRV5. プリンタドライバ203は、ジョブ終了制御のPDLコマンドを生成する。
【0054】
図9を用いて説明したような処理により、プリンタドライバ203から(元々は存在しない)埋め込みフォントのグリフ要求があったとしても、グラフィックエンジンによるフォント置き換えが発生しないので、基本的にはユーザが意図した通りの形状を有する文字出力が得られる。しかし、文字描画をビットマップ描画に変換することにより、以下のような問題点を有する。
【0055】
1.拡大時の品質低下
図6右中段に示したように、スプール後に拡大処理を行った場合、文字の品位が低下する。
2.色処理の問題
ビットマップに変換された時点で文字描画に関する情報がなくなるため、カラー印刷時に行われる色変換処理の際に、文字描画としての色処理が適応できない。
3.圧縮の問題
文字グリフのビットマップに対して効果がある圧縮処理が適応できない。
【0056】
【発明が解決しようとする課題】
上述したように、プリンタに送信される印刷データを生成する前に、最終的にプリンタに送付する印刷データとは異なる形式のデータ形式(いわゆる中間コード)での一時保存を行うスプーラを備え、この中間コード形式で一時保存されたデータから改めて最終的にプリンタに送付する印刷データを生成するデスプーラとプリンタ制御コマンドを生成するプリンタドライバを備える従来の印刷制御装置においては、埋め込みフォントを用いた文字描画の際に、フォント置き換え又はビットマップ置き換えが発生し、フォント置き換えでは意図した出力結果が得られない、ビットマップ置き換えでは、印字品質の低下、色処理、圧縮処理での問題が発生するという問題があった。
【0057】
本発明はこのような従来技術の問題点を解決し、印刷命令を一旦中間コード形式に変換した後プリンタ制御コマンドに変換する形式の印刷制御装置及び印刷制御方法において、埋め込みフォントを正しく印刷可能とする印刷制御装置及び印刷制御方法を提供することを目的とする。
【0058】
【課題を解決するための手段】
すなわち、本発明の要旨は、アプリケーションからの印刷命令を所定の印刷装置に適した制御コマンドに変換して出力する印刷制御装置であって、印刷命令を制御コマンドとは異なる形式を有する中間データに変換し、記憶する中間データ生成手段と、中間データを制御コマンドに変換して出力する制御コマンド生成手段とを有し、中間データ生成手段が、印刷命令に埋め込みフォントが含まれているか否かを判断するフォント判定手段と、埋め込みフォントが含まれていると判定された場合、埋め込みフォントを取得し、中間データとともに記憶するフォント記憶手段と、中間データに記憶された埋め込みフォントをグラフィックエンジンに登録する登録手段とを有し、制御コマンド生成手段が登録手段によりグラフィックエンジンに登録された埋め込みフォントを用いて中間データを制御コマンドに変換することを特徴とする印刷制御装置に存する。
【0059】
また、本発明の別の要旨は、アプリケーションからの印刷命令を所定の印刷装置に適した制御コマンドに変換して出力する印刷制御方法であって、印刷命令を制御コマンドとは異なる形式を有する中間データに変換し、記憶する中間データ生成ステップと、中間データを制御コマンドに変換して出力する制御コマンド生成ステップとを有し、中間データ生成ステップが、印刷命令に埋め込みフォントが含まれているか否かを判断するフォント判定ステップと、埋め込みフォントが含まれていると判定された場合、埋め込みフォントを取得し、中間データとともに記憶するフォント記憶ステップと、中間データに記憶された埋め込みフォントをグラフィックエンジンに登録する登録ステップとを有し、制御コマンド生成ステップが登録ステップによりグラフィックエンジンに登録された埋め込みフォントを用いて中間データを制御コマンドに変換することを特徴とする印刷制御方法に存する。
【0060】
また、本発明の別の要旨は、コンピュータを本発明の印刷制御装置として機能させることを特徴とするコンピュータプログラムに存する。
【0061】
また、本発明の別の要旨は、コンピュータを本発明の印刷制御装置として機能させるコンピュータプログラムを格納したことを特徴とするコンピュータ読みとり可能な記憶媒体に存する。
【0062】
また、本発明の別の要旨は、文字描画を表す情報を中間コードとして書き込む際、フォントが埋め込みフォントの場合、フォントの取得を要求し、取得したフォントをスプールファイルに中間データとして格納するスプーラと、スプールファイルに埋め込まれたフォントを登録するデスプーラと、デスプーラにより登録されたフォントに基づき文字グリフの取得を行い、文字描画を表す情報をPDLに変換するドライバとを有することを特徴とする印刷制御装置に存する。
【0063】
また、本発明の別の要旨は、文字描画を表す情報を中間コードとして書き込む際、フォントが埋め込みフォントの場合、フォントの取得を要求し、取得したフォントをスプールファイルに中間データとして格納する格納ステップと、スプールファイルに埋め込まれたフォントを登録する登録ステップと、登録されたフォントに基づき文字グリフの取得を行い、文字描画を表す情報をPDLに変換する変換ステップとを有することを特徴とする印刷制御方法に存する。
【0064】
また、本発明の別の要旨は、文字描画を表す情報を中間コードとして書き込む際、フォントが埋め込みフォントの場合、フォントの取得を要求し、取得したフォントをスプールファイルに中間データとして格納する格納工程のプログラムと、スプールファイルに埋め込まれたフォントを登録する登録工程のプログラムと、登録されたフォントに基づき文字グリフの取得を行い、文字描画を表す情報をPDLに変換する変換工程のプログラムとを有することを特徴とするコンピュータプログラムに存する。
【0065】
また、本発明の別の要旨は、文字描画を表す情報を中間コードとして書き込む際、フォントが埋め込みフォントの場合、フォントの取得を要求し、取得したフォントをスプールファイルに中間データとして格納する格納工程のプログラムと、スプールファイルに埋め込まれたフォントを登録する登録工程のプログラムと、登録されたフォントに基づき文字グリフの取得を行い、文字描画を表す情報をPDLに変換する変換工程のプログラムとを記憶するコンピュータ読みとり可能な記憶媒体に存する。
【0066】
【発明の実施の形態】
以下、図面を参照して本発明をその好ましい実施形態に基づいて説明する。
まず、本発明の実施形態に係る印刷制御装置について説明する前に、本発明の実施形態に係る印刷制御装置が制御可能な印刷装置の構成について説明する。
【0067】
(印刷装置の構成)
図1は、本発明の実施形態に係る印刷制御装置が制御可能な印刷装置の構成例を説明する概略断面図である。本実施形態において、印刷装置1500は例えばレーザビームプリンタであるが、もちろんインクジェット方式を始め他の印刷方式の印刷装置であってもよい。
【0068】
印刷装置(以下、プリンタという)1500は、直接又はネットワーク等を介して印刷制御装置から供給されるプリンタ制御コマンド等を基に、記録媒体の一例としての記録用紙上に像を形成する。プリンタ本体740は、プリンタ制御ユニット1000、操作部1501、レーザドライバ702、半導体レーザ703、回転多面鏡705、静電ドラム706、現像ユニット707、用紙カセット708、搬送ローラ710、外部メモリ711、フェイスダウン排出部715及び排紙トレイ716とを備えている。
【0069】
上記各部の構成を動作とともに詳述すると、プリンタ制御ユニット1000は、プリンタ本体740全体の制御を行い、主にプリンタ制御コマンドをビデオ信号に変換してレーザドライバ702に出力する。プリンタ制御ユニット1000には、フォントデータやページ記述言語(PDL)のエミュレーションプログラム等を供給する外部メモリ711を接続することもできる。操作部1501には、プリンタ1500の操作、設定等を行うのためのキー及び表示手段(例えばLED表示器)等が設けられている。
【0070】
レーザドライバ702は半導体レーザ703を駆動するための回路であり、入力されたビデオ信号に応じて半導体レーザ703を駆動し、半導体レーザ703から発射されるレーザ光704をオン・オフする。半導体レーザ703は、回転多面鏡705に向けてレーザ光を発射する。回転多面鏡705は、レーザ光704を左右方向に反射し、それによってレーザ光704が静電ドラム706上を走査する。予め所定電位に帯電された静電ドラム706上をオン、オフするレーザ光704で走査することにより、プリンタ制御ユニット1000が出力するビデオ信号に対応した静電潜像がドラム表面に形成される。現像ユニット707は、静電ドラム706近傍に設けられ、現像材(トナー)を用いて静電潜像を現像(可視化)する。
【0071】
一方、用紙カセット708は、記録紙として例えばカットシートを収納する。給紙ローラ709及び搬送ローラ710は、給紙カセット708内のカットシート記録紙をプリンタ本体740内に搬送し、静電ドラム706の対向位置に供給する。記録紙は、用紙カセット708からだけでなく、用紙カセット708の蓋部上面に設けられた手差しトレイ(図示略)から供給することもできる。そして、ドラム上で現像された潜像(トナー像)は、転写ローラ等によって搬送されてきた記録紙上に転写される。
【0072】
定着部712は、カットシート記録紙に転写されたトナー像を加熱、加圧してカットシート記録紙上に定着させる。画像が形成された記録紙は、切り替えくさび713を上向きにした場合にはフェイスアップ排出部714から記録面を上にした状態で排紙トレイ716に排出され、くさび713を下向きにした場合にはフェイスダウン排出部715から記録面を下にした状態で排出される。
【0073】
(印刷制御装置の構成例)
次に、本発明の実施形態に係る印刷制御装置の一例としてのホストコンピュータの構成例を図2のブロック図を参照して説明する。尚、以下に説明する印刷制御装置の機能が実現されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、LAN(Local Area Network: ローカルエリアネットワーク)、WAN(Wide Area Network: 広域ネットワーク)等のネットワークを介して接続がなされ処理が行われるシステムであっても構わない。
【0074】
図2において、本発明の実施形態に係る印刷制御装置の一例としてのホストコンピュータ3000は、上述したプリンタ1500と接続され、印刷システムを構成している。ホストコンピュータ3000は、CPU1、RAM2、ROM3キーボードコントローラ(KBC)5、CRTコントローラ(CRTC)6、ディスクコントローラ(DKC)7、プリンタコントローラ(PRTC)8、キーボード(KB)9、CRTディスプレイ(CRT)10及び外部メモリ11とを備えている。
【0075】
先ず、ホストコンピュータ3000各部の構成を詳述すると、CPU1はシステムバスに接続された各デバイスを統括的に制御する中央処理装置であり、ROM3のプログラム用ROM3b(後述)或いは外部メモリ11に記憶された文書処理プログラム等のアプリケーションプログラムに基づいて、図形、イメージ、文字、表(表計算等を含む)等が混在した文書処理を実行する。また、CPU1は、例えばRAM2上に設定された表示情報RAMへのアウトラインフォントの展開(ラスタライズ)処理を実行し、CRTディスプレイ10上でのWSYIWYG(What You See Is What You Get:CRTディスプレイ画面上に見えているそのままの大きさや形で印刷できる機能)を可能としている。
【0076】
更に、CPU1はCRTディスプレイ10上のマウスカーソル(図示略)等で指示されたコマンドに基づいて登録された種々のウインドウを開き、種々のデータ処理を実行する。ユーザはプリンタ1500を使用して印刷する際、印刷の設定に関するウインドウを開き、プリンタ1500の設定や印刷モードの選択を含むプリンタドライバに対する印刷処理方法の設定を行うことができるようになっている。
【0077】
RAM2はCPU1の主メモリ、ワークエリア等として機能する。ROM3はフォント用ROM3aと、プログラム用ROM3bと、データ用ROM3cとを備えている。フォント用ROM3a或いは外部メモリ11は、上記文書処理の際に使用するフォントデータなどを記憶する。プログラム用ROM3b或いは外部メモリ11は、CPU1の制御プログラムであるオペレーティングシステム(以下、OS)等を記憶する。データ用ROM3c或いは外部メモリ11は、上記文書処理等を行う際に使用する各種データを記憶する。
【0078】
キーボードコントローラ(KBC)5は、キーボード9やポインティングデバイス(図示略)からのキー入力を制御する。CRTコントローラ(CRTC)6は、CRTディスプレイ(CRT)10の表示を制御する。ディスクコントローラ(DKC)7は、外部メモリ11とのアクセスを制御する。プリンタコントローラ(PRTC)8は、双方向性インターフェース21を介してプリンタ1500に接続されて、プリンタ1500との通信制御処理を実行する。キーボード9は、各種キーを備えている。
【0079】
CRTディスプレイ(CRT)10は、図形、イメージ文字、表等を表示する。外部メモリ11はハードディスク(HD)、フロッピーディスク(FD)等から構成されており、ブートプログラム、各種のアプリケーション、フォントデータ、ユーザファイル、編集ファイル、プリンタ制御コマンド生成プログラム(以下、プリンタドライバ)等を記憶する。
【0080】
上述したCPU1、RAM2、ROM3、キーボードコントローラ(KBC)5、CRTコントローラ(CRTC)6、ディスクコントローラ(DKC)7、プリンタコントローラ(PRTC)8は、コンピュータ制御ユニット2000上に配設されている。
【0081】
このようなホストコンピュータ3000は、例えばプリンタ1500と接続可能なインターフェース21を有する汎用のパーソナルコンピュータによって実現することができる。
【0082】
次に、プリンタ1500各部の構成を詳述すると、CPU12は、システムバス15に接続された各デバイスを統括的に制御する中央処理装置であり、ROM13のプログラム用ROM13b(後述)に記憶された制御プログラム等或いは外部メモリ14に記憶された制御プログラム等に基づいて印刷部(プリンタエンジン)17に出力情報としての画像信号を出力する。また、CPU12は、入力部18を介してホストコンピュータ3000との通信処理が可能となっており、プリンタ1500内の情報等をホストコンピュータ3000に通知できる構成となっている。
【0083】
RAM19は、CPU12の主メモリや、ワークエリア等として機能し、増設ポートに接続されるオプションRAM(図示略)によりメモリ容量を拡張することができるように構成されている。尚、RAM19は、出力情報展開領域、環境データ格納領域、NVRAM等に用いられる。ROM13は、フォント用ROM13aと、プログラム用ROM13bと、データ用ROM13cとを備えている。フォント用ROM13aは、上記出力情報を生成する際に使用するフォントデータなどを記憶する。プログラム用ROM13bは、CPU12の制御プログラム等を記憶する。データ用ROM13cは、プリンタ1500にハードディスク等の外部メモリ711が接続されていない場合には、ホストコンピュータ3000上で利用される情報等を記憶する。
【0084】
入力部18は、双方向性インターフェース21を介してプリンタ1500とホストコンピュータ3000との間におけるデータの送受を行う。印刷部インターフェース(I/F)16は、CPU12と印刷部17との間におけるデータの送受を行う。メモリコントローラ(MC)20は、外部メモリ711のアクセスを制御する。印刷部17は、CPU12の制御に基づき印刷動作を行う。操作部1501は、各種操作のためのスイッチや表示手段(例えばLED表示器)等を備えている。
【0085】
外部メモリ711は、ハードディスク(HD)、ICカード等から構成されており、プリンタ1500にオプションとして接続される。外部メモリ14は、フォントデータ、エミュレーションプログラム、フォームデータ等を記憶するものであり、メモリコントローラ(MC)20によりアクセスを制御される。尚、外部メモリ711は、1個に限らず、複数個備えることが可能となっている。即ち、内蔵フォントに加えてオプションカード、言語系の異なるプリンタ制御言語を解釈するプログラムを格納した外部メモリを複数接続できるように構成されていてもよい。更に、NVRAM(図示略)を有し、操作部1501からのプリンタモード設定情報を記憶するようにしてもよい。
【0086】
上述したCPU12、RAM19、ROM13、入力部18、印刷部インターフェース(I/F)16、メモリコントローラ(MC)20は、プリンタ制御ユニット1000上に配設されている。
【0087】
(印刷制御装置の機能構成)
本発明における印刷制御装置としてのホストコンピュータ3000の機能構成は、上述した図4の構成と同一でよいため、重複する説明は省略する。
なお、本実施形態において、図4におけるアプリケーション201、グラフィックエンジン202、ディスパッチャ301、プリンタドライバ203、スプーラ302、スプールファイルマネージャ304、デスプーラ305およびシステムスプーラ204は、上記図2の外部メモリ11に保存されたファイルとして存在し、実行される場合にOSやそのモジュールを利用するモジュールによってRAM2にロードされ実行されるプログラムモジュールである。
【0088】
また、アプリケーション201およびプリンタドライバ203は、外部メモリ11のFDやCD−ROM或いはネットワーク(以上図示略)を経由して外部メモリ11としてのHDに追加することが可能となっている。外部メモリ11に保存されているアプリケーション201はRAM2にロードされて実行されるが、該アプリケーション201からプリンタ1500に対して印刷を行う際には、同様にRAM2にロードされ実行可能となっているグラフィックエンジン202を利用して出力(描画)を行う。
【0089】
グラフィックエンジン202は印刷装置(プリンタ)ごとに用意されたプリンタドライバ203を同様に外部メモリ11からRAM2にロードし、アプリケーション201の出力(GDI関数)から印刷命令(DDI関数)を生成し、ディスパッチャ301へ出力する。
【0090】
グラフィックエンジン202からの印刷命令はディスパッチャ301が受け取る。ディスパッチャ301はグラフィックエンジン202から受け取った印刷命令が、アプリケーション201からグラフィックエンジン202へ発行されたものである場合には、外部メモリ11に格納されているスプーラ302をRAM2にロードし、プリンタドライバ203ではなくスプーラ302へ印刷命令を送付する。
【0091】
スプーラ302は受け取った印刷命令を中間コードに変換してスプールファイル303に出力する。また、スプーラ302は、プリンタドライバ203に対して設定されている印刷データに関する加工設定をプリンタドライバ203から取得してスプールファイル303に保存する。尚、スプールファイル303は外部メモリ11上にファイルとして生成するが、RAM2上に生成されても構わない。更に、スプーラ302は、外部メモリ11に格納されているスプールファイルマネージャ304をRAM2にロードし、スプールファイルマネージャ304に対してスプールファイル303の生成状況を通知する。
【0092】
その後、スプールファイルマネージャ304は、スプールファイル303に保存された印刷データに関する加工設定の内容に従って印刷を行えるか判断する。スプールファイルマネージャ304がグラフィックエンジン202を利用して印刷を行えると判断した際には、外部メモリ11に格納されているデスプーラ305をRAM2にロードし、デスプーラ305に対して、スプールファイル303に記述された中間コードの印刷処理を行うように指示する。
【0093】
デスプーラ305はスプールファイル303に含まれる中間コードをスプールファイル303に含まれる加工設定の内容に従って加工し、グラフィックエンジン202経由へ出力する。グラフィックエンジン202はデスプーラ305の出力(GDI関数)から印刷命令(DDI関数)を生成し、ディスパッチャ301へ出力する。ディスパッチャ301がグラフィックエンジン202から受け取った印刷命令がデスプーラ305からグラフィックエンジン202へ発行されたものである場合には、ディスパッチャ301はスプーラ302ではなく、プリンタドライバ203に印刷命令を送る。プリンタドライバ203はプリンタ制御コマンドを生成し、システムスプーラ204経由でプリンタ1500に出力する。
【0094】
(埋め込みフォントを有する印刷データの処理)
次に、本実施形態のホストコンピュータ3000における、埋め込みフォントを有する印刷データの処理について、図10のシーケンスチャートを参照して説明する。なお、図8と同様、本処理も1つのプロセスでは処理できない。そして、複数のジョブを制御するために、アプリケーションプロセスとデスプーラプロセス間での待ち行列処理を実現する必要がある。実際には上記2つのプロセス間の通信はスプールファイルマネージャ304を介して行われるが、説明を簡潔に行うために待ち行列処理を含めスプールファイルマネージャ304を一つの通信媒介だと捉え、図10及び以下の説明からはあえて省略した。
【0095】
ステップA1. アプリケーション201は印刷ジョブが開始することを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をスプーラ302へ引き渡す)。
【0096】
ステップS1. スプーラ302は用紙サイズ等のジョブに関する情報を保持するジョブファイルをスプールファイル303に生成し、別プロセスであるデスプーラ305を起動する。
【0097】
ステップD1. デスプーラ305はジョブファイルを読み印刷ジョブ開始のためのGDI関数をコールする(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をプリンタドライバ203へ引き渡す)。
ステップDRV1.プリンタドライバ203は、ジョブ開始制御のPDLコマンドを生成する。
【0098】
ステップA2. アプリケーション201はページ印刷が開始することを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をスプーラ302へ引き渡す)。
ステップS2. スプーラ302はページに関する情報を保持するページファイルをスプールファイル303に生成する。
【0099】
ステップA3. アプリケーション201は、アプリケーションデータ内の埋め込みフォントをグラフィックエンジン202に登録する。この登録により文字描画に不可欠なフォントの情報をこの環境下でも使用可能にすることができる。
ステップG1. グラフィックエンジン202は、フォント情報を保持する。
【0100】
ステップA4. アプリケーション201がステップA3で登録したフォントを含むフォントを用いて文字描画を行う(グラフィックエンジン202は描画時にコールされるGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をスプーラ302へ引き渡す)。
【0101】
ステップS3. スプーラ302は、文字描画を表す情報を中間コードとしてスプールファイルのページファイルに書き込む。この中間コードにはDDI関数より取得可能な“文字コード、フォント属性、描画属性”のみ含まれており、フォントは含まれていない。なお、フォントが埋め込みフォントであった場合は、フォント置き換えによる文字描画の差異を無くすために、以下の処理を行う。
【0102】
ステップS3.3. スプーラ302は、グラフィックエンジン202に対して文字描画で使用されるフォント属性を検査し、フォント取得の許可がある場合、グラフィックエンジン202にGDI関数をコールしてフォントの取得を要求する。
このように、スプーラ302からGDI関数をコールすることにより、DDI関数よりは直接入手できないフォント情報を入手し、スプールすることが可能になる。
【0103】
ステップG4. グラフィックエンジン202はフォントをスプーラ302に受け渡す。
ステップS3.4. スプーラ302は、グラフィックエンジン202から取得したフォントをスプールファイル303に中間コード形式でスプールする。
【0104】
ステップA5. アプリケーション201はステップA3で登録したフォントをグラフィックエンジン202より削除する。
ステップG3. グラフィックエンジン202で保持していた埋め込みフォントを破棄する。
【0105】
ステップA6. アプリケーション201はページ印刷が終了したことを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をスプーラ302へ引き渡す)。
ステップS4. スプーラ302は、ページファイルをクローズし、ページ再生をデスプーラ305に依頼する。
【0106】
ステップA7. アプリケーション201は印刷ジョブが終了することを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をスプーラ302へ引き渡す)。
ステップS4. スプーラ302は、ジョブファイルをクローズし、これ以上ページが増えないことをデスプーラ305に通知する。
【0107】
ステップD2. デスプーラ305が、ステップS2で生成されたページファイルに記述された中間コードを再生するために、ページ開始のためのGDI関数をコールする(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をプリンタドライバ203へ引き渡す)。
ステップDRV2. プリンタドライバ203は、ページ開始制御のPDLコマンドを生成する。
【0108】
ステップD3. デスプーラ305は、スプールファイル303に埋め込みフォントが含まれている場合、その埋め込みフォントの識別名(フェース名)を変化させ、グラフィックエンジン202に登録する。フェース名を変更して登録するのは、ステップA3のアプリケーション201のフォントと二重登録になる場合があるためである。この登録により文字描画に不可欠なフォントの情報をこの環境下でも使用可能にすることができる。このとき、スプールファイルに格納されている中間コードのフェース名の変更されるフォント属性のフェース名も連動して変更する。
また、フェース名の変更が一定の規則で行われる場合は、DRV3.1のグリフの取得を行う際にフェース名を変更することによりグリフの取得を行うことができる。
【0109】
ステップD3. デスプーラ305は、スプールファイル303に埋め込みフォントが含まれている場合、その埋め込みフォントの識別名(フェース名)を変化させ、グラフィックエンジン202に登録する。フェース名を変更して登録するのは、ステップA3のアプリケーション201のフォントと二重登録になる場合があるためである。この登録により文字描画に不可欠なフォントの情報をこの環境下でも使用可能にすることができる
【0110】
ステップG1. グラフィックエンジン202はフォント情報を保持する
ステップD4. デスプーラ305は、ページファイル上の文字描画を再生するために、GDI関数をコールする(グラフィックエンジン202は描画時にコールされるGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をプリンタドライバ203へ引き渡す)。
【0111】
なお、GDI関数をコールする際、フォントの識別名であるフォント属性フェース名は、ステップD3で変更した名前を使用する。これは、例えばステップD3.で変更したフェイス名と、変更前のフェイス名とをRAM2等に一時記憶しておき、中間データに含まれるフェイス名に変更前のフェイス名が見つかった場合には変更後のフェイス名に変換することによって実現できるが、他の方法を用いてもよい。
【0112】
ステップDRV3. プリンタドライバ203は、スプーラファイルの文字描画を表す情報をPDLコマンドに変換する。その際に以下の処理を行う。
ステップDRV3.1. プリンタドライバ203は、グラフィックエンジン202に対して文字グリフの取得を行う。その際、ドライバ203は文字描画を表す情報に含まれるフォント属性(フェース名を含む)をグラフィックエンジン203に引き渡す。
【0113】
ステップG2. グラフィックエンジン202はフォントより文字グリフを生成し、ディスパッチャ301を介してプリンタドライバ203へ受け渡す。すなわち、グラフィックエンジン202は、文字描画を表す情報に含まれるフォント属性で指定されているフェース名のフォントを探す。ステップD3.の処理でフォントが埋め込まれているため、フォントをドライバに受け渡すことができる。プリンタドライバ203は、生成された文字グリフを取得し、取得した文字グリフ(文字のイメージデータ)を印刷するための文字描画コマンド(PDL)を作成する。
ステップD5. デスプーラ305はD3で登録したフォントをグラフィックエンジン202より削除する。
ステップG3. グラフィックエンジン202で保持していた埋め込みフォントを破棄する。
【0114】
ステップD6. デスプーラ305はページ印刷が終了したことを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をプリンタドライバ203へ引き渡す)。
ステップDRV4. プリンタドライバ203は、ページ終了制御のPDLコマンドを生成する。
【0115】
ステップD7. デスプーラ305は印刷ジョブが終了することを、GDI関数を介してグラフィックエンジン202に通知する(グラフィックエンジン202は通知されたGDI関数をDDI関数に変換してディスパッチャ301へ出力し、ディスパッチャ301はその内容をプリンタドライバ203へ引き渡す)。
ステップDRV5. プリンタドライバ203は、ジョブ終了制御のPDLコマンドを生成する。
【0116】
このように、本実施形態に係る印刷制御装置においては、スプールの際にDDI関数よりは直接入手できないフォント情報を、GDI関数をコールすることによって入手しスプールし、スプールしたフォント情報はデスプール際に、フォントの識別名であるフェース名を変更して登録を行い、変更後のフェース名を用いてデスプーラからGDI関数をコールすることによって、埋め込みフォントを含む印刷データを正しく出力することができる。
【0117】
なお、デスプーラが登録したフォントは著作権の問題があり使用後は必ず印刷制御装置から消去する。
【0118】
また、縦書きと横書きの情報が統合されている日本語フォントにおいて、フェース名に縦書きを示す情報が付加されている場合がある。この場合デスプーラが登録する際に用いる変更後のフェース名にも、縦書きを表す情報は残しておく必要がある。変更後のフェース名はどのように作成してもよいが、フェース名の所定番目の文字を通常はフォント名に使用されない文字に置き換える等、簡便で、かつ変更前のフォント名もしくは印刷環境に元々存在するフォント名と重複する確率の低い方法を用いることが望ましい。
【0119】
さらに、フォントによっては、埋め込みフォントのフォント情報の取得を許可しないものも存在する。その場合は、スプール時にフォント属性を判断して、図8及び図9で説明したような、従来のフォント置き換えまたはビットマップ描画への変換を行うように構成することも可能である。
【0120】
【他の実施形態】
なお、本発明は、複数の機器(例えばホストコンピュータ、インターフェース機器、リーダ、プリンタなど)から構成されるシステムに適用しても、一つの機器からなる装置(複写機、プリンタ、ファクシミリ装置など)に適用してもよい。
【0121】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体を、システムあるいは装置のコンピュータ(またはCPUやMPU)が記憶媒体に格納されたプログラムコードを読出し実行することによっても、達成される。
【0122】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【0123】
プログラムコードを供給するための記憶媒体としては、例えば、フロッピーディスク、ハードディスク、光ディスク、光磁気ディスク、CD−ROM、CD−R、磁気テープ、不揮発性のメモリカード、ROMなどを用いることができる。
【0124】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているOS(オペレーティングシステム)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【0125】
さらに、記憶媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【0126】
本発明を上記記憶媒体に適用する場合、その記憶媒体には、先に説明した(図10に示す)シーケンスチャートに対応するプログラムコードが少なくとも格納されることになる。
【0127】
【発明の効果】
以上説明したように、本発明によれば、埋め込みフォントを中間コードデータとともにスプールし、デスプーラで登録して用いることにより、アプリケーションプログラムからの印刷命令を一旦中間コードデータに変換してからプリンタへの印刷データを生成する形式の印刷制御装置において、埋め込みフォントを用いた印刷命令を正しく出力することが可能になるという効果を有する。
【図面の簡単な説明】
【図1】本発明の印刷制御装置を接続可能なプリンタの一例としてのレーザビームプリンタの構成例を示す断面図である。
【図2】本発明の一実施形態に係る印刷制御装置としてのホストコンピュータと、それに接続されたプリンタのハードウェア構成例を示すブロック図である。
【図3】従来の、アプリケーションからの印刷命令を中間コードデータへ変換せずにプリンタ制御コマンドに変換する形式の印刷制御装置の代表的な機能ブロック図である。
【図4】本発明の印刷制御装置に適用可能な、アプリケーションからの印刷命令を中間コードデータへ変換した後にプリンタ制御コマンドに変換する形式の印刷制御装置の代表的な機能ブロック図である。
【図5】文字描画に必要な情報と、印刷結果を説明する図である。
【図6】文字描画においてフォント置き換え処理、ビットマップ置き換えが生じた場合の印刷結果の例を示した図である。
【図7】図3に示した印刷制御装置における印刷処理のシーケンスを示す図である。
【図8】図4に示した印刷制御装置における印刷処理のうち、フォント置き換えが発生する場合のシーケンスを示す図である。
【図9】図4に示した印刷制御装置における印刷処理のうち、ビットマップ置き換えが発生する場合のシーケンスを示す図である。
【図10】本発明の実施形態に係る印刷制御装置における印刷処理のうち、埋め込みフォントが含まれる印刷命令の処理のシーケンスを示す図である。
Claims (18)
- アプリケーションからの印刷命令を所定の印刷装置に適した制御コマンドに変換して出力する印刷制御装置であって、
前記印刷命令を前記制御コマンドとは異なる形式を有する中間データに変換し、記憶する中間データ生成手段と、
前記中間データを前記制御コマンドに変換して出力する制御コマンド生成手段とを有し、
前記中間データ生成手段が、
前記印刷命令に埋め込みフォントが含まれているか否かを判断するフォント判定手段と、
前記埋め込みフォントが含まれていると判定された場合、前記埋め込みフォントを取得し、前記中間データとともに記憶するフォント記憶手段と、
前記中間データに記憶された埋め込みフォントをグラフィックエンジンに登録する登録手段とを有し、
前記制御コマンド生成手段が登録手段によりグラフィックエンジンに登録された埋め込みフォントを用いて前記中間データを前記制御コマンドに変換することを特徴とする印刷制御装置。 - 前記制御コマンド生成手段が、前記記憶された埋め込みフォントを用いる際、前記フォント記憶手段が記憶した際のフォント名と異なるフォント名を有するフォントとして用いることを特徴とする請求項1記載の印刷制御装置。
- 前記中間データ生成手段が、前記フォント記憶手段が前記埋め込みフォントの取得に失敗した場合、前記埋め込みフォントをビットマップ置き換えして前記中間データを生成することを特徴とする請求項1又は請求項2記載の印刷制御装置。
- 前記フォント記憶手段が前記埋め込みフォントの取得に失敗した場合、前記制御コマンド生成手段が、前記埋め込みフォントを別のフォントに置き換えて前記制御コマンドを生成することを特徴とする請求項1又は請求項2記載の印刷制御装置。
- アプリケーションからの印刷命令を所定の印刷装置に適した制御コマンドに変換して出力する印刷制御方法であって、
前記印刷命令を前記制御コマンドとは異なる形式を有する中間データに変換し、記憶する中間データ生成ステップと、
前記中間データを前記制御コマンドに変換して出力する制御コマンド生成ステップとを有し、
前記中間データ生成ステップが、
前記印刷命令に埋め込みフォントが含まれているか否かを判断するフォント判定ステップと、
前記埋め込みフォントが含まれていると判定された場合、前記埋め込みフォントを取得し、前記中間データとともに記憶するフォント記憶ステップと、
前記中間データに記憶された埋め込みフォントをグラフィックエンジンに登録する登録ステップとを有し、
前記制御コマンド生成ステップが前記登録ステップによりグラフィックエンジンに登録された埋め込みフォントを用いて前記中間データを前記制御コマンドに変換することを特徴とする印刷制御方法。 - 前記制御コマンド生成ステップが、前記記憶された埋め込みフォントを用いる際、前記フォント記憶ステップが記憶した際のフォント名と異なるフォント名を有するフォントとして用いることを特徴とする請求項5記載の印刷制御方法。
- 前記中間データ生成ステップが、前記フォント記憶ステップが前記埋め込みフォントの取得に失敗した場合、前記埋め込みフォントをビットマップ置き換えして前記中間データを生成することを特徴とする請求項5又は請求項6記載の印刷制御方法。
- 前記フォント記憶ステップが前記埋め込みフォントの取得に失敗した場合、前記制御コマンド生成ステップが、前記埋め込みフォントを別のフォントに置き換えて前記制御コマンドを生成することを特徴とする請求項5又は請求項6記載の印刷制御方法。
- コンピュータを請求項1乃至請求項4のいずれか1項に記載の印刷制御装置として機能させることを特徴とするコンピュータプログラム。
- 請求項9記載のコンピュータプログラムを格納したコンピュータ読みとり可能な記憶媒体。
- 文字描画を表す情報を中間コードとして書き込む際、フォントが埋め込みフォントの場合、フォントの取得を要求し、取得したフォントをスプールファイルに中間データとして格納するスプーラと、
前記スプールファイルに埋め込まれたグラフィックエンジンにフォントを登録するデスプーラと、
前記デスプーラにより登録されたフォントに基づき文字グリフの取得を行い、前記文字描画を表す情報をPDLに変換するドライバとを有することを特徴とする印刷制御装置。 - 前記デスプーラは、フォントを登録する際にフェース名を変更することを特徴とする請求項11記載の印刷制御装置。
- 文字描画を表す情報を中間コードとして書き込む際、フォントが埋め込みフォントの場合、フォントの取得を要求し、取得したフォントをスプールファイルに中間データとして格納する格納ステップと、
前記スプールファイルに埋め込まれたフォントをグラフィックエンジンに登録する登録ステップと、
登録されたフォントに基づき文字グリフの取得を行い、前記文字描画を表す情報をPDLに変換する変換ステップとを有することを特徴とする印刷制御方法。 - 前記登録ステップは、フォントを登録する際にフェース名を変更することを特徴とする請求項13記載の印刷制御方法。
- 文字描画を表す情報を中間コードとして書き込む際、フォントが埋め込みフォントの場合、フォントの取得を要求し、取得したフォントをスプールファイルに中間データとして格納する格納工程のプログラムと、
前記スプールファイルに埋め込まれたフォントをグラフィックエンジンに登録する登録工程のプログラムと、
登録されたフォントに基づき文字グリフの取得を行い、前記文字描画を表す情報をPDLに変換する変換工程のプログラムとを有することを特徴とするコンピュータプログラム。 - 前記登録工程のプログラムは、フォントを登録する際にフェース名を変更することを特徴とする請求項15記載のプログラム。
- 文字描画を表す情報を中間コードとして書き込む際、フォントが埋め込みフォントの場合、フォントの取得を要求し、取得したフォントをスプールファイルに中間データとして格納する格納工程のプログラムと、
前記スプールファイルに埋め込まれたフォントをグラフィックエンジンに登録する登録工程のプログラムと、
登録されたフォントに基づき文字グリフの取得を行い、前記文字描画を表す情報をPDLに変換する変換工程のプログラムとを記憶するコンピュータ読みとり可能な記憶媒体。 - 前記登録工程のプログラムは、フォントを登録する際にフェース名を変更することを特徴とする請求項17記載の記憶媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001197286A JP3962559B2 (ja) | 2001-06-28 | 2001-06-28 | 印刷制御装置及び印刷制御方法 |
US10/180,139 US7319532B2 (en) | 2001-06-28 | 2002-06-27 | Printing control apparatus and printing control method capable of accurately printing embedded font |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001197286A JP3962559B2 (ja) | 2001-06-28 | 2001-06-28 | 印刷制御装置及び印刷制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003015849A JP2003015849A (ja) | 2003-01-17 |
JP3962559B2 true JP3962559B2 (ja) | 2007-08-22 |
Family
ID=19034917
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001197286A Expired - Lifetime JP3962559B2 (ja) | 2001-06-28 | 2001-06-28 | 印刷制御装置及び印刷制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3962559B2 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8537388B2 (en) | 2008-05-13 | 2013-09-17 | Canon Kabushiki Kaisha | Information processing apparatus for image processing on a character stamp by embedding an image rendering a character string of a stamp |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9519625B2 (en) * | 2010-05-06 | 2016-12-13 | Celartem, Inc. | Accurate font activation |
-
2001
- 2001-06-28 JP JP2001197286A patent/JP3962559B2/ja not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8537388B2 (en) | 2008-05-13 | 2013-09-17 | Canon Kabushiki Kaisha | Information processing apparatus for image processing on a character stamp by embedding an image rendering a character string of a stamp |
Also Published As
Publication number | Publication date |
---|---|
JP2003015849A (ja) | 2003-01-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7319532B2 (en) | Printing control apparatus and printing control method capable of accurately printing embedded font | |
JP3747130B2 (ja) | 情報処理装置、メッセージ表示方法、インタフェース装置、及びコンピュータ読み取り可能なプログラムが格納された記憶媒体 | |
JP3862652B2 (ja) | 印刷制御方法及び情報処理装置 | |
JP3673643B2 (ja) | 印刷レイアウト装置及び印刷レイアウト方法並びに記憶媒体 | |
JP3576819B2 (ja) | 情報処理装置及び印刷制御方法並びに記憶媒体 | |
JP2000190573A (ja) | 印刷制御方法および印刷システム | |
US20020026453A1 (en) | Information processing apparatus and method for creating print data and storage medium | |
JP3733288B2 (ja) | 情報処理装置および印刷制御方法および記憶媒体 | |
JP2002041261A (ja) | 情報処理装置及び情報処理方法及びコンピュータ読み取り可能なプログラムを格納した記憶媒体 | |
JP3907362B2 (ja) | 印刷制御方法及び装置および印刷システム | |
US6496279B2 (en) | Image processing apparatus, method and memory medium therefor | |
JP3962559B2 (ja) | 印刷制御装置及び印刷制御方法 | |
JP3870042B2 (ja) | 印刷制御装置及び印刷制御方法 | |
JPH10278362A (ja) | 印刷制御装置及び方法と印刷システム | |
JP2005018494A (ja) | データ処理装置および印刷データ生成方法およびコンピュータが読取り可能なプログラムを格納した記憶媒体およびプログラム | |
US7027170B1 (en) | Printing control system for separation printing | |
JP4100912B2 (ja) | 情報処理装置及びその制御方法、プログラム並びに記憶媒体 | |
JP2005161819A (ja) | 印刷装置および印刷制御方法 | |
JP2004038527A (ja) | プリンタドライバおよび印刷制御方法およびコンピュータが読み取り可能な記憶媒体およびプログラム | |
JP2004110337A (ja) | 画像形成方法、画像形成システム、クライアント端末、サーバ装置、プログラム、記憶媒体 | |
JP4054544B2 (ja) | 情報処理装置、情報処理方法、印刷制御プログラム、印刷処理装置、印刷処理方法及び印刷処理プログラム | |
JP3387796B2 (ja) | 印刷制御装置および印刷制御装置のデータ処理方法 | |
JP2000298565A (ja) | 印刷制御方法及び装置と前記印刷制御方法を実行するプログラムを記憶した記憶媒体 | |
JP3347520B2 (ja) | 情報処理装置およびプリンタシステムおよびプリントジョブ処理方法 | |
JP2005165741A (ja) | 情報処理装置、印刷システム、情報処理装置の処理データ生成方法、及び制御プログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20040611 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20060905 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20061006 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20061204 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070507 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070521 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 Ref document number: 3962559 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100525 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110525 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120525 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120525 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130525 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140525 Year of fee payment: 7 |
|
EXPY | Cancellation because of completion of term |