(57)【要約】  【構成】  文字を表すビットマップデータは、水平方向に延びる複数の行と、垂直方向に延びる複数の列とを有する。ＣＰＵ１２は、かかるビットマップデータを垂直方向において複数のブロックＢ０〜Ｂ３に分割し、高いライン相関を有する行を有意なブロックＢ０〜Ｂ２の各々から間引き行として検出する。ＣＰＵ１２はまた、ビットマップデータを水平方向において複数のブロックＢ４〜Ｂ７に分割し、高いライン相関を有する列を有意なブロックＢ４〜Ｂ６の各々から間引き列として検出する。ＣＰＵ１２は、検出された間引き行を含む連続２行に論理和処理を施し、これによって得られた論理和行を論理和処理を施された２行に代えて有効化する。同様に、ＣＰＵ１２は、検出された間引き列を含むように連続する２列に論理和処理を施し、これによって得られた論理和列を論理和処理を施された２列に代えて有効化する。  【効果】  高品位の縮小文字を作成できる。【選択図】  図１
2006227329.tif 000002
【特許請求の範囲】
【請求項１】
水平方向および垂直方向の一方である第１方向に延びる複数の第１ラインと前記水平方向および前記垂直方向の他方である第２方向に延びる複数の第２ラインとを有する文字のビットマップデータを前記第２方向において複数の第１ブロックに分割する第１分割手段、
第１条件を満足する単一の第１ラインを前記第１分割手段によって分割された複数の第１ブロックの各々から検出する第１検出手段、
注目する第１ブロックから前記第１検出手段によって検出された第１ラインを含むように前記注目する第１ブロック内で連続する複数の第１ラインに第１論理和処理を施す第１論理和手段、および
前記注目する第１ブロックについて前記第１論理和手段によって作成された第１論理和ラインを前記注目する第１ブロックについて前記第１論理和処理を施された複数の第１ラインに代えて有効化する第１有効化手段を備える、文字処理装置。
【請求項２】
前記第１条件は前記第２方向におけるライン相関が最も高いという条件を含む、請求項１記載の文字処理装置。
【請求項３】
前記第１条件は注目する第１ラインを形成するドットの数値が全て“０”であるという条件を含む、請求項１または２記載の文字処理装置。
【請求項４】
前記第１方向は水平方向であり、前記第２方向は垂直方向である、請求項１ないし３のいずれかに記載の文字処理装置。
【請求項５】
前記第１論理和処理を施されるライン数は“２”である、請求項１ないし４のいずれかに記載の文字処理装置。
【請求項６】
前記ビットマップデータを前記第１方向において複数の第２ブロックに分割する第２分割手段、
前記第１方向におけるライン相関が第２条件を満足する単一の第２ラインを前記第２分割手段によって分割された複数の第２ブロックの各々から検出する第２検出手段、
注目する第２ブロックから前記第２検出手段によって検出された第２ラインを含むように前記注目する第２ブロック内で連続する複数の第２ラインに第２論理和処理を施す第２論理和手段、および
前記注目する第２ブロックについて前記第２論理和手段によって作成された論理和ラインを前記注目する第１ブロックについて前記第２論理和処理を施された複数の第２ラインに代えて有効化する第２有効化手段をさらに備える、請求項１ないし５のいずれかに記載の文字処理装置。
【請求項７】
文字処理装置のプロセサに、
水平方向および垂直方向の一方である第１方向に延びる複数の第１ラインと前記水平方向および前記垂直方向の他方である第２方向に延びる複数の第２ラインとを有する文字のビットマップデータを第２方向において複数のブロックに分割する分割ステップ、
所定条件を満足する単一の第１ラインを前記分割ステップによって分割された複数のブロックの各々から検出する検出ステップ、
注目するブロックから前記検出ステップによって検出された第１ラインを含むように前記注目するブロック内で連続する複数の第１ラインに論理和処理を施す論理和ステップ、および
前記注目するブロックについて前記論理和ステップによって作成された論理和ラインを前記注目するブロックについて前記論理和処理を施された複数の第１ラインに代えて有効化する有効化ステップを実行させる、文字処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、文字処理装置に関し、特にたとえば文字のサイズを縮小する、文字処理装置に関する。
【背景技術】
【０００２】
従来のこの種の装置の一例が、特許文献１に開示されている。この従来技術によれば、間引き位置を示す変換テーブルが文字毎に用意される。１０ポイントの文字は、この変換テーブルを用いて、８ポイントの文字に変換される。これによって、文字品位を極端に劣化させることなく、サイズの異なる文字を生成することができる。
【特許文献１】特開平７−１９１６５６号公報［G09G5/24, G06T11/20］
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、従来技術では、変換テーブルが用意されていない文字については、文字サイズを良好に変換することができない。
【０００４】
それゆえに、この発明の主たる目的は、想定していない文字についても、品位を劣化させることなくサイズを縮小することができる、文字処理装置を提供することである。
【課題を解決するための手段】
【０００５】
請求項１の発明に従う文字処理装置は、水平方向および垂直方向の一方である第１方向に延びる複数の第１ラインと水平方向および垂直方向の他方である第２方向に延びる複数の第２ラインとを有するビットマップデータを第２方向において複数の第１ブロックに分割する第１分割手段(S1)、第１条件を満足する単一の第１ラインを第１分割手段によって分割された複数の第１ブロックの各々から検出する第１検出手段(S53, S65)、注目する第１ブロックから第１検出手段によって検出された第１ラインを含むように注目する第１ブロック内で連続する複数の第１ラインに第１論理和処理を施す第１論理和手段(S113)、および注目する第１ブロックについて第１論理和手段によって作成された第１論理和ラインを注目する第１ブロックについて第１論理和処理を施された複数の第１ラインに代えて有効化する第１有効化手段(S115)を備える。
【０００６】
文字のビットマップデータは、水平方向および垂直方向の一方である第１方向に延びる複数の第１ラインと、水平方向および垂直方向の他方である第２方向に延びる複数の第２ラインとを有する。第１分割手段は、かかるビットマップデータを第２方向において複数の第１ブロックに分割する。また、第１検出手段は、第１条件を満足する単一の第１ラインを第１分割手段によって分割された複数の第１ブロックの各々から検出する。第１論理和手段は、注目する第１ブロックから第１検出手段によって検出された第１ラインを含むように注目する第１ブロック内で連続する複数の第１ラインに第１論理和処理を施す。第１有効化手段は、注目する第１ブロックについて第１論理和手段によって作成された第１論理和ラインを、注目する第１ブロックについて第１論理和処理を施された複数の第１ラインに代えて有効化する。
【０００７】
第１条件を満足する第１ラインを含む複数の第１ラインに論理和処理を施すことで、この複数ラインにおいて“１”を示すドットが論理和ラインに反映される。この結果、高品位の縮小文字が得られる。
【０００８】
請求項２の発明に従う文字処理装置は、請求項１に従属し、第１条件は第２方向におけるライン相関が最も高いという条件を含む。かかる条件を課すことによって、縮小文字の品位がさらに向上する。
【０００９】
請求項３の発明に従う文字処理装置は、請求項１または２に従属し、第１条件は注目する第１ラインを形成するドットの数値が全て“０”であるという条件を含む。
【００１０】
請求項４の発明に従属する文字処理装置は、請求項１ないし３のいずれかに従属し、第１方向は水平方向であり、第２方向は垂直方向である。
【００１１】
請求項５の発明に従う文字処理装置は、請求項１ないし４のいずれかに従属し、第１論理和処理を施されるライン数は“２”である。
【００１２】
請求項６の発明に従う文字処理装置は、請求項１ないし５のいずれかに従属し、ビットマップデータを第１方向において複数の第２ブロックに分割する第２分割手段(S13)、第１方向におけるライン相関が第２条件を満足する単一の第２ラインを第２分割手段によって分割された複数の第２ブロックの各々から検出する第２検出手段(S93, S105)、注目する第２ブロックから第２検出手段によって検出された第２ラインを含むように注目する第２ブロック内で連続する複数の第２ラインに第２論理和処理を施す第２論理和手段(S137)、および注目する第２ブロックについて第２論理和手段によって作成された論理和ラインを注目する第１ブロックについて第２論理和処理を施された複数の第２ラインに代えて有効化する第２有効化手段(S115)をさらに備える。これによって、第２条件を満足する第２ラインを含む複数の第２ラインにも、論理和処理が実行される。この結果、高品位の縮小文字が得られる。
【００１３】
請求項７の発明に従う文字処理プログラムは、文字処理装置のプロセサ(12)に、水平方向および垂直方向の一方である第１方向に延びる複数の第１ラインと水平方向および垂直方向の他方である第２方向に延びる複数の第２ラインとを有する文字のビットマップデータを第２方向において複数のブロックに分割する分割ステップ (S1)、所定条件を満足する単一の第１ラインを分割ステップによって分割された複数のブロックの各々から検出する検出ステップ (S53, S65)、注目するブロックから検出ステップによって検出された第１ラインを含むように注目するブロック内で連続する複数の第１ラインに論理和処理を施す論理和ステップ (S113)、および注目するブロックについて論理和ステップによって作成された論理和ラインを注目するブロックについて論理和処理を施された複数の第１ラインに代えて有効化する有効化ステップ (S115)を実行させる。
【００１４】
請求項１の発明と同様、高品位の縮小文字を作成することができる。
【発明の効果】
【００１５】
この発明によれば、所定条件を満足する複数ラインに論理和処理を施すことで、この複数ラインにおいて“１”を示すドットが論理和ラインに反映される。したがって、想定していない文字についても、品位を劣化させることなくサイズを縮小することができる。
【００１６】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【発明を実施するための最良の形態】
【００１７】
図１を参照して、この実施例の文字出力装置１０は、バッファエリアＢ１およびＢ２が形成されたＤＲＡＭ１８を含む。バッファエリアＢ１およびＢ２のいずれも、２０行×２０列に相当するアドレスを有する。また、１つのアドレスには１ドットのビットマップデータが格納される。
【００１８】
２０×２０ドットの文字を表すビットマップデータは、まずバッファエリアＢ１に展開される。ＣＰＵ１２は、フラッシュメモリ２０に記憶された文字サイズ縮小プログラムを利用して、バッファエリアＢ１に展開されたビットマップデータのサイズを２０×２０ドットから１６×１６ドットに縮小する。縮小されたビットマップデータは、ＤＲＡＭ１８のバッファエリアＢ２に展開される。ＬＣＤドライバ１４は、バッファエリアＢ２に格納されたビットマップデータを読み出し、読み出されたビットマップデータに対応する文字をＬＣＤモニタ１６に表示する。
【００１９】
文字縮小プログラムは図２〜図８に示すフロー図に対応し、ＣＰＵ１２はこのフロー図に従う処理を実行する。なお、以下においては、図９に示すビットマップデータを図１６に示すビットマップデータに変換することを想定して説明する。
【００２０】
まず、図２に示すステップＳ１で、バッファエリアＢ１のビットマップデータを垂直方向において４つのブロック０〜３に分割する。分割されたブロック０〜３はそれぞれ、図１０に示すように、第０行〜第６行，第７行〜第１２行，第１３行〜第１８行および第１９行によって形成される。
【００２１】
ステップＳ３では変数Ｂｖを“０”に設定し、ステップＳ５ではブロックＢｖに間引き行設定処理を施す。ステップＳ７では変数Ｂｖが“２”に達したか否かを判別し、ＮＯであればステップＳ９で変数ＢｖをインクリメントしてからステップＳ５に戻る。したがって、ステップＳ５の間引き行設定処理は、ブロック０〜２の各々に対して実行される。ステップＳ７でＹＥＳと判断されると、ステップＳ１１で間引き行を第１９行に割り当てる。この結果、４つの間引き行がそれぞれ、図１０に示す要領でブロック０〜３に割り当てられる。
【００２２】
ステップＳ１３では、バッファエリアＢ１のビットマップデータを水平方向において４分割する。分割された４つのブロック４〜７はそれぞれ、図１１に示すように、第０列〜第６列，第７列〜第１２列，第１３列〜第１８列および第１９列によって形成される。
【００２３】
ステップＳ１５では変数Ｂｈを“４”に設定し、ステップＳ１７ではブロックＢｈに間引き列設定処理を施す。ステップＳ１９では変数Ｂｖが“６”に達したか否かを判別し、ＮＯであればステップＳ２１で変数ＢｖをインクリメントしてからステップＳ１７に戻る。したがって、ステップＳ１７の間引き列設定処理は、ブロック４〜６の各々に対して実行される。ステップＳ１９でＹＥＳと判断されると、ステップＳ２３で間引き列を第１９列に割り当てる。この結果、４つの間引き列がそれぞれ、図１１に示す要領でブロック４〜７にそれぞれ割り当てられる。
【００２４】
間引き行および間引き列の割り当てが完了すると、ステップＳ２５でビットマップ縮小処理を実行する。この結果、図１６に示す１６ドット×１６ドットのビットマップデータがバッファエリアＢ２に得られることとなる。
【００２５】
ステップＳ５に示す間引き行設定処理は、図３および図４に示すサブルーチンに従って実行される。まずステップＳ３１で変数Ｂｖが“０”であるか否か判別し、ステップＳ３３で変数Ｂｖが“１”であるか否かを判別する。変数Ｂｖが“０”であればステップＳ３１からステップＳ３７に進み、変数ＶｓｔａｔおよびＶｅｎｄをそれぞれ“０”および“６”に設定する。
【００２６】
変数Ｂｖが“１”であればステップＳ３３からステップＳ３９に進み、変数ＶｓｔａｔおよびＶｅｎｄをそれぞれ“７”および“１２”に設定する。変数Ｂｖが“２”であればステップＳ３３からステップＳ３５に進み、変数ＶｓｔａｔおよびＶｅｎｄをそれぞれ“１３”および“１８”に設定する。変数Ｖｓｔａｔは注目するブロックの先頭行の番号を示し、変数Ｖｅｎｄは注目するブロックの末尾行の番号を示す。
【００２７】
ステップＳ４１では変数Ｄ（Ｖ）を“０”に設定し、ステップＳ４３では第Ｖ行と第（Ｖ＋１）行との間でドットが一致するか否かを判別する。ここでＹＥＳであれば直接ステップＳ４７に進むが、ＮＯであればステップＳ４５で変数Ｄ（Ｖ）をインクリメントしてからステップＳ４７に進む。ステップＳ４７では変数Ｈをインクリメントし、続くステップＳ４９では変数Ｈが“１９”を上回るか否かを判別する。変数Ｈが“１９”以下であれば、ステップＳ４３〜Ｓ４９の処理を繰り返す。ステップＳ４９でＹＥＳと判断された時点で、変数Ｄ（Ｖ）は、第Ｖ行および第（Ｖ＋１）行の各々を形成する１９ドットのうち垂直方向において互いに異なる数値を有するドットの数を示すこととなる。
【００２８】
ステップＳ５１では、変数Ｄ（Ｖ）が“０”であるか否かを判別する。ここでＹＥＳであれば、第Ｖ行を形成する１９ドットのパターンは第（Ｖ＋１）行を形成する１９ドットのパターンと完全に一致するとみなし、ステップＳ５３で第Ｖ行を間引き行に設定する。ステップＳ５３の処理が完了すると、上階層のルーチンに復帰する。
【００２９】
ステップＳ５１でＮＯであれば、ステップＳ５５で変数Ｖをインクリメントし、ステップＳ５７で変数Ｖが変数Ｖｅｎｄを上回るか否かを判別する。ここでＮＯであればステップＳ４１に戻る。この結果、注目するブロックを形成する各々の行について、次の行との間で相違する数値を示すドットの数が検出される。
【００３０】
ステップＳ５７でＹＥＳと判断されるとステップＳ５９に進み、注目するブロックに空白行（全てのドットが“０”を表す行）が存在するか否かを判別する。ここでＹＥＳであれば、ステップＳ６１に進み、この空白行を間引き行に設定する。一方、注目するブロックに空白行が存在しなければステップＳ６３に進み、変数Ｄ（Ｖｓｔａｔ）〜Ｄ（Ｖｅｎｄ）のうち数値が最も小さい変数に対応する行を検出する。ステップＳ６５では、検出された行を間引き行に設定する。ステップＳ６１またはＳ６５の処理が完了すると、上階層のルーチンに復帰する。
【００３１】
なお、注目するブロックに複数の空白行が存在するときは、行番号が最も小さい空白行が間引き行として設定される。ステップＳ６３で複数の行が検出されたときも、行番号が最も小さい行が間引き行として設定される。
【００３２】
この結果、図１０に示すビットマップデータについては、第０行，第８行および第１８行が間引き行として設定される。
【００３３】
ステップＳ１７に示す間引き列設定処理は、図５〜図６に示すサブルーチンに従って実行される。
【００３４】
まずステップＳ７１で変数Ｂｈが“４”であるか否か判別し、ステップＳ７３で変数Ｂｈが“５”であるか否かを判別する。変数Ｂｈが“４”であれば、ステップＳ７３で変数ＨｓｔａｔおよびＨｅｎｄをそれぞれ“０”および“６”に設定する。変数Ｂｈが“５”であれば、ステップＳ７９で変数ＨｓｔａｔおよびＨｅｎｄをそれぞれ“７”および“１２”に設定する。変数Ｂｈが“６”であれば、ステップＳ７５で変数ＶｓｔａｔおよびＶｅｎｄをそれぞれ“１３”および“１８”に設定する。変数Ｈｓｔａｔは注目するブロックの先頭列の番号を示し、変数Ｈｅｎｄは注目するブロックの末尾列の番号を示す。
【００３５】
ステップＳ８１では変数Ｄ（Ｈ）を“０”に設定し、ステップＳ８３では第Ｈ列と第（Ｈ＋１）列との間でドットが一致するか否かを判別する。ここでＹＥＳであれば直接ステップＳ８７に進むが、ＮＯであればステップＳ８５で変数Ｄ（Ｈ）をインクリメントしてからステップＳ８７に進む。ステップＳ８７では変数Ｖをインクリメントし、続くステップＳ８９では変数Ｖが“１９”を上回るか否かを判別する。
【００３６】
変数Ｖが“１９”以下であれば、ステップＳ８３〜Ｓ８９の処理を繰り返す。ステップＳ８９でＹＥＳと判断された時点で、変数Ｄ（Ｈ）は、上述と同様、第Ｈ列および第（Ｈ＋１）列の各々を形成する１９ドットのうち水平方向において互いに異なる数値を有するドットの数を示すこととなる。
【００３７】
ステップＳ９１では、変数Ｄ（Ｈ）が“０”であるか否かを判別する。ここでＹＥＳであれば、第Ｈ列を形成する１９ドットは第（Ｈ＋１）列を形成する１９ドットと完全に一致するとみなし、ステップＳ９３で第Ｈ列を間引き列に設定する。
【００３８】
ステップＳ９１でＮＯであれば、ステップＳ９５で変数Ｈをインクリメントし、ステップＳ９７で変数Ｈが変数Ｈｅｎｄを上回るか否かを判別する。ここでＮＯであればステップＳ８１に戻る。この結果、注目するブロックを形成する各々の列について、次の列との間で相違するドットの数が検出される。
【００３９】
ステップＳ９７でＹＥＳと判断されるとステップＳ９９に進み、注目するブロックに空白列が存在するか否かを判別する。ここでＹＥＳであれば、ステップＳ１０１に進み、この空白列を間引き列に設定する。一方、注目するブロックに空白列が存在しなければステップＳ１０３に進み、変数Ｄ（Ｈｓｔａｔ）〜Ｄ（Ｈｅｎｄ）のうち数値が最も小さい変数に対応する列を検出する。ステップＳ１０５では、検出された列を間引き列に設定する。ステップＳ９３，ステップＳ１０１またはＳ１０５の処理が完了すると、上階層のルーチンに復帰する。
【００４０】
なお、上述と同様、注目するブロックに複数の空白列が存在するときは、列番号が最も小さい空白列が間引き列として設定される。ステップＳ１０３で複数の列が検出されたときも、列番号が最も小さい列が間引き列として設定される。
【００４１】
この結果、図１１に示すビットマップデータについては、第４列，第７列および第１８列が間引き行として設定される。
【００４２】
以上のような間引き行設定処理および間引き列設定処理と、図２に示すステップＳ１１およびＳ２３の処理とが実行される結果、図１２に太線で示す水平行および垂直列が、バッファエリアＢ１上のビットマップデータに間引き行および間引き列として割り当てられることとなる。
【００４３】
図１に示すステップＳ２５のビットマップ縮小処理は、図７および図８に示すサブルーチンに従って実行される。
【００４４】
まずステップＳ１１１で変数Ｈ１およびＨ２の各々を“０”に設定する。変数Ｈ１はバッファエリアＢ１に割り当てられた行アドレスのアドレス値を示す変数であり、変数Ｈ２はバッファエリアＢ２に割り当てられた行アドレスのアドレス値を示す変数である。なお、図７に示す処理が開始される時点では、バッファエリアＢ２は何も格納されていない。つまり、バッファエリアＢ２のデータ値はいずれも“０”を示す。
【００４５】
ステップＳ１１３では、バッファエリアＢ１の第Ｈ１行のビットマップデータとバッファエリアＢ２の第Ｈ２行のビットマップデータとに論理和を施す。ステップＳ１１５では、ステップＳ１１３の処理によって生成された論理和データをバッファエリアＢ２の第Ｈ２行に書き込む。ステップＳ１１７では、バッファエリアＢ１の第Ｈ１行（つまりバッファエリアＢ１に展開されたビットマップデータの第Ｈ１行）が間引き行であるか否かを判別する。
【００４６】
ここでＮＯであれば、ステップＳ１１９で変数Ｈ２をインクリメントし、ステップＳ１２１で変数Ｈ１をインクリメントする。一方、ＹＥＳであれば、ステップＳ１１９の処理を省略し、ステップＳ１２１で変数Ｈ１をインクリメントする。ステップＳ１２３では、変数Ｈ１が“１８”を上回るか否かを判別し、ＹＥＳと判断されるまで、ステップＳ１１３〜Ｓ１２１の処理を繰り返す。
【００４７】
したがって、バッファエリアＢ１の第Ｈ１行が間引き行でなければ、ステップＳ１１３の論理和処理は実質的に意味をなさず、バッファエリアＢ１の第Ｈ１行のビットマップデータがそのままバッファエリアＢ２の第Ｈ２行に書き込まれる。これに対して、バッファエリアＢ１の第Ｈ１行が間引き行であれば、この間引き行と次の行つまり第（Ｈ１＋１）行との間で論理和処理が実行され、これによって得られた論理和データがバッファエリアＢ２の第Ｈ２行に書き込まれる。
【００４８】
具体的に説明すると、間引き行は、図１２に示すように、第０行，第８行，第１３行および第１９行である。このため、図１３（Ａ）〜図１３（Ｃ）に示すように、バッファエリアＢ１の第０行および第１行の間で論理和処理が実行され、バッファエリアＢ１の第８行および第９行の間で論理和処理が実行され、そしてバッファエリアＢ１の第１３行および第１４行の間で論理和処理が実行される。なお、第１９行に対する論理和処理は省略される。
【００４９】
バッファエリアＢ１の第０行および第１行から得られた論理和データはバッファエリアＢ２の第０行に書き込まれ、バッファエリアＢ１の第８行および第９行から得られた論理和データはバッファエリアＢ２の第７行に書き込まれ、そしてバッファエリアＢ１の第１３行および第１４行から得られた論理和データはバッファエリアＢ２の第１１行に書き込まれる。こうして、間引き行が削除されたビットマップデータが、図１４に示す要領でバッファエリアＢ２内に得られる。
【００５０】
ステップＳ１２５では変数Ｈ２を“０”に設定し、ステップＳ１２７では変数Ｖ２を“０”に設定する。続くステップＳ１２９では、バッファエリアＢ２の第Ｖ２列が間引き列であるか否かを判別する。ここでＮＯであれば直接ステップＳ１４１に進むが、ＹＥＳであればステップＳ１３１〜Ｓ１３９の処理を経てステップＳ１４１に進む。
【００５１】
ステップＳ１３１では、バッファエリアＢ２の第Ｈ２行に格納されたビットマップデータを、ＤＲＡＭ１８に形成されたワークエリアＷ１を利用して、第Ｖ２列を基準に２分割する。第Ｖ２列のビットマップデータは、前半の分割行および後半の分割行のうち前半の分割行に含まれる。ステップＳ１３３では、ワークエリアＷ１上に作成された前半の分割行の第（Ｖ２＋１）列〜第１８列に“０”を割り当て、ワークエリアＷ１上に形成された後半の分割行の第０列〜第Ｖ２列に“０”を割り当てる。
【００５２】
図１４に示すビットマップデータの第６行については、図１５（Ａ）に示すように、第４列，第７列，第１８列および第１９列が間引き列である。変数Ｖ２が“４”を示すとき、ステップＳ１３１およびＳ１３３の処理によって、前半の分割行は図１５（Ｂ）に示すパターンを有し、後半の分割行は図１５（Ｃ）に示すパターンを有する。
【００５３】
ステップＳ１３５では後半の分割行の数値を上位に１ビットシフトさせ、ステップＳ１３７では前半の分割行とビットシフトを施された分割行とに論理和処理を施し、そしてステップＳ１３９では論理和処理によって得られた論理和データ（論理和行）をバッファエリアＢ２の第Ｈ２行に書き込む。
【００５４】
ステップ図１５（Ｃ）に示す分割行にビットシフトを施すと、図１５（Ｄ）に示す分割行が得られる。また、図１５（Ｂ）に示す分割行と図１５（Ｄ）に示す分割行とにビットシフトを施すと、図１５（Ｅ）に示す論理和行が得られる。かかる論理行をバッファエリアＢ２に書き込むことによって、間引き列が１つ削除される。
【００５５】
ステップＳ１４１では、残存する間引き列の番号を更新する。図１５（Ｅ）に示すように、間引き列の番号は、“７”，“１８”および“１９”から“６”，“１７”および“１８”にそれぞれ更新される。
【００５６】
ステップＳ１４３では変数Ｖ２をインクリメントし、続くステップＳ１４５では変数Ｖ２が“１８”を上回るか否かを判別する。ここでＮＯであればステップＳ１２９に戻り、同じ行に属する他の間引き列について上述の処理を実行する。この結果、図１５（Ｅ）に示す論理和行は図１５（Ｆ）および図１５（Ｇ）に示す分割行に変換され、図１５（Ｇ）に示す分割行は図１５（Ｈ）に示す分割行に変換される。さらに、図１５（Ｆ）に示す分割行および図１５（Ｈ）に示す分割行に基づいて図１５（Ｉ）に示す論理和行が作成される。これによって間引き列が１つ削除され、残存する間引き列の番号は、“１７”および“１８”から“１６”および“１７”に更新される。
【００５７】
ステップＳ１４５でＹＥＳと判断されると、変数Ｈ２が“１５”を上回るか否かをステップＳ１４７で判別する。ここでＮＯであれば、ステップＳ１４９で変数Ｈ２をインクリメントしてからステップＳ１２７に戻る。この結果、図１４に示すビットマップデータを形成する全ての行について、上述のような間引き列の削除動作が実行される。変数Ｈ２が“１５”を上回った時点で、バッファエリアＢ２には図１６に示すビットマップデータが得られる。ステップＳ１４７でＹＥＳと判断されると、上階層のルーチンに復帰する。
【００５８】
参考までに、図１２に示すビットマップデータから間引行を単に削除して得られたビットマップデータを図１７（Ａ）に示す。また、図１７（Ａ）に示すビットマップデータから間引き列を単に削除して得られたビットマップデータを図１７（Ｂ）に示す。図１６および図１７（Ｂ）を比較すれば分かるように、間引き行および間引き列の削除にあたって論理和処理が実行されたビットマップデータは、間引き行および間引き列が単に削除されたビットマップデータよりも高品位となる。
【００５９】
以上の説明から分かるように、文字を表すビットマップデータは、水平方向に延びる複数の行と、垂直方向に延びる複数の列とを有する。ＣＰＵ１２は、かかるビットマップデータを垂直方向において複数のブロックＢ０〜Ｂ３に分割し(S1)、高いライン相関を有する行を有意なブロックＢ０〜Ｂ２の各々から間引き行として検出する(S53, S65)。ＣＰＵ１２はまた、ビットマップデータを水平方向において複数のブロックＢ４〜Ｂ７に分割し(S13)、高いライン相関を有する列を有意なブロックＢ４〜Ｂ６の各々から間引き列として検出する(S93, S105)。
【００６０】
ＣＰＵ１２はその後、検出された間引き行を含むように連続する２行に論理和処理を施し(S113)、これによって作成された論理和行を論理和処理を施された２行に代えて有効化する(S115)。同様に、ＣＰＵ１２は、検出された間引き列を含むように連続する２列に論理和処理を施し(S137)、これによって作成された論理和列を論理和処理を施された２列に代えて有効化する(S139)。
【００６１】
このように、所定条件を満足する複数行（または複数列）に論理和処理を施すことで、この複数行（または複数列）において“１”を示すドットが論理和行（または論理和列）に反映される。したがって、想定していない文字についても、品位を劣化させることなくサイズを縮小することができる。
【図面の簡単な説明】
【００６２】
【図１】この発明の一実施例の構成を示すブロック図である。
【図２】図１実施例に適用されるＣＰＵの動作の一部を示すフロー図である。
【図３】図１実施例に適用されるＣＰＵの動作の他の一部を示すフロー図である。
【図４】図１実施例に適用されるＣＰＵの動作のその他の一部を示すフロー図である。
【図５】図１実施例に適用されるＣＰＵの動作のさらにその他の一部を示すフロー図である。
【図６】図１実施例に適用されるＣＰＵの動作の他の一部を示すフロー図である。
【図７】図１実施例に適用されるＣＰＵの動作のその他の一部を示すフロー図である。
【図８】図１実施例に適用されるＣＰＵの動作のさらにその他の一部を示すフロー図である。
【図９】変換前のビットマップデータの一例を示す図解図である。
【図１０】変換前のビットマップデータに対して間引き行を割り当てる動作の一部を示す図解図である。
【図１１】変換前のビットマップデータに対して間引き列を割り当てる動作の一部を示す図解図である。
【図１２】間引き行および間引き列の割り当て状態の一例を示す図解図である。
【図１３】（Ａ）は垂直方向における縮小動作の一部を示す図解図であり、（Ｂ）は垂直方向における縮小動作の他の一部を示す図解図であり、（Ｃ）は垂直方向における縮小動作のその他の一部を示す図解図である。
【図１４】垂直方向における縮小処理が施されたビットマップデータの一例を示す図解図である。
【図１５】水平方向における縮小動作の一部を示す図解図である。
【図１６】垂直方向および水平方向の両方における縮小処理が施されたビットマップデータの一例を示す図解図である。
【図１７】（Ａ）は垂直方向における単純間引き処理を施されたビットマップデータの一例を示す図解図であり、（Ｂ）は垂直方向および水平方向の両方における単純間引き処理を施されたビットマップデータの一例を示す図解図である。
【符号の説明】
【００６３】
１０  …文字出力装置
１２  …ＣＰＵ
１６  …ＬＣＤモニタ
１８  …ＲＡＭ
２０  …フラッシュメモリ
【図１】
2006227329.tif 000003
【図２】
2006227329.tif 000004
【図３】
2006227329.tif 000005
【図４】
2006227329.tif 000006
【図５】
2006227329.tif 000007
【図６】
2006227329.tif 000008
【図７】
2006227329.tif 000009
【図８】
2006227329.tif 000010
【図９】
2006227329.tif 000011
【図１０】
2006227329.tif 000012
【図１１】
2006227329.tif 000013
【図１２】
2006227329.tif 000014
【図１３】
2006227329.tif 000015
【図１４】
2006227329.tif 000016
【図１５】
2006227329.tif 000017
【図１６】
2006227329.tif 000018
【図１７】
2006227329.tif 000019