以下、図面を参照しながら本発明の実施の形態を説明する。
図1は、本実施の形態に係る文字データ処理装置の構成を示すブロック図である。本実施の形態では、文字データ処理装置としてのプリンタ1は例えばサーマルプリンタであるが、サーマルプリンタに限定されるものではなく、インクジェットプリンタやドットインパクトプリンタなどでもよい。
プリンタ1は、プリンタ1の動作全体を制御するコントローラ11と、各種データやプログラムを格納するメモリ12と、文字やイメージを用紙に印字する印字部13と、各種の設定情報(文字データの展開開始位置、展開終了位置及び拡大傾斜文字の回転角度など)や印字データを入力する操作部14と、各種設定に必要な情報や印字データを表示する表示部15と、外部端末2と接続するためのインターフェース(IF)16とを備えている。尚、外部端末2は、パソコン又は携帯端末などである。表示部15や操作部14は、外部端末2に設けられていてもよく、またプリンタ1が表示部15や操作部14を備えていなくてもよい。なお、拡大傾斜文字とは、斜め方向に展開され、且つ拡大された文字である。以下、傾斜処理のみが施された文字も含め「拡大傾斜文字」と総称することもある。
コントローラ11は、バス17を介してメモリ12、印字部13、操作部14、表示部15及びIF16に接続されている。印字部13はサーマルヘッドやプラテンローラなどを備えている。操作部14は、ボタン、入力キー又はタッチパネルなどで備えている。表示部15は、例えば液晶ディスプレイである。IF16は、例えばシリアルインターフェース、USB(Universal Serial Bus)インターフェース又はネットワークインタフェースである。本実施の形態では、操作部14を使って各種の設定情報や印字データを入力できるが、各種の設定情報や印字データは外部端末2から入力されてもよい。
尚、本実施の形態では、文字や文字データは、プリンタ1のフォントメモリ12aに登録されている書体データ(文字、数字、記号及び図形などを含む)である。
図2は、文字の拡大傾斜処理を示すフローチャートである。図3は、拡大傾斜処理が実行された場合の文字の変換状態を示す図である。図4(A),(B)は、間引き処理が実行された場合の文字の変換状態を示す図である。図5は、テキストデータの背景に拡大傾斜文字が合成された状態を示す図である。なお、文字の拡大傾斜処理は外部端末2で実行し、処理後の文字パターンをプリンタ1に送信して印字させる対応でもよい。
まず、コントローラ11は、印字データの各文字を拡大傾斜文字に展開するための拡大傾斜文字設定が操作部14又は外部端末2から入力されているか否かを判定する(S51)。拡大傾斜文字設定が入力されていない場合には(S51でNO)、コントローラ11は拡大傾斜処理を行うことなく印字部13に印字データを印字させる(S56)。拡大傾斜文字設定が入力されている場合には(S51でYES)、コントローラ11は処理対象の各文字を拡大傾斜文字に展開する拡大傾斜処理を実行する(S52)。拡大傾斜処理が実行されると、例えば、図3に示すように、文字「A」が斜め方向に傾けられて拡大された文字「A」に変換される。尚、拡大傾斜処理の詳細については後述する。
次に、コントローラ11は、拡大傾斜文字を通常の印字よりも薄く印字される薄文字に展開するための薄文字設定が操作部14又は外部端末2から入力されているか否かを判定する(S53)。薄文字設定が入力されている場合には(S53でYES)、コントローラ11は拡大傾斜文字を薄文字に展開するために文字パターンを構成するドットの間引き処理を実行する(S54)。
間引き処理では、例えば、図4(A)に示すように拡大傾斜文字「A」を構成するドット列が間引かれ、間引き対象の列にある黒ドットが白ドットに変換される。ここでは、1列毎にドット列を間引く間引きパターンが使用され、黒ドットが1列毎に白に変換されている。あるいは、図4(B)に示すように拡大傾斜文字「A」を構成するドット行が間引かれる。ここでは、1行毎にドット行を間引く間引きパターンが使用され、黒ドットが1行毎に白に変換される。尚、市松模様の間引きパターン又は所定の形状の間引きパターンを利用して間引き処理を実行してもよい。間引き処理により拡大傾斜文字を構成する黒ドット数が減少するので、全体として拡大傾斜文字の色が薄くなる。尚、等倍でフォントを間引くと、フォント構成が崩れ、文字判読ができなくなる可能性があるため、斜めフォント展開時はデータを拡大して斜めに展開し、その後間引き処理を実行している(図2のS52,S54参照)。
次に、コントローラ11は、テキストデータの背景に拡大傾斜文字を合成する(S55)。コントローラ11は、テキストデータ及び拡大傾斜文字をドット毎にOR合成し、メモリ12内の印字データ展開用のバッファ領域に拡大傾斜文字とテキストデータとを展開する。S55の合成処理が実行されると、例えば図5に示すように、テキストデータ201(「2017/1/1 セール情報」)の背景に拡大傾斜文字200(「HAHA」)が合成される。その後、コントローラ11は、合成された印字データを印字部13に印字させ(S56)、本処理を終了する。
図6は、各種の設定情報の設定画面の一例を示す図である。図7(A),(B)は、拡大傾斜文字の展開順番、展開方向及び展開位置の例を示す図である。
図6の設定画面20は、表示部15又は外部端末2に表示される。設定画面20では、例えば拡大サイズ21、傾斜角度22、濃度23、展開方向24、展開角度25、展開開始位置26及び展開終了位置27が設定される。拡大サイズ21は拡大傾斜文字の拡大後のドットサイズを示し、例えば24×24ドットなどの値が入力される。傾斜角度22は水平方向を基準とした拡大傾斜文字の回転角度を示し、例えば、+45度、−45度などの値が入力される。角度の+/−は、水平方向に対して反時計回り/時計回りを示す。傾斜角度22は例えば5度単位で設定可能である。濃度23は間引き処理による拡大傾斜文字の濃度を示し、例えば1〜10のいずれかの値が入力される。濃度23の数値が小さくなると拡大傾斜文字の濃度が低下し、濃度23の数値が大きくなると拡大傾斜文字の濃度が増加する。
展開方向24は拡大傾斜文字の展開方向を示し、例えば、「左下→右上」、「左上→右下」、「右下→左上」、「右上→左下」などの方向が設定される。図7(A)及び(B)では、文字「1」〜「11」を印字領域に展開する際の形態を示している。展開方向24として「左下→右上」の方向が設定された場合には、図7(A)に示すように各拡大傾斜文字が用紙の左下から右上に印字されるようにバッファに展開される。図7(A)において、「1」〜「11」はそれぞれ拡大傾斜文字の1文字を示している。この場合、拡大傾斜文字は「1」から順番に「左下→右上」の方向に展開される。拡大傾斜文字が「1」から順番に「5」まで展開されると、拡大傾斜文字「6」は印字領域(用紙幅)を超えるため自動改行されて「1」の下に配置される。つまり、拡大傾斜文字が印字領域を超える場合には自動改行が実行され、印字展開位置が更新される。
また、展開方向24として「左上→右下」の方向が設定された場合には、図7(B)に示すように拡大傾斜文字が左上から右下に印字されるようにバッファに展開される。図7(B)では拡大傾斜文字は「1」から順番に「左上→右下」の方向に展開される。拡大傾斜文字が「1」から順番に「5」まで展開されると、拡大傾斜文字「6」は用紙幅を超えるため自動改行されて「1」の下に配置される。
展開角度25は、用紙幅方向に対する拡大傾斜文字の展開方向の角度を示す。展開角度25を+45度に設定すると、図7(A)に示すように拡大傾斜文字が右上がりに45度傾斜してバッファに展開される。展開角度25を−30度に設定すると、図7(B)に示すように拡大傾斜文字が右下がりに35度傾斜してバッファに展開される。
展開開始位置26は図7(A),(B)の拡大傾斜文字「1」の展開位置を示し、展開終了位置27は図7(A),(B)の拡大傾斜文字「11」の展開位置を示す。
以下、拡大傾斜処理について説明する。
図8(A)は、16(行)×8(列)ドットで構成された文字の一例を示す図である。図8(B)は、図8(A)の文字を+45度回転させた例を示す図である。図8(C)は、図8(A)の文字を−45度回転させた例を示す図である。図8(B)及び図8(C)は、図8(A)の文字を回転させる際に用いられるメモリ12の領域を示している。文字を45度回転させることにより図8(B)及び図8(C)の文字パターンの印字サイズは拡大しており、拡大率は約1.41倍(√2倍)である。m(行)×n(列)ドットで構成された文字を45度回転して展開するのに必要な領域は(m+n−1)×(m+n−1)である。従って、図8(B)及び図8(C)の文字パターンを展開している領域は23×23である。
図9(A)は、図8(A)の文字の1行目及び2行目のドットを示す図である。図9(B)は、図8(A)の文字の1行目のドットが+45度方向に展開された状態を示す図である。図9(C)は、図8(A)の文字の2行目のドットが+45度方向に展開された状態を示す図である。図9(D)は、+45度方向に展開された1行目及び2行目のドット間に発生する新たなドットの例を示す図である。なお、図9(B)乃至図9(D)はそれぞれ図8(B)の一部分を示している。
図9(A)において、「0x80」〜「0x01」は各ドットのアドレス、即ち文字パターンを格納しているフォントメモリ12aのアドレスを示す。文字を右上がり方向に展開する場合、コントローラ11は文字を構成するデータ(以下、文字データという)を1行目の「0x80」のドットから順番に右方向にフォントメモリ12aから読み出す。1行目の文字データの読み出しが終わると、2行目の「0x80」のドットから順番に右方向に文字データをフォントメモリ12aから読み出す。
文字パターンを展開するバッファの書き込みアドレスの基準値(以下、基準書き込みアドレスという)は、文字パターンを展開するバッファの四隅のドットのうちいずれか1つのドットに対応するアドレスであり、図9(B)の例では左上のドット(P1)のアドレスである。ここで、文字パターンを展開するバッファは例えばメモリ12内の一部の領域である。読みだした文字パターンの列方向のドット数は8なので、文字パターンを+45度回転させる場合、コントローラ11は図9(B)に示すように、バッファの書き込みアドレスをP1から7ドット下げた8ドット目のP2に、図9(A)の1行目の「0x80」の文字データを書き込む。これにより、図9(B)の図示左下の領域に文字データが書き込まれる。次に、コントローラ11は、次ドットがP2に書き込まれたドットに対して+45度の位置に来るように、バッファの書き込みアドレスを1ドット上且つ1ドット右に移行するように更新する。つまり、次のドットの書き込みアドレスをP2からP3に更新する。そして、図9(A)の1行目の「0x40」の文字データをフォントメモリ12aから読み出し、P3に書き込む。
このように、コントローラ11は基準書き込みアドレスから7ドット下げたバッファのアドレスに文字データを書き込み、文字データを1ドット書き込む度に、書き込みアドレスを1ドット上及び1ドット右に移行し、且つフォントメモリ12aからの文字データの読み出しアドレスを1ドット右に移行する。これにより、図9(B)のA方向に沿って+45度傾斜した1行目の8ドットがバッファに書き込まれる。
次に、コントローラ11は、基準書き込みアドレスをP1から1ドット下及び1ドット右に移行し、文字データの読み出しアドレスを2行目に移行する。そして、1行目と同様に、コントローラ11は、文字データを1ドット書き込む度に、書き込みアドレスを1ドット上及び1ドット右に移行し且つフォントメモリ12aからの文字データの読み出しアドレスを1ドット右に移行する。これにより、図9(C)に示すように2行目を構成する8ドットがバッファに書き込まれる。
ここで、文字を回転又は傾斜させたことで、図9(C)の領域R1に示すように、回転後の文字データの1行目と2行目との間に新たなドットが生じる。新たなドットに対応する書き込みデータは図8(A)の文字パターンには存在しないため、拡大傾斜文字内に白ドットが発生し、拡大傾斜文字の見栄えが悪化する。
このため、コントローラ11は、拡大傾斜処理後の黒ドットによって上下左右が囲まれた白ドットを黒ドットに変換する。例えば、図9(C)のP8の白ドットはP2、P3、P5及びP6の黒ドットによって上下左右が囲まれているので、コントローラ11はP8の白ドットを図9(D)に示すように黒ドットに変換する。一方、図9(C)のP9の白ドットは、P3、P4、P6及びP7のドットによって上下左右が囲まれているが、P4及びP7のドットが白ドットなので、黒ドットに変換されない。
コントローラ11は、3行目の文字データから最終行の文字データのバッファへの書き込みが終わるまで、上記処理を繰り返す。
以上の処理により、図8(B)に示すような、図8(A)の文字「H」を+45度回転させた拡大傾斜文字が作成される。
次に、文字を+30度回転させる例を説明する。
図10(A)は、図8(A)の文字の1行目のドットが+30度方向に展開される例を示す図である。図10(B)は、図8(A)の文字の2行目のドットが+30度方向に展開される例を示す図である。図10(C)は、+30度方向に展開された1行目及び2行目のドット間に発生する新たなドットの例を示す図である。
コントローラ11が文字データを読み出す位置や順番については、図9(A)で説明した通りである。基準書き込みアドレスは、図10(A)の左上のドットP1のアドレスである。
まず、コントローラ11は、図10(A)に示すように書き込みアドレスをP1から4ドット下げる。文字を0度以上45度以下で回転させる場合に基準書き込みアドレスから下げるドット数は、以下の式で算出される。
N=W−(45−V)/5−1
ここで、Nは基準書き込みアドレスから下げるドット数を示す。Wは、文字を構成するドットの横サイズを示す。図8(A)の場合、Wは8である。Vは、回転角度を示す。この場合、Vは30である。
図8(A)の文字を+30度回転させる場合は、Nは4になる(N=8−(45−30)/5−1=4)。また、図8(A)の文字を+45度回転させる場合は、Nは7になる(N=8−0−1=7)。尚、Nが0以下になる場合には、設定された回転ができない。
コントローラ11は、書き込みアドレスをP1から4ドット下げた、図10(A)左下の領域であるP11に図9(A)の1行目の「0x80」の文字データを書き込む。次に、コントローラ11は、1ドット右に移行するように、次ドットの書き込みアドレスをP11からP12に更新する。そして、図9(A)の1行目の「0x40」の文字データをフォントメモリ12aから読み出し、P12に書き込む。
次に、コントローラ11は、1ドット上及び1ドット右に移行するように、書き込みアドレスをP12からP13に更新する。そして、図9(A)の1行目の「0x20」の文字データをフォントメモリ12aから読み出し、P13に書き込む。次に、コントローラ11はバッファへの書き込み位置が1ドット右に移行するように、書き込みアドレスをP13からP14に更新する。そして、図9(A)の1行目の「0x10」の文字データを読み出し、P14に書き込む。次に、コントローラ11は、書き込みアドレスをP14から1ドット上及び1ドット右に移行したP15に更新する。そして、図9(A)の1行目の「0x08」の文字データをフォントメモリ12aから読み出し、P15に書き込む。
このように、コントローラ11は、基準書き込みアドレスから4ドット下げて文字データの書き込みを開始し、文字データを1ドットバッファに書き込む度に、書き込みアドレスを1ドット右に移行し、且つフォントメモリ12aからの文字データの読み出しアドレスを1ドット右に移行する。さらに文字データを2ドットバッファに書き込む度に、書き込みアドレスを1ドット上に移行する。これにより、図10(A)のB方向に沿って+30度傾斜した文字データの1行目を構成するドットがバッファに書き込まれる。
次に、コントローラ11は、基準書き込みアドレスをP1から1ドット下及び1ドット右に移行し、文字データの読み出しアドレスを2行目に移行する。そして、1行目と同様に、コントローラ11は、移行した基準書き込みアドレスから4ドット下げて2行目の「0x08」の文字データをバッファに書き込み、文字データを1ドットバッファに書き込む度に、書き込みアドレスを1ドット右に移行し、且つフォントメモリ12aからの文字データの読み出しアドレスを1ドット右に移行する。さらに文字データを2ドット書き込む度に、書き込みアドレスを1ドット上に移行する。これにより、図10(B)に示すように文字データの2行目が書き込まれる。
ここで、文字を回転又は傾斜させたことで、図10(B)に示すように文字データの1行目と2行目との間に新たなドットが生じる。P51〜P53はこのように生じる新たなドットである。新たなドットに対応する書き込みデータは存在しないため、拡大傾斜文字内に白ドットが発生し、拡大傾斜文字の見栄えが悪化する。
このため、コントローラ11は、拡大傾斜処理後の黒ドットによって上下左右が囲まれた白ドットを黒ドットに変換する。図10(B)のP53の白ドットはP16、P17、P26及びP27の黒ドットによって上下左右が囲まれているので、コントローラ11はP53の白ドットを図10(C)に示すように黒ドットに変換する。一方、図10(B)のP51の白ドットは、P13及びP23のドットが白ドットなので、黒ドットに変換されない。
コントローラ11は、文字の3行目のデータから最終行のデータの書き込みが終わるまで、上記処理を繰り返す。
以上の処理により、図8(A)の文字「H」を+30度回転させた拡大傾斜文字が作成される。
次に、文字を+60度回転させて拡大する例を説明する。
図11(A)は、図8(A)の文字の1行目のドットが+60度方向に展開される例を示す図である。図11(B)は、図8(A)の文字の2行目のドットが+60度方向に展開される例を示す図である。図11(C)は、+60度方向に展開された1行目及び2行目のドット間に発生する新たなドットの例を示す図である。
コントローラ11が文字データを読み出す位置や順番については、図9(A)で説明した通りである。基準書き込みアドレスは、図11(A)の左上のドットP1のアドレスである。
まず、コントローラ11は、図11(A)に示すように書き込みアドレスをP1から14ドット下げる。文字を45度より大きく90度以下で回転させる場合、基準書き込みアドレスから下げるドット数は以下の式で算出される。
N=W+(V−45)/5×2
ここで、Nは基準書き込みアドレスから下げるドット数を示す。Wは文字を構成するドットの横サイズを示す。図8(A)の文字の場合、Wは8である。Vは、回転角度を示す。この場合、Vは60である。図8(A)の文字を+60度回転させる場合は、Nは14になる(N=8+(60−45)/5×2=14)。
コントローラ11は、書き込みアドレスをP1から14ドット下げ、図11(A)の左下のP31に図9(A)の1行目の「0x80」の文字データを書き込む。次に、コントローラ11は、次ドットをP31から+60度の位置に書き込むために、書き込みアドレスを2ドット上及び1ドット右に移行するように、P31からP32に更新する。そして、図9(A)の1行目の「0x40」の文字データをフォントメモリ12aから読み出し、P32に書き込む。
このように、コントローラ11は、基準書き込みアドレスから14ドット下げて、文字データを1ドット書き込む度に書き込みアドレスを2ドット上及び1ドット右に移行し、且つフォントメモリ12aからの文字データの読み出しアドレスを1ドット右に移行する。これにより、図11(A)のC方向に沿って+60度傾斜した文字データの1行目が書き込まれる。
次に、コントローラ11は、基準書き込みアドレスをP1から1ドット下及び1ドット右に移行し、フォントメモリ12aからの文字データの読み出しアドレスを2行目に移行する。そして、1行目と同様に、コントローラ11は、移行後の基準書き込みアドレスから14ドット下げたP41に2行目の「0x80」の文字データを書き込み、文字データを1ドット書き込む度に、書き込みアドレスを2ドット上及び1ドット右に移行し且つフォントメモリ12aからの文字データの読み出しアドレスを1ドット右に移行する。これにより、図11(B)に示すように文字データの2行目が書き込まれる。
ここで、文字を回転又は傾斜させたことで、図11(B)に示すように、文字データの1行目と2行目との間に新たなドットP61〜P64が生じる。
コントローラ11は、拡大傾斜処理後の黒ドットによって上下左右が囲まれた白ドットを黒ドットに変換する。図11(B)のP61及びP62の2つの白ドットはP31、P32、P41及びP42の黒ドットによって上下左右が囲まれているので、コントローラ11はP61及びP62の2つの白ドットを図11(C)に示すように黒ドットに変換する。一方、図10(B)のP63及びP64の白ドットは、P33及びP43のドットが白ドットなので黒ドットに変換されない。
コントローラ11は、3行目の文字データから最終行の文字データの書き込みが終わるまで、上記処理を繰り返す。
以上の処理により、図8(A)の文字「H」を+60度回転させた拡大傾斜文字が作成される。
次に、文字を−45度回転させる例を説明する。
図12(A)は、図8(A)の文字の1行目及び2行目のドットを示す図である。図12(B)は、図8(A)の文字の1行目のドットが−45度方向に展開される例を示す図である。図12(C)は、図8(A)の文字の2行目のドットが−45度方向に展開される例を示す図である。図12(D)は、−45度方向に展開された1行目及び2行目のドット間に発生する新たなドットの例を示す図である。
図12(A)において、「0x80」〜「0x01」は、フォントメモリ12aに格納されている各ドットのアドレスを示す。文字を左上がり方向に展開する場合、上記の例とは逆に、コントローラ11はフォントメモリ12aから文字データを1行目の右側に位置する「0x01」のドットから順番に左方向に読み出し、バッファに書き込む。1行目の「0x80」の文字データの読み出しが終わると、2行目の「0x01」のドットから順番に左方向に読み出す。
通常時のバッファへのドット書き込みを開始する書き込みアドレスは、図8(C)の左上のドットのアドレスである。文字データを−45回転させる場合、バッファへは文字の右側のデータから書き込みを行うため、最初に、コントローラ11はバッファへの書き込み開始のアドレスを図8(C)の領域の右上に、つまり左上のドットから22ドット右に移行する。m(行)×n(列)ドットで構成された文字を−45度回転して展開するのに必要な領域は(m+n−1)×(m+n−1)であるため、右に移行するドット数は、(m+n−1)−1である。図8(C)の場合、右に移行するドット数は、22(=(16+8−1)−1)となる。従って、図8(C)の右上のドットのアドレスに書き込み開始のアドレスが移行する。尚、書き込みアドレスを右に移行させるドット数は文字サイズに応じて変更される。
そして、コントローラ11は、図8(C)の右上のドットのアドレス、つまり、図12(B)の右上のドットP70のアドレスを基準書き込みアドレスとする。コントローラ11は続いて、図12(B)に示すように書き込みアドレスをP70から7ドット下げて、P71に図12(A)の1行目の右端にある「0x01」の文字データを書き込む。これにより、図12(B)の右下に文字データが書き込まれる。次に、コントローラ11は、次ドットの書き込みアドレスを1ドット上且つ1ドット左に移行するように、P71からP72に更新する。そして、図12(A)の1行目の「0x01」の左隣の「0x02」の文字データをフォントメモリ12aから読み出し、P72に書き込む。
このように、コントローラ11は、基準書き込みアドレスから7ドット下げて、文字データを1ドット書き込む度に、書き込みアドレスを1ドット上及び1ドット左に移行し且つフォントメモリ12aからの文字データの読み出しアドレスを1ドット左に移行する。これにより、図12(B)のD方向に沿って文字データの1行目が書き込まれる。
次に、コントローラ11は、基準書き込みアドレスをP70から1ドット下及び1ドット左に移行し、フォントメモリ12aからの文字データの読み出しアドレスを2行目に移行する。そして、1行目と同様に、コントローラ11は、移行後の基準書き込みアドレスから7ドット下げて2行目のドット書き込みを開始し、文字データを1ドット書き込む度に、書き込みアドレスを1ドット上及び1ドット左に移行し且つフォントメモリ12aからの文字データの読み出しアドレスを1ドット左に移行する。これにより、図12(C)に示すように文字データの2行目が書き込まれる。
ここで、文字を回転又は傾斜させたことで、図12(C)の領域R2に示すように、文字データの1行目と2行目との間に新たなドットが生じる。
このため、コントローラ11は、拡大傾斜処理後の黒ドットによって上下左右が囲まれた白ドットを黒ドットに変換する。
図12(C)のP78の白ドットはP72、P73、P75及びP76の黒ドットによって上下左右が囲まれているので、コントローラ11はP78の白ドットを図12(D)に示すように黒ドットに変換する。一方、図12(C)のP79の白ドットはP74及びP77のドットが白ドットなので、黒ドットに変換されない。
コントローラ11は、3行目のデータから最終行のデータの書き込みが終わるまで、上記処理を繰り返す。
以上の処理により、図8(C)に示すような、図8(A)の文字「H」を−45度回転させた拡大傾斜文字が作成される。
図13は、文字を+30度、+45度又は+60度回転させる場合の拡大傾斜処理を示すフローチャートである。ここでは、文字が16(行)×8(列)ドットで構成されたことを前提としている。また、以下、拡大傾斜処理が行われた文字データを書き込む先のデータ領域は、拡大傾斜処理の開始前に初期化されているものとする。
まず、コントローラ11は基準書き込みアドレスからNドット下げた位置にバッファの書き込みアドレスを更新する(S1)。+30度の場合、Nドットは4ドットであり、+45度の場合、Nドットは7ドットであり、+60度の場合、Nドットは14ドットである。次に、コントローラ11は1ドット分の文字データをフォントメモリ12aから読み出し(S2)、読み出されたデータをS1で更新された書き込みアドレスに書き込む(S3)。尚、文字のサイズを拡大することによって文字を構成する線幅が増加する場合もあるので、文字の拡大サイズに応じて、フォントメモリ12aから読み出された1ドットを、S1で更新されたバッファの書き込みアドレスとこれに隣接する少なくとも1ドット分の書き込みアドレスとに同時に展開してもよい。
次に、コントローラ11はS3でデータが書き込まれたアドレスの左に隣接するアドレスに書き込まれているドットを囲む上下左右のドットが黒ドット(印字ドット)であるか否かを判定する(S4)。上下左右のドットが黒ドットである場合には(S4でYES)、コントローラ11はS3でデータが書き込まれたアドレスの左に隣接するアドレスに黒ドットデータを書き込み(S5)、回転角度に応じて書き込みアドレスを更新し、文字データの読み出しアドレスを1ドット右に移行する(S6)。+30度の回転の場合、S6の書き込みアドレスは、文字データを1ドット書き込む度に1ドット右に移行し、さらに文字データを2ドット書き込む度に1ドット上に移行する。+45度の回転の場合、S6の書き込みアドレスは、1ドット上及び1ドット右に移行する。+60度の回転の場合、S6の書き込みアドレスは、文字データを1ドット書き込む度に、2ドット上及び1ドット右に移行する。上下左右のドットの少なくともいずれか一つが黒ドットでない場合には(S4でNO)、そのままS6の処理に進む。
コントローラ11は1行目の文字データのフォントメモリ12aからの読み出しが完了したか否かを判定する(S7)。1行目の文字データの読み出しが完了していない場合には(S7でNO)、S2の処理に戻り、その行の文字データをS6で更新された書き込みアドレスに書き込む。
一方、1行目の文字データのフォントメモリ12aからの読み出しが完了してバッファに展開された場合には(S7でYES)、コントローラ11は基準書き込みアドレスを1ドット下及び1ドット右に移行する(S8)。次いで、コントローラ11は全ての行の文字データの読み出しが完了したか否かを判定する(S9)。全ての行の文字データの読み出しが完了していない場合には(S9でNO)、コントローラ11はデータの読み出しアドレスを次行の先頭の読み出しアドレスに移行し(S10)、S1の処理に戻る。全ての行の文字データの読み出しが完了した場合には(S9でYES)、本処理を終了する。
図14は、文字を−45度回転させる場合の拡大傾斜処理を示すフローチャートである。前提条件は図13と同じである。
まず、コントローラ11は、初期状態の書き込みアドレスを22ドット右に移行し、移行後の書き込みアドレスを基準書き込みアドレスとして設定する(S30)。尚、書き込みアドレスを右に移行させるドット数は22ドットに限定されるものではなく、文字の高さや幅及び文字の回転角度に応じて変更される。
コントローラ11は、基準書き込みアドレスから7ドット下げた位置にバッファの書き込みアドレスを更新する(S31)。次に、コントローラ11は1ドット分の文字データを読み出し(S32)、読み出された文字データを書き込みアドレスに書き込む(S33)。尚、文字のサイズを拡大することによって文字を構成する線幅が増加する場合もあるので、文字の拡大サイズに応じて、フォントメモリ12aから読み出された1ドットを、S31で更新されたバッファの書き込みアドレスとこれに隣接する少なくとも1ドット分の書き込みアドレスとに同時に展開してもよい。
次に、コントローラ11はS33で文字データが書き込まれたドットの右に隣接するドットを囲む上下左右のドットが黒ドットであるか否かを判定する(S34)。上下左右のドットが黒ドットである場合には(S34でYES)、S33で文字データが書き込まれたドットの右に隣接するドットの書き込みアドレスに黒ドットのデータを書き込み(S35)、コントローラ11は書き込みアドレスを1ドット上及び1ドット左に移行し且つ文字データの読み出しアドレスを1ドット左に移行する(S36)。上下左右のドットが黒ドットでない場合には(S34でNO)、そのままS36の処理に進む。
コントローラ11は1行目の文字データのフォントメモリ12aからの読み出しが完了したか否かを判定する(S37)。1行目の文字データの読み出しが完了していない場合には(S37でNO)、S32の処理に戻り、その行の文字データをS36で更新された書き込みアドレスに書き込む。
1行目の文字データのフォントメモリ12aからの読み出しが完了してバッファに展開された場合には(S37でYES)、コントローラ11は基準書き込みアドレスを1ドット下及び1ドット左に移行する(S38)。次いで、コントローラ11は全ての行の文字データの読み出しが完了したか否かを判定する(S39)。全ての行の文字データの読み出しが完了していない場合には(S39でNO)、コントローラ11は文字データの読み出しアドレスを次行の先頭の読み出しアドレスに移行し(S40)、S31の処理に戻る。全ての行の文字データの読み出しが完了した場合には(S39でYES)、本処理を終了する。
このように、コントローラ11は、設定された回転角度に基づいて、文字データを構成するドットに対応するデータを1ドット毎に展開して、文字データを傾斜させるので、イメージデータを作成せずに拡大傾斜文字を作成することができる。
尚、図6の拡大サイズ21において拡大サイズが指定された場合には、コントローラ11は、フォントメモリ12aから読み出された1ドットを、バッファの書き込みアドレスとこれに隣接する少なくとも1ドット分の書き込みアドレスとに同時に展開し、文字の拡大処理を行う。その後、コントローラ11は図13又は図14の拡大傾斜処理を行う。
尚、図9〜図12では、書き込み開始のアドレスを基準書き込みアドレスから所定のドット数下がった位置に設定しているが、書き込み開始のアドレスは「基準書き込みアドレス」に対して上、左又は右に設定することも可能である。例えば、図8(C)において、基準書き込みアドレスを右上端のドットに設定し、基準書き込みアドレスから7ドット左の位置にバッファの書き込みアドレスを更新し、書き込みアドレスを右下方向にシフトして文字の左上端のドットから展開しても、図8(C)のような展開が可能である。さらに、図8(C)において、基準書き込みアドレスを左下端のドットに設定し、基準書き込みアドレスから7ドット上の位置にバッファの書き込みアドレスを更新し、書き込みアドレスを右下方向にシフトして文字の左下端のドットから展開しても、図8(C)のような展開が可能である。
尚、本発明は、上述した実施の形態に限定されるものではなく、その要旨を逸脱しない範囲内で種々変形して実施することが可能である。