(57)【特許請求の範囲】
【請求項１】
第１のピクセル・パターンによって表現される文字を拡大する方法であって、
前記第１のピクセル・パターンのピクセルのそれぞれを第２のピクセル・パターンにおける対応する長方形ピクセル群に変換するステップと、
前記第１のピクセル・パターンにおいてピクセルによって形成される直角を識別するステップと、前記直角は、それぞれの長さを有する水平および垂直の辺を有し、前記第１のピクセル・パターンの直角は、前記第２のピクセル・パターンにおいて対応する直角を有し、
前記第１のピクセル・パターンにおいて識別した直角の水平および垂直辺の長さを決定するステップと、
前記第１のピクセル・パターンにおいて識別した直角のそれぞれに関して、水平辺および垂直辺を有し当該直角に隣接する直角を識別するステップと、
前記第１のピクセル・パターンにおいて識別した隣接直角の水平および垂直辺の長さを決定するステップと、
前記第１のピクセル・パターンにおける直角の水平および垂直辺の長さならびに前記第１のピクセル・パターンにおける隣接直角の水平および垂直辺の長さに基づいて、前記第２のピクセル・パターンにおける対応する直角を円滑化するか否かを判断するステップと、
を含む文字拡大方法。
【請求項２】
前記第１のピクセル・パターンにおける個別ピクセルが直角を形成しているか否かを判断するためそれら個別ピクセルを順次検査するステップをさらに含む、請求項１に記載の文字拡大方法。
【請求項３】
前記第１のピクセル・パターンにおける直角のそれぞれの水平および垂直の辺の長さを決定する前に、各直角の方向の観点からそれら角度を分類するステップをさらに含む、請求項１に記載の文字拡大方法。
【請求項４】
前記第１のピクセル・パターンにおける直角のそれぞれの水平および垂直の辺の長さを決定する前に、前記直角が左上向きか、右下向きか、左下向きか、または右上向きかに従って各角度を分類するステップをさらに含む、請求項１に記載の文字拡大方法。
【請求項５】
前記第１のピクセル・パターンにおける直角の水平辺の長さが１ピクセルであること、前記第１のピクセル・パターンにおける直角の垂直辺の長さが１ピクセルであること、前記第１のピクセル・パターンにおける直角の水平辺の長さが２ピクセルでありかつ前記第１のピクセル・パターンにおける直角の垂直辺の長さが３ピクセルであること、前記第１のピクセル・パターンにおける直角の垂直辺の長さが２ピクセルでありかつ前記第１のピクセル・パターンにおける直角の水平辺の長さが２ピクセルであること、という条件の１つが真であるとき、前記第２のピクセル・パターンにおける対応する直角の円滑化の実行を選択するステップをさらに含む、請求項１に記載の文字拡大方法。
【請求項６】
第１のピクセル・パターンにおける直角の水平および垂直辺の長さが所定の値より小さいとき、前記第２のピクセル・パターンにおける対応する直角の円滑化の実行を選択するステップを、さらに含む請求項１に記載の文字拡大方法。
【請求項７】
第１のピクセル・パターンにおける直角の水平および垂直の辺の長さが所定の値より大きいとき、前記第２のピクセル・パターンからピクセルを削除するという円滑化するステップをさらに含む、請求項１に記載の文字拡大方法。
【請求項８】
前記第２のピクセル・パターンにおける直角によって形成される三角形の範囲内の位置にピクセルを追加するという円滑化するステップをさらに含む、請求項１に記載の文字拡大方法。
【請求項９】
前記第１のピクセル・パターンにおける対応する直角の水平および垂直辺の長さがあらかじめ定められた値より小さく、かつ、前記第１のピクセル・パターンにおける直角の水平および垂直辺の長さに比較した場合の、前記第１のピクセル・パターンにおける対応する隣接直角の水平および垂直辺の相対的長さがあらかじめ定められた限度内にある場合にのみ、前記第２のピクセル・パターンにおける対応する直角の円滑化の実行を選択するステップと、を含む請求項１に記載の文字拡大方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ピクセル・アレイによって表現されるテキスト文字の拡大および円滑化に関するものである。
【０００２】
【従来の技術】
一般に、コンピュータおよびコンピュータ関連機器は、テキスト文字を表現するためビットマップを使用する。ビットマップは、表示または印刷ページ上のピクセルの２次元アレイに対応するビットまたは値の同等の２次元アレイである。文字を表現する単純なビットマップにおいては、ピクセルまたは潜在的ドットの位置は１つのビットによって表現される。ビットが「１」と等しい場合、ドットはそのピクセル位置で印刷または表示されるべきものである。ビットが「０」と等しい場合、ドットはそのピクセル位置で印刷または表示されず、空白かまたは背景色のままとされる。
【０００３】
印刷の際、コンピュータはプリンタに実際のビットマップを送ることが可能である。しかしながら、多くの場合、プリンタはダウンロードせずにコンピュータによって使用されることができる文字ビットマップの１つまたは複数のライブラリを記憶する。
【０００４】
プリンタにおいてビットマップを記憶するために必要とされるメモリの量を制限することが望まれる。従って、ビットマップは、印刷される場合の高解像度(すなわちより多数のピクセル)に比較して低解像度(すなわち少ない数のピクセル)でビットマップが記憶される場合が多い。特定の文字を印刷する前に、そのビットマップは適切なサイズに拡大されなければならない。多くのプリンタは、印刷の前に可変的係数による文字の拡大縮小を可能にしている。
【０００５】
大部分の拡大方式は、基準ビットマップにおける各ピクセルを拡大されるビットマップにおける対応する長方形領域またはピクセル・アレイに１対１の対応付けを行うことから処理を開始する。基準ビットマップの特定のピクセル位置にドットが存在する場合、拡大ビットマップの対応する長方形領域のすべてのピクセル位置はドットで埋められる。
【０００６】
この方式は基準ビットマップの正確な拡大を生成するにもかかわらず、知覚されるプリント品質の劣化を引き起こす。この原因は主としてビットマップの斜辺にある。基準ビットマップの各ピクセルが拡大ビットマップにおいて長方形領域のドットによって表現されるので、斜辺は、一連の「階段」に見える。言い換えると、斜辺は、円滑ではなくむしろギザギザに見える。
【０００７】
拡大文字ビットマップの知覚されるプリント品質を改善するため種々の辺円滑化アルゴリズムが開発されてきた。しかしながら、これらのアルゴリズムの効果は、円滑化すべき正しい辺の検出能力に依存している。これは、特に中国文字、漢字およびハンゲル文字のような表意文字に関して重要である。
【０００８】
多くの辺円滑化アルゴリズムは、マスク比較法を持つハードウェアの形態で実施されている。ハードウェアの実施は、ソフトウェア実施と比較すれば計算の速度が速いという利点を持つが、異なる文字セットおよびフォントに対する移植可能性は高くない。更に、マスク比較の結果は、辺検出プロセスにおいて用いられているマスク・セットに依存している。マスクにおけるセルが多くなればなる程、エッジ検出プロセスの正確性は高くなる。従って、しばしば、正確な辺円滑化プロセスはスループットを犠牲にして得られる。
【０００９】
【発明が解決しようとする課題】
かくして、メモリおよびその他のハードウェア資源を節約しながら、高いスループットとすぐれたプリント品質を達成する辺円滑化方法を提供することが求められている。
【００１０】
【課題を解決するための手段】
本発明は、テキスト文字を拡大し円滑化する方法を提供する。該方法は、オリジナルの文字ビットマップにおける直角を識別し、識別した直角の各々に関して上方および下方に隣接する直角を検出する。更に、該方法は、検出した直角の水平および垂直辺に関する長さを決定し、決定したオリジナル・ビットマップの直角の辺の長さに基づいて、拡大されたビットマップにおける対応する特定の直角を円滑化すべきか否か判断する。
【００１１】
【発明の実施の形態】
図１は、第１または基準ピクセル・パターンによって表現されるテキスト文字を拡大する本発明の好ましい方法に従った処理の流れの概要を示す。図２は、基準ピクセル・パターンまたはビットマップの一部３０を示す。本発明の好ましい処理ステップを記述するため図２のビットマップが使用される。基準パターン３０は、複数のピクセルまたは潜在的ドットの位置を含む。埋められていないまたは空白の位置は、空白の円３１によって示される。埋められているまたは印刷される位置は、内部に斜線が引かれた円３２によって示される。この例では、埋められたまたは印刷される位置は、漢字の一部分を表す。
【００１２】
ピクセルは、X-Y座標位置によって任意にインデックス付けされる。X座標は左から右に広がり、Y座標は上から下へ広がる。左上のピクセルの位置は、それぞれXおよびY座標を示す位置(0,0)として参照される。
【００１３】
本発明に従う最初のステップ１０２は、基準パターンを拡大して、拡大されたまたは尺度を変えられたビットマップを作成するステップである。このステップは、一般的には、基準パターンのピクセルを第２または拡大されたピクセル・パターンの対応する長方形に変換するステップを含む。図３の３５は、基準パターン３０に対応する拡大されたビットマップまたはパターンの一部を示す。この場合、基準パターン３０は、X座標において係数４およびY座標において係数３によって拡大されている。拡大された結果は、図３においてX'座標およびY'座標を使用して示されていて、これら座標には、図２のパターン３０の左側および下側に付けられている符号が表示されている。
【００１４】
基準パターン３０の各ピクセルは、拡大されたパターン３５における長方形ピクセルに対応する。例として、(X,Y座標を使用する)基準パターン３０のピクセル(0,0)は、拡大パターン３５の0から3までのX'座標およ0から2までのY'座標の位置に拡大されたピクセルに対応する。別の例としては、基準パターン３０のピクセル(5,1)は、拡大パターン３５の20から23までのX'座標および3から5までのY'座標の位置に拡大されたピクセルに対応する。
【００１５】
図１に戻って、ステップ１０４は、基準パターンの個別ピクセルを順次検査し、それらが隣接ピクセルと連係して鋭い直角を形成しているか否かを判断することによって、基準パターンにおける鋭い直角を識別し分類する。図２の例において、位置(5,1)のピクセルを検査すると、そのピクセルが位置(4,2)のピクセルと連係して鋭い直角を形成していることが明らかになる。基準パターンにおけるこのような直角は、図２に示されているように、「主」直角と呼称される。基準パターンにおける直角の各々は、拡大パターンにおいて対応する直角を持つ。図２の識別された主直角に対応する直角は、図３において太い点線で示されている。これは、潜在的に円滑化が必要な角度である。
【００１６】
図４は、特定の印刷される点(x,y)が直角を形成しているか否かを判断する際に必要となるステップの詳細を示す。このステップは、印刷されるべきピクセルの各々に関して実行され、次のような方向に応じて直角を識別し分類する。すなわち、タイプＡの直角は左上を向いているものであり、タイプＢの直角は右下を向いているものであり、タイプＣの直角は右上を向いているものであり、タイプＤの直角は左下を向いているものである。これらのタイプの直角の例が図５に示されている。
【００１７】
図４の諸ステップは、特定のドット(x,y)が４つのうちどのタイプの直角を形成するかを順次検査する。本明細書の以下の記述において、印刷されるべきピクセル位置を黒と呼び、空白のままとされるべきまたは背景色で印刷されるべきピクセル位置を白と呼ぶことにする。
【００１８】
図４の第１のステップ１０５は、現在時のドット(x,y)が黒である否か検査する。黒でなければ、次のドット位置に処理を進める。ステップ１０６において、ドット(x-1,y+1)が黒でかつドット(x-1,y)が白か検査される。このテストの結果が真であれば、アルゴリズムは、ドット(x,y)が本当に直角を形成していると結論して、ステップ１０７において、タイプＡの直角としてそれを分類する。ステップ１０８において、ドット(x-1,y+1)が黒でかつドット(x,y+1)が白か検査される。このテストの結果が真であれば、アルゴリズムは、ドット(x,y)が本当に直角を形成していると結論して、ステップ１０９において、タイプＢの直角としてそれを分類する。ステップ１１０において、ドット(x+1,y+1)が黒でかつドット(x+1,y)が白か検査される。このテストの結果が真であれば、アルゴリズムは、ドット(x,y)が本当に直角を形成していると結論して、ステップ１０７において、タイプＣの直角としてそれを分類する。ステップ１１２において、ドット(x+1,y+1)が黒でかつドット(x,y+1)が白か検査される。このテストの結果が真であれば、アルゴリズムは、ドット(x,y)が本当に直角を形成していると結論して、ステップ１１３において、タイプＤの直角としてそれを分類する。上記ステップのいずれにおいても真でなければ、ステップ１１４において、ピクセル(x,y)は直角を形成していないと判断される。
【００１９】
図２に示されているように、基準パターンの直角の各々は、それぞれ一定の長さを持つ水平辺１１６および垂直辺１１７によって形成されている。図１に戻って、次のステップ１２０は、基準パターンにおける主直角の水平および垂直辺１１６および１１７の長さを決定する。図２の例においては、各エッジの長さは、１ピクセルである。
【００２０】
図６乃至図９は、基準パターンの異なるタイプの直角の水平および垂直辺の長さを決定する本発明の好ましいプロシージャを示している。実際には、これらのプロシージャのうちの１つだけが識別された直角の各々毎に実行される。図６のプロシージャは、タイプＡの直角について実行される。図７のプロシージャは、タイプＢの直角について実行される。図８のプロシージャは、タイプＣの直角について実行される。図９のプロシージャは、タイプＤの直角について実行される。４つのプロシージャのすべては同様のものであるので、タイプＡに関する図６のプロシージャだけを以下説明する。
【００２１】
ステップ１２２は、変数cをx-1と等しく設定し、現在ピクセルの１列左へ設定する。変数rは、現在時ピクセルの列であるyと等しく設定される。主直角の水平辺の長さを表す変数Apは１に初期設定される。
【００２２】
ステップ１２３は、ピクセル(c,r)が白でかつピクセル(c,r+1)が黒であるか否かを判断する。これら条件の両方ともに真であれば、ステップ１２４において変数cおよび変数Apが増分され、ステップ１２３が繰り返される。ステップ１２３の検査が偽であれば、変数Apの現在値が主直角の水平辺の長さとして採択され、主直角の垂直辺の長さを決定するステップに処理が進められる。
【００２３】
主直角の垂直辺の長さを決定するため、ステップ１２５は、変数cを現在時ピクセルの列であるxと等しく設定する。変数rは、現在時ピクセルの列であるyと等しく設定される。主直角の垂直辺の長さを表す変数Bpは１に初期設定される。
【００２４】
ステップ１２６は、ピクセル(c,r)が黒でピクセル(c-1,r)が白であるか否かを判断する。これら条件の両方ともに真であれば、ステップ１２７において変数rおよび変数Bpが増分され、ステップ１２６が繰り返される。ステップ１２６の検査が偽であれば、変数Bpの現在値が主直角の垂直辺の長さとして採択される。上述のように、図７乃至図９のプロシージャは変数操作の詳細を除いて図６と同様である。
【００２５】
図１に戻り、次のステップ１２８は、識別された直角の各々について基準パターンにおける隣接直角を識別する。より具体的に述べれば、このステップは、識別された主直角の各々について上方隣接直角および下方隣接直角を識別するステップを含む。定義によって、あらゆる識別された主直角すべてについて、基準パターンの中にこのような角度が存在する。そのような隣接角度の各々は、水平辺および垂直辺から構成される(但しその長さがゼロであることもある)。図１におけるステップ１２９は、基準パターンにおける隣接直角の水平および垂直辺の長さを決定するステップを含む。
【００２６】
隣接する直角は、図２において、基準パターン例および識別された主直角に対して識別されている。下方隣接直角は、黒または印刷されるピクセル(1,3)、(2,3)、(3,3)および(4,2)によって形成されている。ピクセル(1,3)、(2,3)および(3,3)は、長さが３ピクセルである下方隣接直角水平辺１３０を形成している。ピクセル(5,2)は、長さが１ピクセルである下方隣接直角垂直辺１３１を形成している。上方隣接直角は、黒または印刷されるピクセル(6,1)および(5,1)によって形成されていて、これらピクセルは長さが２ピクセルである水平辺１３２を形成している。この例では、上方隣接直角の垂直辺１３３の長さはゼロである。図１４には、識別された長さと共にこれと同じ構造が示されている。
【００２７】
実際には、図１のステップ１２８およびステップ１２９は共通のプロシージャで実施されるが、直角のタイプ毎に若干相違する。図１０には、基準パターンの位置(x,y)のピクセルによって形成されるタイプＡ直角に対して使用されるプロシージャが示されている。図１０のステップ１３４は、列変数cをxに、行変数rを値y-BPに設定する。上方隣接直角の垂直辺の長さを表す変数AUはゼロに初期設定される。
【００２８】
ステップ１３５は、位置(c,r)にあるピクセルが白で位置(c,r+1)のピクセルが黒であるか否かを判断する。これらの条件の両方とも真であれば、ステップ１３６において、変数AUおよび変数cの増分が実行され、ステップ１３５が繰り返される。ステップ１３５の結果が偽であれば、AUが上方隣接直角の水平辺の長さとして採択される。
【００２９】
次に、上方隣接直角の垂直辺の長さBUを決定するため、後続ステップ１３８、１３９および１４０が実行される。ステップ１３８は、列変数cをx+AUに、行変数rをy-BPに設定する。変数BUはゼロに初期設定される。ステップ１３９は、位置(c,r)にあるピクセルが黒で位置(c-1,r)のピクセルが白であるか否かを判断する。これらの条件の両方とも真であれば、ステップ１４０において、変数BUの増分および変数rの減分が実行され、ステップ１３９が繰り返される。ステップ１３９の結果が偽であれば、BUが上方隣接直角の垂直辺の長さとして採択される。
【００３０】
次に、下方隣接直角の垂直辺の長さBLを決定するため、ステップ１４２、１４３および１４４が実行される。ステップ１４２は、列変数cをx-APに、行変数rをy+1に設定する。変数BLはゼロに初期設定される。ステップ１４３は、位置(c,r)にあるピクセルが黒で位置(c-1,r)のピクセルが白であるか否かを判断する。これらの条件の両方とも真であれば、ステップ１４４において、変数BLの増分および変数rの増分が実行され、ステップ１４４が繰り返される。ステップ１４３の結果が偽であれば、BLが下方隣接直角の垂直辺の長さとして採択される。
【００３１】
次に、下方隣接直角の水平辺の長さALを決定するため、ステップ１４６、１４７および１４８が実行される。ステップ１４６は、列変数cをx-AP-1に、行変数rをy+BLに設定する。変数ALはゼロに初期設定される。ステップ１４７は、位置(c,r)にあるピクセルが白で位置(c,r+1)のピクセルが黒であるか否かを判断する。これらの条件の両方とも真であれば、ステップ１４８において、変数ALの増分および変数cの減分が実行され、ステップ１４７が繰り返される。ステップ１４７の結果が偽であれば、ALが下方隣接直角の水平辺の長さとして採択される。
【００３２】
図１１、図１２および図１３は、タイプＢ、タイプＣおよびタイプＤに関するAU、BU、AL、BLをそれぞれ決定するための同様のステップを示している。
【００３３】
隣接直角の長さを決定した後、基準パターンの主直角に対応する拡大パターンの直角を円滑化すべきか否か選択する。この決定は、主直角の水平および垂直辺の長さAPおよびBPと、上方および下方隣接直角の水平および垂直辺の長さAU、AL、BUおよびBLに基づいて行われる。APおよびBPならびにAU、AL、BUおよびBLがあらかじめ定められた限度内にある場合にのみ拡大パターンにおける円滑化を行うステップ１５２が実行される。
【００３４】
具体的には、主直角の辺の長さAPおよびBPがあらかじめ定めれれた値未満である場合に限って円滑化ステップが実行される。更に具体的に述べれば、円滑化ステップ１５２は以下の条件の１つが真である場合にのみ実行される。
すなわち、
＊基準パターンにおける主直角の水平辺の長さAPが１ピクセルであること、
＊基準パターンにおける主直角の垂直辺の長さBPが１ピクセルであること、
＊主直角の水平辺の長さAPが２ピクセルであり、かつ主直角の垂直辺の長さBPが３ピクセルであること、
または、
＊主直角の垂直辺の長さBPが２ピクセルであり、主直角の水平辺の長さAPが２ピクセルであること。
【００３５】
更に、ステップ１５０において、基準パターンにおける隣接直角の辺の長さAU、AL、BUおよびBLの値に関するあらかじめ定められた限度によって円滑化ステップ１２５の例外が検査される。具体的には、隣接直角各々の水平および垂直辺の長さがあらかじめ定められた(APおよびBPに対する)相対的限度内にある場合にのみステップ１５２は実行される。
【００３６】
上述した一般的処理ステップは、本発明の実施にとって十分なものである。しかしながら、本発明の結果を向上させるため実施することができるいくつかの付加的処理例外がある。
【００３７】
以下の表１は、タイプＡ直角に関してステップ１５０を実行する疑似コードである。このコードは、例外および円滑化ステップを実施するためのいくつかのプロシージャを含む。
【００３８】
【表１】
0004098870.tif 000002
0004098870.tif 000003
【００３９】
上記コードにおいて、検査が現在時主直角が円滑化されるべきことを示す場合は必ず変数To_Smoothが真に設定される。To_Smoothが種々の検査に応答して設定されると、プロシージャDO_SMOOTHは実際の円滑化を実行する。
【００４０】
以下の表２は、タイプＢ直角についてステップ１５０を実行する疑似コードを示す。
【００４１】
【表２】
0004098870.tif 000004
0004098870.tif 000005
【００４２】
下記表３はタイプＣ直角についてステップ１５０を実行する疑似コードである。
【００４３】
【表３】
0004098870.tif 000006
【００４４】
下記表４はタイプＣ直角についてステップ１５０を実行する疑似コードである。
【００４５】
【表４】
0004098870.tif 000007
0004098870.tif 000008
【００４６】
下記表５は、サブルーチンH_SMOOTHおよびV_SMOOTHを示す。これらサブルーチンは、一般的に、隣接直角の水平および垂直辺の長さが、主直角に対してあらかじめ定められた相対的限度内にあることを確認するための検査を実行する。H_SMOOTHは、上記の諸プロシージャから呼び出され、主直角とその隣接直角の水平辺の間の関係を検査する。V_SMOOTHは、上記の諸プロシージャから呼び出され、主直角とその隣接直角の垂直辺の間の関係を検査する。これらのサブルーチンの各々は、主直角が円滑化されるべき場合は(真に対応する)１を返し、主直角が円滑化される必要がない場合は(偽に対応する)０を返す。
【００４７】
【表５】
0004098870.tif 000009
【００４８】
図３の直角の円滑化の結果が図１５に示されている。円滑化ステップ１５２は、拡大パターンからのピクセルの削除および拡大パターンへのピクセルの追加の両者を潜在的に含む。削除される可能性のあるピクセルはただ２つであり、それらピクセルは、拡大パターンの垂直角度の水平および垂直辺の外側終端にあるピクセルである。図１５の例において、これらはピクセル１５４および１５５として示されている。しかしながら、このようなピクセルは、対応する辺の長さがあらかじめ定められた値より大きければ、単に削除されるだけである。好ましい実施形態においては、垂直辺の外側端点のピクセルは、垂直辺の長さが２を越えている場合にのみ削除される。水平辺の外側端点のピクセルは、垂直辺の長さが２を越えている場合にのみ削除される。図１５の例においては、ピクセル１５４および１５５の両方とも削除される。
【００４９】
拡大パターンにおいて直角によって形成される三角形の範囲内を埋め込むためピクセルが追加される。図１５は、ピクセル１５４と１５５の中心を結ぶ線分を示す。この線分は、直角の水平なおよび垂直辺と連係して三角形を完成させる。中心がこの領域内にあるすべてのピクセルが拡大パターンに追加される。追加されたピクセルは、図１５において+記号で識別されている。
【００５０】
上掲のコードは、サブルーチンCheck_Cross_And_RecalculateおよびCheck_Special_Structureに対するいくつかの呼び出しを含む。これらのルーチンは、上記のような処理ステップに対応しない特殊な文字構造を検出した後、例外処理を実施する機能を持つ。
【００５１】
Check_Cross_And_Recalculateは、交差を持つ特定の文字構造を検出する。交差がある場合は、例えば、直角の垂直辺の長さBは、実際には、交差を通過して上方へ延伸して見える。図１６は、このような状況の例として、高さ１ピクセルである水平交差１５０を持つ構造を示している。上述の一般的処理ステップがBPという垂直辺の長さを与えるが、BP'を図１６に示されるような垂直辺であるとすれば、辺の長さをBP+BP'+1とすれば、この構造はより効果的に円滑化される。
【００５２】
Check_Cross_And_Recalculateにはいくつかのバリエーションがある。タイプＡ直角に関して２つのバリエーションが実行される。これらのバリエーションの第１のものは、引数(1,UpSide)に応答して実行される。このバリエーションは、((BL >= 2 OR BL >= AL) AND (AU= O AND BU= O))という条件について検査する。この条件は、図１６に示される主直角に関して真である。図１７は、この条件が満たされる場合に実行されるステップを示す。第１のステップ１６０は、列変数Cをxに、行変数rを値y-BP-1に設定する。変数BP'はゼロに初期設定される。ステップ１６１は、位置(c,r)にあるピクセルが黒で、位置(c-1,r)のピクセルが白であるか検査する。これらの条件の両方が真であれば、ステップ１６２においてBPが増分され、変数rが減分され、次にステップ１６１が繰り返される。ステップ１６１の結果が偽であれば、ステップ１６２において、Bp=Bp+Bp'+1によってBpの増分が実行される。
【００５３】
タイプＡに関するCheck_Cross_And_Recalculateの第２のバリエーションは、引数(1,DownSide)に応答して実行される。このバリエーションは、AL > BLという条件に対する検査を行う。図１８に示される主直角に関してこの条件は真である。図１9は、この条件が満たされる場合に実行されるステップを示す。第１のステップ１６５は、列変数Cをx-APに、行変数rを値y+BL+2に設定する。変数BL'はゼロに初期設定される。ステップ１６６は、位置(c,r)にあるピクセルが黒で、位置(c-1,r)のピクセルが白であるか検査する。これらの条件の両方とも真であれば、ステップ１６７においてBL'の増分および変数rの増分が実行され、ステップ１６６が繰り返される。ステップ１６６の結果が偽であれば、ステップ１６８において、BLはBL'+1だけ増分される。
【００５４】
タイプＢに関して使用されるCheck_Cross_And_Recalculateは３つのバリエーションがある。これらのバリエーションの第１のものは、引数(2,Current)に応答して実行される。このバリエーションは、(BP <= 8)で、位置(x,y+BP+1)および(y+1,y+BP+1)のピクセルが黒であるという条件について検査する。この条件は、図２０で示される主直角に関して真である。図２１は、この条件が満たされる場合に実行されるステップを示す。第１のステップ１９５は、列変数Cをxに、行変数rを値y+BP+2に設定する。変数BP'はゼロに初期設定される。ステップ１9６は、位置(c-1,r)にあるピクセルが黒で、位置(c,r)のピクセルが白であるか検査する。これらの条件の両方とも真であれば、ステップ１９７においてBP'の増分および変数rの増分が実行され、ステップ１９６が繰り返される。ステップ１９６の結果が偽であれば、ステップ１９８において、BPはBP'+1だけ増分される。
【００５５】
これらのバリエーションの別のものは、引数(2,UpSide)に応答して実行される。このバリエーションは、(AP >2 AND BP>0)という条件について検査する。この条件は、図２２で示される主直角に関して真である。図２３は、この条件が満たされる場合に実行されるステップを示す。第１のステップ２００は、列変数Cをxに、行変数rを値y-BU-1に設定する。変数BU'はゼロに初期設定される。ステップ２０１は、位置(c-1,r)にあるピクセルが黒で、位置(c,r)のピクセルが白であるか検査する。これらの条件の両方とも真であれば、ステップ２０２においてBU'の増分および変数rの減分が実行され、ステップ２０１が繰り返される。ステップ２０１の結果が偽であれば、ステップ２０３において、BUはBU'+1だけ増分される。
【００５６】
タイプＢに関するバリエーションの最後のものは、引数(2,Downside)に応答して実行される。このバリエーションは、(BL >= 0 )で、位置(x-AL,y+BP+BL+1)および(x-AL+1,y+BP+BL+1)のピクセルが黒であるという条件について検査する。この条件は、図２４で示される主直角に関して真である。図２５は、この条件が満たされる場合に実行されるステップを示す。第１のステップ２０５は、列変数Cをx-ALに、行変数rを値y+BP+BL+2に設定する。変数BL'はゼロに初期設定される。ステップ２０６は、位置(c-1,r)にあるピクセルが黒で、位置(c,r)のピクセルが白であるか検査する。これらの条件の両方とも真であれば、ステップ２０７においてBL'の増分および変数rの増分が実行され、ステップ２０６が繰り返される。ステップ２０６の結果が偽であれば、ステップ２０８において、BLはBL'+1だけ増分される。
【００５７】
サブルーチンCheck_Special_Structureは、サブルーチンと共に与えられる引数に基づいて、特別の処理を必要とする６つの異なるタイプの文字または直角に関する検査を実行する。異なる条件に応答して、Check_Special_Structureは、ピクセルを除去し、角度パラメータを変更し、現在時ピクセル位置を変更する。
【００５８】
図２６および図２７は、タイプ１の特別構造の２つのバリエーションを示す。(AP=1 AND BP = 1 AND BU = O AND (AU = 2 OR AU = 3))という条件が満たされる時、この特別な構造は存在する。これら条件は、図２６の上方の構造１６９(AU=2)において、また、図２７の上方の構造１７０(AU=3)において、満たされている。これらの図および以下の例において、未処理の黒または印刷ピクセルは、斜線を引いた正方形によって表される。位置(x,y)にある現在時ピクセルは、符号X,Yによって標示される。Check_Special_Structureの処理ステップによって削除されるピクセルは、空白または白い正方形によって表される。
【００５９】
図２６において、この場合AU=2であり、Check_Special_Structureは、(x,y)および(x-1,y+1)のピクセルを削除する。更に、現在時位置は、１ピクセル右に、すなわち(x+1,y)へ移動される。言い換えると、次の処理の前に、xは１増分される。結果として生ずる構造は、図２６において処理後の構造１７１として示されている。図２７において、この場合AU=3であり、Check_Special_Structureは、(x,y)、(x-1,y+ 1)、(x+1,y)および(x,y+1)という４個のピクセルを削除する。更に、現在時位置は、２ピクセル右に、すなわち(x+2,y)へ移動される。言い換えると、次の処理の前に、xは２増分される。結果として生ずる構造は、図２７において処理後の構造１７２として示されている。両方のケースとも、変数To_Smoothは、１または真に設定される。
【００６０】
図２８および図２９は、タイプ２の特別構造の２つのバリエーション１８０および１８１を示す。図２８に示される第１のバリエーション１８０は、(BU=O AND BL=0 AND AL=0)という条件が満たされる時存在する。図２９に示される第２のバリエーション１８１は、位置(x-1, y+1)のピクセルが白で、かつ(AU=O AND (BU=1 OR BU=2))という条件が満たされる時存在する。いずれのケースにおいても、実行される特別な処理は、To_Smoothを偽またはゼロに設定する。
【００６１】
図３０および図３１は、タイプ３の特別構造の２つのバリエーションを示す。タイプ３の特別構造は、タイプＡおよびタイプＢの直角に関してのみ存在が検出される。図３０は、タイプ３の特別構造１８３が、座標(x,y)のタイプＡ直角に関して検出される状況を示している。この状況を検出するためには、先ず、位置(x-1+AU,y)にタイプＣ直角が存在するか否か識別することが必要である。この条件は、図４を参照して記述した上述のステップ１１０を使用して、判断される。そのような直角が存在しなければ、主直角は特別な構造と識別されない。タイプＣ直角が存在すれば、図８のステップを使用して辺の長さが計算される。
【００６２】
辺の長さをACおよびBCとして、ACおよびBCを使用して、以下の条件が満たされれば、タイプ３の特別構造が存在すると判断される。すなわち、
位置(x+AU-1+AC,y+BC-1)のピクセルは黒であり、かつ、
位置(x+AU-1+AC+1,y+BC-1)のピクセルは白であり、かつ、
位置(x+AU-1+AC,y+BC)のピクセルは黒であり、かつ、
位置(x+AU-1+AC+1,y+BC)のピクセルは白であり、かつ、
位置(x+AU-1+AC,y+BC+1)のピクセルは白であり、かつ、
位置(x+AU-1+AC+1,y+BC+1)のピクセルは白であること。
これらの条件がすべて真であれば、図３０の例で示されているように、位置(x,y)および(x+2,y)のピクセルが白に設定される。更に、現在時位置はx方向に１ドット増分され、(x+1,y)となる。結果として生ずる構造１８４が図３０に示されている。
【００６３】
図３１は、タイプ３の特別構造１８５が、座標(x,y)のタイプＢ直角に関して検出される状況を示している。この状況は、AU=OでかつBU=Oの場合にのみ存在する。AUおよびBUがゼロであれば、タイプＣ直角が存在する。このタイプＣ直角の水平辺の長さACは、行y-1およびy-2の垂直に隣接するピクセルを右から左へ検査することによって決定される。このタイプＣ直角の垂直辺の長さBCは、列x-ACおよびx-AC+1の水平に隣接するピクセルを検査することによって決定される。
【００６４】
タイプ３の特別構造は、この場合、(BC=1 AND (AC=1 OR AC=2))という条件が満たされれば存在すると判断される。これらの条件が真であれば、位置(x,y)のピクセルは白に設定され、主直角のBPは１に設定される。更に、現在時位置はy方向に１ドット減分され、(x,y-1)となる。この場合、円滑化ステップの完了後、yのオリジナルの値が復元される。結果として生ずる構造１８６が図３１に示されている。
【００６５】
図３２は、タイプ４の特別構造１８８を示す。主直角がタイプＢで、(BL=0 AND AU=O AND BU=O)でかつ位置(x,y-1)のピクセルが白であるという条件が満たされれば、タイプ４の特別構造が存在する。この特別構造が検出されると、APは１に設定される。
【００６６】
図３３は、タイプ５の特別構造１８９を示す。主直角がタイプＤで、(BL=0 AND AU=O AND BU=O)でかつ位置(x,y-1)のピクセルが白であるという条件が満たされれば、タイプ５の特別構造が存在する。この特別構造が検出されると、APは１に設定される。
【００６７】
最後の特別構造であるタイプ６の特別構造は、多くの英数字文字および漢字の"羽"の部分に発生する。そこでは、曲線が、垂直から水平へ、または水平から垂直へ変わる。図３４は、タイプＡ直角に関するこのような状況を示している。実際には、主直角のそれぞれのタイプ毎に独特のプロセスが存在する。そのようなプロセスの各々は、垂直プロシージャおよび水平プロシージャを必要とする。垂直プロシージャが最初に実行される。
【００６８】
次の表６は、タイプＡ直角に関するプロセスである。
【００６９】
【表６】
0004098870.tif 000010
【００７０】
タイプＢ、ＣおよびＤの直角に関してもプロセスは同様である。例えば、タイプＢ直角に関して、次の表７のプロセスが実行される。
【００７１】
【表７】
0004098870.tif 000011
【００７２】
タイプＣ直角に関しては、次の表８のプロセスが実行される。
【００７３】
【表８】
0004098870.tif 000012
【００７４】
タイプＤ直角に関しては、次の表９のプロセスが実行される。
【００７５】
【表９】
0004098870.tif 000013
【００７６】
種々の異なる文字を拡大する場合に本発明の一般的原理を適用することができるが、本発明は中国文字および漢字文字セットを拡大する場合に特に役立つ。本発明は、x,y両軸における拡大係数を独立して指定する場合でも任意の拡大係数を取り扱うことができるという利点を持つ。既存の拡大方式は、xおよびyの拡大係数に関して許容限度を持つ。本発明の更に別の利点は、ルックアップ・テーブルを不要とし、従って、メモリ・オーバーヘッドを減少するという点である。
【００７７】
法規に準拠して、本発明は、構造上および方法論上の機能に関して多かれ少なかれ特定の言語を用いて記述された。しかしながら、上記の手段は本発明を具体的に実施する好ましい形態を含むものであるので、本発明は記述された特定の機能に限定されないことは理解されるべきである。
【００７８】
本発明には、例として次のような実施様態が含まれる。
（１）第１のピクセル・パターンによって表現される文字を拡大する方法であって、上記第１のピクセル・パターンのピクセルの各々を第２のピクセル・パターンにおける対応する長方形ピクセル群に変換するステップと、上記第１のピクセル・パターンにおいてピクセルによって形成される直角を識別するステップと、上記第１のピクセル・パターンにおいて識別した直角の水平および垂直辺の長さを決定するステップと、上記第１のピクセル・パターンにおける直角の水平および垂直辺の上記長さに基づいて、上記第２のピクセル・パターンの対応する直角の円滑化を実行すべきか否かを判断するステップと、を含む文字拡大方法。
（２）上記第１のピクセル・パターンにおける個別ピクセルが直角を形成しているか否かを判断するためそれら個別ピクセルを順次検査するステップを更に含む、上記（１）に記載の文字拡大方法。
（３）上記第１のピクセル・パターンにおける直角の各々の水平および垂直辺の長さを決定する前に各直角の方向の観点からそれら角度を分類するステップを更に含む、上記（１）に記載の文字拡大方法。
（４）上記第１のピクセル・パターンにおける直角の各々の水平および垂直辺の長さを決定する前に、上記直角が左上向きか、右下向きか、左下向きか、または右上向きかに従って各角度を分類するステップを更に含む、上記（１）に記載の文字拡大方法。
【００７９】
（５）上記第１のピクセル・パターンにおける直角の水平辺の長さが１ピクセルであること、上記第１のピクセル・パターンにおける直角の垂直辺の長さが１ピクセルであること、上記第１のピクセル・パターンにおける直角の水平辺の長さが２ピクセルでありかつ上記第１のピクセル・パターンにおける直角の垂直辺の長さが３ピクセルであること、上記第１のピクセル・パターンにおける直角の垂直辺の長さが２ピクセルでありかつ上記第１のピクセル・パターンにおける直角の水平辺の長さが２ピクセルであること、という条件の１つが真である時、上記第２のピクセル・パターンにおける対応する特定の直角の円滑化実行を選択するステップを更に含む、上記（１）に記載の文字拡大方法。
（６）第１のピクセル・パターンにおける直角の水平および垂直辺の長さがあらかじめ定められた値より小さい場合にのみ、上記第２のピクセル・パターンにおける対応する特定の直角の円滑化実行を選択するステップを、更に含む上記（１）に記載の文字拡大方法。
（７）第１のピクセル・パターンにおける直角の水平および垂直辺の長さがあらかじめ定められた値より大きい場合、上記第２のピクセル・パターンからピクセルを削除するという円滑化ステップを更に含む、上記（１）に記載の文字拡大方法。
（８）上記第２のピクセル・パターンにおける直角によって形成される三角形の範囲内の位置にピクセルを追加するという円滑化ステップを更に含む、上記（１）に記載の文字拡大方法。
【００８０】
（９）第１のピクセル・パターンによって表現される文字を拡大する方法であって、上記第１のピクセル・パターンのピクセルの各々を第２のピクセル・パターンにおける対応する長方形ピクセル群に変換するステップと、上記第１のピクセル・パターンにおいてピクセルによって形成される直角を識別するステップと、上記第１のピクセル・パターンにおいて識別した直角の水平および垂直辺の長さを決定するステップと、上記第１のピクセル・パターンにおいて識別した直角の各々に関して、水平辺および垂直辺を有し当該直角に隣接する直角を識別するステップと、上記第１のピクセル・パターンにおいて識別した隣接直角の水平および垂直辺の長さを決定するステップと、上記第１のピクセル・パターンにおける直角の水平および垂直辺の長さならびに上記第１のピクセル・パターンにおける隣接直角の水平および垂直辺の長さに基づいて、上記第２のピクセル・パターンにおける対応する直角を円滑化するか否かを判断するステップと、を含む文字拡大方法。
（１０）上記第１のピクセル・パターンにおける対応する直角の水平および垂直辺の長さがあらかじめ定められた値より小さく、かつ、上記第１のピクセル・パターンにおける直角の水平および垂直辺の長さに比較した場合の、上記第１のピクセル・パターンにおける対応する隣接直角の水平および垂直辺の相対的長さがあらかじめ定められた限度内にある場合にのみ、上記第２のピクセル・パターンにおける上記特定の直角の円滑化の実行を選択するステップと、を含む上記（９）に記載の文字拡大方法。
【００８１】
【発明の効果】
本発明によって、従来技術のハードウェア形態において必要とされるメモリおよびその他ハードウェア資源を節約しながら、高いスループットとすぐれたプリント品質を達成する辺円滑化方法が提供される。
【図面の簡単な説明】
【図１】本発明の実施形態に従う好ましい処理の概要を示す流れ図である。
【図２】基準ピクセル・パターンの典型的１例を示すブロック図である。
【図３】基準パターンに基づいて拡大されたピクセル・パターンを示すブロック図である。
【図４】図２の基準ピクセルにおける直角を識別し分類する方法を示す流れ図である。
【図５】種々の直角の分類を示すブロック図である。
【図６】タイプＡの直角の辺の長さを決定する方法を示す流れ図である。
【図７】タイプＢの直角の辺の長さを決定する方法を示す流れ図である。
【図８】タイプＣの直角の辺の長さを決定する方法を示す流れ図である。
【図９】タイプＤの直角の辺の長さを決定する方法を示す流れ図である。
【図１０】タイプＡの直角に隣接する直角の辺の長さを決定する方法を示す流れ図である。
【図１１】タイプＢの直角に隣接する直角の辺の長さを決定する方法を示す流れ図である。
【図１２】タイプＣの直角に隣接する直角の辺の長さを決定する方法を示す流れ図である。
【図１３】タイプＤの直角に隣接する直角の辺の長さを決定する方法を示す流れ図である。
【図１４】１つの文字構造を例として使用し、主直角および隣接直角に関する種々の辺の長さを示すブロック図である。
【図１５】図３の拡大ピクセル・パターンの直角を円滑化した結果を示すブロック図である。
【図１６】通常の処理に対する例外として取り扱われる交差構造を示すブロック図である。
【図１７】図１５の交差構造に対応する処理の流れ図である。
【図１８】通常の処理に対する例外として取り扱われる別の交差構造を示すブロック図である。
【図１９】図１８の交差構造に対応する処理の流れ図である。
【図２０】通常の処理に対する例外として取り扱われる更に別の交差構造を示すブロック図である。
【図２１】図２０の交差構造に対応する処理の流れ図である。
【図２２】通常の処理に対する例外として取り扱われる更に別の交差構造を示すブロック図である。
【図２３】図２２の交差構造に対応する処理の流れ図である。
【図２４】通常の処理に対する例外として取り扱われる更に別の交差構造を示すブロック図である。
【図２５】図２４の交差構造に対応する処理の流れ図である。
【図２６】通常の処理ステップに対する例外として取り扱われる更に別の構造を示すブロック図である。
【図２７】通常の処理ステップに対する例外として取り扱われる更に別の構造を示すブロック図である。
【図２８】通常の処理ステップに対する例外として取り扱われる更に別の構造を示すブロック図である。
【図２９】通常の処理ステップに対する例外として取り扱われる更に別の構造を示すブロック図である。
【図３０】通常の処理ステップに対する例外として取り扱われる更に別の構造を示すブロック図である。
【図３１】通常の処理ステップに対する例外として取り扱われる更に別の構造を示すブロック図である。
【図３２】通常の処理ステップに対する例外として取り扱われる更に別の構造を示すブロック図である。
【図３３】通常の処理ステップに対する例外として取り扱われる更に別の構造を示すブロック図である。
【図３４】通常の処理ステップに対する例外として取り扱われる更に別の構造を示すブロック図である。
【符号の説明】
３０    基準ピクセル・パターンまたはビットマップ
３１    空白ピクセル
３２    表示または印刷されるピクセル
３５    拡大されたピクセル・パターンまたはビットマップ
１１６  直角の水平辺
１１７  直角の垂直辺
１３０  下方隣接直角の水平辺
１３１  下方隣接直角の垂直辺
１３２  上方隣接直角の水平辺
１３３  上方隣接直角の垂直辺
１５０  水平交差
１５４  垂直角度の水平辺の外側終端ピクセル
１５５  垂直角度の垂直辺の外側終端ピクセル
１６９、１７０、１７１、１７２、１８０、１８１、１８３，１８４、１８５，１８６、１８８，１８９、１９０  特別構造
【図１】
0004098870.tif 000014
【図２】
0004098870.tif 000015
【図３】
0004098870.tif 000016
【図４】
0004098870.tif 000017
【図５】
0004098870.tif 000018
【図６】
0004098870.tif 000019
【図７】
0004098870.tif 000020
【図８】
0004098870.tif 000021
【図９】
0004098870.tif 000022
【図１０】
0004098870.tif 000023
【図１１】
0004098870.tif 000024
【図１２】
0004098870.tif 000025
【図１３】
0004098870.tif 000026
【図１４】
0004098870.tif 000027
【図１５】
0004098870.tif 000028
【図１６】
0004098870.tif 000029
【図１７】
0004098870.tif 000030
【図１８】
0004098870.tif 000031
【図１９】
0004098870.tif 000032
【図２０】
0004098870.tif 000033
【図２１】
0004098870.tif 000034
【図２２】
0004098870.tif 000035
【図２３】
0004098870.tif 000036
【図２４】
0004098870.tif 000037
【図２５】
0004098870.tif 000038
【図２６】
0004098870.tif 000039
【図２７】
0004098870.tif 000040
【図２８】
0004098870.tif 000041
【図２９】
0004098870.tif 000042
【図３０】
0004098870.tif 000043
【図３１】
0004098870.tif 000044
【図３２】
0004098870.tif 000045
【図３３】
0004098870.tif 000046
【図３４】
0004098870.tif 000047