(57)【特許請求の範囲】
【請求項１】
描画する文字の輪郭線を任意に設定した幅の輪郭線に変更して文字修飾を行う画像処理方法において、
描画する文字の輪郭線を複数の直線に分割し、該分割した直線のそれぞれを、該直線と平行で長さの等しい第１の直線および第２の直線と、該分割した直線の始点と垂直に接し長さが前記幅と等しい第３の直線と、該分割した直線の終点を中心として前記幅を直径とする半円とからなる閉曲線と入れ替え、該閉曲線の内側となる領域を塗り潰すことで前記文字修飾を行うことを特徴とする画像処理方法。
【請求項２】
前記閉曲線は、右回り若しくは左回りする方向を有し、ノンゼロワインディングルールで前記塗り潰しが行われることを特徴とする請求項１記載の画像処理方法。
【請求項３】
前記閉曲線の方向は、前記文字を形成する全ての閉曲線で統一されていることを特徴とする請求項２記載の画像処理方法。
【請求項４】
描画する文字の輪郭線を任意に設定した幅の輪郭線に変更して文字修飾を行う画像処理装置において、
描画する文字の輪郭線を複数の直線に分割する座標変換手段と、
前記座標変換手段で分割された直線のそれぞれを、該直線と平行で長さの等しい第１の直線および第２の直線と該分割した直線の始点と垂直に接し長さが前記幅と等しい第３の直線と該分割した直線の終点を中心として前記幅を直径とする半円とからなる閉曲線と入れ替える輪郭線作成手段と、
前記輪郭線作成手段により入れ替えられた閉曲線の内側となる領域を塗り潰す画像生成手段と
を具備することを特徴とする画像処理装置。
【請求項５】
前記閉曲線は、右回り若しくは左回りする方向を有し、
前記画像生成手段は、ノンゼロワインディングルールにより前記閉曲線の内側となる領域を塗り潰す
ことを特徴とする請求項４記載の画像処理装置。
【請求項６】
前記閉曲線の方向は、前記文字を形成する全ての閉曲線で統一されていることを特徴とする請求項５記載の画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、画像処理方法および装置に関し、特に、文字デザイン情報をアウトライン情報で格納し、該アウトライン情報に基づいて一定幅の線で文字を表現して出力する画像処理方法および装置に関する。
【０００２】
【従来技術】
ページプリンタやディスプレイ等のビットマップスクリーンをベースとする出力装置では、画素が細かくなる、つまり、高解像度になるにしたがって、同じサイズの文字や図形を表示するために多くのデータが必要となる。特に、決まった輪郭をもつ文字情報においても、サイズ毎にビットマップデータを持つ必要があり効率が悪いものとなる、そのため、文字情報においてはサイズ毎にビットマップデータを持つのではなく、アウトライン情報を拡大または縮小してから文字の輪郭線の内部を塗り潰すことで文字を表示する方法が有利となる。
【０００３】
図９に文字の輪郭線とその輪郭線から得られるビットマップを示す。同図に示すように文字を出力（表示）する場合には、出力しようとする文字の輪郭線の内側の画素を他の画素と反転させたビットマップを出力する。反転される画素は、図１０に示すように輪郭線の内側に画素の中心点がある場合に、その画素は輪郭線の内側の画素であると判断され、この判断により決定される。
【０００４】
また、輪郭線（アウトライン）は、図１１に示すように長さと方向を持ったストロークで表現され、その長さを変更することで出力する文字の拡大縮小を行うことができる。
【０００５】
ところで、ワープロ等における文字の修飾方法の１つとして、図１２に示すような輪郭線を一定幅で縁取りする方法がある。この修飾方法を実現する最も容易な手段は、図１３に示すような線幅を持った輪郭線情報を用意することであるが、本来の（線幅を持たない）輪郭線情報の他に別のデータとして持たせることになるので、持つべき情報量が増大する。また、このような輪郭線情報を利用して文字の修飾を行う場合には、用意された輪郭線情報の線幅でしか文字の修飾が行えない等のように制限が大きくなる。
【０００６】
そのため、輪郭線を一定幅で縁取りするような修飾を行う方法は、元の輪郭線情報を利用して新しい輪郭線情報を作成するといった手段を用いることが一般的である。例えば、図１３に示すような輪郭線を作成しようとする場合には、図１４に示すように元の輪郭線５１から新しい輪郭線５２および５３を作成する。
【０００７】
このようにして、線幅を持つ文字を出力する場合には、図１５に示すように基本の輪郭線５４、５５に対して各々一定幅の矩形のビットマップ５６、５７を作成し、これらを合成する。しかし、同図に示すように矩形のビットマップ５６、５７を単に合成しただけでは、両ビットマップが接続する部分で１８０度よりも開いた側に切り欠きが生じてしまう。そのため、この切り欠きの部分に図１６（ａ）に示す輪郭線の延長線による矩形５８や図１６（ｂ）に示す輪郭線の接続点を中心とする円弧５９を追加して、切り欠き部分を滑らかに接続する。しかし、このような処理は図１７に示すように、ビットマップパターン５６、５７、５８を別々に作成して、後から論理和で合成するといった処理を行う必要があり、切り欠き部分に追加する矩形の大きさや円弧の角度を計算するといった処理も必要であり、通常の文字パターンを生成する手順とは大幅に異なってしまう。
【０００８】
これに対し、特許第２６２１４６３号の図形処理装置では、予め標準図形を準備しておき、この標準図形を切り欠き部分に合成する処理を行っている。これは、例えば、標準図形として準備されている円形のビットマップパターンを合成するとすれば、合成結果は図１６（ｂ）に示した円弧５９を追加した場合と同様になるが、円弧５９を合成する場合と異なり、その（円弧の）角度を計算する必要がなく、高速に処理を行うことができるといったものである。
【０００９】
【発明が解決しようとする課題】
上述のように、従来の画像処理装置では、複数のビットマップパターンを作成し、それらを合成することで輪郭線を一定幅で縁取りする文字修飾を実現している。これは、本来の輪郭線を塗り潰す手順（通常の文字を出力する手順）とは大幅に異なるために、このような文字修飾を実現させるためには新規に追加しなければならない機能が多く必要となる。また、追加した機能のためのメモリ（ビットマップのワークエリア等）が必要となるのでメモリ効率が悪くなる。このような点は、上述の特許第２６２１４６３号の図形処理装置においても同様に生じることになる。
【００１０】
そこで、この発明は、輪郭線を一定幅で縁取りする文字修飾を行う際に、輪郭線の接点での切り欠きを生じさせず、切り欠きを埋める必要のない画像処理方法および装置を提供することを目的とする。
【００１１】
【課題を解決するための手段】
上述した目的を達成するため、請求項１の発明は、描画する文字の輪郭線を任意に設定した幅の輪郭線に変更して文字修飾を行う画像処理方法において、
描画する文字の輪郭線を複数の直線に分割し、該分割した直線のそれぞれを、該直線と平行で長さの等しい第１の直線および第２の直線と、該分割した直線の始点と垂直に接し長さが前記幅と等しい第３の直線と、該分割した直線の終点を中心として前記幅を直径とする半円とからなる閉曲線と入れ替え、該閉曲線の内側となる領域を塗り潰すことで前記文字修飾を行うことを特徴とする。
【００１３】
また、請求項２の発明は、請求項１の発明において、前記閉曲線は、右回り若しくは左回りする方向を有し、ノンゼロワインディングルールで前記塗り潰しが行われることを特徴とする。
【００１４】
また、請求項３の発明は、請求項２の発明において、前記閉曲線の方向は、前記文字を形成する全ての閉曲線で統一されていることを特徴とする。
【００１５】
また、請求項４の発明は、描画する文字の輪郭線を任意に設定した幅の輪郭線に変更して文字修飾を行う画像処理装置において、描画する文字の輪郭線を複数の直線に分割する座標変換手段と、前記座標変換手段で分割された直線のそれぞれを、該直線と平行で長さの等しい第１の直線および第２の直線と該分割した直線の始点と垂直に接し長さが前記幅と等しい第３の直線と該分割した直線の終点を中心として前記幅を直径とする半円とからなる閉曲線と入れ替える輪郭線作成手段と、前記輪郭線作成手段により入れ替えられた閉曲線の内側となる領域を塗り潰す画像生成手段とを具備することを特徴とする。
【００１７】
また、請求項５の発明は、請求項４の発明において、前記閉曲線は、右回り若しくは左回りする方向を有し、前記画像生成手段は、ノンゼロワインディングルールにより前記閉曲線の内側となる領域を塗り潰すことを特徴とする。
【００１８】
また、請求項６の発明は、請求項５の発明において、前記閉曲線の方向は、前記文字を形成する全ての閉曲線で統一されていることを特徴とする。
【００２１】
【発明の実施の形態】
以下、この発明に係わる画像処理方法および装置の一実施例を添付図面を参照して詳細に説明する。
【００２２】
図１は、この発明に係わる画像処理装置の構成を示すブロック図である。
画像処理装置１０は、アウトライン情報の拡大縮小等の座標変換と曲線（輪郭線情報）の画素に応じて滑らかに見える大きさの直線への分割（複数の直線による近似）、輪郭線の修飾を行う場合にはその線幅の設定を行う座標変換手段１と、輪郭線情報を構成する各ストロークを包含する閉曲線を生成し、全てのストロークについて閉曲線を生成したらこれらを新たな輪郭線として元の輪郭線と入れ替える輪郭線作成手段２、輪郭線作成手段２に含まれ輪郭線情報からストロークを包含する閉曲線の半円部の輪郭線を計算して生成する半円計算手段３、座標変換手段１または輪郭線作成手段２から出力された輪郭線情報からノンゼロワインディングと呼ばれる塗り潰し方法でビットマップを生成する画像生成手段４を具備して構成される。
【００２３】
この画像処理装置１０は、実際には図２に示すようにＣＰＵ１１と、ＲＡＭ１２、ＲＯＭ１３、外部記憶装置１４、ビデオＩ／Ｆ（インタフェイス）１５、フレームバッファ１６、プリンタＩ／Ｆ（インタフェイス）１７を具備して構成される。
【００２４】
図１に示した座標変換手段１と輪郭線作成手段２、半円計算手段３、画像生成手段４は、ＲＡＭ１２またはＲＯＭ１３に収められたプログラムによりＣＰＵ１１上で構成される。また、ＲＯＭ１３および外部記憶装置１４にはアウトラインフォントデータ（輪郭線情報）が格納されている。フレームバッファ１６は、画像生成手段４が生成したビットマップ画像を一時的に記憶し、この画像をビデオＩ／Ｆ１５に接続されたディスプレイ（不図示）またはプリンタＩ／Ｆ１７に接続されたページプリンタ（不図示）等の外部出力装置へ出力する。
【００２５】
次に、画像処理装置１０の動作について説明する。
画像処理装置１０は、通常の文字を出力する場合には、座標変換手段１で直線に分割された輪郭線情報に基づいて画像生成手段４がビットマップを生成するが、これは従来から一般的に行われている方法と同じである。
【００２６】
また、画像処理装置１０は、輪郭線を縁取りして修飾した文字を出力する場合には、座標変換手段１で直線に分割された輪郭線情報を輪郭線作成手段２で該輪郭線情報を包含する閉曲線と入れ替えて、この閉曲線に基づいて画像生成手段４がビットマップを生成する。
【００２７】
ここで、図３に輪郭線作成手段２が作成する閉曲線を示す。
輪郭線作成手段２は、同図（ａ）に示すように（元の）輪郭線のストローク２１に対して３つの直線２２、２３、２４と１つの半円２５により構成される閉曲線を生成する。この閉曲線は、輪郭線のストローク２１と平行で長さの等しい直線２２および２３と、ストローク２１とその始点で垂直に接し作成する修飾文字の線幅と同じ長さの直線（底辺）２４と、ストローク２１の終点を中心として修飾文字の線幅を直径とする半円２５で構成される。この閉曲線は新たな輪郭線のストロークとなるので、元の輪郭線のストローク２１と同様に方向を持ち、その方向は全ての閉曲線で右回り（若しくは左回り）となるように統一する。なお、この方向の統一は、後述する塗り潰しの際に輪郭線の内側を塗り潰すようにするために行われる。
【００２８】
このような閉曲線を新たな輪郭線のストロークとすると、図３（ｂ）に示すように各ストロークは半円の中心２６（元の輪郭線の終点）で接続するので、接続されるストロークの底辺（始点部分）は、同じ長さの直径を持つ半円からはみでることはなく、どのような角度で接続しても閉曲線の最外殻は滑らかに接続することになる。
【００２９】
次に、輪郭線作成手段２で作成された閉曲線によって作られた新たな輪郭線の塗り潰しについて説明する。
輪郭線の塗り潰しは、画像生成手段４でノンゼロワインディングと呼ばれる広く利用されている塗り潰しルールによって行われ、輪郭線作成手段２で作成された輪郭線（修飾文字）と座標変換手段１で直線に分割された輪郭線（通常の文字）の両者に対して同様の方法で行われる。
【００３０】
ここで、図４および図５を参照してノンゼロワインディングによる塗り潰しを説明する。
ノンゼロワインディングルールの塗り潰しでは、図４（ａ）に示すように輪郭線と走査線の交点で、方向を有する輪郭線が走査線をその走査方向に対して右から左（図中下から上）へ貫く場合を＋１としてカウントし、逆の場合を−１としてカウントして、カウント値が０以外の領域を塗り潰す（左から右を＋１としてもよい）。ところで、図４（ａ）に示した輪郭線は、右回りの輪郭線と左回りの輪郭線の組み合わせのように見えるが、実際には図４（ｂ）に示すような右回りの閉曲線のストロークの組み合わせとなっている。また、輪郭線の方向が図４（ｃ）に示すような場合には、ノンゼロワインディングルールでは、輪郭線の外側となる部分まで塗り潰されてしまう場合がある。
【００３１】
ノンゼロワインディングの性質としては、図５（ａ）に示すような２つの輪郭線を図５（ｂ）に示すように重ねたとしても、その輪郭線の方向が右回りまたは左回りで統一されていれば、重なった領域は０にはならないため確実に塗り潰される。したがって、図５（ｃ）に示すように２つのストロークの重なる領域も確実に塗り潰されることになる。
【００３２】
次に、図６を参照して画像処理装置１０の動作を説明する。
図６は、画像処理装置１０の動作の流れを示すフローチャートである。
【００３３】
画像処理装置１０は、ＣＰＵ１１が図示しないインタフェース等を通じて図示しないＲＡＭ（またはＲＡＭ１２）上に貯えられた画像情報等を読み込む。画像情報が文字コードであればＲＯＭ１３または外部記憶装置１４から輪郭線情報（アウトラインフォントデータ）を読みだして画像生成プログラムの実行を開始する（ステップ１０１）。
【００３４】
画像生成プログラムの実行が開始されると、座標変換手段１（ＣＰＵ１１による）が、輪郭線（アウトライン）を出力したい大きさに座標変換し、この輪郭線を短い複数の直線に分割する（ステップ１０２）。次に、この輪郭線（文字）を修飾する場合には（ステップ１０３でＹＥＳ）、座標変換手段１は輪郭線作成手段２（半円計算手段３を含み、ともにＣＰＵ１１による）に輪郭線の線幅を設定する（ステップ１０４）。
【００３５】
次に、輪郭線作成手段２が輪郭線の各ストロークを読み出し（ステップ１０５）、各ストロークの終点と方向を半円計算手段３に設定する（ステップ１０６）。半円計算手段３は、設定された各ストロークの終点と方向、線幅から新たな輪郭線の半円部分を計算し、作成する（ステップ１０７）。続いて、輪郭線作成手段２が、半円計算手段３により作成された新たな輪郭線の半円部分以外の３方向を囲む輪郭線を作成し（ステップ１０８）、この新たに作成した輪郭線情報を元の輪郭線情報と入れ替える（ステップ１０９）。
【００３６】
元の輪郭線情報が新たな輪郭線情報と入れ替えられるか（ステップ１０９）、または、輪郭線を修飾しない場合には（ステップ１０３でＮＯ）、画像生成手段４が輪郭線情報に基づいてノンゼロワインディングルールによる塗り潰しを行ってビットマップを作成し（ステップ１１０）、フレームバッファ１６へ出力する（ステップ１１１）。
【００３７】
ここで、図示しない出力装置（ディスプレイやページプリンタ等）が、一定時間間隔またはＣＰＵ１１からの終了信号に応じてフレームバッファ１６を調べ、登録されているビットマップを出力することで画像処理装置１０は動作を終了する（ステップ１１２）。
【００３８】
なお、上述の実施例では、輪郭線を修飾する場合を例として説明したが、図７（ａ）に示すような骨格だけを情報として持つストロークフォントの画像生成に利用可能であり、この場合には図７（ｂ）に示すような画像を生成することが可能であるが、ストロークの両端３１の形状を揃える必要があるため、始端のストロークを図８（ａ）のように変更するか（両端３１が半円状となる）、終端のストロークを図８（ｂ）のように変更する必要がある（両端３１が直線状となる）。
【００３９】
【発明の効果】
以上説明したように、この発明によれば、輪郭線情報の各ストロークを切り欠きが発生することの無い閉曲線パターンで置き換え、新たな輪郭線情報を生成して塗り潰すことで文字の修飾を行うように構成したので、
使用するメモリの容量を比較的小さくすることができ、閉曲線の重なりが２つの閉曲線のみとなり、塗り潰しの処理を高速に行うことができる。
【００４０】
また、文字修飾機能を持たない画像処理装置に対しても、その塗り潰し処理を行う部分を利用できるため、輪郭線のストロークを閉曲線パターンに置き換える機能を追加するだけで、文字修飾機能を持たせることができる。
【図面の簡単な説明】
【図１】この発明に係わる画像処理装置の構成を示すブロック図。
【図２】画像処理装置１０の実際の構成を示した図。
【図３】輪郭線作成手段２が作成する閉曲線を示した図。
【図４】ノンゼロワインディングによる塗り潰しを説明するための図（１）。
【図５】ノンゼロワインディングによる塗り潰しを説明するための図（２）
【図６】画像処理装置１０の動作の流れを示すフローチャート。
【図７】骨格だけを情報として持つストロークフォントの例を示した図。
【図８】始端および終端となるストロークの形状を示した図。
【図９】文字の輪郭線とその輪郭線から得られるビットマップを示した図。
【図１０】輪郭線の内側の塗り潰しを説明する図。
【図１１】輪郭線を構成するストロークを説明する図。
【図１２】文字修飾の一例を示した図。
【図１３】線幅を持った輪郭線情報を示した図。
【図１４】元の輪郭線から新たな輪郭線を作成する例を示した図。
【図１５】元の輪郭線から新たな輪郭線を作成する具体的な例を示した図。
【図１６】新たな輪郭線による切り欠き部分を接続する例を示した図。
【図１７】新たな輪郭線によるビットマップパターンの各構成部を示した図。
【符号の説明】
１    座標変換手段
２    輪郭線作成手段
３    半円計算手段
４    画像生成手段
１０    画像処理装置
１１    ＣＰＵ
１２    ＲＡＭ
１３    ＲＯＭ
１４    外部記憶装置
１５    ビデオＩ／Ｆ（インタフェイス）
１６    フレームバッファ
１７    プリンタＩ／Ｆ（インタフェイス）
２１    ストローク
２２、２３、２４    直線
２５    半円
２６    半円の中心
３１    ストロークの両端
【図１】
0003603593.tif 000002
【図２】
0003603593.tif 000003
【図３】
0003603593.tif 000004
【図４】
0003603593.tif 000005
【図５】
0003603593.tif 000006
【図６】
0003603593.tif 000007
【図７】
0003603593.tif 000008
【図８】
0003603593.tif 000009
【図９】
0003603593.tif 000010
【図１０】
0003603593.tif 000011
【図１１】
0003603593.tif 000012
【図１２】
0003603593.tif 000013
【図１３】
0003603593.tif 000014
【図１４】
0003603593.tif 000015
【図１５】
0003603593.tif 000016
【図１６】
0003603593.tif 000017
【図１７】
0003603593.tif 000018