JP2776887B2 - フォントパターン処理方法 - Google Patents
フォントパターン処理方法Info
- Publication number
- JP2776887B2 JP2776887B2 JP1137617A JP13761789A JP2776887B2 JP 2776887 B2 JP2776887 B2 JP 2776887B2 JP 1137617 A JP1137617 A JP 1137617A JP 13761789 A JP13761789 A JP 13761789A JP 2776887 B2 JP2776887 B2 JP 2776887B2
- Authority
- JP
- Japan
- Prior art keywords
- stroke
- line
- font pattern
- code
- contour
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Dot-Matrix Printers And Others (AREA)
- Controls And Circuits For Display Device (AREA)
Description
【発明の詳細な説明】 〔産業上の利用分野〕 本発明は、フォントパターン処理に係り、特にフォン
トパターンのストローク抽出、細線化、太字化等の処理
に関する。
トパターンのストローク抽出、細線化、太字化等の処理
に関する。
パソコン、レーザプリンタ等による文書作成システム
において、フォントの多様性が一層求められるようにな
っている。
において、フォントの多様性が一層求められるようにな
っている。
この要求に応えるためのフォントの加工に関して、リ
ニアなサイズ変換、斜体化、回転等のアフィン変換は、
ビットマップやベクトルフォントを問わず比較的容易で
ある。しかし、より重要で有効なフォント加工である文
字の線径変換、すなわち細線化および太字化は、ノンリ
ニア変換で実現が困難であったため、従来は、異なる線
径の文字は別々のフォントとして準備するのが一般的で
あり、フォントメモリが増大するという問題があった。
ニアなサイズ変換、斜体化、回転等のアフィン変換は、
ビットマップやベクトルフォントを問わず比較的容易で
ある。しかし、より重要で有効なフォント加工である文
字の線径変換、すなわち細線化および太字化は、ノンリ
ニア変換で実現が困難であったため、従来は、異なる線
径の文字は別々のフォントとして準備するのが一般的で
あり、フォントメモリが増大するという問題があった。
また、フォントパターンは基本的に、ストローク(筆
の動き)に沿った2本の輪郭線による閉ループより構成
される。フォントの各種加工においては、このストロー
ク成分の抽出が必要になることが多い。従来、このよう
なストローク抽出は、フォントパターンの1画素を1ビ
ットで表現したビットマップ上において、輪郭追跡によ
り行われることが多い。しかし、ソフトウェアによる処
理の効率が悪く、またストロークの交差、接触の検出
や、ストロークに沿った2本の輪郭線の対応付けが幾何
学的には極めて難しいという問題があった。
の動き)に沿った2本の輪郭線による閉ループより構成
される。フォントの各種加工においては、このストロー
ク成分の抽出が必要になることが多い。従来、このよう
なストローク抽出は、フォントパターンの1画素を1ビ
ットで表現したビットマップ上において、輪郭追跡によ
り行われることが多い。しかし、ソフトウェアによる処
理の効率が悪く、またストロークの交差、接触の検出
や、ストロークに沿った2本の輪郭線の対応付けが幾何
学的には極めて難しいという問題があった。
よって本発明の目的は、フォントパターンのストロー
ク抽出、細線化、ノンリニアな線径可変フォーマット変
換等のための、改良したフォントパターン処理方法を提
供することにある。
ク抽出、細線化、ノンリニアな線径可変フォーマット変
換等のための、改良したフォントパターン処理方法を提
供することにある。
本発明によれば、フォントパターンをビットマップ上
ではなく、バイトマップ上で処理を行う。このバイトマ
ップは、ビットマップ上の1画素1ビット表現のフォン
トパターンの各黒点について、その近傍ビットを参照し
て所定の演算を行い、位置およびストローク的特性を表
わすバイトコードを割り付けることで作成する。
ではなく、バイトマップ上で処理を行う。このバイトマ
ップは、ビットマップ上の1画素1ビット表現のフォン
トパターンの各黒点について、その近傍ビットを参照し
て所定の演算を行い、位置およびストローク的特性を表
わすバイトコードを割り付けることで作成する。
このようなバイトマップ上において、ストロークの種
別に対応した固有のコード配列を見つけ、このコード配
列の位置を起点として輪郭追跡し、ストロークの端点
(始点および終点)を検出することによって、フォント
パターンのストローク成分を抽出する。
別に対応した固有のコード配列を見つけ、このコード配
列の位置を起点として輪郭追跡し、ストロークの端点
(始点および終点)を検出することによって、フォント
パターンのストローク成分を抽出する。
バイトマップ上の各コードは、パターンの幾何学的お
よびトポロジカル的特性を記号的に表現しているので、
コードによってストローク種類の分類、ストロークを構
成する2本の輪郭線の対応づけ、輪郭の方向性の確認が
容易でストローク抽出を効率的に行うことができ、ま
た、ストロークの交差、接触等のストローク間干渉であ
っても、容易かつ確実なストローク分解が可能である。
よびトポロジカル的特性を記号的に表現しているので、
コードによってストローク種類の分類、ストロークを構
成する2本の輪郭線の対応づけ、輪郭の方向性の確認が
容易でストローク抽出を効率的に行うことができ、ま
た、ストロークの交差、接触等のストローク間干渉であ
っても、容易かつ確実なストローク分解が可能である。
さて、ストロークは2本の輪郭線の閉ループであり、
ストローク中心線が2本の輪郭線の中間に存在すると考
えてよいが、これを幾何学的に求めることは無意味であ
る。例えば明朝体のセリフは、ストローク中心線とは無
関係であるからである。そして、このような仮想的なス
トローク中心線を抽出しても、セリフを含むストローク
パターンの再現は不可能である。
ストローク中心線が2本の輪郭線の中間に存在すると考
えてよいが、これを幾何学的に求めることは無意味であ
る。例えば明朝体のセリフは、ストローク中心線とは無
関係であるからである。そして、このような仮想的なス
トローク中心線を抽出しても、セリフを含むストローク
パターンの再現は不可能である。
そこで、本発明にあっては、前記のように輪郭追跡に
よって抽出したストローク成分を、その両端点を境界と
して二つの輪郭線に分割して、その一方の輪郭線だけを
ストローク成分として抽出する。これによれば、ストロ
ークの二つの輪郭線のデータを抽出保存する方式に比
べ、メモリ量が半減する。さらに、ストロークの種類に
よってセリフが付加される輪郭線は決まっているので、
ストロークの種別に応じて、セリフが付がない一方の輪
郭線を抽出すべきストローク成分に選べば、それをスト
ロークベクトルとして用いて他方の輪郭線をセリフを含
めて派生することが可能である。
よって抽出したストローク成分を、その両端点を境界と
して二つの輪郭線に分割して、その一方の輪郭線だけを
ストローク成分として抽出する。これによれば、ストロ
ークの二つの輪郭線のデータを抽出保存する方式に比
べ、メモリ量が半減する。さらに、ストロークの種類に
よってセリフが付加される輪郭線は決まっているので、
ストロークの種別に応じて、セリフが付がない一方の輪
郭線を抽出すべきストローク成分に選べば、それをスト
ロークベクトルとして用いて他方の輪郭線をセリフを含
めて派生することが可能である。
パターンのサイズや線径はフォントの重要なデザイン
要素であり、これらの要素の異なるフォントは個別のフ
ォントしてデザインされている。しかし、一般に文字の
基本デザイン(ストローク)はサイズや線径に関係なく
ほぼ同一(類似)と考えられる。他方、フォントの太字
化において、線径は全ストロークについて均一にしたの
では自然なパターンを得られない。例えば明朝体の場
合、縦ストロークをより太くし、横ストロークをそれほ
ど線径を増加させないようにすると、自然なパターンが
得られる。
要素であり、これらの要素の異なるフォントは個別のフ
ォントしてデザインされている。しかし、一般に文字の
基本デザイン(ストローク)はサイズや線径に関係なく
ほぼ同一(類似)と考えられる。他方、フォントの太字
化において、線径は全ストロークについて均一にしたの
では自然なパターンを得られない。例えば明朝体の場
合、縦ストロークをより太くし、横ストロークをそれほ
ど線径を増加させないようにすると、自然なパターンが
得られる。
そこで本発明においては、ストローク成分とし抽出さ
れた輪郭線より、それとともにストロークを構成する輪
郭線を派生し、その際にストロークの種別に応じて異な
る線径拡大率を適用することにより、共通のフォントか
らサイズや線径が様々な、かつ字形が自然なフォントパ
ターンを生成することを可能とする。
れた輪郭線より、それとともにストロークを構成する輪
郭線を派生し、その際にストロークの種別に応じて異な
る線径拡大率を適用することにより、共通のフォントか
らサイズや線径が様々な、かつ字形が自然なフォントパ
ターンを生成することを可能とする。
以下、図面を用い本発明の一実施例を詳細に説明す
る。
る。
本発明によるフォントパターン処理を実行するための
装置構成の一例を第1図に示す。1はフォントパターン
のビットマップを格納するためのビットマップメモリで
ある。このビットマップ上ではフォントパターンの1画
素は1ビットで表現され、各ビットの値は黒点が1、白
点が0となっている。
装置構成の一例を第1図に示す。1はフォントパターン
のビットマップを格納するためのビットマップメモリで
ある。このビットマップ上ではフォントパターンの1画
素は1ビットで表現され、各ビットの値は黒点が1、白
点が0となっている。
2はフォントパターンのバイトマップを格納するため
のバイトマップメモリである。このバイトマップ上で
は、フォントパターンの1画素は1バイトのコードで表
現される。なお、ビットマップメモリ1とバイトマップ
メモリ2を共通のメモリとすることも可能である。
のバイトマップメモリである。このバイトマップ上で
は、フォントパターンの1画素は1バイトのコードで表
現される。なお、ビットマップメモリ1とバイトマップ
メモリ2を共通のメモリとすることも可能である。
3は処理を実行するCPUである。4はCPU3の処理のた
めのプログラムを格納したプログラムメモリである。5
はCPU3による処理の中間データや結果データ等を一時的
に格納するためのデータメモリである。
めのプログラムを格納したプログラムメモリである。5
はCPU3による処理の中間データや結果データ等を一時的
に格納するためのデータメモリである。
第2図は本発明の一実施例における処理全体のフロー
を示している。以下、第2図中の各処理ブロック毎に処
理内容を説明する。
を示している。以下、第2図中の各処理ブロック毎に処
理内容を説明する。
処理ブロックI この処理ブロックでは、ビットマップからバイトマッ
プへの変換を行う。
プへの変換を行う。
この変換は、ビットマップ上のフォントパターンの各
点について、その近傍ビットの値(白/黒)を用いた特
定の演算の結果に応じて所定のバイトコードを割り付け
ることによって行う。この変換の際に参照される近傍の
範囲は、8近傍(縦、横、斜め)または4近傍(縦、
横)であるが、フォントパターンの処理の場合には、4
近傍を参照すれば十分である。
点について、その近傍ビットの値(白/黒)を用いた特
定の演算の結果に応じて所定のバイトコードを割り付け
ることによって行う。この変換の際に参照される近傍の
範囲は、8近傍(縦、横、斜め)または4近傍(縦、
横)であるが、フォントパターンの処理の場合には、4
近傍を参照すれば十分である。
本実施例においても4近傍を選び、フォントパターン
の注目的(x,y)について、その4近傍の各ビット(x,y
−1),(x,y+1)、(x−1,y),(x+1,y)にバ
イナリ・ウエイト(8,4,2,1)をかけてコード化する。
すなわち、各点(x,y)について次式の演算を行う。
の注目的(x,y)について、その4近傍の各ビット(x,y
−1),(x,y+1)、(x−1,y),(x+1,y)にバ
イナリ・ウエイト(8,4,2,1)をかけてコード化する。
すなわち、各点(x,y)について次式の演算を行う。
V(x,y)=8×B(x,y−1)+4×B(x,y+1) +2×B(x−1)+B(x+1,y) …(1) ただし、B(a,b)は近傍ビット(a,b)が黒なら1、
白から0である。また上式は注目点(x,y)が黒の場合
に適用されるもので、注目点が白の場合はV(x,y)を
−1(=0×FF)とする。したがって、V(x,y)は−
1から+15までの整数となる。
白から0である。また上式は注目点(x,y)が黒の場合
に適用されるもので、注目点が白の場合はV(x,y)を
−1(=0×FF)とする。したがって、V(x,y)は−
1から+15までの整数となる。
そして、このような演算値V(x,y)に第1表に示す
ようなバイトコードを割り付ける。ただし本実施例にお
いては、コード“F"は孤立点に対応し処理上無意味なノ
イズとみなしてよいので、“ブランク”に置換するもの
とする。
ようなバイトコードを割り付ける。ただし本実施例にお
いては、コード“F"は孤立点に対応し処理上無意味なノ
イズとみなしてよいので、“ブランク”に置換するもの
とする。
第3図から第5図に、漢字のバイトマップの例を示
す。
す。
処理ブロックII この処理ブロックでは、バイトマップ上でフォントパ
ターンのストローク(筆の動き)への分解あるいはスト
ローク抽出を行う。ここでは、ストロークとして第2表
に示すような4種類を定義する。
ターンのストローク(筆の動き)への分解あるいはスト
ローク抽出を行う。ここでは、ストロークとして第2表
に示すような4種類を定義する。
本実施例では、第6図に示すように、この4種のスト
ロークの抽出を順番に行う。
ロークの抽出を順番に行う。
各種類のストロークの抽出は、バイトマップを左上角
よりラスター走査して、注目のストローク種類に固有の
コード配列(第7図)を捜し、この固有のコード配列が
見つかると、その位置から両方向へ輪郭追跡を行って端
点を捜すことによって行う。したがって、バイトマップ
は合計4回走査されることになる。一般に一つのフォン
トパターン中に複数のストロークが存在する。例えば第
3図に示す「講」のバイトマップ上には、縦線はVT1〜V
T7の7個、横線はHR1〜HR11の11個がある。第4図およ
び第5図のバイトマップも同様である。ここで各ストロ
ークの略号に付加された数字は、種類別のストロークの
個数のカウンタである。
よりラスター走査して、注目のストローク種類に固有の
コード配列(第7図)を捜し、この固有のコード配列が
見つかると、その位置から両方向へ輪郭追跡を行って端
点を捜すことによって行う。したがって、バイトマップ
は合計4回走査されることになる。一般に一つのフォン
トパターン中に複数のストロークが存在する。例えば第
3図に示す「講」のバイトマップ上には、縦線はVT1〜V
T7の7個、横線はHR1〜HR11の11個がある。第4図およ
び第5図のバイトマップも同様である。ここで各ストロ
ークの略号に付加された数字は、種類別のストロークの
個数のカウンタである。
なお、ストロークの固有コード配列は無数に存在する
ように見えるが、実際には、バイトマップをスキャナし
て最初に遭遇した固有コード配列を起点に輪郭追跡を行
い、通過したコードを抹消するので、1個のストローク
に1個の固有コード配列という対応が原則的に成立す
る。
ように見えるが、実際には、バイトマップをスキャナし
て最初に遭遇した固有コード配列を起点に輪郭追跡を行
い、通過したコードを抹消するので、1個のストローク
に1個の固有コード配列という対応が原則的に成立す
る。
第8図は、このようなストローク抽出処理のフローチ
ャートである。処理ブロック111において、変数x,y,cを
初期化(クリア)する。x,yはバイトマップを走査する
ためのポインタ、cは前記ストロークのカウンタで、ス
トロークデータのインデックスとなる。処理ブロック12
は、固有コードを検出し、その位置からストロークの端
点(始点、終点)が見つかるまで輪郭追跡を行い、一つ
のストロークを抽出する度にカウンタcの値に1を加え
る。なお、この処理詳細については後述する。処理ブロ
ック13はバイトマップの走査の終了チェックのためにバ
イトマップで右下角の座標(Xmax,Ymax)とポインタx
とyの比較判定を行う。処理ステップ14はポインタ、y
のインクリメントを行う。
ャートである。処理ブロック111において、変数x,y,cを
初期化(クリア)する。x,yはバイトマップを走査する
ためのポインタ、cは前記ストロークのカウンタで、ス
トロークデータのインデックスとなる。処理ブロック12
は、固有コードを検出し、その位置からストロークの端
点(始点、終点)が見つかるまで輪郭追跡を行い、一つ
のストロークを抽出する度にカウンタcの値に1を加え
る。なお、この処理詳細については後述する。処理ブロ
ック13はバイトマップの走査の終了チェックのためにバ
イトマップで右下角の座標(Xmax,Ymax)とポインタx
とyの比較判定を行う。処理ステップ14はポインタ、y
のインクリメントを行う。
ここで、抽出されるストロークのイメージを第9図に
示す。ストロークの輪郭を端点p1,p2で二つの輪郭線に
分割する。ストロークデータとして保存されるのは、実
線で表された片方の輪郭線だけである。すなわち、実線
が単線化されたストロークである。破線で示された輪郭
線は、実線の輪郭線の関数として派生されるもので、セ
リフも一意的に含まれる。斜線ストロークのp3は、“斜
線”として属性パラメータで特定のパターンを呼び出さ
せるので、必ずしも必要でない。したがって、本実施例
においては、ストロークの種別と、端点p1,p2の座標だ
けがストロークデータとして第10図のようなフォーマッ
トで保存される。故に、一つのストロークのデータの保
存に必要なメモリ容量は5バイトと極めて少ない。
示す。ストロークの輪郭を端点p1,p2で二つの輪郭線に
分割する。ストロークデータとして保存されるのは、実
線で表された片方の輪郭線だけである。すなわち、実線
が単線化されたストロークである。破線で示された輪郭
線は、実線の輪郭線の関数として派生されるもので、セ
リフも一意的に含まれる。斜線ストロークのp3は、“斜
線”として属性パラメータで特定のパターンを呼び出さ
せるので、必ずしも必要でない。したがって、本実施例
においては、ストロークの種別と、端点p1,p2の座標だ
けがストロークデータとして第10図のようなフォーマッ
トで保存される。故に、一つのストロークのデータの保
存に必要なメモリ容量は5バイトと極めて少ない。
一般的にストロークは他のストロークとの干渉(連
続、接触、交差)があるが、ここでは、ストロークの干
渉がないとして、輪郭追連と端点検出を説明する。
続、接触、交差)があるが、ここでは、ストロークの干
渉がないとして、輪郭追連と端点検出を説明する。
ストロークの固有コード配列は必ずストロークの中間
にあるので、その位置から両方向(縦線なら垂直上方と
垂直下方)に輪郭点を追跡すると、ストロークの端点
(p1,p2)を示すコードまたはコード配列が見つかる。
第11図に、このような輪郭追跡の様子をストローク種別
毎に示す。また、端点のコードまたはコード配列を第12
図に示す。そして、このような端点のコードまたはコー
ドの配列の一実施例をストロークの端点p1,p2として保
存することになる。
にあるので、その位置から両方向(縦線なら垂直上方と
垂直下方)に輪郭点を追跡すると、ストロークの端点
(p1,p2)を示すコードまたはコード配列が見つかる。
第11図に、このような輪郭追跡の様子をストローク種別
毎に示す。また、端点のコードまたはコード配列を第12
図に示す。そして、このような端点のコードまたはコー
ドの配列の一実施例をストロークの端点p1,p2として保
存することになる。
さて、実際のフォントパターンにおいては、ストロー
ク間の干渉が頻繁に出現する。ここで各干渉は次のよう
に定義する。
ク間の干渉が頻繁に出現する。ここで各干渉は次のよう
に定義する。
“接触(T)":T字路、ト字路のようにストロークの端
部が他のストロークに含まれる。
部が他のストロークに含まれる。
“交差(X)":十字路、X字路のようにストロークが途
中で他のストロークを突き抜ける。
中で他のストロークを突き抜ける。
このようなストローク干渉の例を第13図に示す。
次にストローク干渉がある場合のストローク抽出処理
(第8図の処理ブロック12)について説明する。ストロ
ーク干渉がある場合、第12図に示した端部のコードまた
はコード配列を単純にストロークの端点とすることはで
きず、干渉の種類によって端点検出の方法を変える必要
がある。
(第8図の処理ブロック12)について説明する。ストロ
ーク干渉がある場合、第12図に示した端部のコードまた
はコード配列を単純にストロークの端点とすることはで
きず、干渉の種類によって端点検出の方法を変える必要
がある。
例えば、第14図に示すような横線と交差した縦線の輪
郭追跡の場合、下方追跡において、“2+1"のコード配
列が第7行まで連続するが、第8行の左右の輪郭線とも
にコード“8"に遭遇する。この左右に広がるコード“8"
の下のコードは“4"であり、これは第7図に示した横線
に固有のコード配列である。したがって、注目する縦線
と横線との干渉が分かるので、次に干渉の種類を判断す
る。第7行のコード配列“2+1"の直下の行のコード配
列は“+++”で、このコード“+”は輪郭線内部の点
を意味するので、縦線ストロークの輪郭追跡を進める。
第9行も同様である。第10行まで追跡を進めると、ここ
でコード配列“2+1"が再度出現する。これは縦線が横
線を突き抜けたということで、干渉は交差であると判断
できる。このような交差の場合、交差部以外で端部のコ
ードまたはコード配列が見つかった位置を端点とする。
郭追跡の場合、下方追跡において、“2+1"のコード配
列が第7行まで連続するが、第8行の左右の輪郭線とも
にコード“8"に遭遇する。この左右に広がるコード“8"
の下のコードは“4"であり、これは第7図に示した横線
に固有のコード配列である。したがって、注目する縦線
と横線との干渉が分かるので、次に干渉の種類を判断す
る。第7行のコード配列“2+1"の直下の行のコード配
列は“+++”で、このコード“+”は輪郭線内部の点
を意味するので、縦線ストロークの輪郭追跡を進める。
第9行も同様である。第10行まで追跡を進めると、ここ
でコード配列“2+1"が再度出現する。これは縦線が横
線を突き抜けたということで、干渉は交差であると判断
できる。このような交差の場合、交差部以外で端部のコ
ードまたはコード配列が見つかった位置を端点とする。
第15図は“接触”の例である。縦線の下方追跡におい
て、第8行の横線のコード配列が出現するが、第9行の
コード配列“444"と遭遇する。このコード配列は輪郭線
であるので、縦線の下方進行が妨げられる。すなわち、
第9行を縦線の下端と判断する。
て、第8行の横線のコード配列が出現するが、第9行の
コード配列“444"と遭遇する。このコード配列は輪郭線
であるので、縦線の下方進行が妨げられる。すなわち、
第9行を縦線の下端と判断する。
第16図は“連続”の例である。縦線ストロークの上方
進行は、コード配列“2+1"が連続する第10行へ進む。
次の第9行でコード列“2+5"が現れるが、このコード
配列は第7図に示す4種のストロークの固有コード配列
のいずれかにも該当しないので、他のストロークとの
“交差”でも“接触”でもないため、“連続”であるこ
とが分かる。この場合、第8行で左輪郭線側で横線のコ
ード配列と遭遇するので、この縦線は横線に連続してい
ると判断し、輪郭追跡を進めることによって端点を捜
す。
進行は、コード配列“2+1"が連続する第10行へ進む。
次の第9行でコード列“2+5"が現れるが、このコード
配列は第7図に示す4種のストロークの固有コード配列
のいずれかにも該当しないので、他のストロークとの
“交差”でも“接触”でもないため、“連続”であるこ
とが分かる。この場合、第8行で左輪郭線側で横線のコ
ード配列と遭遇するので、この縦線は横線に連続してい
ると判断し、輪郭追跡を進めることによって端点を捜
す。
なお、明朝体の場合、 の曲がり角にカギ固有のセリフがある。この例では、右
輪部線(“1"の連続)の経路(1,5,D,9,9,B,Aのコード
の連続)が、カギ固有のセリフのコード配列であり、こ
れは予めパターン化が可能である。
輪部線(“1"の連続)の経路(1,5,D,9,9,B,Aのコード
の連続)が、カギ固有のセリフのコード配列であり、こ
れは予めパターン化が可能である。
このようなストロークの干渉を考慮したストローク抽
出のフローチャートを第17図に示す。処理ブロック21は
ストローク種類に固有のコード配列を抽出するブロック
であり、この固有コード配列の位置を起点として両方向
へ輪郭追跡が開始する。処理ブロック22は、追跡途中に
おいて他のストロークとの干渉の検出、端点の検出、お
よび干渉の種類の判別を行うブロックである。
出のフローチャートを第17図に示す。処理ブロック21は
ストローク種類に固有のコード配列を抽出するブロック
であり、この固有コード配列の位置を起点として両方向
へ輪郭追跡が開始する。処理ブロック22は、追跡途中に
おいて他のストロークとの干渉の検出、端点の検出、お
よび干渉の種類の判別を行うブロックである。
干渉が検出されないときは、単にストロークを進行さ
せる(処理ブロック23)。端点すなわち前記端部のコー
ドまたはコード配列が検出されたときは、端点の位置を
保存し、その方向の追跡を終了する(処理ブロック2
4)。
せる(処理ブロック23)。端点すなわち前記端部のコー
ドまたはコード配列が検出されたときは、端点の位置を
保存し、その方向の追跡を終了する(処理ブロック2
4)。
“接触”が検出されたときは処理ブロック25で処理す
る。“接触”は、注目ストローク自体の端点または接触
相手の端点を意味する。接触相手のストロークの端点の
場合は、注目ストローク(2本の輪郭線からなる)の一
方の輪郭線のみが干渉を受け、注目ストローク自体の端
点の場合には、両方の輪郭線の進行が妨げられるので、
その区別が可能である。そこで、“干渉”の位置が注目
ストローク自体の場合には、相手の輪郭線の位置を端点
として保存し、その方向の追跡を終了する。
る。“接触”は、注目ストローク自体の端点または接触
相手の端点を意味する。接触相手のストロークの端点の
場合は、注目ストローク(2本の輪郭線からなる)の一
方の輪郭線のみが干渉を受け、注目ストローク自体の端
点の場合には、両方の輪郭線の進行が妨げられるので、
その区別が可能である。そこで、“干渉”の位置が注目
ストローク自体の場合には、相手の輪郭線の位置を端点
として保存し、その方向の追跡を終了する。
“交差”が検出されたときは、ストローク進行方向に
“+”コードが現れる。もし、この“+”コードをスキ
ップした先に再び、注目ストロークに固有のコード配列
が現れた場合には、そのままストロークを進行させる
(処理ブロック26)。
“+”コードが現れる。もし、この“+”コードをスキ
ップした先に再び、注目ストロークに固有のコード配列
が現れた場合には、そのままストロークを進行させる
(処理ブロック26)。
“干渉”が“接触”でも“交差”でもなければ“連
続”であり、具体的には のように二つのストローク(カギでは横線と斜め線)が
連続する場合である。この場合、前記のように屈曲部を
検出して相手ストロークと連続し、追跡を進める(処理
ブロック27)。
続”であり、具体的には のように二つのストローク(カギでは横線と斜め線)が
連続する場合である。この場合、前記のように屈曲部を
検出して相手ストロークと連続し、追跡を進める(処理
ブロック27)。
第18図から第20図は、それぞれ第3図から第5図に示
したバイトマップから抽出された単線ストロークのイメ
ージすなわちフォントパターンの細線化イメージであ
る。
したバイトマップから抽出された単線ストロークのイメ
ージすなわちフォントパターンの細線化イメージであ
る。
処理ブロックIII 処理ブロックIIで抽出されたフォントパターンのスト
ロークより、様々なサイズの線径のフォントパターンを
生成する処理ブロックである。
ロークより、様々なサイズの線径のフォントパターンを
生成する処理ブロックである。
抽出されたストロークは、第9図に実線で示したよう
な基準となる一方の輪郭線である。そこで、フォントの
サイズに応じてストロークの長さおよび位置を調整し、
また、このストロークを元に必要な線形となるような残
りの輪郭線(第9図の破線)を派生させる。この際に、
自然なパターンが得られるように、ストロークの種類に
応じて線径拡大率を変える。そして、必要に応じてスト
ロークの内部を塗り潰す。
な基準となる一方の輪郭線である。そこで、フォントの
サイズに応じてストロークの長さおよび位置を調整し、
また、このストロークを元に必要な線形となるような残
りの輪郭線(第9図の破線)を派生させる。この際に、
自然なパターンが得られるように、ストロークの種類に
応じて線径拡大率を変える。そして、必要に応じてスト
ロークの内部を塗り潰す。
文字のパターン構造のパラメータはストロークであ
り、輪郭すなわち線の太さはストロークから派生される
副次的な射像といえる。しかし、処理の対象となる実際
の文字は、ある太さをもつ線で描かれ、その輪郭は線の
交差、接触等を含むもので、ビットマップ上でストロー
クを輪郭線から幾何学的に抽出することは極めて困難で
ある。
り、輪郭すなわち線の太さはストロークから派生される
副次的な射像といえる。しかし、処理の対象となる実際
の文字は、ある太さをもつ線で描かれ、その輪郭は線の
交差、接触等を含むもので、ビットマップ上でストロー
クを輪郭線から幾何学的に抽出することは極めて困難で
ある。
これに対し請求項(1)に記載の本発明によれば、パ
ターンの幾何的ないしトポロジカル的特徴を表したバイ
トマップ上において、ストロークに沿って特定のコード
配列が出現することを利用し、干渉があるストロークも
精度良く、効率的に抽出することができる。
ターンの幾何的ないしトポロジカル的特徴を表したバイ
トマップ上において、ストロークに沿って特定のコード
配列が出現することを利用し、干渉があるストロークも
精度良く、効率的に抽出することができる。
またストロークは二つの端点間を2本の輪郭線で結ん
だ1個の閉ループである。この2本の輪郭線は線の太さ
を表すものであり、極めて相関が高く、互いに関数的で
あり、一方の輪郭線より他方の輪郭線を関数的に派生さ
せることが可能である。請求項(2)記載の本発明によ
れば、ストロークの一方の輪郭線だけを抽出するので、
両方の輪郭線を抽出し保存する場合に比べ、ストローク
データの保存用メモリの容量を削減できる。また、スト
ロークの端点は水平、垂直方向の極値であるので、2本
の輪郭線に塗り始めと塗り終りの属性を与えることによ
り、ストローク内部の高速塗り潰しが可能になる。
だ1個の閉ループである。この2本の輪郭線は線の太さ
を表すものであり、極めて相関が高く、互いに関数的で
あり、一方の輪郭線より他方の輪郭線を関数的に派生さ
せることが可能である。請求項(2)記載の本発明によ
れば、ストロークの一方の輪郭線だけを抽出するので、
両方の輪郭線を抽出し保存する場合に比べ、ストローク
データの保存用メモリの容量を削減できる。また、スト
ロークの端点は水平、垂直方向の極値であるので、2本
の輪郭線に塗り始めと塗り終りの属性を与えることによ
り、ストローク内部の高速塗り潰しが可能になる。
またストロークの種類に応じた線形変換を行うには、
ストロークの輪郭線を2分し、一方の輪郭線を他方の輪
郭線に基づく関数として表す必要がある。請求項(3)
に記載の本発明によれば、このような線径のノンリニア
変換を容易に行うことができるため、共通のフォントに
対するノンリニアな線径可変フォント変換によって、サ
イズおよび線径が異なる多種のフォントパターンを生成
することが可能となる。
ストロークの輪郭線を2分し、一方の輪郭線を他方の輪
郭線に基づく関数として表す必要がある。請求項(3)
に記載の本発明によれば、このような線径のノンリニア
変換を容易に行うことができるため、共通のフォントに
対するノンリニアな線径可変フォント変換によって、サ
イズおよび線径が異なる多種のフォントパターンを生成
することが可能となる。
第1図は本発明を実施するための装置構成の一例を示す
ブロック図、第2図は本発明の一実施例の全体処理を示
すフローチャート、第3図から第5図はそれぞれバイト
マップの例を示す図、第6図は第2図中のストローク抽
出処理ブロックの処理の流れを示すフローチャート、第
7図は各種ストロークに固有のコード配列を示す図、第
8図は第6図中の各処理ブロックの内容を示すフローチ
ャート、第9図は抽出されるストロークのイメージを示
す図、第10図はストロークのデータフォーマットを示す
図、第11図はストローク抽出のための輪郭追跡の説明
図、第12図は端部のコードまたはコード配列を示す図、
第13図はストローク間干渉の例を示す図、第14図は“交
差”の場合のストローク抽出を説明するための図、第15
図は“接触”の場合のストローク抽出を説明するための
図、第16図は“連続”の場合のストローク抽出を説明す
るための図、第17図はストローク間干渉を考慮したスト
ローク抽出処理フローチャート、第18図から第20図はそ
れぞれ第3図から第5図に示したバイトマップより抽出
されたストロークを示す図である。 1……ビットマップメモリ、 2……バイトマップメモリ、 3……CPU、4……プログラムメモリ、 5……データメモリ。
ブロック図、第2図は本発明の一実施例の全体処理を示
すフローチャート、第3図から第5図はそれぞれバイト
マップの例を示す図、第6図は第2図中のストローク抽
出処理ブロックの処理の流れを示すフローチャート、第
7図は各種ストロークに固有のコード配列を示す図、第
8図は第6図中の各処理ブロックの内容を示すフローチ
ャート、第9図は抽出されるストロークのイメージを示
す図、第10図はストロークのデータフォーマットを示す
図、第11図はストローク抽出のための輪郭追跡の説明
図、第12図は端部のコードまたはコード配列を示す図、
第13図はストローク間干渉の例を示す図、第14図は“交
差”の場合のストローク抽出を説明するための図、第15
図は“接触”の場合のストローク抽出を説明するための
図、第16図は“連続”の場合のストローク抽出を説明す
るための図、第17図はストローク間干渉を考慮したスト
ローク抽出処理フローチャート、第18図から第20図はそ
れぞれ第3図から第5図に示したバイトマップより抽出
されたストロークを示す図である。 1……ビットマップメモリ、 2……バイトマップメモリ、 3……CPU、4……プログラムメモリ、 5……データメモリ。
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.6,DB名) B41J 2/485 B41J 5/44 G06F 3/12 G09G 5/24 620
Claims (3)
- 【請求項1】フォントパターンを1画素1ビット表現し
たビットマップから、該フォントパターンの各黒点につ
いて、当該黒点の近傍ビットを参照してストローク特性
を表わすバイトコードを割り付けたバイトマップを作成
し、 前記バイトマップに基づいて、フォントパターンのスト
ロークの種別に対応した固有のコード配列を捜し、当該
コード配列を起点として輪郭追跡することによって、フ
ォントパターンのストローク成分を抽出することを特徴
とするフォントパターン処理方法。 - 【請求項2】請求項(1)記載のフォントパターン処理
方法において、輪郭追跡して得られた閉ループの輪郭線
を、ストロークの始点、終点に対応する両端点位置で分
割し、その一方の輪郭線をストローク成分として抽出す
ることを特徴とするフォントパターン処理方法。 - 【請求項3】請求項(2)記載のフォントパターン処理
方法において、ストローク成分として抽出された一方の
輪郭線に対して、当該ストロークの種別に応じて異なる
線径拡大率を適用して他方の輪郭線を作成することを特
徴とするフォントパターン処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1137617A JP2776887B2 (ja) | 1989-05-31 | 1989-05-31 | フォントパターン処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP1137617A JP2776887B2 (ja) | 1989-05-31 | 1989-05-31 | フォントパターン処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH032058A JPH032058A (ja) | 1991-01-08 |
JP2776887B2 true JP2776887B2 (ja) | 1998-07-16 |
Family
ID=15202864
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP1137617A Expired - Fee Related JP2776887B2 (ja) | 1989-05-31 | 1989-05-31 | フォントパターン処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2776887B2 (ja) |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS5829544B2 (ja) * | 1978-12-20 | 1983-06-23 | 富士通株式会社 | 図形処理システム |
JPS60126782A (ja) * | 1983-12-13 | 1985-07-06 | Ricoh Co Ltd | 文字認識装置 |
JPS60128577A (ja) * | 1983-12-15 | 1985-07-09 | Ricoh Co Ltd | 文字認識装置 |
-
1989
- 1989-05-31 JP JP1137617A patent/JP2776887B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH032058A (ja) | 1991-01-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6470095B2 (en) | Automatic extraction of text regions and region borders for an electronic work surface | |
EP0702322B1 (en) | Method and apparatus for identifying words described in a portable electronic document | |
US5515455A (en) | System for recognizing handwritten words of cursive script | |
JP2608571B2 (ja) | 入力走査画像データのベクトル化のための装置及び方法 | |
US6661417B1 (en) | System and method for converting an outline font into a glyph-based font | |
US9189459B2 (en) | Document image layout apparatus | |
US6266444B1 (en) | Character processing apparatus and method therefor | |
JP2776887B2 (ja) | フォントパターン処理方法 | |
JP3172498B2 (ja) | イメージ認識用特徴値抽出方法、およびその装置、イメージ解析プログラムを格納する記憶媒体 | |
JP2022090469A (ja) | 書式定義装置、書式定義方法、及びプログラム | |
JP2562458B2 (ja) | コンピュータシステム用文字発生方法 | |
KR100254659B1 (ko) | 문자 생성 장치 | |
JP2771981B2 (ja) | 高品質文字パターン発生方式 | |
JP3082467B2 (ja) | アウトラインデータ処理装置 | |
JPH06175639A (ja) | 文字生成方法及びその装置 | |
JP2755299B2 (ja) | 画像処理方法 | |
KR200331200Y1 (ko) | 프렉탈 차원을 이용한 문자인식장치 | |
JP2962525B2 (ja) | テキストブロック認識方法 | |
JPH09147125A (ja) | 輪郭線抽出方法と抽出装置 | |
JP3182694B2 (ja) | 図形編集方法および装置 | |
JP3347756B2 (ja) | 文字生成方法及びその装置 | |
Park et al. | Structure extraction and automatic hinting of Chinese outline characters | |
JPH0773306A (ja) | アウトラインフォントデータの部品化方法,及び、アウトラインフォントデータ生成装置 | |
JP2666090B2 (ja) | アウトラインパターン発生装置 | |
JP2835056B2 (ja) | 高品質文字パターン発生方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |