(57)【要約】【課題】  画像要素として容易に認識できるように画像を形成することができるシステムや装置等を提供する。【解決手段】  このシステムは、媒体上を所定の方向に移動させることを繰り返して画像を形成する画像形成装置で使用するデータを生成するシステムであり、画像形成装置の所定の方向への移動で形成する画像を分割した各分割画像のデータを生成する生成手段を含み、各分割画像が、画像を構成し、所定の方向に対して垂直方向に並ぶ１以上の画像要素を含むことが可能であり、生成手段は、１の分割画像に、垂直方向に並ぶ複数の画像要素を含める際、該複数の画像要素のうちの１の画像要素が該１の分割画像内に収まらない場合、該複数の画像要素から該１の画像要素を除いて該１の分割画像のデータを生成する。【選択図】  図１３
2020042418.tif 000002
【特許請求の範囲】
【請求項１】
媒体上を所定の方向に移動させることを繰り返して画像を形成する画像形成装置で使用するデータを生成するシステムであって、
前記画像形成装置の前記所定の方向への移動で形成する前記画像を分割した各分割画像のデータを生成する生成手段を含み、
各分割画像が、前記画像を構成し、前記所定の方向に対して垂直方向に並ぶ１以上の画像要素を含むことが可能であり、
前記生成手段は、１の分割画像に、前記垂直方向に並ぶ複数の画像要素を含める際、前記複数の画像要素のうちの１の画像要素が前記１の分割画像内に収まらない場合、前記複数の画像要素から前記１の画像要素を除いて前記１の分割画像のデータを生成する、システム。
【請求項２】
前記生成手段は、前記１の分割画像と隣り合う次の分割画像に、前記１の画像要素を含めて前記次の分割画像のデータを生成する、請求項１に記載のシステム。
【請求項３】
前記画像要素が前記所定の方向に対して垂直方向に分離しないように該画像を複数の領域に分割する分割手段と、
前記各領域の垂直方向の長さと、前記画像形成装置の前記所定の方向への１回の移動で形成することが可能な画像形成範囲の垂直方向の長さとに基づき、前記複数の領域を、前記画像形成範囲内に収まる最も多くの連続する領域ごとに区分けする区分け手段とを含み、
前記生成手段は、各区分けされた領域の画像情報を使用し、前記各分割画像のデータを生成する、請求項１または２に記載のシステム。
【請求項４】
前記画像は、複数行の文字列からなる画像であり、
前記分割手段は、各行の文字列に分割し、
前記区分け手段は、前記画像形成範囲内に収まる１または２以上の行の文字列ごとに区分けし、
前記生成手段は、各区分けされた１または２以上の行の文字列の情報を使用し、前記各区分けされた１または２以上の行の文字列を画像形成するためのデータを生成する、請求項３に記載のシステム。
【請求項５】
前記画像は、複数列の文字列からなる画像であり、
前記分割手段は、各列の文字列に分割し、
前記区分け手段は、前記画像形成範囲内に収まる１または２以上の列の文字列ごとに区分けし、
前記生成手段は、各区分けされた１または２以上の列の文字列の情報を使用し、前記各区分けされた１または２以上の列の文字列を画像形成するためのデータを生成する、請求項３に記載のシステム。
【請求項６】
前記区分け手段は、
前記複数の領域のうちの第１の領域の垂直方向の第１の長さを算出する演算手段と、
算出された前記第１の長さが、前記画像形成範囲の垂直方向の長さ以下かどうかを判定する判定手段と、
前記画像形成範囲の垂直方向の長さ以下と判定された場合、前記第１の領域に連続する第２の領域を、前記第１の領域と合成する合成手段と
を含み、
前記演算手段は、前記第１の領域と前記第２の領域とを合成した合成領域の垂直方向の第２の長さを算出し、
前記判定手段は、算出された前記第２の長さが、前記画像形成範囲の垂直方向の長さ以下かどうかを判定する、請求項３〜５のいずれか１項に記載のシステム。
【請求項７】
前記画像の前記所定の方向への第３の長さが、前記画像形成範囲の該所定の方向への第４の長さより長い場合、前記第３の長さが前記第４の長さ以下になるように調整する調整手段を含む、請求項３〜６のいずれか１項に記載のシステム。
【請求項８】
前記画像形成範囲は、前記画像形成装置が備える画像を形成するための液滴を吐出する吐出手段の垂直方向の長さによって決定される、請求項３〜７のいずれか１項に記載のシステム。
【請求項９】
前記画像形成範囲は、前記画像形成装置が備える画像を形成するための液滴を吐出する吐出手段の垂直方向の長さと、設定された画像を形成しない余白領域の垂直方向の長さとによって決定される、請求項３〜７のいずれか１項に記載のシステム。
【請求項１０】
請求項１〜９のいずれか１項に記載のデータ生成システムを実装し、画像形成装置が画像形成を行うために使用するデータを出力する、通信端末。
【請求項１１】
請求項１〜９のいずれか１項に記載のデータ生成システムを実装し、通信端末から出力された画像を取得し、画像形成を行う、画像形成装置。
【請求項１２】
媒体上を所定の方向に移動させることを繰り返して画像を形成する画像形成装置で使用するデータの生成をコンピュータに実行させるためのプログラムであって、
前記画像を構成する画像要素が前記所定の方向に対して垂直方向に分離しないように該画像を複数の領域に分割するステップと、
前記各領域の垂直方向の長さと、前記画像形成装置の前記所定の方向への１回の移動で形成することが可能な画像形成範囲の垂直方向の長さとに基づき、前記複数の領域を、前記画像形成範囲内に収まる最も多くの連続する領域ごとに区分けするステップと、
各区分けされた領域の画像情報を使用し、前記画像形成装置の前記所定の方向への移動で形成する前記画像を分割した各分割画像のデータを生成するステップとを実行させる、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、媒体上を所定の方向に移動させることを繰り返して画像を形成する画像形成装置で使用されるデータを生成するシステム、通信端末、画像形成装置および該データを生成する処理をコンピュータに実行させるためのプログラムに関する。
【背景技術】
【０００２】
紙搬送システムを削除し、手動で紙面上を自由に走査（フリーハンド走査）しながらインクを塗布するハンドヘルドプリンタが知られている。ハンドヘルドプリンタは、スマートデバイスやPC等の通信端末から画像データを受信し、記録ヘッドのノズルから液滴を吐出させ、画像を形成する。１回の走査で形成することができる画像は、ノズルの長手方向の長さに依存し、その長さより大きい画像は、複数に分割し、複数回の走査により画像を形成する。
【０００３】
しかしながら、このように複数の画像に分割し、複数回の走査により画像を形成する場合、その境目に白スジが発生したり、画像の重なりが発生したりするという問題があった。
【０００４】
そこで、境界付近の領域の画像をぼかし、白スジや画像の重なりを目立たなくする技術が提案されている（例えば、特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来の技術では、画像の分割で、画像に含まれる文字等の画像要素が２つに分離されていると、その画像要素として認識しにくくなるという問題があった。
【０００６】
本発明は、上記に鑑みてなされたものであって、画像要素として容易に認識できるように画像を形成することを可能にするシステム、装置およびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上述した課題を解決するために、発明の一実施形態では、媒体上を所定の方向に移動させることを繰り返して画像を形成する画像形成装置で使用するデータを生成するシステムであって、
画像形成装置の所定の方向への移動で形成する画像を分割した各分割画像のデータを生成する生成手段を含み、
各分割画像が、画像を構成し、所定の方向に対して垂直方向に並ぶ１以上の画像要素を含むことが可能であり、
生成手段は、１の分割画像に、垂直方向に並ぶ複数の画像要素を含める際、該複数の画像要素のうちの１の画像要素が該１の分割画像内に収まらない場合、該複数の画像要素から該１の画像要素を除いて該１の分割画像のデータを生成する、システムを提供する。
【発明の効果】
【０００８】
本発明によれば、画像要素として容易に認識できるように画像を形成することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】ハンドヘルドプリンタとスマートデバイスとを含む画像形成システムの構成例を示した図。
【図２】ハンドヘルドプリンタのハードウェア構成の一例を示した図。
【図３】制御部の構成例を示した図。
【図４】スマートデバイスのハードウェア構成の一例を示した図。
【図５】媒体上に画像を形成する際のスマートデバイス側の処理の流れを示したフローチャート。
【図６】媒体上に画像を形成する際のハンドヘルドプリンタ側の処理の流れを示したフローチャート。
【図７】媒体上に画像を形成する際のハンドヘルドプリンタ側の処理の流れを示したフローチャート。
【図８】スマートデバイスで作成されたテキストデータの一例を示した図。
【図９】記録ヘッドのノズルと１回に印字可能な領域について説明する図。
【図１０】１パス高さについて説明する図。
【図１１】テキストデータからパスデータを作成する方法を説明する図。
【図１２】データ生成システムの実装例について説明する図。
【図１３】データ生成システムの機能構成の第１の例を示したブロック図。
【図１４】データ生成システムの機能構成の第２の例を示したブロック図。
【図１５】横書きのテキストデータからパスデータを生成する方法を説明する図。
【図１６】文字サイズが異なる文字列のテキストデータからパスデータを生成する方法を説明する図。
【図１７】縦書きのテキストデータからパスデータを生成する方法を説明する図。
【図１８】データ生成システムによりパスデータを生成する処理の流れを示したフローチャート。
【発明を実施するための形態】
【００１０】
図１は、画像形成装置としてのハンドヘルドプリンタ１０と、通信端末としてのスマートデバイス１１とを含む画像形成システムの構成例を示した図である。画像形成装置は、手動で画像形成を行う装置であれば、ハンドヘルドプリンタに限られるものではない。また、画像形成システムは、ネットワークやその他の機器、例えばサーバ装置等を含んで構成されていてもよい。
【００１１】
ハンドヘルドプリンタ１０は、人が片手で持ち運びできる大きさ、重量で、ノートや定型用紙等の印刷が可能な媒体１２上を自由に移動させ、媒体１２に印刷することができるプリンタである。
【００１２】
ハンドヘルドプリンタ１０は、インク等の液滴をノズルから吐出して媒体１２に印刷するインクジェット方式のプリンタとすることができる。なお、ハンドヘルドプリンタ１０は、これに限られるものではなく、細いピンをインクリボンに叩き付けて印刷するドットインパクト方式等を採用することもできる。また、ハンドヘルドプリンタ１０は、モノクロプリンタであってもよいし、カラープリンタであってもよい。
【００１３】
ハンドヘルドプリンタ１０は、印刷する対象の画像を画像データとして受信し、その画像に基づき、媒体１２上にインク等を吐出して印刷を行う。印刷する対象の画像は、文字のみからなるものであってもよいし、図、絵、写真等を含むものであってもよい。ハンドヘルドプリンタ１０は、画像データとともに、印刷設定情報を受信し、印刷設定情報に基づき画像を形成することができる。印刷設定情報としては、モノクロ／カラーの指定等を挙げることができる。
【００１４】
ハンドヘルドプリンタ１０は、赤外線通信、Bluetooth（登録商標）、Wi-Fi等の無線通信により、画像データを保持するスマートデバイス１１から画像データを受信する。ハンドヘルドプリンタ１０は、スマートデバイス１１からの画像データを、直接受信してもよいし、アクセスポイント等を介して受信してもよい。ハンドヘルドプリンタ１０は、無線通信に限られるものではなく、ケーブル等で接続し、有線通信により画像データを受信してもよい。
【００１５】
スマートデバイス１１は、例えば、スマートフォン、タブレット端末、ノートPC等とされ、ハンドヘルドプリンタ１０と無線通信を行い、自身が保持する画像データをハンドヘルドプリンタ１０へ送信する。また、スマートデバイス１１は、サーバ装置等から受信して取得した画像データを、ハンドヘルドプリンタ１０へ転送することもできる。
【００１６】
ユーザは、スマートデバイス１１の電源を入れ、スマートデバイス１１に実装されたアプリケーションを起動させ、画像を表示させる。ユーザは、その画像を印刷したい場合、例えば、タッチパネルに表示された印刷開始ボタンをタップすることにより印刷を指示することができる。この印刷指示を受けて、スマートデバイス１１は、その画像の画像データを無線通信によりハンドヘルドプリンタ１０へ送信する。
【００１７】
ハンドヘルドプリンタ１０は、スマートデバイス１１から印刷対象の画像データを受信する。ユーザは、ハンドヘルドプリンタ１０を持ち、媒体１２上を自由に移動させる。この間、ハンドヘルドプリンタ１０は、各ノズルの位置を算出する。実際には、ハンドヘルドプリンタ１０は、各ノズルの位置を、最初に決められた初期位置を基準とした座標位置（相対位置）として算出する。
【００１８】
ハンドヘルドプリンタ１０は、受信した画像データの画像を構成する画像要素の座標位置から、算出したノズルの座標位置が許容誤差内にある場合に、その画像要素を印字する印字データを、記録ヘッドを制御する制御部に送る。複数のノズルを有する記録ヘッドは、制御部による制御を受けて、その座標位置のノズルからインクを吐出させ、その印字を行う。ハンドヘルドプリンタ１０は、これを繰り返して媒体１２に印刷を行う。
【００１９】
ハンドヘルドプリンタ１０は、図１に示すように、箱状のものとされ、インクを吐出するための複数のノズルを有する。ハンドヘルドプリンタ１０は、複数のノズルを有する面を、平面状の媒体１２に押し当てるようにして使用される。複数のノズルは、押し当てた際に、その先端が媒体１２の表面から離間するように配置されている。なお、ノズル先端から媒体１２までの距離は、ノズルからインクを吐出して適切に印字することができる距離として予め決定されている。ユーザは、媒体１２にハンドヘルドプリンタ１０の複数のノズルを有する面を押し当て、媒体１２上を左から右への移動を繰り返すことにより媒体１２に印刷を行う。
【００２０】
図２は、ハンドヘルドプリンタ１０のハードウェア構成を示した図である。ハンドヘルドプリンタ１０は、電池やバッテリ等のハンドヘルドプリンタ１０で使用する電源を供給する電源２０を備える。また、ハンドヘルドプリンタ１０は、制御部や記録ヘッド駆動回路等の各ユニットで使用する電源に変換する電源回路２１を備える。電源回路２１は、バッテリの充電回路やAC電源との切り替え等を行う。ハンドヘルドプリンタ１０は、スマートデバイス１１から送信された画像データを受け付ける通信I/F２２を備える。
【００２１】
ハンドヘルドプリンタ１０は、メモリ２３、２以上のナビゲーションセンサ（以下、単にセンサと呼ぶ。）２４、制御部２５、操作ユニット(OPU)２６、記録ヘッド２７、記録ヘッド駆動回路２８を備える。メモリ２３は、ハンドヘルドプリンタ１０のハードウェア制御を行うファームウェア、記録ヘッド２８を駆動させるための駆動波形データ、ハンドヘルドプリンタ１０の初期設定を行うための初期設定データ等を格納し、通信I/F２２が受け付けた画像データを一時的に格納する。また、メモリ２３は、ファームウェア動作時の作業領域として使用される。
【００２２】
２以上のセンサ２４は、ハンドヘルドプリンタ１０の位置情報、記録ヘッドの位置情報を算出するために使用される。位置情報は、二次元平面における座標情報である。初期位置の位置情報は、例えば座標（0,0）とされる。２以上のセンサ２４は、初期位置を基準にして指定された縦横二方向であるX軸方向およびY軸方向への移動距離（移動量）を算出し、出力する。
【００２３】
X軸方向およびY軸方向は、初期位置を検出する際のセンサ２４の位置を基準とし、その水平方向およびその垂直方向とされる。センサ２４が複数のノズルが並ぶ前後に設けられる場合、ノズルおよびセンサ２４が並ぶ垂直方向がY軸方向とされ、それに垂直な水平方向がX軸方向とされる。なお、センサ２４は、正確な位置座標を得るために、移動量に加えて記録ヘッド２７の回転量、加速度等を検出してもよい。回転量は、例えばY軸を基準として記録ヘッド２７の長手方向が傾いた角度とすることができる。したがって、回転量は、X軸を基準とした角度であってもよい。
【００２４】
制御部２５は、SoC(System on chip)と、ASIC(Application Specific Integrated Circuit)/FPGA(Field Programmable gate alley)とから構成することができる。制御部２５は、ハンドヘルドプリンタ１０全体の制御を行う。例えば、制御部２５は、センサ２４からの情報に基づき、記録ヘッド２７の各ノズルの位置座標や、その位置座標に応じた画像要素の選択、印字するかどうかの判定等を行う。
【００２５】
OPU２６は、ハンドヘルドプリンタ１０の状態を表示するLED、ユーザが印字動作を指示するためのスイッチ等から構成される。これらは一例であり、OPU２６は、操作ボタンや液晶ディスプレイ(LCD)等を含んでいてもよい。また、OPU２６は、タッチパネルを備えていてもよい。
【００２６】
記録ヘッド２７は、インクを吐出するための複数のノズルを備える。複数のノズルは、記録ヘッド２７の長手方向に沿って一定間隔で一列に配列するように設けることができ、一例に限らず、二列以上であってもよい。記録ヘッド２７は、電圧をかけて圧電素子（ピエゾ素子）を変形させ、インクを吐出させるピエゾ方式であってもよいし、インクに熱を加え、発生した泡によりインクを押し出し、吐出させるサーマル方式であってもよい。
【００２７】
記録ヘッド駆動回路２８は、印刷を行うための印字データと印字タイミングを指示する印字タイミング情報とを受け付ける。記録ヘッド駆動回路２８は、印字タイミング情報で指示された印字タイミングに従い、印字データに基づき媒体１２にインクの吐出を行うことができるように記録ヘッド２７の駆動制御を行う。記録ヘッド駆動回路２８は、その駆動制御を行うために、記録ヘッド２７を駆動するための駆動波形データを生成する。
【００２８】
通信I/F２２が、スマートデバイス１１から印刷ジョブ（画像データ）を受信すると、制御部２５が、２以上のセンサ２４からの入力情報を基に、記録ヘッド２７上の各ノズルの位置を算出する。受信した画像データは、メモリ２３に格納される。ユーザは、ハンドヘルドプリンタ１０を片手で持ち、それを自由に移動させて媒体１２上を走査するが、制御部２５は、その走査中、各ノズルの位置を算出し続ける。そして、制御部２５は、算出した位置に応じた所定領域の画像（周辺画像）のみをメモリ２３から取得する。
【００２９】
制御部２５は、取得した周辺画像を構成する画像要素の位置と算出した各ノズルの位置を比較し、１以上のノズルにつき許容誤差内であると判断した場合、該１以上のノズルに対する印字データを記録ヘッド駆動回路２８へ送る。記録ヘッド駆動回路２８は、記録ヘッド２７の駆動波形データを生成し、記録ヘッド２７は、その駆動波形データに従って該１以上のノズルからインクを吐出させ、印刷を行う。
【００３０】
図３を参照して、制御部２５の詳細な構成および機能について説明する。制御部２５は、SoC３０と、ASIC/FPGA４０とから構成される。SoC３０は、ハンドヘルドプリンタ１０全体の制御を行うCPU３１と、メモリ２３を制御するメモリコントローラ(CTL)３２と、センサ２４の位置や各ノズルの位置を算出する位置算出回路３３とを含む。これらは、バス３４に接続され、バス３４を介してデータ等のやりとりを行う。
【００３１】
ASIC/FPGA４０は、ナビゲーションセンサI/F４１と、タイミング生成回路４２と、記録ヘッド制御回路４３と、イメージRAM４４、DMAC(Direct Memory Access Controller)４５と、回転器４６と、割り込み回路４７とを含む。これらは、バス４８に接続され、バス４８を介してデータ等のやりとりを行う。なお、バス４８は、バス３４とも接続され、SoC３０とASIC/FPGA４０はこれらバス３４、４８を介してデータ等のやりとりを行う。
【００３２】
ナビゲーションセンサI/F４１は、センサ２４と通信し、センサ２４からの出力値であるdX、dYを受信し、その値を内部メモリである内部レジスタに格納する。タイミング生成回路４２は、センサ２４が光を照射し、媒体１２からの反射光をイメージデータとして取得するタイミングの情報を生成し、その情報をナビゲーションセンサI/F４１に通知する。すなわち、タイミング生成回路４２は、媒体１２を読み取るタイミングを指示する。また、タイミング生成回路４２は、記録ヘッド２７を駆動するタイミングの情報を生成し、その情報を記録ヘッド制御回路４３に通知する。すなわち、タイミング生成回路４２は、印刷を行うために複数のノズルからインクを吐出させるタイミングを指示する。
【００３３】
DMAC４５は、位置算出回路３３が算出した位置情報を基に、記録ヘッド２７が備える各ノズルの周辺画像の画像データをメモリ２３から読み出す。イメージRAM４４は、DMAC４５が読み出した周辺画像の画像データを一時的に格納する。回転器４６は、周辺画像を、ユーザにより指定されたヘッド位置や傾きに応じて回転させ、それを記録ヘッド制御回路４３へ出力する。回転器４６は、例えば、位置算出回路３３が位置座標を算出する際に算出した回転角度を取得し、その回転角度を用いて周辺画像を回転させることができる。
【００３４】
記録ヘッド制御回路４３は、上記の記録ヘッドを駆動するタイミングの情報から制御信号を生成し、回転器４６から出力された周辺画像の画像データを受け付け、どのノズルからインクを吐出させるか判断する。記録ヘッド制御回路４３は、判断結果およびタイミングの情報に応じて、インクを吐出させるノズルの情報、印字データを記録ヘッド駆動回路２８に出力する。
【００３５】
割り込み回路４７は、ナビゲーションセンサI/F４１がセンサ２４との通信を終了した際、SoC３０にその旨を通知し、また、エラー等のステータス情報を通知する。
【００３６】
次に、図４を参照して、スマートデバイス１１のハードウェア構成について説明する。スマートデバイス１１は、ハンドヘルドプリンタ１０と同様、ROM５０を備え、作業領域を提供するためにRAM５１を備える。また、スマートデバイス１１は、画像データや、画像データを開き、印刷指示するためのアプリケーションや、OS等を記憶するフラッシュメモリ等の読み書き可能な記憶装置５２を備える。
【００３７】
スマートデバイス１１は、記憶装置５２に記憶されたアプリケーションをRAM５１に読み出し実行するCPU５３を備え、さらに、画像を表示する表示装置５４、その画像の印刷指示を入力する入力装置５５を備える。なお、表示装置、入力装置は、別個の装置として構成されたものに限らず、これらの機能を備えるタッチパネルとされていてもよい。表示装置５４および入力装置５５は、入出力I/F５６と接続され、入出力I/F５６により表示や情報の入力が制御される。
【００３８】
また、スマートデバイス１１は、ハンドヘルドプリンタ１０と無線通信を行うために通信I/F５７を備える。ROM５０、RAM５１、記憶装置５２、CPU５３、入出力I/F５６、通信I/F５７は、バス５８に接続され、バス５８を介して互いにデータ等のやりとりを行う。
【００３９】
図５〜図７を参照して、媒体１２上に画像を形成する際のスマートデバイス側およびハンドヘルドプリンタ側の処理について説明する。まず、図５を参照して、スマートデバイス側の処理について説明する。ステップ５００から処理を開始し、ステップ５０１では、ユーザがスマートデバイス１１上で印刷するデータを選択し、印刷を指示し、印刷ジョブが実行されるのを待つ。
【００４０】
スマートデバイス１１は、アプリケーションを起動し、ユーザが選択する画像を表示させ、印刷の指示を受け付け、プリンタドライバにより印刷コマンドに変換し、印刷コマンドを送信して、印刷ジョブを実行することができる。スマートデバイス１１は、これに限られるものではなく、TIFF(Tag Image File Format)やJPEG(Joint Photographic Expert Group)等のデータ形式の画像データのまま送信して、印刷ジョブを実行することも可能である。
【００４１】
印刷ジョブが実行されると、ステップ５０２へ進み、印刷ジョブをハンドヘルドプリンタ１０に送信する。ユーザは、ハンドヘルドプリンタ１０を手に持ち、印刷したい媒体、例えばノート上で印刷開始位置として初期位置を決め、印刷開始ボタンを押下して、媒体上の平面をフリーハンド走査し、画像を形成していく。印刷ジョブが終了したところで、ステップ５０３へ進み、処理を終了する。
【００４２】
次に、図６および図７を参照して、ハンドヘルドプリンタ側の処理について説明する。ステップ６００で、ユーザがハンドヘルドプリンタ１０の電源ボタンを押下すると、ハンドヘルドプリンタ１０はそれを受け付け、電池やバッテリ等から電源を供給して起動し、処理を開始する。
【００４３】
ステップ６０１では、SoC３０が、ハンドヘルドプリンタ１０の初期化を行う。初期化では、センサ２４や各回路の立ち上げを行う。ステップ６０２では、初期化が完了するのを待ち、完了したところで、ステップ６０３へ進み、SoC３０がLEDを点灯させる。これにより、ユーザに対して、ハンドヘルドプリンタ１０の使用が可能になったことを知らせる。
【００４４】
ステップ６０４では、SoC３０が、スマートデバイス１１から印刷ジョブを受け付けたかどうか確認する。スマートデバイス１１から印刷ジョブを受け付けるまで、この処理を繰り返す。印刷ジョブを受け付けたところで、ステップ６０５へ進み、印刷ジョブに含まれる画像データの画像を読み込み、LEDを点滅させる。ステップ６０５では、印刷ジョブに印刷コマンドが含まれる場合、印刷コマンドから画像を生成した後、LEDを点滅させる。そして、ステップ６０６で印字開始ボタンが押下されるのを待つ。
【００４５】
ユーザがハンドヘルドプリンタ１０の印刷開始ボタンを押下したことを受けて、ステップ６０７で、SoC３０が、ユーザによりフリーハンド走査されるのを待つ。
【００４６】
フリーハンド走査が開始されると、ステップ６０８で、センサ２４がハンドヘルドプリンタ１０の現在位置を開始位置として検知し、その位置情報を取得し、ステップ６０９で、SoC３０が、ナビゲーションセンサI/F４１を介して、その位置情報を初期位置として内部メモリに格納する。
【００４７】
ステップ６１０では、ハンドヘルドプリンタ１０が備えるタイミング生成回路４２のカウンタにより時間を計測し、ステップ６１１で一定時間が経過するのを待つ。一定時間が経過したかどうかは、設定したセンサ２４への位置情報の取得タイミングに達したかどうかにより判断する。一定時間が経過し、現在位置を検知する時間に達した場合、ステップ６１２へ進み、センサ２４が現在位置を検知する。検知した位置の位置情報は、開始位置の位置情報と同様、SoC３０により取得され、内部メモリに格納される。
【００４８】
ハンドヘルドプリンタ１０のセンサ２４は、ユーザが指定した初期位置を検出し、続いて自動読み取りを行い、移動量（Δx、Δy）の算出を行い、一定時間間隔で算出した移動量をセンサ出力値として出力する。センサ出力値は、上記のように内部メモリに格納される。位置算出回路３３は、格納されたセンサ出力値に基づき、記録ヘッド２７の位置や回転角度を算出する。この位置は、二次元の位置座標として算出される。算出された記録ヘッド２７の位置や回転角度は、ASIC/FPGA４０に通知される。
【００４９】
図７に示すステップ６１３では、ASIC/FPGA４０が、算出された記録ヘッド２７の位置座標や回転角度、予め決まっているセンサ２４と記録ヘッド２７の組み付け位置の関係から、記録ヘッド２７上の各ノズルの位置座標を算出する。ステップ６１４では、各ノズルの位置座標を基に、各ノズル周辺の画データをメモリ２３からイメージRAM４４へ転送する。そして、回転器４６が、ユーザにより指定されたヘッド位置およびヘッドの傾きに応じて、その画データにおける周辺画像を回転させる。
【００５０】
ステップ６１５では、ASIC/FPGA４０が、転送された画データと算出された各ノズルの位置の座標を比較し、ステップ６１６で、設定した吐出条件を満たすか否かを判断する。吐出条件を満たすか否かは、各ノズルの位置が、画データの位置座標の許容誤差範囲内に入っているかどうかにより判断する。
【００５１】
ステップ６１６で吐出条件を満たさない場合、ステップ６１１へ戻り、満たす場合は、ステップ６１７へ進む。ステップ６１７では、インクを吐出させるために、記録ヘッド制御回路４３へ対応する画データを出力する。そして、ステップ６１８で、全データの吐出が完了または印字終了ボタンが押下されたか否かを判断する。
【００５２】
全データの吐出が完了していない場合、または印字終了ボタンが押下されていない場合、ステップ６１１へ戻り、媒体上に画を形成していく。一方、完了している場合、または押下された場合、ステップ６１９へ進む。ステップ６１９では、SoC３０が、LEDを点灯させ、印字完了をユーザに知らせ、ステップ６２０で処理を終了する。
【００５３】
上記の例では、SoC３０が、位置情報の格納やLEDの点灯等を実施し、ASIC/FPGA４０が、ノズルの位置座標の算出、座標の比較、吐出条件を満たすか否かの判断等を実施しているが、CPU性能やASIC/FPGAの回路規模等により、ASIC/FPGA４０が実施する処理の一部をSoC３０で実施する等、SoC３０とASIC/FPGA４０の役割の切り分けを変更してもよい。
【００５４】
ところで、印刷したい画像は、画像データとしてスマートデバイス１１に格納されているものであってもよいし、スマートデバイス１１と通信可能な他の機器から取得したものであってもよいが、図８に示すように、スマートデバイス１１で作成されたものであってもよい。
【００５５】
図８は、スマートデバイス１１で作成されたテキストデータを例示した図である。ユーザは、スマートデバイス１１に搭載されているアプリケーションを起動させ、そのアプリケーション上で印刷したいテキストデータを作成する。
【００５６】
スマートデバイス１１は、情報の入力と表示が可能なタッチパネルを備え、タッチパネルは、ユーザが入力するためのキーボード６０を表示し、キーボード６０を使用して入力された情報（テキスト）を表示画面６１上に表示する。以下、画像データをテキストデータとして説明するが、画像データは、画像のみからなるデータであってもよいし、画像とテキストの両方を含むデータであってもよい。
【００５７】
テキストデータは、英字、平仮名、カタカナ、漢字、数字等から構成される文字列のデータである。文字は、任意の文字サイズに設定されており、太文字や下線等の装飾を付けることができる。文字は、全てが同じ大きさ（サイズ）であってもよいし、異なるサイズであってもよい。ユーザは、キーボード６０を使用して文字を入力することができる。ユーザにより入力された文字列は、ユーザによる改行入力や設定された印字幅に到達することで自動的に改行され、複数の行の文字列からなるテキストデータとなり、印刷データとして保存される。
【００５８】
ユーザは、保存した印刷データをハンドヘルドプリンタ１０に送信して媒体上に印刷することができる。ハンドヘルドプリンタ１０は、印刷データを複数回に分けて印刷するが、図９を参照して、ノズルと１回に印字可能な領域について説明する。
【００５９】
ハンドヘルドプリンタ１０は、媒体１２に対向する面に記録ヘッド２７を備え、記録ヘッド２７上に複数のノズル７０が一列に配列するように並んでいる。図９では、ノズル７０が線状のものとして例示されている。ハンドヘルドプリンタ１０は、ユーザにより所定の方向（走査方向）に移動され、その移動に合わせてインクを吐出し、媒体１２上にテキストデータの一部を印字する。走査方向に対して垂直方向の最大の長さは、線状のノズル７０の長さ（ノズル高さ）に等しい。
【００６０】
このため、ノズル高さよりも、印刷データの方が大きい場合、印刷データをノズル高さに合わせて分割し、１回の移動で印字する各分割画像のデータ（パスデータ）を作成する。
【００６１】
図９に示す例では、２行分の横書きのテキストをノズル高さに合わせて縦方向に２つに分割し、２つのパスデータを作成し、各パスデータに基づき、テキストを印字している。
【００６２】
テキストの印字は、ハンドヘルドプリンタ１０を初期位置に配置し、初期位置から走査方向に移動させることにより、最初の行（１パス目）のテキストについて実施する。その後、初期位置からノズル高さ分だけ走査方向に対して垂直方向に移動させた位置を２パス目の開始位置とし、ハンドヘルドプリンタ１０をその開始位置から走査方向に移動させて、２パス目のテキストについて実施する。走査方向にまっすぐに移動させるため、定規等を使用してもよい。
【００６３】
ハンドヘルドプリンタ１０の１回の移動で印字可能な、走査方向に対して垂直方向の長さ（１パス高さ）は、図１０に示すように、ノズル高さから上下余白を引いた長さとして決定される。このため、１回の移動で印刷可能な領域は、１パスの高さと走査方向への印字領域の幅とから決定される。
【００６４】
上下余白は、ハンドヘルドプリンタ１０を手で操作する際に、パス毎の印字領域が重ならないようにする目的で設けられ、予め設定される。なお、パス毎の印字領域が重ならないように操作できれば、余白は設けなくてもよい。上下余白の長さ（量）は、0〜X（Xは0より大きい実数）mmとし、ユーザが変更可能とされていることが好ましい。
【００６５】
このように上下余白が設けられる場合、上下余白を考慮して、印刷データからいくつかのパスデータを生成する。
【００６６】
印刷データからいくつかのパスデータを作成する方法の一例を、図１１を参照して説明する。パスデータを作成する方法の最も簡単な方法が、１パスの高さで等分に分割する方法である。図１１（ａ）は、印刷データであるテキストデータの一例を示し、図１１（ｂ）は、そのテキストデータを１パスの高さで等分に分割し、パスデータを生成している。
【００６７】
図１１（ａ）に示すように横書きのテキストデータを縦方向に１パス高さで等分すると、図１１（ｂ）に示す５パス分のデータが生成される。図１１に示す例では、３パス目と４パス目のデータの境界に画像要素として「さしすせそ」の文字領域が存在するため、パスデータが生成されると、その文字領域が２つに分離することになる。
【００６８】
ハンドヘルドプリンタ１０で印字する場合、パス間に白スジや重なりが発生しやすいため、このパスデータで印字を行うと、「さしすせそ」の文字領域中に白スジや重なりが発生し、文字として認識しにくくなり、可読性が低下するおそれがある。
【００６９】
また、４パス目と５パス目の境界に「たちつてと」の文字領域が存在し、これについても同様の問題が発生する。
【００７０】
一方で、１パス目や２パス目では、文字領域とパスの境界が重なっていない、すなわち文字領域が２つに分離していないため、文字領域中に白スジや重なりが発生することはない。
【００７１】
そこで、このような白スジや重なりが発生しないようにパスデータを生成するデータ生成システムが実装される。データ生成システムは、図１２（ａ）、（ｂ）に示すように、ハンドヘルドプリンタ１０とスマートデバイス１１のいずれに実装されていてもよい。また、ハンドヘルドプリンタ１０やスマートデバイス１１のいずれか、またはその両方がアクセス可能な他の機器、例えばサーバ装置等に実装されていてもよい。
【００７２】
図１２（ａ）は、データ生成システムがスマートデバイス１１に実装される例を示し、図１２（ｂ）は、データ生成システムがハンドヘルドプリンタ１０に実装される例を示している。スマートデバイス１１とハンドヘルドプリンタ１０とは、コマンド用プロトコル１３やデータ用プロトコル１４を通じて通信を行い、印刷や装置の状態管理等を制御する。図１２（ａ）、（ｂ）に示すように、スマートデバイス１１は、概略的には、表示装置５４や入力装置５５等のユーザとの間で情報のやりとりするためのユーザインタフェース８０と、ROM５０、RAM５１、記憶装置５２、CPU５３等から構成される制御部８１とを含んで構成される。また、ハンドヘルドプリンタ１０は、概略的には、記録ヘッド制御回路４３等のデバイス制御部８２と、メモリ２３や制御部２５等から構成されるコントローラ８３とを含んで構成される。
【００７３】
データ生成システムがスマートデバイス１１に実装される場合、データ生成システムは、制御部８１により実現され、ユーザインタフェース８０から印刷データ８４を受け付け、パスデータ８５を生成する。一方、データ生成システムがハンドヘルドプリンタ１０に実装される場合、データ生成システムは、コントローラ８３により実現され、スマートデバイス１１から印刷データを取得し、パスデータ８５を生成する。
【００７４】
制御部８１は、記憶装置５２に記憶されたプログラムを、CPU５３が実行することによりデータ生成システムを構成する機能部を生成し、生成した機能部によりパスデータ８５を生成する。コントローラ８３は、メモリ２３に記憶されたプログラムを、制御部２５が実行することによりデータ生成システムを構成する機能部を生成し、生成した機能部によりパスデータ８５を生成する。ここでは、プログラムを実行することで機能部を生成しているが、機能部は、専用の回路等のハードウェアで構成されていてもよい。また、複数の機能部を含む場合は、その機能部の一部または全部が専用の回路等のハードウェアで構成されていてもよい。
【００７５】
図１２（ａ）に示す例では、スマートデバイス１１のユーザインタフェース８０により印刷データ８４が作成され、作成された印刷データ８４が制御部８１に渡される。制御部８１では、印刷データを解析し、パスデータ８５を生成する。制御部８１は、生成したパスデータ８５を、データ用プロトコル１４を通じてハンドヘルドプリンタ１０へ送信する。
【００７６】
ハンドヘルドプリンタ１０は、制御部２５によりスマートデバイス１１からパスデータ８５を受信し、記録ヘッド２８で出力するためのノズル形状に合わせたデータに加工し、デバイス制御部８２により加工されたデータに基づいてノズルからインクを吐出して印字を行う。
【００７７】
データ生成システムがスマートデバイス１１に実装される場合、ハンドヘルドプリンタ１０の構成を簡素化することができる。その一方で、スマートデバイス１１からハンドヘルドプリンタ１０へは、比較的容量の大きいデータで送信するので、通信速度が遅くなる。
【００７８】
図１２（ｂ）に示す例では、スマートデバイス１１のユーザインタフェース８０により印刷データ８４が作成され、作成された印刷データ８４が制御部８１に渡される。制御部８１は、印刷データ８４をそのまま、コマンド用プロトコル１３を通じてハンドヘルドプリンタ１０へ送信する。
【００７９】
ハンドヘルドプリンタ１０は、制御部２５によりスマートデバイス１１から印刷データ８４を受信し、印刷データ８４からパスデータ８５を生成し、記録ヘッド２７で出力するためのノズル形状に合わせたデータに加工し、デバイス制御部８２により加工されたデータに基づいてノズルからインクを吐出して印字を行う。
【００８０】
データ生成システムがハンドヘルドプリンタ１０に実装される場合、スマートデバイス１１からハンドヘルドプリンタ１０へは、パスデータ８５に比較して容量が小さい印刷データ８４で送信するので、通信速度が速く、通信時間を短縮することができる。その一方で、ハンドヘルドプリンタ１０でパスデータ８５を生成する必要があるので、ハンドヘルドプリンタ１０の負荷が大きくなる。
【００８１】
図１３を参照して、データ生成システムの機能構成について説明する。データ生成システムは、機能部として、少なくとも生成部９２を含み、そのほか、分割部９０、区分け部９１を含むことができる。分割部９０は、画像を構成する画像要素が所定の方向（走査方向）に対して垂直方向に分離しないように画像を複数の領域に分割する。具体的には、分割部９０は、テキストを構成する文字列の文字が垂直方向に分離しないように、テキストを複数の領域、例えば各行の文字列に分割する。
【００８２】
詳細に説明すると、分割部９０は、テキストデータを１文字ずつ読み込み、文字データを描画（レンダリング）する。分割部９０は、レンダリングする際、文字データに含まれるフォント情報を使用する。フォント情報は、どこが文字の画像部分で、どこが余白部分かを示す文字の画像部分と余白部分の情報を含み、レンダリングでは、余白部分を含めて１文字の画像を生成する。このようにして、分割部９０は、テキストデータの先頭の文字から最終の文字までレンダリングする。
【００８３】
テキストデータには、改行コードが含まれており、この改行コードにより文字列のどこまでが１行分かが分かる。このため、分割部９０は、レンダリングが終了したデータから改行コードを基に１行分の画像を切り出すことにより各行の文字列に分割する。
【００８４】
区分け部９１は、分割された各行の文字列の垂直方向の長さ、すなわち文字の高さ（パス高さ）と、１パス高さとに基づき、複数行の文字列を、１パスで印字する際の印刷範囲内に収まる最も多くの連続する行の文字列ごとに区分けする。これにより、１パスデータに含める行の文字列を決定する。
【００８５】
詳細に説明すると、区分け部９１は、分割された文字列を次の行の文字列と結合し、結合したときのパス高さが１パス高さに収まるかどうかを判定し、収まる場合、さらに次の行の文字列を結合し、同様に判定を行う。これを繰り返し、１パス高さに収まる最も多くの行の文字列を、１パスデータに含める行の文字列として決定する。
【００８６】
生成部９２は、各区分けされた行の文字列の情報を使用し、各パスデータを生成する。具体的には、生成部９２は、第２行目、第４行目、…で区分けした場合、第１行目と第２行目の文字列の情報を使用し、１つのパスデータを生成し、第３行目と第４行目の文字列の情報を使用し、１つのパスデータを生成する。生成したパスデータは、ハンドヘルドプリンタ１０が印字する際に使用される。
【００８７】
区分け部９１は、上記の１パスデータに含める行の文字列を決定するために、演算部９３、判定部９４、合成部９５を含む。演算部９３は、各行の文字の高さ、また、２以上の行の文字列を合成した場合の垂直方向の長さ（高さ）をパス高さとして算出する。判定部９４は、１パス高さに収まるように複数行の文字列を切り分けるため、演算部９３で算出されたパス高さが、１パス高さ以下かどうかを判定する。
【００８８】
算出されたパス高さが、１パス高さ以下の場合、その最後の行の文字列を追加しても１パス高さ以下に収まることから、合成部９５が、その最後の行の文字列を、それまでの行の文字列と合成し、１パスデータにその行を含める。一方、算出された高さが、１パス高さを超える場合、その最後の行の文字列を追加すると、１パス高さを超えることから、その最後の行の文字列を含めることなく、それまでの行の文字列により１パスデータを生成する。
【００８９】
演算部９３は、合成部９５により合成された、連続する行の文字列と、その次の行の文字列とを合成した場合のパス高さを算出し、判定部９４は、その算出されたパス高さが、１パス高さ以下かどうかを判定する。そして、１パス高さ以下の場合、合成部９５が当該次の行の文字列を合成する。これを繰り返すことで、１パスに含める行の文字列を決定する。
【００９０】
データ生成システムは、図１３に示す構成であってもよいが、図１４に示すように、さらに取得部９６、調整部９７、変換部９８を含むことができる。取得部９６は、画像の情報、文字コード、文字サイズ、フォントの種類等を含む印刷データ８４を取得する。画像の情報は、縦書きか横書きか、文字の開始位置、文字間や行間の間隔等の情報を含む。印刷データ８４からこれらの情報を得ることができるため、どの位置にどのサイズの画像を生成するかが一意に決まる。取得部９６は、印刷データ８４を、例えばユーザインタフェース８０から取得する。
【００９１】
調整部９７は、取得部９６が取得した印刷データ８４から画像の走査方向の長さ、すなわち画像幅を算出し、画像幅が印字領域の幅である１パスの幅より大きい場合、文字列の途中で改行を挿入する等して、１パスの幅以下になるように調整する。
【００９２】
変換部９８は、印刷データ８４に含まれる画像の情報、文字コード、文字サイズ、フォント等から画像へ変換するというレンダリング処理を行う。この変換部９８が変換した画像に基づき、演算部９３が文字高さや２以上の行の文字列を合成した場合のパス高さを算出することができる。
【００９３】
１行分の文字列は、テキストの改行コードを区切りとすることができる。なお、テキストではなく、画像の場合は、任意の縦サイズと幅として設定し、その幅を走査方向の区切りとすることができる。
【００９４】
画像を構成する各文字が２つに分離することなく１つのパスデータに含まれるように各パスデータを生成することができれば、特に分割部９０や区分け部９１を使用しなくてもよい。この場合、生成部９２が、画像を参照しながら、１パスに、複数の行の文字列を詰めて収めようとする際、当該複数の行のうちの１の行の文字列が１パス内に収まらない場合、当該１の行の文字列についてはそのパスから除いてパスデータを生成することができる。すなわち、生成部９２は、１パス高さに収まる１以上の行の文字列を切り出し、そのパスのパスデータを生成することができる。ちなみに、当該１の行の文字列については、当該１パスと隣り合う次のパスに入れ、当該１の行の文字列を含めて当該次のパスのパスデータを生成することができる。また、分割部９０を使用し、１行分の文字列に分割した後、生成部９２は、１パス高さに収まる１行分の文字列のデータを１パスデータとして生成してもよい。
【００９５】
上記のデータ生成システムにより生成されるパスデータについて、図１５〜図１７を参照して説明する。図１５および図１６は、横書きのテキストデータからパスデータを生成する例を、図１７は、縦書きのテキストデータからパスデータを生成する例をそれぞれ示す。なお、図１５では、どのようにパスデータが生成されるかを分かりやすくするため、生成途中のデータの一例も示している。この生成途中のデータは、文字サイズが異なる場合や、縦書きのテキストデータからパスデータを生成する場合の途中データと同様であるため、図１６、図１７では途中データは省略している。
【００９６】
図１５（ａ）は、テキストデータを示し、図１５（ｂ）は、生成途中データを示し、図１５（ｃ）は、生成されたパスデータを示す。テキストデータは、文字コード、文字サイズ、太字やアンダーライン等の装飾データ等から構成される文字データの集合である。データ生成システムは、テキストデータを上から下へ向けて順に解析する。解析には、上記のレンダリング処理やパス高さの算出等が含まれる。
【００９７】
１行に並ぶ文字列の文字は、図１６（ａ）に示すように、全てが同じサイズとは限らない。この場合、図１６（ａ）に示すように、１行分の文字列を構成する文字の文字高さのうち最大のものを、その行の高さとして決定する。
【００９８】
再び図１５を参照して、図１５（ｂ）に示すように１行目、２行目、…と高さを積算していく。積算する最初をM行目とし、積算途中の行をN行目とすると、M行目からN行目までの総和をパス高さとし、そのパス高さが１パス高さより大きくなった時点、図１５（ｂ）の破線で示す１パスデータに収まる範囲外となった時点で、M行目からN-1行目までを１パス分のデータとして生成する。
【００９９】
図１５を参照して、より具体的に説明すると、１パス目は、テキストデータの３行目を解析した時点で、１パス高さより、積算した高さの総和が大きくなる。すなわち、１行目の「ABCDEFGDEFJHI」と２行目の「JKLMNOPQOPQR」は破線で示す範囲内であるが、３行目の「01234567890」は破線で示す範囲外となる。このため、１行目と２行目を１パス目のパスデータとして生成する。他のパスに関しても同様の処理を行うことで、図１５（ｃ）に示すような６つのパスデータを生成することができる。これは、図１６（ｂ）に示すように、１行に並ぶ文字列の文字のサイズが異なる場合も同様である。
【０１００】
図１５（ｃ）、図１６（ｂ）に示すパスデータでは、例えば３パス目のパスデータの「かきくけこ」という文字列の下側に空白が入っているが、ハンドヘルドプリンタ１０では、パス間の上下方向の間隔は、ユーザが任意に変えることができるため、ユーザが目視で位置を合わせ、その位置から走査することで、テキストデータと同様の空白のない印刷結果を得ることができる。
【０１０１】
図１７（ａ）は、テキストデータを示し、図１７（ｂ）は、生成されたパスデータを示す。この場合、データ生成システムは、テキストデータの向かって右から左へ向けて順に解析する。
【０１０２】
１列に並ぶ文字列の文字は、全てが同じサイズとは限らないので、列の文字の幅のうち最大のものを、列の幅として決定する。そして、１列目、２列目、…と幅を積算していく。縦書きの場合と同様、幅の総和をパス高さとし、そのパス高さが１パス高さより大きくなった時点で、積算した最後の列の１つ前の列までを１パス分のデータとして生成する。これにより、図１７に示す例では、５つのパスデータが生成される。
【０１０３】
図１８を参照して、データ生成システムが行うパスデータを生成する処理の流れについて詳細に説明する。ステップ１８００から処理を開始し、ステップ１８０１では、印刷データを読み込む。ステップ１８０２では、印刷データから画像幅を算出する。画像幅が、ハンドヘルドプリンタ１０で出力する狙いの幅、すなわち１パスの幅より大きい場合、１パスの幅で改行を挿入し、１パスの幅に収まるサイズに調整する。この調整は、ユーザによりON/OFFが可能とされ、OFFの場合、何もすることなく、ステップ１８０３へ処理を進めることができる。
【０１０４】
ステップ１８０３では、１パス分のデータの生成を行うためのメモリ領域を確保し、１パス内でのレンダリング回数を制御変数として記録するために、メモリ領域と制御変数の初期化を行う。メモリ領域の初期化では、ノズル高さのドット数×印字幅のドット数分のメモリを空データとして確保する。制御変数の初期化では、これまでにカウントした回数を０にクリアする。
【０１０５】
ステップ１８０４では、複数行の文字列からなる印刷データを、文字列を構成する各文字が走査方向に対して垂直方向に分離しないように１行ごとに分割し、１行分を解析する。そして、その１行分の画像の情報、文字コード、文字サイズ、フォント等から画像へ変換するレンダリング処理を行う。レンダリングは、１パスのデータを生成する際に数回実施され、レンダリング回数をカウントし、制御変数Nとして保存する。
【０１０６】
ステップ１８０５では、ノズル高さをHi、余白領域の上側（上余白）の垂直方向の長さをMu、余白領域の下側（下余白）の垂直方向の長さをMlとし、式１により１パス高さHopを算出する。
【０１０７】
【数１】
2020042418.tif 000003
【０１０８】
ステップ１８０６では、ステップ１８０４でレンダリングした画像のうち、横書きの場合は文字高さ、縦書きの場合は文字幅、その他任意に設定した場合は設定した値をHとし、制御変数Nを用いて式２により、パス高さHpを算出する。
【０１０９】
【数２】
2020042418.tif 000004
【０１１０】
ステップ１８０７では、パス高さHpが１パス高さHop以下かどうかを判定する。HpがHopを超える場合は、ステップ１８０８へ進み、１パス高さに収まる最も多くの連続する領域、すなわちN-1行目までを１パス分のデータとして生成し、保存する。一方、HpがHop以下の場合は、ステップ１８０９へ進み、１行分の画像を合成する。メモリが空の場合、レンダリングした画像データを先頭アドレスから保存し、メモリに前行の画像データの終端アドレスの次のアドレスから保存する。このようにして、各行の画像データが連続するように配置する。これは、画像の連続した領域を１パスデータとして合成する場合の例であり、メモリの使用方法はハードウェアに依存する。このようにして合成処理が完了したところで、ステップ１８０４へ戻り、次の行の処理を行う。
【０１１１】
ステップ１８０８では、１パスデータを生成し、保存するが、レンダリング処理を実行し、合成しなかった行の画像データは、破棄される。例えば、N行目をレンダリングしたが、ステップ１８０７でHpがHopを超えるとして、合成しなかったN行目の画像データは、ここで破棄される。
【０１１２】
ステップ１８１０では、印刷データの終端に到達しているか、すなわち最終の行に対する処理が完了したかを判定する。到達している場合、ステップ１８１１へ進み、パスデータの生成を終了する。一方、到達していない場合、メモリを解放し、カウントして保存された制御変数をクリアし、初期値の０に戻すべく、ステップ１８０３へ戻る。そして、次の１パス分のデータの生成を実施する。なお、次の１パス分のデータの生成は、ステップ１８０８で破棄された行から開始する。上記の例では、N行目の画像データが破棄されているため、N行目から開始することになる。
【０１１３】
以上のように、パスデータを生成する際、画像を構成する文字等の画像要素が分離しそうな場合は、次のパスとして生成されるため、画像要素として認識できるように画像形成を行うことが可能となる。その結果、印刷された画像要素の品質低下を防ぐことができる。
【０１１４】
これまで本発明を、情報通信端末、画像形成システムおよびプログラムとして上述した実施の形態をもって説明してきた。しかしながら、本発明は上述した実施の形態に限定されるものではなく、他の実施の形態、追加、変更、削除など、当業者が想到することができる範囲内で変更することができるものである。また、いずれの態様においても本発明の作用・効果を奏する限り、本発明の範囲に含まれるものである。
【０１１５】
したがって、上記のプログラムが記録された記録媒体、上記のプログラムが格納され、ダウンロード要求を受けて提供するサーバ装置、データ生成方法、画像形成システム等も提供することができるものである。
【符号の説明】
【０１１６】
１０…ハンドヘルドプリンタ
１１…スマートデバイス
１２…媒体
１３…コマンド用プロトコル
１４…データ用プロトコル
２０…電源
２１…電源回路
２２…通信I/F
２３…メモリ
２４…センサ
２５…制御部
２６…OPU
２７…記録ヘッド
２８…記録ヘッド駆動回路
３０…SoC
３１…CPU
３２…メモリCTL
３３…位置算出回路
３４…バス
４０…ASIC/FPGA
４１…ナビゲーションセンサI/F
４２…タイミング生成回路
４３…記録ヘッド制御回路
４４…イメージRAM
４５…DMAC
４６…回転器
４７…割り込み回路
５０…ROM
５１…RAM
５２…記憶装置
５３…CPU
５４…表示装置
５５…入力装置
５６…入出力I/F
５７…通信I/F
５８…バス
６０…キーボート
６１…表示画面
７０…ノズル
８０…ユーザインタフェース
８１…制御部
８２…デバイス制御部
８３…コントローラ
８４…印刷データ
８５…パスデータ
９０…分割部
９１…区分け部
９２…生成部
９３…演算部
９４…判定部
９５…合成部
９６…取得部
９７…調整部
９８…変換部
【先行技術文献】
【特許文献】
【０１１７】
【特許文献１】特開２０１６−１１２７００号公報
【図１】
2020042418.tif 000005
【図２】
2020042418.tif 000006
【図３】
2020042418.tif 000007
【図４】
2020042418.tif 000008
【図５】
2020042418.tif 000009
【図６】
2020042418.tif 000010
【図７】
2020042418.tif 000011
【図８】
2020042418.tif 000012
【図９】
2020042418.tif 000013
【図１０】
2020042418.tif 000014
【図１１】
2020042418.tif 000015
【図１２】
2020042418.tif 000016
【図１３】
2020042418.tif 000017
【図１４】
2020042418.tif 000018
【図１５】
2020042418.tif 000019
【図１６】
2020042418.tif 000020
【図１７】
2020042418.tif 000021
【図１８】
2020042418.tif 000022