(57)【要約】【課題】  特定の描画方向以外の印刷要求であっても、バーコードの印字品質を向上させること。【解決手段】  印刷データ受信部１０２は、識別コード描画コマンドを含む印刷データを受信し、バーコード設定コマンド検出部１０５は、該印刷データ中に識別コード描画コマンドが含まれることを検出し、バーコード描画コマンド検出部１０６は、識別コードの描画方向を検出し、用紙走行方向選択部１１１は、識別コードの描画方向に基づいて、第一媒体収納部と第二媒体収納部の何れかを優先的に選択する。【選択図】図１
2009056631.tif 000002
【特許請求の範囲】
【請求項１】
識別コード描画コマンドを含む印刷データを受信するデータ受信部と、
該印刷データ中に識別コード描画コマンドが含まれることを検出するコマンド検出部と、
前記検出された識別コードの描画方向を検出する描画方向検出部と、
第一の方向で媒体を収納する第一媒体収納部と、
前記第一の方向と異なる第二の方向で媒体を収納する第二媒体収納部と、
前記識別コードの描画方向に基づいて、前記第一媒体収納部と前記第二媒体収納部の何れかを選択する選択部とを有することを特徴とする印刷装置。
【請求項２】
前記識別コードとはバーコードであることを特徴とする、請求項１に記載の印刷装置。
【請求項３】
前記印刷データおよび前記識別コードを縮小する縮小処理部を更に備えることを特徴とする、請求項１または請求項２に記載の印刷装置。
【請求項４】
前記方向とは縦方向と横方向であることを特徴とする、請求項１または請求項２に記載の印刷装置。
【請求項５】
識別コード描画コマンドとは、図形描画コマンドであることを特徴とする、請求項１に記載の印刷装置。
【請求項６】
識別コード描画コマンドとは、バーコードフォントを用いたキャラクタ描画コマンドであることを特徴とする、請求項１に記載の印刷装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、識別コードを媒体に印刷する印刷装置に関する。
【背景技術】
【０００２】
従来、バーコードを印刷する印刷装置では、バーコードの印刷方向によっては、バーコードの読み取り率が低下してしまうという解決すべき課題が残されていた。かかる課題を解決し、バーコードの印刷品位を安定化させるべく、特許文献１には、インクの印字方向とバーコードの高さ方向とを、実質的に同一方向にする印刷装置の内容が開示されている。
【特許文献１】特開平０６−４４３９３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記特許文献１に開示されている印刷装置であっても、定型用紙に対してバーコードの印刷を行なう場合には、インクの印字方向とバーコードの高さ方向とが、実質的に同一方向になる印刷要求以外、即ち、バーコード描画の方向が特定の場合以外の印刷要求では、所望する効果を得ることが出来ないという解決すべき課題が残されていた。
【課題を解決するための手段】
【０００４】
本発明による印刷装置は、識別コード描画コマンドを含む印刷データを受信するデータ受信部と、該印刷データ中に識別コード描画コマンドが含まれることを検出するコマンド検出部と、上記検出された識別コードの描画方向を検出する描画方向検出部と、第一の方向で媒体を収納する第一媒体収納部と、上記第一の方向と異なる第二の方向で媒体を収納する第二媒体収納部と、上記識別コードの描画方向に基づいて、上記第一媒体収納部と上記第二媒体収納部の何れかを選択する選択部とを有することを所要な特徴とする。
【発明の効果】
【０００５】
本発明による印刷装置は、描画方向検出部が識別コードの描画方向を検出し、その描画方向に基づいて、選択部が、第一媒体収納部と第二媒体収納部の何れかを優先的に選択することが可能になるので、特定の描画方向以外の印刷要求であってもバーコードの印刷品位を向上させることが出来るという効果を得る。
【発明を実施するための最良の形態】
【０００６】
以下、本発明の一実施形態を図を用いて詳細に説明する。
【実施例１】
【０００７】
（構成）の説明
本実施例では、定型サイズの用紙の走行方向とバーコードのバーの方向を一致させるように、用紙走行方向を選択して印刷可能な印刷装置について説明する。具体的な例としては、印刷装置がＬＥＤヘッドを搭載した装置では、同じ印刷方向でも用紙走行方向によってバーコードの印刷品位が異なるため、バーコードの印刷内容に応じて、例えばＡ４縦置き／Ａ４横置きのうちで、印刷品位の良くなるどちらか一方を選択して印刷するというものである。かかる目的を達成するために本実施例の印刷装置は以下のように構成される。
【０００８】
図１は、実施例１の印刷装置の構成のブロック図である。
この図は、実施例１の印刷装置の構成を、プリンタ１０１がホストＰＣ１２０から送信されたバーコードを含む印刷データを受信し、印刷を行なう機能を主にして表したものである。
【０００９】
図に示すように、プリンタ１０１は、印刷データ受信部１０２と、印刷データ先読み部１０３と、バーコード設定コマンド検出部１０５と、バーコード描画コマンド検出部１０６と、用紙サイズ選択コマンド検出部１０８と、座標回転コマンド検出部１０９と、バーコード描画情報格納部１１０と、用紙走行方向選択部１１１と、搭載用紙走行方向検出部１１２と、トレイ１制御部１１３と、トレイ２制御部１１４と、印刷データ解析部１１５と、描画処理部１１６と、画像形成部１１７とを備える。
【００１０】
印刷データ受信部１０２は、ホストＰＣ１２０から送信された印刷データを、プリンタケーブル、ＵＳＢケーブル、あるいはネットワークケーブルなどの任意のデータ送信経路を通じて受信する部分である。本実施例では、データ送信経路がいずれであっても構わないので具体的には特定しない。
【００１１】
印刷データ先読み部１０３は、通常の処理経路である印刷データ解析部１１５で印刷データの解析が行なわれる前に、バーコード描画に関係する印刷コマンドを先読みして、そのコマンドの存在を検出する部分である。尚、印刷データ先読み部１０３は、内部に先読みバッファ１０４を有している。
【００１２】
先読みバッファ１０４は、データの内容を先読みするための印刷データを一時的にコピーし、格納し、参照するための揮発性メモリ領域である。バーコード設定コマンド検出部１０５は、バーコード設定コマンドに指定されているパラメータを解釈し、どのような設定が指定されているかを検出する部分である。
【００１３】
バーコード描画コマンド検出部１０６は、バーコード描画コマンドに指定されているパラメータを解釈し、どのようなバーコードを描画するのかを検出する部分である。尚、バーコード描画コマンド検出部１０６は、その内部に最小バーサイズ検出部１０７を有している。最小バーサイズ検出部１０７は、バーコード設定コマンドのパラメータから、バーコードが描画されたときのバーの幅の最小値を検出する部分である。
【００１４】
用紙サイズ選択コマンド検出部１０８は、用紙サイズ選択コマンドに設定されているパラメータを解釈し、どのような用紙サイズが指定されたのかを検出する部分である。座標回転コマンド検出部１０９は、座標回転コマンドに設定されているパラメータを解釈し、どのような座標系の回転角が指定されているかを検出する部分である。
【００１５】
バーコード描画情報格納部１１０は、印刷データの先読み処理によって検出されたバーコード描画情報を格納する揮発性メモリである。格納されるバーコード描画情報は、バーコード描画が行なわれる用紙サイズ、各バーコードの描画時の回転方向および最小バーコードサイズ等である。
【００１６】
用紙走行方向選択部１１１は、バーコード描画情報格納部１１０に格納されているバーコード描画情報に基づいて、印刷する際に使用する用紙がセットされているトレイを選択する部分である。特に、印刷装置がＬＥＤヘッドを搭載した印刷装置の場合には、用紙走行方向とバーコードの高さ方向とが一致するトレイを選択することになる。尚、本実施例では、トレイ１とトレイ２の二つの給紙トレイを備えたプリンタであるものとする。
【００１７】
搭載用紙走行方向検出部１１２は、トレイ１およびトレイ２にセットされている用紙サイズと用紙走行方向を検出する部分である。トレイ１制御部１１３は、トレイ１にセットされている用紙サイズと用紙走行方向とを検出し、印刷の為の給紙と用紙搬送の制御を行なう部分である。トレイ２制御部１１４は、トレイ２にセットされている用紙サイズと用紙走行方向を検出し、印刷の為の給紙と用紙搬送の制御を行なう部分である。
【００１８】
印刷データ解析部１１５は、ホストＰＣ１２０から送信された印刷データに含まれている印刷コマンドを解釈し、描画処理を行なうための中間データ形式（ディスプレイリスト）に変換する部分である。この処理は、プリンタ内部処理における編集処理と呼ばれるものである。尚、ここでは、中間データ形式への変換を行なう際に、印刷コマンドに指定されている座標値が、用紙走行方向に対応した座標値になるように回転される。
【００１９】
描画処理部１１６は、上記中間描画データ形式（ディスプレイリスト）のデータを読み込んで、印刷するための用紙サイズと同じ大きさの画像データをメモリ上に生成する部分である。また、描画処理部１１６は、バーコード形状を所定の大きさに拡大／縮小したサイズで実際に描画する機能を有する部分でもある。
【００２０】
画像形成部１１７は、上記画像データをプリンタ１０１の印刷ヘッドに送信するとともに、用紙を印刷ヘッドの下に走行させ、トナーを転写して用紙にトナーを定着させるプロセス制御を行なう部分である。以上説明した各機能部分は、プリンタ１０１に備える図示しないＣＰＵが、図示しないＲＯＭに予め格納されている所定の制御プログラムを実行することによって起動・生成される。
【００２１】
一方、ホストＰＣ１２０は、入力部１２０ａと、バーコードアプリケーション１２１と、画面表示制御部１２４と、印刷データ送信部１２５とを備えるコンピュータである。入力部１２０ａはホストＰＣ１２０に対するユーザの入力操作を受け入れるデバイスであって、例えばキーボードやマウスといった入力装置である。
【００２２】
バーコードアプリケーション１２１は、ホストＰＣ１２０のユーザが、バーコード印刷を行なうために用いるアプリケーションソフトウェアである。このアプリケーションソフトウェアが実行されるとレイアウト制御部１２２とバーコード描画コマンド生成部１２３とが起動・生成される。
【００２３】
レイアウト制御部１２２は、ユーザによる入力部１２０ａの操作を受け入れて、バーコードの描画位置や大きさ、バーコードの種別、バーコードとして埋め込みたい情報、バーコードの周辺に配置する文字や図形やイメージのレイアウトを編集する部分である。
【００２４】
バーコード描画コマンド生成部１２３は、プリンタ１０１にバーコードを印刷させるための印刷コマンドを生成する部分である。印刷コマンドの生成は、プリンタドライバを使用する方式と、アプリケーションが能動的に生成する方式とが考えられるが、本実施例の動作を説明するためにはどのような方式であっても構わないので、その具体的な構成の説明については省略する。
【００２５】
画面表示制御部１２４は、レイアウト制御部１２２によってレイアウトされた内容を、ホストＰＣの図示しないモニタ装置に表示するための信号の生成を制御する部分である。印刷データ送信部１２５は、プリンタ１０１に印刷データを送信する部分である。
【００２６】
次に、本実施例における装置のトレイ構成および用紙の走行方向について説明する。
図２は、トレイの用紙向きと、走行経路の説明図である。
図に示すように、本実施例におけるプリンタ１０１は、プリンタ１０１の筐体１３０の内部に、トレイ１（１３１）とトレイ２（１３２）の二つの給紙トレイを備えている。トレイ（１３１）には、Ａ４横置き用紙１３３が格納されている。トレイ２（１３２）には、Ａ４縦置き用紙が格納されている。
【００２７】
トレイ１（１３１）およびトレイ２（１３２）に搭載されている用紙は、共通の用紙走行経路１３５を通過して印刷ヘッドまで搬送され、印刷が行なわれるように構成されている（尚、図におけるトレイ１（１３１）およびトレイ２（１３２）にセットされた用紙の位置は、トレイをプリンタ１０１から引き出して、真上からトレイを見た時の用紙の位置を表したイメージ図である。）。
【００２８】
次に、プリンタ１０１でバーコード印刷を行なった時の印刷内容について説明する。
図３は、バーコード描画の１例の説明図である。
図３（ａ）は、給紙トレイの用紙サイズがＡ４横置きの場合の、バーコードの印刷結果を示したものである。図に示すように、Ａ４横置き用紙１４２は、ＬＥＤヘッド１４１に向かって用紙走行方向Ａの方向に搬送が行なわれ、印刷が行なわれる。このとき、バーコード描画されたドットを拡大して示した図が、ドットの拡大図１４４である。このときのトナーは、用紙走行方向と逆方向（図面の下方向）に向かって滲んだり、転写の誤差などにより、広がって定着してしまう問題がある。このため、バーコード１４３は、黒いバーが本来あるべき幅よりも下方向に広がった領域に描画されてしまう。一般にバーコードは、白い領域の幅にも情報を持っているから、白い領域の間隔が狭まってしまうことにより、バーコードの読み取り率を低下させてしまうという問題が発生することになる。
【００２９】
図３（ｂ）は、給紙トレイの用紙サイズがＡ４縦置きの場合の、バーコードの印刷結果を示したものである。図に示すように、Ａ４縦置き用紙１４５は、ＬＥＤヘッド１４１に向かって用紙走行方向Ａの方向に搬送が行なわれ、印刷が行なわれる。尚、Ａ４縦置き用紙１４５に印刷される内容は、図３（ａ）におけるＡ４横置き用紙１４２と同じであり、両者を手にとって重ねてみれば、印刷された内容や印刷位置は同じものである。このとき、Ａ４縦置き用紙１４５に描画されたドットを拡大して示した図が、ドットの拡大図１４７である。この時のトナーは、図３（ａ）と同様に、用紙走行方向と逆方向（図面の下方向）に向かって滲んだり、転写の誤差などにより、広がって定着してしまう。しかし、バーコード１４６のバーの方向である下方向と、トナーが広がって定着してしまう方向である下方向が、同一方向であり、バーコードとしての情報をもつＬＥＤヘッドの方向Ｂ（図中左右方向）には、トナーの広がりは発生しないため、バーコード１４６の読み取り率は低下しない。また、読み取り率が低下しないもう一つの理由としては、方向Ｂに沿ってＬＥＤ素子が一つ一つ解像度に応じた数だけ搭載されており、方向Ｂについてはトナーの広がりが抑えられていると言うことが上げられる。
【００３０】
本発明では、図３（ａ）に示すようにＡ４横置き用紙上にバーコードの高さ方向と用紙進行方向とが直角方向に配置されるバーコードの印刷要求を受け入れたとき、用紙走行方向選択部１１１が、バーコード及び印刷データの向きを９０度回転させ、Ａ４横置き用紙をＡ４縦置き用紙に変更することが可能か否かを判断し、可能と判断した場合には図３（ｂ）の印刷出力を得ることになる。
【００３１】
次に、バーコード描画に関係する印刷コマンドの、コマンド仕様の一例について説明する。一般にプリンタの印刷コマンドには様々なコマンド体系が存在しているが、印刷コマンドによって指示される情報は本質的に同じものである。本実施例では、印刷コマンド体系として、最初にコマンド名をアルファベット二文字で指定し、続いて描画情報として付加的なパラメータをカンマで区切って数値で指定し、最後にセミコロンで終わるような印刷コマンド体系であるものとする。
【００３２】
具体的なバーコード描画に関係する４つの印刷コマンドについて、図を用いて説明する。
図４は、用紙サイズ選択コマンドの仕様の１例の説明図である。
図に示すように、印刷に使用したい用紙サイズは、ＰＳｎ；コマンドによって指定する。ｎは、用紙サイズを指定する数値パラメータであり、その意味は図に示すように、ｎの数値により用紙サイズが設定されている。
【００３３】
図５は、座標回転コマンドの仕様の１例の説明図である。
図５（ａ）は、座標回転コマンドの仕様の１例を表したものである。印刷コマンドで指定される座標系原点の回転を、ＲＯｎ；コマンドによって指定する。尚、本実施例では、座標系の位置は、用紙の四つの角のいずれかの位置に位置するものとし、座標の回転角ｎとしては０°、９０°、１８０°、２７０°により指定するものとする。０°のときは、用紙左上が原点位置であり、以後、半時計周りに回転方向を考えるものとする。
図５（ｂ）は、その内容を図で表している。
【００３４】
図６は、バーコード設定コマンドの仕様の１例の説明図である。
図６（ａ）は、バーコード設定コマンドのコマンド仕様例を表したものである。描画したいバーコードの設定情報を、ＢＳｋ，ｈ，ｗ１，ｗ２，ｗ３，ｗ４；コマンドによって指定する。図に示すように、パラメータｋは、バーコード種別を指定するものである。パラメータｈは、バーコードの高さを１／６００ｉｎｃｈ単位で指定するものである。パラメータｗ１，ｗ２，ｗ３，ｗ４は、バーコード幅情報である。バーコード幅情報がどのような意味を持つのかは、各バーコードによって変化する。ただし、本実施例における説明では、パラメータｗ１，ｗ２，ｗ３，ｗ４は、図６（ｂ）に示したようなバーコード幅を指定するパラメータであるものとする。尚、バーコード設定コマンドは、このコマンドの受信状態では、バーコードの描画は行なわれない。
【００３５】
図７は、バーコード描画コマンドの仕様の１例の説明図である。
図に示すように、描画したいバーコードの情報を、ＢＡｘ，ｙ，ｎ，ｄ１，ｄ２，ｄ３，…，ｄｎ；コマンドによって指定する。パラメータｘ，ｙは、バーコードの描画の開始座標（ｘ，ｙ）である。パラメータｎは、バーコードとして描画したいデータの個数である。パラメータｄ１，ｄ２，ｄ３，…，ｄｎは、バーコードとして描画したいデータ列（数値の列）である。
【００３６】
尚、ＢＳコマンドを使用する前に描画位置の（ｘ，ｙ）座標を指定するためのコマンドとして、ＰＵコマンド（Ｐｅｎ  Ｕｐコマンド）もコマンド体系の中に存在しているものとする。ただし、本実施例の説明としては直接関係ないため、その存在を省略して以後の説明を行なうものとする。
【００３７】
（動作）の説明
以上説明した本実施例のプリンタ１０１は、ホストＰＣ１２０から送信されたバーコード印刷データを受信し、以下のように動作してバーコード印刷を行なう。
最初にホストＰＣ１２０がバーコード印刷データを送信するまでの動作の概要について図１を用いて説明し、続いて、プリンタ１０１の動作についてフローチャートを用いて詳細に説明する。
【００３８】
まず、バーコード印刷を行ないたいユーザは、入力部１２０ａを介してホストＰＣ１２０のバーコードアプリケーション１２１を起動して、描画したいバーコードの種別や大きさ、描画位置、その他の文字や図形やイメージのレイアウトを作成する。レイアウト制御部１２２は、ユーザが操作した入力部１２０ａから入力情報を検出し、操作指示に従ってバーコード印刷内容のレイアウト処理を行なう。その際、レイアウト画面は、画面表示制御部１２４を通じて、ホストＰＣ１２０の図示しないモニタ装置の画面に表示される。
【００３９】
続いて、ユーザがバーコードアプリケーション１２１上で印刷開始指示のボタンを押下すると、レイアウト制御部１２２がそれを検知し、バーコード描画コマンド生成部１２３を呼び出す。バーコード描画コマンド生成部１２３は、プリンタ１０１が解釈可能な印刷コマンドを生成し、印刷データ送信部１２５を通じてプリンタ１０１に送信する。尚、印刷データ中には、バーコード印刷のレイアウトに対応した数々の印刷コマンドが含まれている。
【００４０】
ここで、プリンタ１０１が受信する印刷データの内部に含まれる印刷コマンドの具体的な例として、特にバーコードの描画に関係するコマンドについて図を用いて説明する。
図８は、コマンド列の解析例の説明図である。
図８（ａ）は、プリンタ１０１が受信するコマンド列の１例を表している。
図８（ｂ）は、コマンド列に含まれているコマンドの意味を表している。
図に示すコマンド列は、既に説明した図４〜図７の印刷コマンドの列によって、構成されている。
このコマンド列をプリンタ１０１が受信することにより、プリンタ１０１のバーコード印刷動作が開始される。
【００４１】
図９は、実施例１のプリンタの全体動作の概要フローチャートである。
ステップＳ１０１からステップＳ１０７まで、図１を併用しながらステップ順にプリンタ１０１の全体動作の概要について説明する。
【００４２】
ステップＳ１０１
印刷データ受信部１０２は、ホストＰＣ１２０から印刷データを受信する。
【００４３】
ステップＳ１０２
印刷データ受信部１０２は、受信した印刷データを、印刷データ先読み部１０３に受け渡しする。
【００４４】
ステップＳ１０３
印刷データ先読み部１０３は、上記印刷データを先読みし、バーコード描画コマンドが含まれているかどうかを検出する。尚、この動作フローの詳細については、後に再度説明する。
【００４５】
ステップＳ１０４
用紙走行方向選択部１１１は、上記バーコードの検出結果に基づいて、印刷に使用したい用紙サイズが期待する走行方向にセットされている給紙トレイを選択する。尚、この動作フローの詳細については、後に再度説明する。
【００４６】
ステップＳ１０５
印刷データ解析部１１５は、上記印刷データ中の印刷コマンドを解析し、編集処理を行なう。
【００４７】
ステップＳ１０６
描画処理部１１６は、描画処理を行い、印刷する為の画像データを生成する。
【００４８】
ステップＳ１０７
画像形成部１１７が、画像データに基づいてトナーを用紙に転写することで、用紙に印刷を行なう。
【００４９】
以上の動作フローにより、バーコード印刷が完了する。
尚、このときの描画処理部１１６は、印刷データ内に指定されているバーコードのサイズの指定コマンドに基づいて、バーコードを指定の大きさに縮小した描画を行なうことになる。
【００５０】
次に、印刷データ先読み部１０３の動作（上記ステップＳ１０３が該当する）の詳細について説明する。
図１０は、実施例１の印刷データ先読み部の動作フローチャート（その１）である。
図１１は、実施例１の印刷データ先読み部の動作フローチャート（その２）である。
図１０のステップＳ２０１からステップＳ２１３まで、図１１のステップＳ２１４からステップＳ２１８まで、ステップ順に図１を併用しながら説明する。
【００５１】
ステップＳ２０１
印刷データ先読み部１０３は、バーコード描画情報格納部１１０の格納内容をクリアする。
【００５２】
ステップＳ２０２
印刷データ先読み部１０３は、先読みバッファ１０４に、印刷データをコピーする。
【００５３】
ステップＳ２０３
印刷データ先読み部１０３は、先読みバッファの最後まで読み出し済みであるかを判断する。このとき、読み出し完了であった場合は、印刷データ先読み部１０３としての動作が完了する。すなわち、図９におけるステップＳ１０３が完了して、次のステップＳ１０４に処理が移行する。一方、読み出し完了ではなかった場合は、ステップＳ２０４へ進む。
【００５４】
ステップＳ２０４
印刷データ先読み部１０３は、先読みバッファ１０４から印刷データを１バイトづつ取り出し、どのコマンドを受信したかを判断する。具体的には、１文字取り出しては、印刷コマンドの先頭１文字目、２文字目とが、それぞれ一致するかどうかを判定して行く。印刷コマンドの判別処理自体は一般的な技術として知られているから、本動作フローの説明では詳細な説明を省略する。
尚、本ステップＳ２０４の後の動作フローでは、印刷データ先読み部１０３が、先読みして検出した印刷コマンドに基づいて、バーコード設定コマンド検出部１０５、バーコード描画コマンド検出部１０６、用紙サイズ選択コマンド検出部１０８、座標回転コマンド検出部１０９の呼び出しを行なう。この動作について、以後のステップで説明する。
【００５５】
ステップＳ２０５
上記ステップＳ２０４の判断結果で、用紙サイズ選択コマンドが検出された場合には、ステップＳ２０６へ進み、そうでなければ、ステップＳ２０８へ進む。
【００５６】
ステップＳ２０６
印刷データ先読み部１０３は、用紙サイズ選択コマンド検出部１０８を呼び出しする。
【００５７】
ステップＳ２０７
用紙サイズ選択コマンド検出部１０８が、コマンドパラメータを検出し、バーコード描画情報格納部１１０に格納する。格納後に処理はステップＳ２０３に戻る。
尚ここで、コマンドパラメータの検出の具体例としては、まず用紙サイズ選択コマンド検出部１０８が、図８の受信データ列のＰＳコマンドに続くパラメータである「１４；」を検出し、次に図４の仕様に基づいてＡ４サイズが指定されたことを解釈する。そして「用紙サイズ＝Ａ４」の情報は、バーコード描画情報格納部１１０に格納される。
【００５８】
ここで、バーコード描画情報格納部１１０の内容について説明する。
図１２は、実施例１のバーコード描画情報の格納例の説明図である。
図に示すように、バーコード描画情報を格納するバーコード描画情報ファイルには、用紙サイズ、各バーコードの描画時の回転方向及び最小バーコードサイズを格納する領域が設けられている。上記Ａ４は、用紙サイズの格納領域に格納されることになる。再度図１０へ戻る。
【００５９】
ステップＳ２０８
上記ステップＳ２０４の判断結果で、座標回転コマンドが検出された場合には、ステップＳ２０９へ進み、そうでなければ、ステップＳ２１１へ進む。
【００６０】
ステップＳ２０９
印刷データ先読み部１０３は、座標回転コマンド検出部１０９を呼び出しする。
【００６１】
ステップＳ２１０
座標回転コマンド検出部１０９が、コマンドパラメータを検出し、設定を一旦内部に保持する。その後、処理はステップＳ２０３に戻る。
尚ここで、コマンドパラメータの検出の具体例としては、まず座標回転コマンド検出部１０９が、図８の受信データ列のＲＯコマンドに続くパラメータである「０；」を検出し、次に図５（ａ）の仕様に基づいて回転角０°が指定されたことを解釈する。
【００６２】
ステップＳ２１１
上記ステップＳ２０４の判断結果で、バーコード設定コマンドが検出された場合には、ステップＳ２１２へ進み、そうでなければ、ステップＳ２１４へ進む。
【００６３】
ステップＳ２１２
印刷データ先読み部１０３が、バーコード設定コマンド検出部１０５を呼び出しする。
【００６４】
ステップＳ２１３
バーコード設定コマンド検出部１０５が、コマンドパラメータを検出し、設定を一旦内部に保持する。その後、処理はステップＳ２０３に戻る。
尚ここで、コマンドパラメータの検出の具体例としては、まずバーコード設定コマンド検出部１０５が、図８の受信データ列のＢＳコマンドに続くパラメータである「２１，６００，５０，１００，１５０，２００；」を検出し、次に図６（ａ）の仕様に基づいて、バーコード種別がＥＡＮ／ＪＡＮ−８であり、バーコード高さが６００ドットであり、バーコード幅が５０ドット、１００ドット、１５０ドット、２００ドットであるバーコードが指定されたことを解釈する。
【００６５】
ステップＳ２１４
上記ステップＳ２０４の判断結果で、バーコード描画コマンドが検出された場合には、ステップＳ２１５へ進み、そうでなければ、処理はステップＳ２０３に戻る。
【００６６】
ステップＳ２１５
印刷データ先読み部１０３は、バーコード描画コマンド検出部１０６を呼び出しする。
【００６７】
ステップＳ２１６
バーコード描画コマンド検出部１０６は、コマンドパラメータを検出する。
尚ここで、コマンドパラメータの検出の具体例としては、まずバーコード描画コマンド検出部１０６が、図８の受信データ列のＢＡコマンドに続くパラメータである「１８００，２４００，１０，０，１，２，３，４，５，６，７，８，９；」を検出し、次に図７の仕様に基づいて、バーコードの描画開始位置が（１８００，２４００）であり、バーコードデータのデータ数が１０であり、バーコードに置き換えたいデータが０，１，２，３，４，５，６，７，８，９の１０個のデータあるバーコード描画を行なうことが指定されたことを解釈する。
【００６８】
ステップＳ２１７
最小バーサイズ検出部１０７は、検出されたコマンドパラメータから、最小バーサイズを検出し、一旦内部に保持する。
尚ここで、最小バーサイズの検出の具体例としては、ステップＳ２１３でバーコード設定コマンド検出部１０５が内部に保持していたバーコード設定情報と、ステップＳ２１６で解釈したバーコードに置き換えたいデータとから、実際に描画されるときのバーコードのバーの幅方向のサイズを算出して、そのうち最も小さいものを選択することで実現する。
尚、バーのサイズはバーコード種別によっても変化するから、最小バーサイズ検出部１０７は、バーコード種別によって算出方法を切り替えるものである（その詳細については、本実施例の説明を行なううえで影響がない部分であるから、説明を省略する。）。
【００６９】
ステップＳ２１８
バーコード描画コマンド検出部１０６は、座標回転コマンド検出部１０９の内部に保持されている回転設定の情報と、先に最小バーサイズ検出部１０７の内部に保持している最小バーコード幅の情報をセットにして、バーコード描画情報格納部１１０に格納する。具体的には、図１２に示すように、「Ｎｏ．００１  バーコード回転角＝０°  最小バーコード幅＝５０ドット」のように一行分のデータを格納する。
【００７０】
尚、受信データ中には複数のバーコード描画コマンドが含まれて良いため、バーコード描画コマンド検出部１０６がバーコード描画コマンドを検出する毎に、同様の情報をバーコード描画情報格納部１１０に格納する。
具体的には、図１２に示すように、「Ｎｏ．００２  バーコード回転角＝０°  最小バーコード幅＝６０ドット」のように、次々に一行分のデータを追加で格納して行く。図１２は、任意の回数を格納したとして、最後の行に「Ｎｏ．ｘｘｘ  バーコード回転角＝０°  最小バーコード幅＝１００ドット」を格納したところまでの例である。
【００７１】
次に、用紙走行方向選択部１１１の動作について説明する。
図１３は、用紙走行方向選択部の動作フローチャートである。
このフローチャートは、図９のステップＳ１０４の内部処理を、具体的に表したものである。ステップＳ３０１からステップＳ３１６まで図１を併用しながらステップ順に説明する。
【００７２】
ステップＳ３０１
用紙走行方向選択部１１１は、バーコード描画情報格納部１１０から、バーコード描画情報を取得する。具体例としては、先に図１２で説明したようなバーコード描画情報を取得する。
【００７３】
ステップＳ３０２
用紙走行方向選択部１１１は、バーコード描画情報の中身を確認し、これから印刷を行なおうとする印刷データの中に、一つでもバーコード描画コマンドが含まれているかどうかを判断する。そして、バーコード描画コマンド有りの場合はステップＳ３０３に進む。一方、バーコード描画コマンド無しの場合はステップＳ３１６へ進む。
尚、判断の具体的な例としては、図１２に示したバーコード描画情報の中に、「Ｎｏ．００１  バーコード回転角＝０°  最小バーコード幅＝５０ドット」のような行が一つでも存在していれば、バーコード描画コマンドが有りと判断する。
【００７４】
ステップＳ３０３
用紙走行方向選択部１１１は、バーコード描画情報の中身を確認し、印刷データに含まれるバーコードの描画方向が全て同じ方向であるかを判断する。そして、バーコード回転角が全て同じである場合はステップＳ３０４に進む。一方、バーコード回転角が全て同じではない場合はステップＳ３１３へ進む。
尚、判断の具体的な例としては、図１２に示したバーコード描画情報の中の、各行に含まれる「バーコード回転角＝」に格納されているバーコード回転角を確認し、全てのバーコード回転角が同じ値であるかどうかで判断する。
【００７５】
ステップＳ３０４
用紙走行方向選択部１１１は、バーコード描画情報の中身を確認し、印刷データに含まれるバーコード描画のバーの幅のうち、最小のバーコード幅を取得する。具体的な例としては、図１２に示したバーコード描画情報の中の、各行に含まれる「最小バーコード幅＝」に格納されている最小バーコード幅を確認し、そのうちの最小のバーコード幅を取得する。
【００７６】
ステップＳ３０５
用紙走行方向選択部１１１は、ステップＳ３０４で取得した最小バーコード幅が、例えば１／６００インチｄｐｉで５ドット未満であるかを判断する。そして、５ドット未満である場合はステップＳ３０６に進む。一方、５ドット未満でなければステップＳ３１６へ進む。尚、１／６００インチｄｐｉで５ドットという判断基準は、横方向位置でバーコードを読み取った場合に誤検出となる限界値の一例であって、実際にはプリンタ１０１の印刷特性を考慮して決定すれば良い。
【００７７】
ステップＳ３０６
用紙走行方向選択部１１１は、バーコード描画情報の中身を確認し、用紙サイズ情報を取得する。具体的な例としては、図１２に示したバーコード描画情報の中の、「用紙サイズ＝Ａ４」の行に格納されている用紙サイズを確認し、Ａ４用紙サイズへの印刷指定であることの情報を取得する。
【００７８】
ステップＳ３０７
用紙走行方向選択部１１１は、搭載用紙走行方向検出部１１２から、用紙走行方向情報を取得する。このとき、搭載用紙走行方向検出部１１２は、トレイ１制御部１１３およびトレイ２制御部１１４に問い合わせて、各トレイにセットされている用紙サイズの情報を取得し、用紙走行方向情報を作成して用紙走行方向選択部１１１へ通知する。ここで用紙走行方向情報について説明する。
【００７９】
図１４は、用紙走行方向情報の１例の説明図である。
図に示すように用紙走行方向情報には、個々のトレイに格納されている用紙サイズと用紙の載置方向が格納されている。再度図１３へ戻る。
【００８０】
ステップＳ３０８
用紙走行方向選択部１１１は、ステップＳ３０３で判断したバーコード回転角が０°または１８０°で有るかを判断する。そして、０°または１８０°であった場合にはステップＳ３０９へ進み、そうでない場合にはステップＳ３１１へ進む。具体的な例としては、バーコード描画情報格納部１１０に格納されているバーコード格納情報が、図１２の通りであった場合は、バーコード回転角は０°であるからステップＳ３０９へ進むことになる。尚、ここで、バーコード回転角が０°または１８０°であることは、用紙を縦に見たときにバーコードのバーの描画方向が縦方向（図５（ｂ））であることを意味している。
【００８１】
ステップＳ３０９
用紙走行方向選択部１１１は、ステップＳ３０７で取得した用紙走行方向情報を参照し、ステップＳ３０６で取得した用紙サイズに対して、縦置きの用紙走行方向が選択可能かを判断する。縦置きの用紙走行方向を選択可能かを判断する理由は、図３について説明したように、縦置き用紙への印刷の場合の方が横置き用紙の場合よりもバーコードの印刷品位が高いからである。そして、選択可能であればステップＳ３１０に進む。一方、選択可能でなければステップＳ３１３へ進む。具体的な動作の例としては、用紙走行方向選択部１１１が、ステップＳ３０７で取得した図１４の用紙走行方向情報を参照することで、Ａ４縦置きとＡ４横置きの両方がトレイ２、トレイ１にそれぞれセットされており選択可能であることを知り、ステップＳ３０６で取得したＡ４サイズのバーコード印刷は、縦置きの用紙走行方向を選択して印刷可能であると判断する。
【００８２】
ここで印刷品質向上のための対応方法について図を用いて説明する。
図１５は、印刷品位向上処理の説明図である。
図中用紙進行方向をＡとし、（ａ）は、縦置き用紙に縦方向バーコードを印刷した場合を、（ｂ）は、縦置き用紙横方向バーコードを印刷した場合を、（ｃ）は、横置き用紙に横方向バーコードを印刷した場合を、（ｄ）は、横置き用紙に縦方向バーコードを印刷した場合を、それぞれあらわしている。
【００８３】
（ａ）の場合には、縦置き用紙のまま印刷すれば良い。（ｂ）の場合には９０°回転させ横置きの用紙を選択すれば良い。（ｃ）の場合は、２７０°回転させ縦置き用紙を選択すれば良く、（ｄ）の場合は、横置き用紙のままそのまま印刷すれば良いことになる。
【００８４】
従ってバーコード回転角が０°または１８０°のとき、用紙縦置きの方がバーコードの印刷品位が良いことの理由は、（ａ）のように用紙走行方向とバーコードのバーの方向を一致させて印刷できるからである。もし、用紙横置きを選択して印刷すると（ｃ）のように印刷されてしまうため、バーコード幅が小さければ、図３で説明したように印刷の滲みの問題により、バーコードの読み取り品質が低下してしまうことになる。
【００８５】
このため、（ｃ）のような印刷は行なわずに（ｃ）の印刷内容を回転させ、（ａ）のように縦置き用紙を選択して印刷することの方が印刷品位が良くなると判断できる。尚、（ａ）と（ｃ）は、バーコード回転角が０°であった場合の例である。図１３へ戻る。
【００８６】
ステップ３１０
用紙走行方向選択部１１１は、バーコート描画情報格納部１１０に格納されている情報に基づいて、該当する用紙サイズの縦置きを印刷に使用する媒体として選択する。具体的には、用紙走行方向選択部１１１が、トレイ２制御部１１４に対して、トレイ２に搭載されている用紙を選択して印刷を行なうことの指示を出す。尚、複数のトレイ選択から一つを選択して印刷することの制御方法については一般的な概念であり、本実施例の動作の説明には直接影響を受ける部分ではないので、詳細な説明を省略する。最後に、本ステップの動作が完了すると、図１３における用紙走行方向選択部１１１としての動作が終了する。これは図９のステップＳ１０４の内部処理が完了したことを意味するから、装置全体の制御は、図９のステップＳ１０５へと移行する。
【００８７】
ステップＳ３１１
用紙走行方向選択部１１１が、ステップＳ３０７で取得した用紙走行方向情報を参照し、ステップＳ３０６で取得した用紙サイズに対して、（バーコードの印刷品位が良くなると期待できる）横置きの用紙走行方向が選択可能か否かを判断する。そして、選択可能であればステップＳ３１２へ進み、そうでない場合にはステップＳ３１３へ進む。
【００８８】
尚、具体的な動作の例としては、用紙走行方向選択部１１１がステップＳ３０７で取得した図１４の用紙走行方向情報を参照することで、Ａ４縦置きとＡ４横置きの両方が選択可能であることを知り、ステップＳ３０６で取得したＡ４サイズのバーコード印刷は、（バーコードの印刷品位が良くなると期待できる）横置き用紙走行方向を選択して印刷可能であると判断する。ここでバーコード回転角が０°または１８０°のとき、用紙横置きの方がバーコードの印刷品位が良くなる理由は、図１５の（ｄ）のように用紙走行方向とバーコードのバーの方向を一致させて印刷できるからである。もし、用紙縦置きを選択して印刷すると図１５の（ｂ）のように印刷されてしまうため、バーコード幅が小さければ、図３で説明した印刷の滲みの問題により、バーコードの読み取り品質が低下してしまうことになる。このため図１５の（ｂ）のような印刷は行なわずに、その内容を回転させ、図１５の（ｄ）のような用紙横置きを選択して印刷することの方が印刷品位が良いと判断する。尚、図１５の（ｂ）と（ｄ）は、バーコード回転角が９０°であった場合の例である。
【００８９】
ステップＳ３１２
用紙走行方向選択部１１１が、該当する用紙サイズの横置きを、印刷に使用する媒体として選択する。具体的には、用紙走行方向選択部１１１が、トレイ１制御部１１３に対して、トレイ１に搭載されている用紙を選択して印刷を行なうことの指示を出す。尚、複数のトレイから１つを選択して印刷することの制御方法については一般的な概念であり、本実施例の動作の説明には直接影響を受ける部分ではないので、詳細な説明は省略する。最後に、本ステップの動作が完了すると、図９のステップＳ１０４の内部処理が完了したことを意味するから、装置全体の制御は、図９のステップＳ１０５へ移行することになる。
【００９０】
ステップＳ３１３
用紙走行方向選択部１１１は、バーコード印刷を行なうか否かを問うメッセージを表示させる。また、それとともにプリンタ利用者からの応答（許可またはキャンセル）を受付る。具体的には、プリンタ１０１の操作パネル上の情報表示部に対して「一定の精度を持ったバーコードが印刷できないかも知れません。バーコード印刷を行ないますか？」のメッセージを表示させて、利用者がプリンタ１０１の操作パネル上のオンラインボタンまたは印刷キャンセルボタンのいずれかを押下するのを検出することが実装例として考えられる。
【００９１】
ステップＳ３１４
用紙走行方向選択部１１１は、ステップＳ３１３における利用者からの応答結果を判別し、応答が印刷キャンセルであった場合はステップＳ３１５へ進む。一方、応答が印刷キャンセルではなかった場合にはステップＳ３１６へ進む。
【００９２】
ステップＳ３１５
用紙走行方向選択部１１１は、現在処理中の印刷ジョブに対して印刷キャンセルを実行する。尚、印刷キャンセル動作の実装方法については、本実施例の動作の説明には直接影響を受ける部分ではないので、詳細な説明を省略する。
【００９３】
ステップＳ３１６
用紙走行方向選択部１１１は、印刷に使用する用紙が搭載されているトレイとして、デフォルトのトレイを選択する。尚、デフォルトのトレイとは、プリンタ１０１の内部に予め所定の方法で登録された１つのトレイを意味するものである。デフォルトトレイの実装方法については、本実施例の動作の説明には直接影響を受ける部分ではないので、詳細な説明を省略する。最後に、本ステップの動作が完了すると、図９ステップＳ１０４の内部処理が完了したことを意味するから、装置全体の制御は、図９のステップＳ１０５へ移行することになる。
【００９４】
尚、上記ステップＳ３０９、及びステップＳ３１１にてＮｏと判断された場合に、上記構成ではいずれもステップＳ３１３へ進み、キャンセルかデフォルトトレイを選択する構成とした。しかし、この構成に替えて、それぞれ該当する用紙トレイに用紙を補充するように促するように表示するメッセージを表示し、所定時間経過した後に再度ステップＳ３０８へ戻る構成にしても良い。
【００９５】
（効果）の説明
以上説明したように、プリンタ１０１は、バーコードの印刷を行なう場合に、用紙走行方向とバーコードのバーの方向とが一致するような印刷が行なえるように用紙縦置き、または用紙横置きを選択することが出来るので、バーコードの印刷品位が良い印刷を行なうことが出来るという効果を得る。
【実施例２】
【００９６】
（構成）の説明
上記実施例１では、線分や長方形などの図形描画によってバーコード描画を実現するようなバーコード描画コマンドに適用した場合について説明した。しかし、バーコード描画の方式は、バーコードフォントを利用して実現する方式の方が一般的である。そこで本実施例では、本発明をバーコードフォントを利用したバーコード描画方式に適用する。
【００９７】
以下、実施例２の構成について説明する。
図１６は、実施例２の印刷装置の構成のブロック図である。
この図は、実施例２の印刷装置としてのプリンタ２０１が、ホストＰＣ２２０から送信されたバーコード印刷データを受信し、バーコード印刷を行なう際の構成を表したものである。
【００９８】
図に示すようにプリンタ２０１は、印刷データ受信部１０２、印刷データ先読み部２０３、フォント選択コマンド検出部２０５、フォントサイズ指定コマンド検出部２０６、キャラクタ描画コマンド検出部２０７、用紙サイズ選択コマンド検出部１０８、座標回転コマンド検出部１０９、バーコード描画情報格納部１１０、用紙走行方向選択部１１１、搭載用紙走行方向検出部１１２、トレイ１制御部１１３、トレイ２制御部１１４、印刷データ解析部１１５、描画処理部１１６、画像形成部１１７、バーコードフォントデータ解析部２０８、最小バーサイズ検出部２０９、バーコードフォントデータ格納部２１０とを備える。以下に実施例１と異なる部分のみについて詳細に説明する。実施例１と同様の部分については、実施例１と同一の符号を付して説明を省略する。
【００９９】
印刷データ先読み部２０３は、実施例１の印刷データ先読み部１０３と構成は同じであるが、バーコードフォントを利用したバーコード描画を行なう際に使用される、フォント選択コマンド、フォントサイズ指定コマンド、キャラクタ描画コマンド等を検出する機能が、追加されている。
【０１００】
フォント選択コマンド検出部２０５は、フォント選択コマンドに指定されているパラメータを解釈し、どのような設定が指定されたのかを検出する部分である。
【０１０１】
フォントサイズ指定コマンド検出部２０６は、フォントサイズ指定コマンドに指定されているパラメータを解釈し、どのようなフォントサイズでバーコードキャラクタを描画するのかを検出する部分である。
【０１０２】
キャラクタ描画コマンド検出部２０７は、キャラクタ描画コマンドに指定されているパラメータを解釈し、どのようなキャラクタデータに基づいてバーコード描画を行なうのかを検出する部分である。
【０１０３】
バーコードフォントデータ解析部２０８は、その内部に最小バーサイズ検出部２０９を有し、バーコードフォントデータを解析する部分である。最小バーサイズ検出部２０９は、バーコードフォントデータの内部に格納されているバーコードキャラクタデータを解析し、描画するときのフォントのサイズ情報に基づいて、バーコードの最小バーサイズを算出する部分である。
【０１０４】
バーコードフォントデータ格納部２１０は、バーコードフォントデータが格納されている不揮発性メモリ領域のことである。
【０１０５】
一方、ホストＰＣ２２０は、入力部１２０ａ、バーコードアプリケーション２２１、画面表示制御部１２４、及び印刷データ送信部１２５を備えているコンピュータである。また、バーコードアプリケーション２２１は、レイアウト制御部１２２、バーコード描画コマンド生成部２２３とを有している。以下に実施例１と異なる部分のみについて詳細に説明する。実施例１と同様の部分については、実施例１と同一の符号を付して説明を省略する。
【０１０６】
バーコード描画コマンド生成部２２３は、実施例１のバーコード描画コマンド生成部１２３と構成は同じであり、バーコードを印刷させるための印刷コマンドを生成する部分である。但し、プリンタ２０１にバーコードフォントを利用したバーコード描画を行なわせるために、フォント選択コマンド、フォントサイズ指定コマンド、キャラクタ描画コマンドを出力する機能が追加されている。
【０１０７】
次に、プリンタ２０１でバーコード印刷を行った時の印刷内容についても、実施例１で説明したように、図３と同じ状況である。よって、詳細な説明は省略する。
【０１０８】
次に、本実施例における、バーコード描画に関係する印刷コマンドの、コマンド仕様の一例について説明する。本実施例では、実施例１で採用したのと同じ印刷コマンド体系を使用するものとする。つまり、最初にコマンド名をアルファベット二文字で指定し、続いて描画情報として付加的なパラメータをカンマで区切って数値で指定し、最後にセミコロンで終わるような印刷コマンド体系であるものとする。
【０１０９】
本実施例におけるバーコード描画は、バーコードフォントを利用した実現方式であることを最初に説明した。このとき、具体的なバーコード描画に関係する印刷コマンドとしては、５個のコマンドを使用する。そのうち用紙サイズ選択コマンド（ＰＳｎ）と座標回転コマンド（ＲＯｎ）については、実施例１で使用したものと全く同じ仕様のコマンドを使用する（図４、図５が該当する）ので説明を省略する。
【０１１０】
以下に、残りの３個のコマンドについては、それぞれ説明する。
図１７は、フォント選択コマンドの仕様の１例の説明図である。
図に示すように、バーコード描画に使用するフォントのフォント名の文字列を、ＦＯ“ｆｏｎｔｎａｍｅ”；コマンドによって指定する。“ｆｏｎｔｎａｍｅ”が、フォント名の文字列となる。
【０１１１】
図１８は、フォントサイズ指定コマンドの仕様の１例の説明図である。
図に示すように、バーコード描画に使用するフォントのフォントサイズを、ＦＳ  ｐｔ；コマンドによって指定する。尚、パラメータｐｔは、ポイント単位の値である（７２ポイント＝１ｉｎｃｈ＝２５．４ｃｍ）。
【０１１２】
図１９は、キャラクタ描画コマンドの仕様の１例の説明図である。
図に示すように、キャラクタとは１文字１文字のことである。本コマンドでは、複数のキャラクタをまとめて描画出来るようなコマンド仕様とする。すなわち、描画したい文字列を、ＣＨ“ｘｘｘｘｘ”；コマンドによって指定する。尚、パラメータ“ｘｘｘｘｘ”が、描画したい文字列である。
【０１１３】
尚、ここでバーコードフォントについて改めて説明するが、バーコードフォントとは、通常のフォントと全く同じデータ構造である。ただ、１文字１文字の形状が、バーコードの形状になるようにキャラクタの形状データが設計されているだけである。このため、バーコードを行なうための特別な処理があるのではなく、フォントを使用して文字を描画するように指示を出すだけである。わかり易い例としては、文字列“１２３４５５６８”をバーコードフォントで文字描画すると、数字１に対応するバーコード形状のキャラクタが描画され、以後同様に１文字ずつ処理されることにより、結果として数値データ「１２３４５６７８」に対応するバーコードが描画できるというものである。
【０１１４】
最後に、バーコードフォントデータ格納部２１０に格納されているバーコードフォントデータのデータフォーマットについて説明する。
図２０は、フォントデータの構造の１例の説明図である。
この図は、一つのフォントに対するフォントデータ空間全体を表している。
【０１１５】
図に示すように、フォントデータ空間全体は、フォントデスクリプタ、キャラクタデスクリプタ、キャラクタデータと呼ばれる３つのデータ領域によって構成されている。フォントデスクリプタは、フォントの属性情報が格納される領域である。この情報は、一つ一つの文字によらず共通の情報であり、一つのフォントとしての属性情報を示すものである。
【０１１６】
キャラクタデスクリプタは、キャラクタ個別の属性情報が格納される領域である。尚、属性情報の中には、対応するキャラクタデータ領域へのオフセット値（相対アドレス値）が含まれている。キャラクタデスクリプタは、各キャラクタコードに対応した数分だけ存在する（図２０の例では、キャラクタコードとして１６進数の００ＨからＦＦＨまでが存在するものとしている。）。
【０１１７】
キャラクタデータは、各キャラクタの形状データが格納される領域である。キャラクタの形状を表すためのデータとしては、幾つかの方法が考えられるが、輪郭線の情報が格納されるスケーラブルフォントというフォントデータ形式が一般的である（スケーラブルフォントの実際例としては、Ｔｒｕｅ  Ｔｙｐｅ  Ｆｏｎｔというフォントデータフォーマットが存在している。）。以下の説明では、図２０のキャラクタデータは輪郭線形状データであるものとして説明を行なう。
【０１１８】
次に、輪郭線形状データについて説明する。
図２１は、キャラクタデータの１例説明図である。
このときの輪郭線形状データは、図２１（ａ）に示されるように、スタート地点と輪郭線のベクトルデータによって構成されるデータであるものとする。
図２１（ｂ）は輪郭線情報に基づいて、文字形状のビットマップキャラクタデータ（ビットマップイメージ）を形成したときの例である。
【０１１９】
このような、輪郭線形状データからビットマップキャラクタデータへの画像形成機能は、一般の描画経路である画像処理部１１６（図１６）が持っているものとする。
尚ここで、輪郭線のベクトルデータは絶対量ではなく、相対的な値が格納されているものとする。つまり、描画に必要な実際の寸法のビットマップキャラクタデータを形成する前に、輪郭線のベクトルデータ（相対値）に対して、別途外部から指定されるフォントサイズを値を掛け合わせて、輪郭線のベクトルデータの絶対値を計算し、その値に基づいてビットマップキャラクタデータを形成する手順となる。
【０１２０】
（動作）の説明
以上説明した本実施例のプリンタ２０１は、ホストＰＣ２２０から送信されたバーコード印刷データを受信し、以下のように動作してバーコード印刷を行なう。本実施例の動作は、特にバーコードフォントを利用した場合であっても、実施例１で説明した用紙走行方向選択部１１１の動作が同じように実施出来ることを説明するものである。尚、装置のトレイ構成としては、実施例１と同じように図２に示したトレイ１およびトレイ２を備えたプリンタ装置であるものとする。
【０１２１】
最初に、図１６を用いてホストＰＣ２２０の動作について説明する。ホストＰＣ２２０の動作で、実施例１と異なる部分は、バーコード描画コマンド生成部２２３の動作だけである。バーコード描画コマンド生成部２２３は、バーコードアプリケーション２２１から印刷開始の指示があった際、バーコード描画を行なうための印刷コマンドとして、図４、図５、図１７、図１８、図１９に示したコマンドをプリンタ２０１へ送信する。以後の説明では、バーコード描画に関係する部分のコマンドとして、具体的には次の図を用いて説明を進めてゆくこととする。
【０１２２】
図２２は、コマンド列の解析例の説明図である。
図２２（ａ）は、プリンタ２０１が受信するコマンド列の１例を表している。
図２２（ｂ）は、コマンド列に含まれているコマンドの意味を表している。
図に示すコマンド列は、既に説明した図４、図５、図１７、図１８、図１９の印刷コマンドの列によって、構成されている。
このコマンド列をプリンタ２０１が受信することにより、プリンタ２０１のバーコード印刷動作が開始される。
【０１２３】
図２３は、実施例２のプリンタの全体動作の概要フローチャートである。
ステップＳ４０１からステップＳ４０７まで、図１６を併用しながらステップ順にプリンタ２０１の全体動作の概要について説明する。
【０１２４】
ステップＳ４０１
印刷データ受信部１０２は、ホストＰＣ２２０から印刷データを受信する。
【０１２５】
ステップＳ４０２
印刷データ受信部１０２は、受信した印刷データを、印刷データ先読み部２０３に受け渡しする。
【０１２６】
ステップＳ４０３
印刷データ先読み部２０３が、上記印刷データを先読みし、バーコードフォントを用いた描画コマンドが含まれているかどうかを検出する。尚、この動作フローの詳細については、後に再度説明する。
【０１２７】
ステップＳ４０４
用紙走行方向選択部１１１は、上記バーコードの検出結果に基づいて、印刷に使用したい用紙サイズが期待する走行方向にセットされている給紙トレイを選択する。尚、この動作フローは、実施例１のステップＳ１０４と同様なので詳細説明を省略する。
【０１２８】
ステップＳ４０５
印刷データ解析部１１５は、上記印刷データ中の印刷コマンドを解析し、編集処理を行なう。
【０１２９】
ステップＳ４０６
描画処理部１１６は、描画処理を行い、印刷する為の画像データを生成する。
【０１３０】
ステップＳ４０７
画像形成部１１７が、画像データに基づいてトナーを用紙に転写することで、用紙に印刷を行なう。
【０１３１】
以上の動作フローにより、バーコード印刷が完了する。
尚、このときの描画処理部１１６は、印刷データ内に指定されているバーコードのサイズの指定コマンドに基づいて、バーコードを指定の大きさに縮小した描画を行なうことになる。以上説明したステップで実施例１と異なるステップはステップＳ４０３のみなので、以下に、印刷データ先読み部２０３の動作（上記ステップＳ４０３が該当する）の詳細について説明する。
【０１３２】
図２４は、実施例２の印刷データ先読み部の動作フローチャート（その１）である。
図２５は、実施例２の印刷データ先読み部の動作フローチャート（その２）である。
図２４のステップＳ５０１からステップＳ５１３まで、図２５のステップＳ５１４からステップＳ５２４まで、ステップ順に図１６を併用しながら説明する。但し、ステップＳ５０１からステップＳ５１０までは、図１０のステップＳ２０１からＳ２１０までに対して、印刷データ先読み部１０３の箇所を印刷データ先読み部２０３に置き換えれば、全く同じ内容である。よって、その説明は省略し、ステップＳ５１１以降について説明する。
【０１３３】
ステップＳ５１１
上記ステップＳ５０４（実施例１のステップＳ２０４に該当）の判断結果で、フォント選択コマンドが検出された場合には、ステップＳ５１２へ進む。そうでなければ、ステップＳ５１４へ進む。
【０１３４】
ステップＳ５１２
印刷データ先読み部２０３は、フォント選択コマンド検出部２０５を呼び出しする。
【０１３５】
ステップＳ５１３
フォント選択コマンド検出部２０５は、コマンドパラメータを検出し、設定を一旦内部に保持する。その後、処理はステップＳ５０３に戻る。
尚ここで、コマンドパラメータの検出の具体例としては、フォント選択コマンド検出部２０５が、図２２の受信データ列のＦＯコマンドに続くパラメータである「“ＯＣＲ−Ｂ”；」を検出し、文字描画に使用するフォント名として、“ＯＣＲ−Ｂ”が選択されたことを検出する。
【０１３６】
ステップＳ５１４
上記ステップＳ５０４（実施例１のステップＳ２０４に該当）の判断結果で、フォントサイズ指定コマンドが検出された場合には、ステップＳ５１５へ進み、そうでなければ、ステップＳ５１７へ進む。
【０１３７】
ステップＳ５１５
印刷データ先読み部２０３は、フォントサイズ指定コマンド検出部２０６を呼び出しする。
【０１３８】
ステップＳ５１６
フォントサイズ指定コマンド検出部２０６は、コマンドパラメータを検出し、設定を一旦内部に保持する。その後、処理はステップＳ５０３へ戻る。
尚ここで、コマンドパラメータの検出の具体例としては、フォントサイズ指定コマンド検出部２０６が、図２２の受信データ列のＦＳコマンドに続くパラメータである「１２；」を検出し、文字描画に使用するフォントのフォントサイズとして１２ｐｔが指定されたことを検出する。
【０１３９】
ステップＳ５１７
上記ステップＳ５０４（実施例１のステップＳ２０４に該当）の判断結果で、キャラクタ描画コマンドが検出された場合には、ステップＳ５１８へ進み、そうでなければ、ステップＳ５０３へと処理が移行する。
【０１４０】
ステップＳ５１８
印刷データ先読み部２０３は、キャラクタ描画コマンド検出部２０７を呼出しする。
【０１４１】
ステップＳ５１９
キャラクタ描画コマンド検出部２０７は、コマンドパラメータを検出する。
尚ここで、コマンドパラメータの検出の具体例としては、キャラクタ描画コマンド検出部２０７が、図２２の受信データ列のＣＨコマンドに続くパラメータである「“１２３４５６７８９”；」を検出し、キャラクタ描画したい文字列として“１２３４５６７８９”の数字文字列が指定されたことを検出する。
【０１４２】
ステップＳ５２０
キャラクタ描画コマンド検出部２０７は、バーコード描画に使用されるフォント名、フォントサイズ、描画しようとする文字列情報を、バーコードフォントデータ解析部２０８に通知する。
具体例としては、フォント名として“ＯＣＲ−Ｂ”、フォントサイズとして１２ｐｔ、文字列情報として“１２３４５６７８９”が通知される。
【０１４３】
ステップＳ５２１
バーコードフォントデータ解析部２０８は、上記通知されたフォント名に対応するバーコードフォントデータを、バーコードフォントデータ格納部２１０から取得する。
具体例としては、フォント名“ＯＣＲ−Ｂ”に対応するフォントデータの所在を確認し、図２０に示したデータ空間構造のフォントデータにアクセス出来るように、該フォントデータの不揮発性メモリ上の先頭アドレスを取得する。
【０１４４】
ステップＳ５２２
バーコードフォントデータ解析部２０８は、上記取得したバーコードフォントデータから、描画しようとする文字列に対応するキャラクタデスクリプタ情報および、キャラクタデータ情報を取得する。
【０１４５】
具体例としては、フォント名“ＯＣＲ−Ｂ”に対応するフォントデータから、図１９に示したキャラクタデスクリプタおよびキャラクタデータのうち、図２２に示した描画にしようとする文字列である“１２３４５６７８９”の文字列の一つ一つの文字に対応するキャラクタデスクリプタおよびキャラクタデータを取得する。例えば、文字１のキャラクタコードはアスキーコードで０ｘ３１であるから、０ｘ３１に対応するキャラクタデスクリプタおよびキャラクタデータを取得する。残りの文字も同様である。
【０１４６】
ステップＳ５２３
最小バーサイズ検出部２０９は、上記取得したキャラクタデスクリプタ情報および、キャラクタデータ情報を解析して、最小バーサイズを検出し、一旦内部に保持する。
具体的には、ステップＳ５２３の具体例の中で取得したキャラクタデータのベクトルデータと、ステップＳ５２０の具体例にあるようにキャラクタ描画コマンド検出部２０７から通知されたフォントサイズである１２ｐｔとを掛け合わせて、実寸の輪郭線のベクトルデータに変換する。更にこの情報から、最小バーサイズ検出部２０９は、図２１（ｂ）で説明したような実寸のビットマップキャラクタを生成するのと同等の処理を行い、フォント形状がバーコードのバーであるバーのサイズを算出する。一般に、バーコードはひとつの数字データに対応して複数のバーが描画されるから、上記バーサイズの算出の結果のうちで、最小のものを記憶しておく。この処理を、バーコードを描画するための文字列情報である“１２３４５６７８９”の一つ一つの文字に対して行い、一つのバーコードの中での最小バーコードを算出することができる。例えば、ひとつのバーコードの中で最小バーコード幅が４０ドットであった場合は、４０ドットという情報を一旦最小バーサイズ検出部２０９の内部に保持する。
【０１４７】
ステップＳ５２４
バーコードフォントデータ解析部２０８は、座標回転コマンド検出部１０９の内部に保持されている回転設定と、先に最小バーサイズ検出部２０９の内部に保持している最小バーコード幅をセットにして、バーコード描画情報格納部１１０に格納する。
【０１４８】
ここで、バーコード描画情報格納部１１０の内容について説明する。
図２６は、実施例２のバーコード描画情報の格納例の説明図である。
図に示すように、バーコード描画情報を格納するバーコード描画情報ファイルには、用紙サイズ、各バーコードの描画時の回転方向及び最小バーコードサイズを格納する領域が設けられている。上記Ａ４は、用紙サイズの格納領域に格納されることになる。
具体的には、図２６が示すように、「Ｎｏ．００１  バーコード回転角＝０°  最小バーコード幅＝４０ドット」のように一行分のデータが格納される。
尚、受信データ中にはバーコードフォントを選択してバーコードを描画するキャラクタ描画コマンドが複数含まれて良いため、キャラクタ描画コマンド検出部２０７がキャラクタ描画コマンドを検出する毎に、同様の情報をバーコード描画情報格納部１１０に格納する。
【０１４９】
具体的には、図２６が示すように、「Ｎｏ．００２  バーコード回転角＝０°  最小バーコード幅＝７０ドット」のように、次々に一行分のデータを追加で格納して行く。図２６は、任意の回数を格納したとして、最後の行に「Ｎｏ．ｘｘｘ  バーコード回転角＝０°  最小バーコード幅＝１１０ドット」を格納したところまでの例である。
以上の動作フローによって処理を行い、最終的に動作フローが完了すると、図２３のステップＳ４０３が完了したことになる。この後の動作は、ステップＳ４０４以降の処理になるが、先に説明したように用紙走行方向選択部１１１の動作は、実施例１と同じである。これは、図２６に説明したバーコード描画情報格納部１１０に格納される情報のデータ形式が、実施例１で説明した図１２のバーコード描画情報と同じであることに基づいている。
【０１５０】
（効果）の説明
以上説明したように、本実施例によれば、バーコードフォントを利用したキャラクタ描画によって、バーコードの印刷を実現する場合であっても、実施例１と同じように、用紙の印刷方向をバーコードの方向によって選択できるようになり、バーコードの読取り率を向上させることができるという効果を得る。
【産業上の利用可能性】
【０１５１】
本実施例と同じように一つの用紙サイズに対して縦置きも横置きもサポートしている装置構成であれば、印刷方式がＬＥＤヘッドを用いた方式ではなくその他の印字方式であった場合でも、本実施例と同様の効果を得ることが出来る。
また、バーコードの印刷品位の良い用紙走行方向が、本実施例で説明した方向と逆であった場合でも、用紙走行方向選択部の動作フロー内の、トレイ選択の際のバーコードの方向の判断条件を逆にして処理すれば、本実施例と同様の効果を得ることが出来る
【図面の簡単な説明】
【０１５２】
【図１】実施例１の印刷装置の構成のブロック図である。
【図２】トレイの用紙向きと、走行経路の説明図である。
【図３】バーコード描画の１例の説明図である。
【図４】用紙サイズ選択コマンドの仕様の１例の説明図である。
【図５】座標回転コマンドの仕様の１例の説明図である。
【図６】バーコード設定コマンドの仕様の１例の説明図である。
【図７】バーコード描画コマンドの仕様の１例の説明図である。
【図８】コマンド列の解析例の説明図である。
【図９】実施例１のプリンタの全体動作の概要フローチャートである。
【図１０】実施例１の印刷データ先読み部の動作フローチャート（その１）である。
【図１１】実施例１の印刷データ先読み部の動作フローチャート（その２）である。
【図１２】実施例１のバーコード描画情報の格納例の説明図である。
【図１３】用紙走行方向選択部の動作フローチャートである。
【図１４】用紙走行方向情報の１例の説明図である。
【図１５】印刷品位向上処理の説明図である。
【図１６】実施例２の印刷装置の構成のブロック図である。
【図１７】フォント選択コマンドの仕様の１例の説明図である。
【図１８】フォントサイズ指定コマンドの仕様の１例の説明図である。
【図１９】キャラクタ描画コマンドの仕様の１例の説明図である。
【図２０】フォントデータの構造の１例の説明図である。
【図２１】キャラクタデータの１例説明図である。
【図２２】コマンド列の解析例の説明図である。
【図２３】実施例２のプリンタの全体動作の概要フローチャートである。
【図２４】実施例２の印刷データ先読み部の動作フローチャート（その１）である。
【図２５】実施例２の印刷データ先読み部の動作フローチャート（その２）である。
【図２６】実施例２のバーコード描画情報の格納例の説明図である。
【符号の説明】
【０１５３】
１０１  プリンタ
１０２  印刷データ受信部
１０３  印刷データ先読み部
１０４  先読みバッファ
１０５  バーコード設定コマンド検出部
１０６  バーコード描画コマンド検出部
１０７  最小バーサイズ検出部
１０８  用紙サイズ選択コマンド検出部
１０９  座標回転コマンド検出部
１１０  バーコード描画情報格納部
１１１  用紙走行方向選択部
１１２  搭載用紙走行方向検出部
１１３  トレイ１制御部
１１４  トレイ２制御部
１１５  印刷データ解析部
１１６  描画処理部
１１７  画像形成部
１２０  ホストＰＣ
１２０ａ  入力部
１２１  バーコードアプリケーション
１２２  レイアウト制御部
１２３  バーコード描画コマンド生成部
１２４  画面表示制御部
１２５  印刷データ送信部
【図１】
2009056631.tif 000003
【図２】
2009056631.tif 000004
【図３】
2009056631.tif 000005
【図４】
2009056631.tif 000006
【図５】
2009056631.tif 000007
【図６】
2009056631.tif 000008
【図７】
2009056631.tif 000009
【図８】
2009056631.tif 000010
【図９】
2009056631.tif 000011
【図１０】
2009056631.tif 000012
【図１１】
2009056631.tif 000013
【図１２】
2009056631.tif 000014
【図１３】
2009056631.tif 000015
【図１４】
2009056631.tif 000016
【図１５】
2009056631.tif 000017
【図１６】
2009056631.tif 000018
【図１７】
2009056631.tif 000019
【図１８】
2009056631.tif 000020
【図１９】
2009056631.tif 000021
【図２０】
2009056631.tif 000022
【図２１】
2009056631.tif 000023
【図２２】
2009056631.tif 000024
【図２３】
2009056631.tif 000025
【図２４】
2009056631.tif 000026
【図２５】
2009056631.tif 000027
【図２６】
2009056631.tif 000028