以下、本発明の実施形態について、図面を参照して説明する。なお、以下の説明において、図1の上側、下側、右斜め上側、左斜め下側、左斜め上側、及び、右斜め下側を、夫々、印刷装置1の前側、後側、上側、下側、左側、及び右側とする。
図1に示すように、印刷装置1は、ユーザが手で持って操作することが可能なハンドヘルド型の電子機器である。印刷装置1は、印刷媒体に複数のドットを形成させて印刷を行い、ラベルを作成することが可能な装置である。印刷装置1は、装置本体2及びカバー3を備える。装置本体2は、上下方向に長い略直方体形状を有する。装置本体2は、表示部4、キーボード5、カット操作レバー6、及び、タッチパネル7を有する。表示部4及びキーボード5は、装置本体2の前面に設けられ、カット操作レバー6は、装置本体2の左側面に設けられる。表示部4は、印刷対象の文字を表示可能な液晶ディスプレイである。タッチパネル7は、表示部4の表面に設けられる。キーボード5は、表示部4の下側に設けられる。キーボード5は、文字キー(文字、記号、数字等)及び機能キーを含む。カット操作レバー6は、押下されたことに応じて、カッタによってラベルを切断する。
装置本体2は、後側にカセット装着部(図示外)を備える。カセット装着部にはテープカセットを装着可能である。カバー3は、カセット装着部の後側に設けられる。カバー3は開閉可能である。カバー3は、閉じた状態でテープカセットを覆う。ユーザは、カバー3を開いた状態で、テープカセットを交換可能である。テープカセットは、インクリボンロール、基材テープロール、及び、カバーフィルムロールを備える。
印刷装置1は、テープカセットのインクリボンロール、基材テープロール、及び、カバーフィルムロールの夫々から、インクリボン、基材テープ、及び、カバーフィルムを引き出す。印刷装置1は、サーマルヘッド10(図2参照)によってインクリボンを加熱し、カバーフィルムに印刷を行う。印刷装置1は、印刷されたカバーフィルムに基材テープを貼付する。以上によって印刷装置1は、印刷されたカバーフィルム及び基材テープが貼付されたラベルを作成する。
図2を参照し、印刷装置1の電気的構成について説明する。印刷装置1は制御回路400を備える。制御回路400は、装置本体2(図1参)内に固定された制御基板上に形成される。制御回路400は、CPU401、ROM402、EEPROM403、RAM404、フラッシュROM405、及び、入出力インタフェイス410を含む。CPU401、ROM402、EEPROM403、RAM404、フラッシュROM405、及び、入出力インタフェイス410は、バス414を介して電気的に接続する。
CPU401は、印刷装置1全体を制御する。ROM402には、CPU401が実行可能なメイン処理(図5、図6参照)のプログラムを記憶する。CPU401は、ROM402に記憶されたプログラムに基づいて各種演算を行う。EEPROM403には、文字、記号、数字、及び、バーコード等を印刷するための印刷用ドットパターンデータが、書式やサイズ毎に分類され、コードデータに対応させて記憶されている。RAM404には、一時的なデータが記憶される。フラッシュROM405には、印刷データが記憶される。又、フラッシュROM405には、優先情報が記憶される。印刷データ及び優先情報の詳細は後述する。
入出力インタフェイス410には、キーボード5、タッチパネル7、駆動回路406、407、408、外部インタフェイス409が接続される。駆動回路406は、表示部4に画像を表示させるためのビデオRAM(図示外)を有し、表示部4の表示制御を行う。キーボード5は、選択されたキーの種別を示す情報を、入出力インタフェイス410に出力する。タッチパネル7は、接触された位置を示す座標情報を、入出力インタフェイス410に出力する。駆動回路407は、サーマルヘッド10の発熱素子を通電させる。駆動回路408は、モータ231、241を回転駆動する。モータ231はプラテンローラ23に接続する。プラテンローラ23は、モータ231が回転駆動することに応じて、カバーフィルム及びインクリボンをサーマルヘッド10に押し当てながら回転する。モータ241は押圧ローラ24に接続する。押圧ローラ24は、モータ241が回転駆動することに応じて、印刷されたカバーフィルムに基材テープを押し当てながら回転する。外部インタフェイス409は、外部機器9と通信を行うための通信ICである。外部機器9は、汎用のPCである。
印刷装置1のCPU401は、外部インタフェイス409を介して外部機器9から印刷データを受信した場合、フラッシュROM405に印刷データを記憶する。CPU401は、カバーフィルムに印刷する複数行分の文字列を、受信した印刷データに基づいて表示部4に表示させる。これによってCPU401は、印刷装置1によって印刷される複数行分の文字列を、印刷前にユーザに認識させる。又、CPU401は、複数行分の文字列を表示部4に表示させた状態で、キーボード5に対する入力操作を検出した場合、操作内容に応じて、表示された複数行分の文字列の印刷データを編集する。このためユーザは、印刷装置1を使用して印刷データを編集し、印刷装置1に印刷させることができる。なお、表示部4に一度に表示可能な文字列の行数及び文字数には制約がある。その理由は、印刷装置1は手で持って操作されることを前提としており、据え置き型の印刷装置と比較して大きさが小さいので、表示部4の解像度も低いためである。このため、複数行分の文字列の夫々の行の全ての文字を表示部4に一度に表示できない場合がある。
具体例を挙げて説明する。図3は、n行分の文字列45(nは1以上の整数)の印刷データを示す。夫々の文字列の文字数は8文字である。例えば、1番目の文字列は、「PRODA−01」である。CPU401は、n行分の文字列45のうちカバーフィルムに印刷する複数行分の文字列の開始行及び終了行を、ユーザに入力させる。CPU401は、開始行及び終了行が入力された場合、入力された開始行及び終了行によって特定される複数行分の文字列を表示部4に表示させる(図4参照、後述)。なお、n行分の文字列45は一例である。夫々の文字列に含まれる複数の文字は、図3で示される複数の文字以外であってもよい。又、夫々の文字列の文字数は8文字に限定されない。又、夫々の文字列の文字数は同一であってもよいし、相違してもよい。
図3のn行分の文字列45のうち3行目が開始行として入力され、5行目が終了行として入力された場合を例に挙げる。この場合、3行目〜5行目の文字列45Aが印刷対象となる。図4は、開始行(3行目)及び終了行(5行目)が入力された場合の表示部4を示す。表示部4には、文字列411、412、413(総称して、複数行分の文字列41ともいう。)、様式設定42、テープ長43、及び、仕切り線44が表示される。仕切り線44は、表示部4の上下略中央に、横方向に延びる。様式設定42及びテープ長43は、仕切り線44の上側に表示される。様式設定42は、書体421及び文字サイズ422を含む。文字サイズ422の図柄(Aが3つ重なった図柄)は、テープの幅にあわせて文字サイズが自動的に調整される動作モードであることを示している。テープ長43は、印刷装置1によって印刷されるテープの長さを示す。
複数行分の文字列41は、仕切り線44の下側に表示される。文字列411、412、413は、夫々、図3の3行目〜5行目の文字列45Aのうち、3行目の文字列451、4行目の文字列452、及び、5行目の文字列453に対応する。表示部4に一度に表示可能な文字列の最大の行数(以下、最大行数という。)は、3行である。従って、複数行分の文字列41の場合、文字列411、412、413は表示部4に一度に全て表示される。なお、1又は2行分の文字列がユーザによって選択された場合、表示部4には、1又は2行分の文字列が表示される。又、4行分以上の文字列がユーザによって選択された場合、表示部4には、4行分以上の文字列のうち3行分のみが表示される。この場合、ユーザは、キーボード5に入力操作を行うことによって、表示部4に表示される文字列の行を変更できる。又、表示部4に一度に表示可能な文字列の最大の文字数(以下、最大文字数という。)は、8文字である。従って、複数行分の文字列41の場合、文字列411、412、413の夫々の複数の文字は、表示部4に一度に全て表示される。なお、複数行分の文字列がユーザによって選択された場合、複数行分の文字列は、カバーフィルムに多段に印刷される。
図7のn行分の文字列46の印刷データが外部機器9から送信され、フラッシュROM405に記憶された場合を例に挙げる。n行分の文字列46の夫々の文字列の文字数は13文字であり、最大文字数(8文字)よりも大きい。この場合、CPU401は、開始行及び終了行が入力されたことに応じてn行分の文字列46のうち複数行分の文字列が選択された場合も、選択された複数行分の文字列の夫々の行の複数の文字を表示部4に一度に表示させることができない。この場合、CPU401は、後述するメイン処理(図5、図6参照)を実行することによって、ユーザによって選択された複数行分の文字列の夫々の行の複数の文字のうち一部を、第1キャラクタ「*」又は第2キャラクタ「…」に変換し、表示部4に表示させる。
なお、最大行数は3行に限定されず、1行、2行、4行以上であってもよい。最大文字数は13文字に限定されず、13行以外であってもよい。CPU401は、キーボード5に対する入力操作に応じて、最大行数及び最大文字数を切り替えてもよい。又、CPU401は、表示部4に表示される文字の大きさに応じて、最大行数及び最大文字数を切り替えてもよい。表示部4に表示された複数行分の文字列は、1行分ずつ複数回に分けてカバーフィルムに印刷されてもよい。
図5から図8を参照し、メイン処理について説明する。メイン処理は、外部機器9から送信された印刷データの受信が開始された場合に、ROM402に記憶されたプログラムをCPU401が実行することによって開始される。CPU401は、メイン処理の実行時、RAM404に記憶された変数Start、End、LstMxLg、DspLg、pos、C[1]、C[2]・・・C[LstMxLg]、OvrLgを使用する。変数Startは、入力された開始行が設定される。変数Endは、入力された終了行が設定される。変数LstMxLgは、開始行及び終了行の入力に応じて選択された複数行分の文字列の夫々の行の文字数のうち、最大の文字数が設定される。変数DspLgは、最大文字数「8」が設定される。変数C[1]、C[2]・・・C[LstMxLg]は、表示部4に表示される1行分の文字列を決定するときに、キャラクタ「*」「…」「@」「#」「+」の何れかが一時的に設定される。以下、変数C[1]、C[2]・・・C[LstMxLg]を総称して、変数C[]とも表記する。変数posは、変数C[]のインデックスである。変数OvrLgは、変数LstMxLgから変数DspLgを減算した算出結果が設定される。以下、n行分の文字列46(図7参照)の印刷データ、又は、n行分の文字列47(図8参照)の印刷データの受信が開始された場合を適宜例に挙げる。
図5に示すように、CPU401は、外部機器9から送信された印刷データを受信した場合、フラッシュROM405に印刷データを記憶する(S1)。CPU401は、フラッシュROM405に記憶した印刷データに基づいて印刷が可能なn行分の文字列のうち、印刷装置1に印刷させる複数行分の文字列の開始行及び終了行の入力が可能な画面を、表示部4に表示させる。CPU401は、開始行及び終了行を入力する操作を、キーボード5を介して検出したか判断する(S3)。CPU401は、開始行及び終了行を入力する操作を検出しないと判断した場合(S3:NO)、処理をS3に戻す。
CPU401は、開始行及び終了行を入力する操作を検出したと判断した場合(S3:YES)、入力された開始行の行番号を変数Startに設定し、入力された終了行の行番号を変数Endに設定する。CPU401は、フラッシュROM405に記憶した印刷データによって印刷可能なn行分の文字列46のうち、変数Startの行から、変数Endの行までの複数行分の文字列を、RAM404の作業領域にコピーする(S5)。以下、変数Startの行から、変数Endの行までの複数行分の文字列を、複数行分の選択文字列ともいう。CPU401は文字短縮処理を実行する(S7)。
以下、複数行分の選択文字列の夫々の行の文字数が同一である場合について説明する。しかしながら、本発明は本実施形態に限定されず、複数行分の選択文字列の夫々の行の文字数が異なっていてもよい。
図6を参照し、文字短縮処理について説明する。CPU401は、RAM404の作業領域にコピーした複数行分の選択文字列の夫々の行の文字数の最大値を、変数LstMxLgに設定する(S21)。CPU401は、変数LstMxLgの方が変数DspLgよりも大きいか判断する(S23)。変数LstMxLgが変数DspLg以下の場合、複数行分の選択文字列の夫々の行の複数の文字は、表示部4に一度に表示可能である。具体的には、例えば、図3のn行分の文字列45の印刷データが外部機器から送信されてフラッシュROM405に記憶され、開始行及び終了行が入力された場合、変数LstMxLg及び変数DspLgは何れも「8」となる。従って、n行分の文字列45の夫々の行の複数の文字は、全て、表示部4に一度に表示可能である。この場合、複数行分の選択文字列の夫々の行の複数の文字の一部分を変換して表示部4に表示させる必要はない。図6に示すように、CPU401は、変数LstMxLgの方が変数DspLgよりも大きくないと判断した場合(S23:NO)、文字列短縮処理を終了させ、処理をメイン処理(図5参照)に戻す。
一方、CPU401は、変数LstMxLgの方が変数DspLgよりも大きいと判断した場合(S23:YES)、複数行分の選択文字列の夫々の行の複数の文字を、表示部4に一度に表示することができない。具体的には、例えば、図7のn行分の文字列46の印刷データが外部機器から送信されてフラッシュROM405に記憶され、開始行及び終了行が入力された場合、変数LstMxLgは「13」となり、変数DspLg「8」よりも大きい。従って、n行分の文字列46の夫々の行の複数の文字の全てを表示部4に一度に表示させることができない。
CPU401は、変数posに「1」を設定する(S25)。CPU401は、変数C[]にキャラクタ「0」を設定する(S27)。CPU401は、変数posが変数LstMxLgよりも小さいか判断する(S29)。CPU401は、変数posが変数LstMxLgよりも小さいと判断した場合(S29:YES)、処理をS37に進める。
CPU401は、RAM404の作業領域に記憶した複数行分の選択文字列の夫々の行の先頭から変数pos番目の文字同士を比較し、文字が同一であるか判断する(S37)。CPU401は、先頭から変数pos番目の文字同士が同一であると判断した場合(S37:YES)、変数C[pos]にキャラクタ「@」を設定する(S39)。なお、キャラクタ「@」は、第1キャラクタ「*」に最終的に変換される可能性のあるキャラクタである。CPU401は処理をS43に進める。CPU401は、先頭から変数pos番目の文字同士が同一でないと判断した場合(S37:NO)、変数C[pos]にキャラクタ「#」を設定する(S41)。CPU401は処理をS43に進める。CPU401は、S43の処理によって、変数posに「1」を加算して更新する(S43)。CPU401は処理をS29に戻す。
図7を参照して具体的に説明する。n行分の文字列46の印刷データがフラッシュROM405に記憶された状態で、開始行「3」及び終了行「5」が入力され、3行分の文字列46A(3行目の文字列461、4行目の文字列462、5行目の文字列463)がRAM404の作業領域にコピーされた場合(S5)を例に挙げる。なおこの場合、変数LstMxLgは「13」であり(S21)、変数DspLgは「8」であるので(S23:YES)、S37〜S43の処理が実行される。3行目の文字列461、4行目の文字列462、及び5行目の文字列463は、1〜6番目(「PRODB−」)、8番目(「2」)、12番目(「0」)、及び13番目(「1」)の文字が同一であり(S37:YES)、7番目、9〜11番目の文字が異なる(S37:NO)。従って、変数C[1]、C[2]・・・C[13]には、「@@@@@@#@###@@」が設定される(S39、S41)。
図6に示すように、複数行分の選択文字列の夫々の行の複数の文字の比較処理が繰り返され、S43の処理によって変数posが更新される。複数行分の選択文字列の夫々の行の全ての文字の比較処理が終了した場合、変数posは変数LstMxLg以上になる。CPU401は、変数posが変数LstMxLgよりも小さくないと判断した場合(S29:NO)、変数LstMxLgから変数DspLgを減算した算出結果を、変数OvrLgに設定する(S31)。変数OvrLgは、複数行分の選択文字列を表示部4に表示しようとするときに、夫々の行の複数の文字のうち表示部4に表示できない文字数に相当する。
CPU401は、変数C[]に設定されたキャラクタ「@」のうち、インデックスの順に並べたときに2以上連続しないキャラクタ「@」を、キャラクタ「@」からキャラクタ「#」に変換する(S33)。この理由は、キャラクタ「@」が2以上連続しない場合、最終的にキャラクタ「@」が第1キャラクタ「*」に変換された場合でも、複数行分の文字列の夫々の行の文字数を削減できないためである。次に、CPU401は、変数C[]に設定されたキャラクタ「@」のうち、インデックスの順に並べたときに、変数OvrLg以上連続するキャラクタ「@」を、キャラクタ「@」からキャラクタ「+」に変換する(S35)。CPU401は処理をS45に進める。キャラクタ「+」は、第1キャラクタ「*」に最終的に変換される候補となるキャラクタである。
図7を参照して具体的に説明する。変数LstMxLgは「13」であり、変数DspLgは「8」であるので、変数OvrLgは「5」(=13−8)に設定される(S31)。変数C[1]、C[2]・・・C[13]の夫々に「@@@@@@#@###@@」が設定されているので、C[8]に設定されたキャラクタ「@」は2以上連続しない。従って、変数C[8]に設定されたキャラクタ「@」は、キャラクタ「#」に変換される(S33)。変数C[1]〜C[6]には、キャラクタ「@」が6つ連続して設定されている。連続するキャラクタ「@」の数「6」は、変数OvrLg「5」以上であるので、変数C[1]〜C[6]に設定されたキャラクタ「@」は、キャラクタ「+」に変換される(S35)。
図6に示すように、CPU401は、変数C[]に設定されたキャラクタをインデックスの順に並べたときに、キャラクタ「+」が、変数OvrLgに1加算した変数OvrLg+1以上連続するか判断する(S45)。CPU401は、変数OvrLg+1以上キャラクタ「+」が連続すると判断された場合(S45:YES)、末尾を優先することを示す優先情報がフラッシュROM405に記憶されているかを判断する(S47)。CPU401は、末尾を優先することを示す優先情報がフラッシュROM405に記憶されていると判断した場合(S47:YES)、キャラクタ「+」が設定された変数C[]のうち末尾に近い変数C[]から順に、変数OvrLg+1分抽出する。CPU401は、抽出した変数OvrLg+1分の変数C[]を1つにまとめ、設定されたキャラクタ「+」を第1キャラクタ「*」に変換する(S49)。CPU401は文字列短縮処理を終了させ、処理をメイン処理(図5参照)に戻す。
CPU401は、先頭を優先することを示す優先情報がフラッシュROM405に記憶されていると判断した場合(S47:NO)、キャラクタ「+」が設定された変数C[]のうち先頭に近い変数C[]から順に、変数OvrLg+1分抽出する。CPU401は、抽出した変数OvrLg+1分の変数C[]を1つにまとめ、設定されたキャラクタ「+」を第1キャラクタ「*」に変換する(S51)。CPU401は文字列短縮処理を終了させ、処理をメイン処理(図5参照)に戻す。
なお、S45の処理によってキャラクタ「@」が変数OvrLg+1以上連続するかを判断する理由は、キャラクタ「@」が変数OvrLg+1以上連続する場合にこれらをまとめて1つの第1キャラクタ「*」に最終的に変換することによって、複数行分の選択文字列の夫々の行の文字数を、変数OvrLg分少なくできるためである。複数行分の選択文字列の夫々の行の文字数を、変数OvrLg分少なくした場合、変換後の複数行分の選択文字列の夫々の行の文字数は、変数DspLgになるため、表示部4に一度に表示可能となる。
図7を参照して具体的に説明する。先頭を優先することを示す優先情報がフラッシュROM405に記憶されている場合を例に挙げる。変数OvrLgは「5」であるので、変数OvrLg+1は「6」である。変数C[1]〜C[6]に、変数OvrLg+1分連続するキャラクタ「+」が設定されており(S45:YES)、先頭を優先することを示す優先情報がフラッシュROM405に記憶されている(S47:NO)ので、変数C[1]〜C[6]が抽出される。抽出された変数C[1]〜C[6]は1つにまとめられ、設定されたキャラクタ「+」は第1キャラクタ「*」に変換される(S51)。
末尾を優先することを示す優先情報がフラッシュROM405に記憶されている場合(S47:YES)を例に挙げる。変数OvrLg+1分連続するキャラクタ「+」が設定された変数C[]が末尾から近い順に抽出された場合、先頭を優先することを示す優先情報がフラッシュROM405に設定されている場合と同じ変数C[1]〜C[6]が抽出される。従って、先頭を優先することを示す優先情報がフラッシュROM405に記憶されている場合と同様、変数C[1]〜C[6]は1つにまとめられ、キャラクタ「+」は第1キャラクタ「*」に変換される(S49)。
図6に示すように、CPU401は、変数C[]に設定されたキャラクタをインデックスの順に並べたときに、キャラクタ「+」が、変数OvrLg+1以上連続しないと判断した場合(S45:NO)、処理をS53に進める。なおこの場合、複数の連続するキャラクタ「+」を、1つの第1キャラクタ「*」に最終的に変換しても、複数行分の選択文字列の夫々の行の複数の文字数を、変数OvrLg分少なくできない。従って、変換後の複数行分の選択文字列の夫々の行の文字数は、変数DspLg以上になるため、表示部4に一度に表示できない。
CPU401は、末尾を優先することを示す優先情報がフラッシュROM405に記憶されているかを判断する(S53)。CPU401は、末尾を優先することを示す優先情報がフラッシュROM405に記憶されていると判断した場合(S53:YES)、変数C[]のうち末尾に近い変数C[]から順に、変数OvrLg+1分抽出する。CPU401は、抽出した変数OvrLg+1分の変数C[]を1つにまとめ、設定されたキャラクタを第2キャラクタ「…」に変換する(S55)。CPU401は文字列短縮処理を終了させ、処理をメイン処理(図5参照)に戻す。
CPU401は、先頭を優先することを示す優先情報がフラッシュROM405に記憶されていると判断した場合(S53:NO)、変数C[]のうち先頭に近い変数C[]から順に、変数OvrLg+1分抽出する。CPU401は、抽出した変数OvrLg+1分の変数C[]を1つにまとめ、設定されたキャラクタを第2キャラクタ「…」に変換する(S57)。CPU401は文字列短縮処理を終了させ、処理をメイン処理(図5参照)に戻す。
なお、S55及びS57の処理によって、変換された複数行分の選択文字列の夫々の行の文字数は変数DspLgになる。このため、変換された複数行分の選択文字列の夫々は、表示部4に一度に表示可能となる。
図8を参照して具体的に説明する。n行分の文字列47の印刷データがフラッシュROM405に記憶された状態で、開始行「2」及び終了行「4」が入力され、3行分の文字列47A(2行目の文字列471、3行目の文字列472、4行目の文字列473)がRAM404の作業領域にコピーされた場合(S5)を例に挙げる。なおこの場合、変数LstMxLgは「13」であり(S21)、変数DspLgは「8」であるので(S23:YES)、変数C[1]、C[2]・・・C[13]には、「@@@@#@#@###@@」が設定される(S39、S41)。変数OvrLgは「5」に設定される(S31)。変数C[6]、及び、変数C[8]に設定されたキャラクタ「@」は2以上連続しないので、キャラクタ「#」に変換される(S33)。変数C[1]〜C[4]には、キャラクタ「@」が4つ連続して設定され、変数C[12]〜C[13]には、キャラクタ「@」が2つ連続して設定されている。何れも、変数OvrLg「5」よりも小さいので、キャラクタ「@」はキャラクタ「+」に変換されない(S35)。
先頭を優先することを示す優先情報がフラッシュROM405に記憶されている場合を例に挙げる。変数OvrLgは「5」であるので、変数OvrLg+1は「6」である。変数C[]にキャラクタ「+」は設定されておらず(S45:NO)、先頭を優先することを示す優先情報がフラッシュROM405に記憶されている(S53:NO)ので、変数C[]のうち、変数OvrLg+1分の変数C[1]〜C[6]は1つにまとめられ、設定されたキャラクタは第2キャラクタ「…」に変換される(S55)。
なお、末尾を優先することを示す優先情報がフラッシュROM405に記憶されている場合(S53:YES)、変数C[]のうち末尾から近い順に6つ分の変数C[1]〜C[6]は1つにまとめられ、設定されたキャラクタは第2キャラクタ「…」に変換される(S57)。
図5に示すように、文字列短縮処理(S7)の終了後、CPU401は、RAM404の作業領域に記憶した複数行分の選択文字列の夫々に、変数C[]を適用することによって、複数行分の選択文字列の夫々の行の複数の文字の一部を、第1キャラクタ「*」又は第2キャラクタ「…」に変換する。具体的には次の通りである。CPU401は、変数C[]のうち、第1キャラクタ「*」を設定するために1つにまとめられた変数C[]のインデックスを抽出する。CPU401は、複数行分の選択文字列の夫々の行の複数の文字のうち、先頭からの順番が、抽出したインデックスと一致する複数の文字を1つにまとめ、1つの第1キャラクタ「*」に変換する。又、CPU401は、変数C[]のうち第2キャラクタ「…」を設定するために1つにまとめられた変数C[]のインデックスを抽出する。CPU401は、複数行分の選択文字列の夫々の行の複数の文字のうち、先頭からの順番が、抽出したインデックスと一致する複数の文字を1つにまとめ、1つの第2キャラクタ「…」に変換する。CPU401は、変換された複数行分の選択文字列を表示部4に表示させるための表示データを作成する(S9)。
図7を参照して具体的に説明する。1つにまとめられた変数C[1]〜C[6]に第1キャラクタ「*」が設定されているので、3行分の文字列46Aの夫々の行の文字列461、462、463の夫々の先頭から1〜6番目の文字は、1つにまとめられ、1つの第1キャラクタ「*」に変換される。例えば、3行目の文字列461の場合、「PRODA−1234501」のうち先頭から1〜6番目の文字「PRODA−」が1つにまとめられ、1つの第1キャラクタ「*」に変換される。結果、変換後の3行目の文字列461は、「*1234501」になる。4行目の文字列462、及び、5行目の文字列463についても同様である。
図8を参照して具体的に説明する。1つにまとめられた変数C[1]〜C[6]に第2キャラクタ「…」が設定されているので、3行分の文字列47Aの夫々の行の文字列471、472、473の夫々の先頭から1〜6番目の文字は、1つにまとめられ、1つの第2キャラクタ「…」に変換される。例えば、2行目の文字列471の場合、「PRODA−1234501」のうち先頭から1〜6番目の文字「PRODA−」が1つにまとめられ、1つの第2キャラクタ「…」に変換される。結果、変換後の2行目の文字列471は、「…1234501」になる。3行目の文字列472、及び、4行目の文字列473についても同様である。
CPU401は、作成した表示データに基づいて、変換された複数行分の選択文字列を表示部4に表示させる(S11)。例えば、図7に示すように、3行目の文字列461に対応する文字列481、4行目の文字列462に対応する文字列482、及び、5行目の文字列463に対応する文字列483を含む複数行分の文字列48が、表示部4に表示される。又、例えば、図8に示すように、2行目の文字列471に対応する文字列491、3行目の文字列472に対応する文字列492、及び、4行目の文字列473に対応する文字列493を含む複数行分の文字列49が、表示部4に表示される。何れの場合も、変換された複数行分の文字列の夫々の行の文字数は、変数DspLgと一致する。このため、変換された複数行分の文字列の夫々の行は、全て、表示部4に一度に表示される。CPU401はメイン処理を終了させる。
以上説明したように、印刷装置1のCPU401は、複数行分の選択文字列のうち、夫々の行の間で同一となる連続した複数の文字(以下、同一連続文字という。)を、1つの第1キャラクタ「*」に変換する(S49、S55)。CPU401は、変換後の複数行分の文字列を表示部4に表示させる(S11)。この場合、複数行分の選択文字列の夫々の行の文字数を、最大文字数に抑制できる。従って、CPU401は、表示部4の解像度が低く、文字数の大きい文字列を表示部4に一度に表示できない場合でも、文字数の多い文字列をユーザに良好に認識させることができる。なお、1つの第1キャラクタ「*」に変換された複数の文字は、複数行分の選択文字列の夫々の行の間で同一になる。従って、同一連続文字が1つの第1キャラクタ「*」に変換された場合でも、ユーザは、夫々の行の複数の文字の違いを適切に認識できる。従って、CPU401が、1つの第1キャラクタ「*」に変換したことによる文字列の認識性の低下を抑制できる。
CPU401は、変数LstMxLgの方が変数DspLgよりも大きい場合(S23:YES)、同一連続文字を、第1キャラクタ「*」又は第2キャラクタ「…」に変換する。これによって、CPU401は、複数行分の選択文字列の夫々の行の複数の文字の全てを表示部4に一度に表示できない場合に、同一連続文字を1つの第1キャラクタ「*」に変換できる。又、CPU401は、複数行分の選択文字列の夫々の行の複数の文字の全てを表示部4に表示できない場合、複数行分の選択文字列の夫々の行の複数の文字の一部分を、1つの第2キャラクタ「…」に変換できる。
CPU401は、同一連続文字を1つのキャラクタに変換しても、複数行分の選択文字列の夫々の行の複数の文字の全てを表示部4に一度に表示できない場合、複数行分の選択文字列の夫々の行の複数の文字の一部分を、第2キャラクタ「…」に変換する。これによって、ユーザは、複数行分の選択文字列の夫々の行の少なくとも一部分を認識できる。
CPU401は、同一連続文字の連続数が、変数OvrLg+1以上である場合(S45:YES)、同一連続文字のうち変数OvrLg+1分を、第1キャラクタ「*」に変換する(S49、S51)。この場合、変換後の複数行分の選択文字列の夫々の行の文字数は、変数DspLgと一致する。この場合、最大文字数分の文字列が表示部4に表示される。従って、CPU401は、表示部4に文字を最大限表示できるので、表示部4を効率的に使用して、変換後の複数行分の選択文字列を表示させることができる。
CPU401は、フラッシュROM405に記憶された優先情報に基づき、複数行分の選択文字列の夫々の行の複数の文字のうち先頭側を第1キャラクタ「*」又は第2キャラクタ「…」に変換するか、又は、末尾側を第1キャラクタ「*」又は第2キャラクタ「…」に変換するかを切り替えることができる。従って、ユーザは、表示部4に表示させる文字列の先頭側又は末尾側の何れかを優先的に変換させることができる。
S5の処理を行うCPU401は、本発明の「第1取得手段」の一例である。S37の処理を行うCPU401は、本発明の「第1判定手段」の一例である。S49、S51の処理を行うCPU401は、本発明の「第1変換手段」の一例である。S11の処理を行うCPU401は、本発明の「表示手段」の一例である。S45の処理を行うCPU401は、本発明の「第2判定手段」の一例である。S55、S57の処理を行うCPU401は、本発明の「第2変換手段」の一例である。S47の処理を行うCPU401は、本発明の「第3判定手段」の一例である。表示部4は本発明の「表示装置」の一例である。サーマルヘッド10は本発明の「印刷部」の一例である。
なお、本発明は上記実施形態に限定されず、種々の変更が可能である。上記実施形態では、表示部4に表示される1行分の文字列の文字数が最大文字数(変数DspLg)と一致するように、複数行分の選択文字列の夫々の行の複数の文字の一部分が第1キャラクタ「*」又は第2キャラクタ「…」に変換された。表示部4に表示される1行分の文字列の文字数は、最大文字数未満であってもよい。例えばCPU401は、同一連続文字の連続数が変数OvrLg+1以上の場合(S45:YES)、同一連続文字を全て1つにまとめ、第1キャラクタ「*」に変換してもよい。ここで、同一連続文字の連続数が変数OvrLg+1よりも大きい場合には、表示部4に表示される変換後の複数行分の選択文字列の夫々の行の文字数は、最大文字数よりも小さくなる。又、CPU401は、同一連続文字の連続数が変数OvrLg+1未満の場合(S45:NO)、変数OvrLg+1よりも大きい数分の文字を、第2キャラクタ「…」に変換してもよい。この場合も同様に、表示部4に表示される変換後の複数行分の選択文字列の夫々の行の文字数は、最大文字数よりも小さくなる。
2以上の第1キャラクタ「*」を含む、変換後の複数行分の選択文字列が作成され、表示部4に表示されてもよい。具体的には次の通りである。例えば図7において、CPU401は、変数C[1]〜C[6]を1つにまとめて第1キャラクタ「*」に変換し、且つ、変数C[12]、C[13]を1つにまとめて第1キャラクタ「*」に変換してもよい。この場合、変換後の複数行分の選択文字列の夫々の行には、2つの第1キャラクタ「*」が含まれる。なお、この場合、S45の処理において、同一連続文字の連続数が変数OvrLg以上であるか否かを判断してもよい。その理由は、変数C[12]、C[13]を1つにまとめて第1キャラクタ「*」に変換することによって、1行分の文字列の文字数は1削減されているので、S45の処理において、同一連続文字の連続数と比較する値を1増やして変数OvrLgとした場合でも、変換後の複数行分の選択文字列の夫々の行の複数の文字を全て表示部4に一度に表示させることができるためである。
CPU401は、変換後の複数行分の選択文字列の夫々の行の文字数が最大文字数以内となるように、同一連続文字を2以上の第1キャラクタ「*」に変換してもよい。具体的には、CPU401は、同一連続文字の連続数が変数OvrLg+X(Xは1以上の整数)以上の場合、同一連続文字を、X個の第1キャラクタ「*」に変換してもよい。変換後の複数行分の選択文字列の夫々の行に含まれる第2キャラクタ「…」は、文字列の中央に配置されてもよい。
CPU401は、S47又はS53の処理を行う場合、末尾を優先するか又は先頭を優先するかを選択可能な画面を、表示部4に表示させてもよい。CPU401は、キーボード5に対する入力操作に応じて、末尾を優先するか又は先頭を優先するかを判定してもよい。CPU401は、複数行分の選択文字列の夫々の行の文字数が最大文字数(変数DspLg)よりも大きいか否かに関わらず、夫々の行の複数の文字の一部分を第1キャラクタ「*」に変換し又は第2キャラクタ「…」に変換する処理を実行してもよい。
上記実施形態における印刷装置1は、サーマルヘッド10を備えない別の機器であってもよい。別の機器の例として、複合機、コピー機、FAX、スキャナ装置等であってもよい。別の機器のCPUは、メイン処理(図5、図6参照)を実行することによって、上記の表示処理を実行してもよい。