JPH032058A - フォントパターン処理方法 - Google Patents
フォントパターン処理方法Info
- Publication number
- JPH032058A JPH032058A JP1137617A JP13761789A JPH032058A JP H032058 A JPH032058 A JP H032058A JP 1137617 A JP1137617 A JP 1137617A JP 13761789 A JP13761789 A JP 13761789A JP H032058 A JPH032058 A JP H032058A
- Authority
- JP
- Japan
- Prior art keywords
- stroke
- line
- contour
- code
- font pattern
- 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.)
- Granted
Links
Landscapes
- Dot-Matrix Printers And Others (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。
め要約のデータは記録されません。
Description
【発明の詳細な説明】
〔産業上の利用分野〕
本発明は、フォントパターン処理に係り、特にフォント
パターンのストローク抽出、細線化、太字化等の処理に
関する。
パターンのストローク抽出、細線化、太字化等の処理に
関する。
〔従来の技術及び発明が解決しようとする課題〕パソコ
ン、レーザプリンタ等による文書作成システムにおいて
、フォントの多様性が一層求められるようになっている
。
ン、レーザプリンタ等による文書作成システムにおいて
、フォントの多様性が一層求められるようになっている
。
この要求に応えるためのフォントの加工に関して、リニ
アなサイズ変換、斜体化、回転等のアフィン変換は、ビ
ットマツプやベクトルフォントを問わず比較的容易であ
る。しかし、より重要で有効なフォント加工である文字
の線径変換、すなわち細線化および太字化は、ノンリニ
ア変換で実現が困難であったため、従来は、異なる線径
の文字は別々のフォントとして準備するのが一般的であ
り、フォントメモリが増大するという問題があった。
アなサイズ変換、斜体化、回転等のアフィン変換は、ビ
ットマツプやベクトルフォントを問わず比較的容易であ
る。しかし、より重要で有効なフォント加工である文字
の線径変換、すなわち細線化および太字化は、ノンリニ
ア変換で実現が困難であったため、従来は、異なる線径
の文字は別々のフォントとして準備するのが一般的であ
り、フォントメモリが増大するという問題があった。
また、フォントパターンは基本的に、ストローク(筆の
動き)に沿った2本の輪郭線による閉ループより構成さ
れる。フォントの各種加工においては、このストローク
成分の抽出が必要になることが多い。従来、このような
ストローク抽出は、フォントパターンの1画素を1ビツ
トで表現したビットマツプ上において、輪郭追跡により
行われることが多い。しかし、ソフトウェアによる処理
の効率が悪く、またストロークの交差、接触の検出や、
ストロークに沿った2本の輪郭線の対応付けが幾何学的
には極めて難しいという問題があった。
動き)に沿った2本の輪郭線による閉ループより構成さ
れる。フォントの各種加工においては、このストローク
成分の抽出が必要になることが多い。従来、このような
ストローク抽出は、フォントパターンの1画素を1ビツ
トで表現したビットマツプ上において、輪郭追跡により
行われることが多い。しかし、ソフトウェアによる処理
の効率が悪く、またストロークの交差、接触の検出や、
ストロークに沿った2本の輪郭線の対応付けが幾何学的
には極めて難しいという問題があった。
よって本発明の目的は、フォントパターンのストローク
抽出、細線化、ノンリニアな線径可変フォーマット変換
等のための、改良したフォントパターン処理方法を提供
することにある。
抽出、細線化、ノンリニアな線径可変フォーマット変換
等のための、改良したフォントパターン処理方法を提供
することにある。
〔課題を解決するための手段及び作用〕本発明によれば
、フォントパターンのビットマツプ上ではなく、バイト
マツプ上で処理を行う。
、フォントパターンのビットマツプ上ではなく、バイト
マツプ上で処理を行う。
このバイトマツプは、ビットマツプ上のフォントパター
ンの各黒点について近傍ビットにより演算した値に、所
定のバイトコードを割り付けたマツプである。
ンの各黒点について近傍ビットにより演算した値に、所
定のバイトコードを割り付けたマツプである。
このようなバイトマツプ上において、ストロークの種別
に対応した固有のコード配列を見つけ、このコード配列
の位置を起点として輪郭追跡し、ストロークの端点(始
点および終点)を検出することによって、フォントパタ
ーンのストローク成分を抽出する。
に対応した固有のコード配列を見つけ、このコード配列
の位置を起点として輪郭追跡し、ストロークの端点(始
点および終点)を検出することによって、フォントパタ
ーンのストローク成分を抽出する。
バイトマツプ上の各コードは、パターンの幾何学的およ
びトポロジカル的特性を記号的に表現しているので、コ
ードによってス1ヘローク種類の分類、ストロークを構
成する2本の輪郭線の対応つけ、輪郭の方向性の確認が
容易でストローク抽出を効率的に行うことができ、また
、ストロークの交差、接触等のストローク間干渉であっ
ても、容易かつ確実なストローク分解が可能である。
びトポロジカル的特性を記号的に表現しているので、コ
ードによってス1ヘローク種類の分類、ストロークを構
成する2本の輪郭線の対応つけ、輪郭の方向性の確認が
容易でストローク抽出を効率的に行うことができ、また
、ストロークの交差、接触等のストローク間干渉であっ
ても、容易かつ確実なストローク分解が可能である。
さて、ストロークは2本の輪郭線の閉ループであり、ス
トローク中心線が2本の輪郭線の中間に存在すると考え
てよいが、これを幾何学的に求めることは無意味である
。例えば明朝体のセリフは、ストローク中心線とは無関
係であるからである。
トローク中心線が2本の輪郭線の中間に存在すると考え
てよいが、これを幾何学的に求めることは無意味である
。例えば明朝体のセリフは、ストローク中心線とは無関
係であるからである。
そして、このような仮想的なストローク中心線を抽出し
ても、セリフを含むストロークパターンの再現は不可能
である。
ても、セリフを含むストロークパターンの再現は不可能
である。
そこで、本発明にあっては、前記のように輪郭追跡によ
って抽出したストローク成分を、その両端点を境界とし
て二つの輪郭線に分割し、その−方の輪郭線だけをスト
ローク成分として抽出する。
って抽出したストローク成分を、その両端点を境界とし
て二つの輪郭線に分割し、その−方の輪郭線だけをスト
ローク成分として抽出する。
これによれば、ストロークの二つの輪郭線のデータを抽
出保存する方式に比べ、メモリ址が半減する。さらに、
ストロークの種類によってセリフが付加される輪郭線は
決まっているので、ストロークの種別に応じて、セリフ
が付かない一方の輪郭線を抽出すべきストローク成分に
選べば、それをストロークベクトルとして用いて他方の
輪郭線をセリフを含めて派生することが可能である。
出保存する方式に比べ、メモリ址が半減する。さらに、
ストロークの種類によってセリフが付加される輪郭線は
決まっているので、ストロークの種別に応じて、セリフ
が付かない一方の輪郭線を抽出すべきストローク成分に
選べば、それをストロークベクトルとして用いて他方の
輪郭線をセリフを含めて派生することが可能である。
パターンのサイズや線径はフォントの重要なデザイン要
素であり、これらの要素の異なるフォントは、別個のフ
ォントしてデザインされている。
素であり、これらの要素の異なるフォントは、別個のフ
ォントしてデザインされている。
しかし、一般に文字の基本デザイン(ストローク)はサ
イズや線径に関係なくほぼ同一(類似)と考えられる。
イズや線径に関係なくほぼ同一(類似)と考えられる。
他方、フォントの太字化において、線径は全ストローク
について均一にしたのでは自然なパターンを得られない
。例えば明朝体の場合、縦ストロークをより太くし、横
ストロークをそれほど線径を増加させないようにすると
、自然なパターンが得られる。
について均一にしたのでは自然なパターンを得られない
。例えば明朝体の場合、縦ストロークをより太くし、横
ストロークをそれほど線径を増加させないようにすると
、自然なパターンが得られる。
そこで本発明においては、ストローク成分とし抽出され
た輪郭線より、それとともにストロークを構成する輪郭
線を派生し、その際にストロークの種別に応じて異なる
線径拡大率を適用することにより、共通のフォントから
サイズや線径が様々な、かつ字形が自然なフォントパタ
ーンを生成することを可能とする。
た輪郭線より、それとともにストロークを構成する輪郭
線を派生し、その際にストロークの種別に応じて異なる
線径拡大率を適用することにより、共通のフォントから
サイズや線径が様々な、かつ字形が自然なフォントパタ
ーンを生成することを可能とする。
以下、図面を用い本発明の一実施例を詳細に説明する。
本発明によるフォントパターン処理を実行するための装
置構成の一例を第1図に示す。■はフォントパターンの
ビットマツプを格納するためのビットマツプメモリであ
る。このビットマツプ上ではフォントパターンの1画素
は1ビツトで表現され、各ビットの値は黒点が1、白点
がOとなっている。
置構成の一例を第1図に示す。■はフォントパターンの
ビットマツプを格納するためのビットマツプメモリであ
る。このビットマツプ上ではフォントパターンの1画素
は1ビツトで表現され、各ビットの値は黒点が1、白点
がOとなっている。
2はフォントパターンのバイトマツプを格納するための
バイトマツプメモリである。このバイトマツプ上では、
フォントパターンの1画素は1バイトのコードで表現さ
れる。なお、ビットマツプメモリ1とバイトマツプメモ
リ2を共通のメモリとすることも可能である。
バイトマツプメモリである。このバイトマツプ上では、
フォントパターンの1画素は1バイトのコードで表現さ
れる。なお、ビットマツプメモリ1とバイトマツプメモ
リ2を共通のメモリとすることも可能である。
3は処理を実行するCPUである。4はCPU3の処理
のためのプログラムを格納したプログラムメモリである
。5はCPU3による処理の中間データや結果データ等
を一時的に格納するためのデータメモリである。
のためのプログラムを格納したプログラムメモリである
。5はCPU3による処理の中間データや結果データ等
を一時的に格納するためのデータメモリである。
第2図は本発明の一実施例における処理全体のフローを
示している。以下、第2図中の各処理ブロック毎に処理
内容を説明する。
示している。以下、第2図中の各処理ブロック毎に処理
内容を説明する。
処理ブロック■
この処理ブロックでは、ビットマツプからバイトマツプ
への変換を行う。
への変換を行う。
この変換は、ビットマツプ上のフォントパターンの各点
について、その近傍ビットの値(白/黒)を用いた特定
の演算の結果に応じて所定のバイトコードを割り付ける
ことによって行う。この変換の際に参照される近傍の範
囲は、8近傍(縦、横。
について、その近傍ビットの値(白/黒)を用いた特定
の演算の結果に応じて所定のバイトコードを割り付ける
ことによって行う。この変換の際に参照される近傍の範
囲は、8近傍(縦、横。
斜め)または4近傍(縦、横)であるが、フォントパタ
ーンの処理の場合には、4近傍を参照すれば十分である
。
ーンの処理の場合には、4近傍を参照すれば十分である
。
本実施例においても4近傍を選び、フォントパターンの
注目点(x、y)について、その4近傍の各ビットCx
t y−i)+ (x+ y+i)、(x−1t y
)t (x+1.y)にバイナリ・ウェイト(8,4
,2,1)をかけてコート化する。
注目点(x、y)について、その4近傍の各ビットCx
t y−i)+ (x+ y+i)、(x−1t y
)t (x+1.y)にバイナリ・ウェイト(8,4
,2,1)をかけてコート化する。
すなわち、各点(x、y)について次式の演算を行う。
V(x、 y)=8 X B (x + y 1)
+ 4 X B (x * y + 1 )+2XB(
x−1)+B(x+1. y) −(1)ただし、
B (a、b)は近傍ビット(a、b)が黒なら1、白
から0である。また上式は注目点(x、y)が黒の場合
に適用されるもので、注目点が白の場合はV (x F
y)を−i (=OXFF)とする。したがって、V
(x+ y)は−1から+15までの整数となる。
+ 4 X B (x * y + 1 )+2XB(
x−1)+B(x+1. y) −(1)ただし、
B (a、b)は近傍ビット(a、b)が黒なら1、白
から0である。また上式は注目点(x、y)が黒の場合
に適用されるもので、注目点が白の場合はV (x F
y)を−i (=OXFF)とする。したがって、V
(x+ y)は−1から+15までの整数となる。
そして、このような演算値V (X * y)に第1表
に示すようなバイトコードを割り付ける。ただし本実施
例においては、コード″F”は孤立点に対応し処理上熱
意味なノイズとみなしてよいので、″ブランク″に置換
するものとする。
に示すようなバイトコードを割り付ける。ただし本実施
例においては、コード″F”は孤立点に対応し処理上熱
意味なノイズとみなしてよいので、″ブランク″に置換
するものとする。
以下余白
第1表
第3図から第5図に、漢字のバイトマツプの例を示す。
処理ブロック■
この処理ブロックでは、バイトマツプ上でフォントパタ
ーンのストローク(筆の動き)への分解あるいはストロ
ーク抽出を行う。ここでは、ストロークとして第2表に
示すような4種類を定義する。
ーンのストローク(筆の動き)への分解あるいはストロ
ーク抽出を行う。ここでは、ストロークとして第2表に
示すような4種類を定義する。
第2表
本実施例では、第6図に示すように、この4種のストロ
ークの抽出を順番に行う。
ークの抽出を順番に行う。
各種類のストロークの抽出は、バイトマツプを左上角よ
りラスター走査して、注目のストローク種類に固有のコ
ード配列(第7図)を捜し、この固有のコード配列が見
つかると、その位置から両方向へ輪郭追跡を行って端点
を捜すことによって行う。したがって、バイトマツプは
合計4回走査されることになる。一般に一つのフォント
パターン中に複数のストロークが存在する。例えば第3
図に示す「講」のバイトマツプ上には、縦線はVTL
〜VT7(7)7個、横線はHR1〜HRLI(1)1
1個がある。第4図および第5図のバイトマツプも同様
である。ここで各ストロークの略号に付加された数字は
、種類別のストロークの個数のカウンタである。
りラスター走査して、注目のストローク種類に固有のコ
ード配列(第7図)を捜し、この固有のコード配列が見
つかると、その位置から両方向へ輪郭追跡を行って端点
を捜すことによって行う。したがって、バイトマツプは
合計4回走査されることになる。一般に一つのフォント
パターン中に複数のストロークが存在する。例えば第3
図に示す「講」のバイトマツプ上には、縦線はVTL
〜VT7(7)7個、横線はHR1〜HRLI(1)1
1個がある。第4図および第5図のバイトマツプも同様
である。ここで各ストロークの略号に付加された数字は
、種類別のストロークの個数のカウンタである。
なお、ストロークの固有コード配列は無数に存在するよ
うに見えるが、実際には、バイトマツプをスキャナして
最初に遭遇した固有コード配列を起点に輪郭追跡を行い
1通過したコードを抹消するので、1個のストロークに
1個の固有コード配列という対応が原則的に成立する。
うに見えるが、実際には、バイトマツプをスキャナして
最初に遭遇した固有コード配列を起点に輪郭追跡を行い
1通過したコードを抹消するので、1個のストロークに
1個の固有コード配列という対応が原則的に成立する。
第8図は、このようなストローク抽出処理のフローチャ
ートである。処理ブロック111において、変数x、y
、cを初期化(クリア)する。X。
ートである。処理ブロック111において、変数x、y
、cを初期化(クリア)する。X。
yはバイトマツプを走査するためのポインタ、Cは前記
ストロークのカウンタで、ストロークデータのインデッ
クスとなる。処理ブロック12は。
ストロークのカウンタで、ストロークデータのインデッ
クスとなる。処理ブロック12は。
固有コードを検出し、その位置からストロークの端点(
始点、終点)が見つかるまで輪郭追跡を行い、一つのス
トロークを抽出する度にカウンタCの値に1を加える。
始点、終点)が見つかるまで輪郭追跡を行い、一つのス
トロークを抽出する度にカウンタCの値に1を加える。
なお、この処理詳細については後述する。処理ブロック
13はバイトマツプの走査の終了チエツクのためにバイ
トマツプで右下角の座41 (Xmax、 Ymax)
とポインタXとyの比較判定を行う。処理ステップ14
はポインタ、yのインクリメントを行う。
13はバイトマツプの走査の終了チエツクのためにバイ
トマツプで右下角の座41 (Xmax、 Ymax)
とポインタXとyの比較判定を行う。処理ステップ14
はポインタ、yのインクリメントを行う。
ここで、抽出されるストロークのイメージを第9図に示
す。ストロークの輪郭を端点P1tP2で二つの輪郭線
に分割する。ストロークデータとして保存されるのは、
実線で表された片方の輪郭線だけである。すなわち、実
線が単線化されたストロークである。破線で示された輪
郭線は、実線の輪郭線の関数として派生されるもので、
セリフも一意的に含まれる。斜線ストロークのp3は、
U斜線″として属性パラメータで特定のパターンを呼び
出させるので、必ずしも必要でない。した要って、本実
施例においては、ストロークの種別と、端点P1+P2
の座標だけがストロークデータとして第10図のような
フォーマットで保存される。故に、一つのストロークの
データの保存に必要なメモリ容量は5バイトと極めて少
ない。
す。ストロークの輪郭を端点P1tP2で二つの輪郭線
に分割する。ストロークデータとして保存されるのは、
実線で表された片方の輪郭線だけである。すなわち、実
線が単線化されたストロークである。破線で示された輪
郭線は、実線の輪郭線の関数として派生されるもので、
セリフも一意的に含まれる。斜線ストロークのp3は、
U斜線″として属性パラメータで特定のパターンを呼び
出させるので、必ずしも必要でない。した要って、本実
施例においては、ストロークの種別と、端点P1+P2
の座標だけがストロークデータとして第10図のような
フォーマットで保存される。故に、一つのストロークの
データの保存に必要なメモリ容量は5バイトと極めて少
ない。
一般的にストロークは他のストロークとの干渉(連続、
接触、交差)があるが、ここでは、ストロークの干渉が
ないとして、輪郭追連と端点検出を説明する9 ストロークの固有コード配列は必ずストロークの中間に
あるので、その位置から両方向(縦線なら垂直上方と垂
直下方)に輪郭点を追跡すると。
接触、交差)があるが、ここでは、ストロークの干渉が
ないとして、輪郭追連と端点検出を説明する9 ストロークの固有コード配列は必ずストロークの中間に
あるので、その位置から両方向(縦線なら垂直上方と垂
直下方)に輪郭点を追跡すると。
ストロークの端点(pi、p2)を示すコードまたはコ
ード配列が見つかる。第11図に、このような輪郭追跡
の様子をストローク種別毎に示す。
ード配列が見つかる。第11図に、このような輪郭追跡
の様子をストローク種別毎に示す。
また、端点のコードまたはコード配列を第12図に示す
。そして、このような端点のコードまたはコード配列の
一実施例をストロークの端点PlyP2として保存する
ことになる。
。そして、このような端点のコードまたはコード配列の
一実施例をストロークの端点PlyP2として保存する
ことになる。
さて、実際のフォントパターンにおいては、ストローク
間の干渉が頻繁に出現する。ここで各干渉は次のように
定義する。
間の干渉が頻繁に出現する。ここで各干渉は次のように
定義する。
″1連続(C)”:カギ(フッ)のように異なった種類
のストロークが連続して一 つのストロークを形成する。
のストロークが連続して一 つのストロークを形成する。
゛接触(T)”:T字路、ト字路のようにストロークの
端部が他のストロークに 含まれる。
端部が他のストロークに 含まれる。
゛′交差(X)”:十字路、X字路のようにストローク
が途中で他のストロークを 突き抜ける。
が途中で他のストロークを 突き抜ける。
このようなストローク干渉の例を第13図に示す。
次にストローク干渉がある場合のストローク抽出処理(
第8図の処理ブロック12)について説明する。ストロ
ーク干渉がある場合、第12図に示した端部のコードま
たはコード配列を単純にストロークの端点とすることは
できず、干渉の種類によって端点検出の方法を変える必
要がある。
第8図の処理ブロック12)について説明する。ストロ
ーク干渉がある場合、第12図に示した端部のコードま
たはコード配列を単純にストロークの端点とすることは
できず、干渉の種類によって端点検出の方法を変える必
要がある。
例えば、第14図に示すような横線と交差した縦線の輪
郭追跡の場合、下方追跡において、2+1″のコード配
列が第7行まで連続するが、第8行の左右の輪郭線とも
にコードdi 8 IIに遭遇する。この左右に広がる
コード1181)の下のコードは“4”であり、これは
第7回に示した横線に固有のコード配列である。したが
って、注目する縦線と横線との干渉が分かるので、次に
干渉の種類を判断する。第7行のコード配列” 2 +
1 ”の直下の行のコード配列は+++”で、このコ
ードII + Itは輪郭線内部の点を意味するので、
縦線ストロークの輪郭追跡を進める。第9行も同様であ
る。第10行まで追跡を進めると、ここでコード配列“
2 + 1 ”が再度出現する。これは縦線が横線を突
き抜けたということで、干渉は交差であると判断できる
。このような交差の場合、交差部以外で端部のコードま
たはコード配列が見つかった位置を端点とする。
郭追跡の場合、下方追跡において、2+1″のコード配
列が第7行まで連続するが、第8行の左右の輪郭線とも
にコードdi 8 IIに遭遇する。この左右に広がる
コード1181)の下のコードは“4”であり、これは
第7回に示した横線に固有のコード配列である。したが
って、注目する縦線と横線との干渉が分かるので、次に
干渉の種類を判断する。第7行のコード配列” 2 +
1 ”の直下の行のコード配列は+++”で、このコ
ードII + Itは輪郭線内部の点を意味するので、
縦線ストロークの輪郭追跡を進める。第9行も同様であ
る。第10行まで追跡を進めると、ここでコード配列“
2 + 1 ”が再度出現する。これは縦線が横線を突
き抜けたということで、干渉は交差であると判断できる
。このような交差の場合、交差部以外で端部のコードま
たはコード配列が見つかった位置を端点とする。
第15図は″接触″の例である。縦線の下方追跡におい
て、第8行の横線のコード配列が出現するが、第9行の
コード配列” 444 ”と遭遇する。
て、第8行の横線のコード配列が出現するが、第9行の
コード配列” 444 ”と遭遇する。
このコード配列は輪郭線であるので、縦線の下方進行が
妨げられる。すなわち、第9行を縦線の下端と判断する
。
妨げられる。すなわち、第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)。端点すなわち前記端部のコー
ドまたはコード配列が検出されたときは、端点の位置を
保存し、その方向の追跡を終了する(処理ブロック24
)。
る(処理ブロック23)。端点すなわち前記端部のコー
ドまたはコード配列が検出されたときは、端点の位置を
保存し、その方向の追跡を終了する(処理ブロック24
)。
“接触”が検出されたときは処理ブロック25で処理す
る。′接触″は、注目ストローク自体の端点または接触
相手の端点を意味する。接触相手のストロークの端点の
場合は、注目ストローク(2本の輪郭線からなる)の一
方の輪郭線のみが干渉を受け、注目ストローク自体の端
点の場合には、両方の輪郭線の進行が妨げられるので、
その区別が可能である。そこで、″干渉″の位置が注目
ストローク自体の場合には、相手の輪郭線の位置を端点
として保存し、その方向の追跡を終了する。
る。′接触″は、注目ストローク自体の端点または接触
相手の端点を意味する。接触相手のストロークの端点の
場合は、注目ストローク(2本の輪郭線からなる)の一
方の輪郭線のみが干渉を受け、注目ストローク自体の端
点の場合には、両方の輪郭線の進行が妨げられるので、
その区別が可能である。そこで、″干渉″の位置が注目
ストローク自体の場合には、相手の輪郭線の位置を端点
として保存し、その方向の追跡を終了する。
゛′交差″が検出されたときは、ストローク進行方向に
1′+”コードが現れる。もし、この11+”コードを
スキップした先に再び、注目ストロークに固有のコード
配列が現れた場合には、そのままストロークを進行させ
る(処理ブロック26)。
1′+”コードが現れる。もし、この11+”コードを
スキップした先に再び、注目ストロークに固有のコード
配列が現れた場合には、そのままストロークを進行させ
る(処理ブロック26)。
″干渉″′が″接触″′でも″交差″でもなければ″連
続″であり、具体的にはカギ())のように二つのスト
ローク(カギでは横線と斜め線)が連続する場合である
。この場合、前記のように屈曲部を検出して相手ストロ
ークと連続し、追跡を進める(処理ブロック27)。
続″であり、具体的にはカギ())のように二つのスト
ローク(カギでは横線と斜め線)が連続する場合である
。この場合、前記のように屈曲部を検出して相手ストロ
ークと連続し、追跡を進める(処理ブロック27)。
第18図から第20図は、それぞれ第3図から第5図に
示したバイトマツプから抽出された単線ストロークのイ
メージすなわちフォントパターンの細線化イメージであ
る。
示したバイトマツプから抽出された単線ストロークのイ
メージすなわちフォントパターンの細線化イメージであ
る。
処咀スpノー佑■1
処理ブロック■で抽出されたフォントパターンのストロ
ークより、様々なサイズの線径のフォントパターンを生
成する処理ブロックである。
ークより、様々なサイズの線径のフォントパターンを生
成する処理ブロックである。
抽出されたストロークは、第9図に実線で示したような
基準となる一方の輪郭線である。そこで、フォントのサ
イズに応じてストロークの長さおよび位置を調整し、ま
た、このストロークの元に必要な線形となるような残り
の輪郭線(第9図の破線)を派生させる。この際に、自
然なパターンが得られるように、ストロークの種類に応
して線径拡大率を変える。そして、必要に応じてストロ
ークの内部を塗り潰す。
基準となる一方の輪郭線である。そこで、フォントのサ
イズに応じてストロークの長さおよび位置を調整し、ま
た、このストロークの元に必要な線形となるような残り
の輪郭線(第9図の破線)を派生させる。この際に、自
然なパターンが得られるように、ストロークの種類に応
して線径拡大率を変える。そして、必要に応じてストロ
ークの内部を塗り潰す。
文字のパターン構造のパラメータはストロークであり、
輪郭すなわち線の太さはストロークから派生される副次
的な射像といえる。しかし、処理の対象となる実際の文
字は、ある太さをもつ線で描かれ、その輪郭は線の交差
、接触等を含むので、ビットマツプ上でス1−ロークを
輪郭線から幾何学的に抽出することは極めて困難である
。
輪郭すなわち線の太さはストロークから派生される副次
的な射像といえる。しかし、処理の対象となる実際の文
字は、ある太さをもつ線で描かれ、その輪郭は線の交差
、接触等を含むので、ビットマツプ上でス1−ロークを
輪郭線から幾何学的に抽出することは極めて困難である
。
これに対し請求項(1)に記載の本発明によれば。
パターンの幾何的ないしトポロジカル的特徴を表したバ
イトマツプ上において、ストロークに沿って特定のコー
ド配列が出現することを利用し、干渉があるストローク
も精度良く、効率的に抽出することができる。
イトマツプ上において、ストロークに沿って特定のコー
ド配列が出現することを利用し、干渉があるストローク
も精度良く、効率的に抽出することができる。
またストロークは二つの端点間を2本の輪郭線で結んだ
1個の閉ループである。この2本の輪郭線は線の太さを
表すものであり、極めて相関が高く、相互に関数的であ
り、一方の輪郭線より他方の輪郭線を関数的に派生させ
ることが可能である。
1個の閉ループである。この2本の輪郭線は線の太さを
表すものであり、極めて相関が高く、相互に関数的であ
り、一方の輪郭線より他方の輪郭線を関数的に派生させ
ることが可能である。
請求項(2)記載の本発明によれば、ストロークの一方
の輪郭線だけを抽出するので、両方の輪郭線を抽出し保
存する場合に比べ、ストロークデータの保存用メモリの
容量を削減できる。また、ストロークの端点は水平、垂
直方向の極値であるので、2本の輪郭線に塗り始めと塗
り終りの属性を与えることにより、ストローク内部の高
速塗り潰しが可能になる。
の輪郭線だけを抽出するので、両方の輪郭線を抽出し保
存する場合に比べ、ストロークデータの保存用メモリの
容量を削減できる。また、ストロークの端点は水平、垂
直方向の極値であるので、2本の輪郭線に塗り始めと塗
り終りの属性を与えることにより、ストローク内部の高
速塗り潰しが可能になる。
またストロークの種類に応じた線形変換を行うには、ス
トロークの輪郭線を2分し、一方の輪郭線を他方の1Q
郭線に括づく関数として表す必要がある。請求項(3)
に記載の本発明によれば、このような線径のノンリニア
変換を容易に行うことができるため、共通のフォントに
対するノンリニアな線径可変フォント変換によって、サ
イズおよび線径が異なる多種のフォントパターンを生成
することが可能となる。
トロークの輪郭線を2分し、一方の輪郭線を他方の1Q
郭線に括づく関数として表す必要がある。請求項(3)
に記載の本発明によれば、このような線径のノンリニア
変換を容易に行うことができるため、共通のフォントに
対するノンリニアな線径可変フォント変換によって、サ
イズおよび線径が異なる多種のフォントパターンを生成
することが可能となる。
第1図は本発明を実施するための装置構成の一例を示す
ブロック図、第2図は本発明の一実施例の全体処理を示
ずフローチャート、第3図から第5図はそれぞれバイト
マツプの例を示す図、第6図は第2図中のストローク抽
出処理ブロックの処理の流れを示すフローチャート、第
7図は各種ストロークに固有のコード配列を示す図、第
8図は第6図中の各処理ブロックの内容を示すフローチ
ャート、第9図は抽出されるストロークのイメージを示
す図、第10図はストロークのデータフォ−マットを示
す図、第11図はストローク抽出のための輪郭追跡の説
明図、第12図は端部のコードまたはコード配列を示す
図、第13図はストローク間干渉の例を示す図、第14
図は″交差″の場合のストローク抽出を説明するための
図、第15図は″接触″の場合のストローク抽出を説明
するための図、第16図は″連続″の場合のス1−ロー
ク抽出を説明するための図、第17図はストローク間干
渉を考慮したストローク抽出処理フローチャート、第1
8図から第20図はそれぞれ第3図から第5図に示した
バイトマツプより抽出されたストロークを、示す図であ
る。 1・・・ビットマツプメモリ、 2・・・バイトマツプメモリ、 3・・・CPU、 4・・・プログラムメモリ、5・
・・データメモリ。 第3 図 h!I 第2図 第6図 m、LL44俸44> 第9図 凸デ轟ヲラ 第7図 第8図 第11図 (^)季L(聚 (しン 4輔( (C)友τ斜機 (沈)んT紐線 第12図 第17図 童溢、も。 第20図
ブロック図、第2図は本発明の一実施例の全体処理を示
ずフローチャート、第3図から第5図はそれぞれバイト
マツプの例を示す図、第6図は第2図中のストローク抽
出処理ブロックの処理の流れを示すフローチャート、第
7図は各種ストロークに固有のコード配列を示す図、第
8図は第6図中の各処理ブロックの内容を示すフローチ
ャート、第9図は抽出されるストロークのイメージを示
す図、第10図はストロークのデータフォ−マットを示
す図、第11図はストローク抽出のための輪郭追跡の説
明図、第12図は端部のコードまたはコード配列を示す
図、第13図はストローク間干渉の例を示す図、第14
図は″交差″の場合のストローク抽出を説明するための
図、第15図は″接触″の場合のストローク抽出を説明
するための図、第16図は″連続″の場合のス1−ロー
ク抽出を説明するための図、第17図はストローク間干
渉を考慮したストローク抽出処理フローチャート、第1
8図から第20図はそれぞれ第3図から第5図に示した
バイトマツプより抽出されたストロークを、示す図であ
る。 1・・・ビットマツプメモリ、 2・・・バイトマツプメモリ、 3・・・CPU、 4・・・プログラムメモリ、5・
・・データメモリ。 第3 図 h!I 第2図 第6図 m、LL44俸44> 第9図 凸デ轟ヲラ 第7図 第8図 第11図 (^)季L(聚 (しン 4輔( (C)友τ斜機 (沈)んT紐線 第12図 第17図 童溢、も。 第20図
Claims (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 true JPH032058A (ja) | 1991-01-08 |
| JP2776887B2 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) |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5583977A (en) * | 1978-12-20 | 1980-06-24 | Fujitsu Ltd | Pattern process system |
| 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
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS5583977A (en) * | 1978-12-20 | 1980-06-24 | Fujitsu Ltd | Pattern process system |
| JPS60126782A (ja) * | 1983-12-13 | 1985-07-06 | Ricoh Co Ltd | 文字認識装置 |
| JPS60128577A (ja) * | 1983-12-15 | 1985-07-09 | Ricoh Co Ltd | 文字認識装置 |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2776887B2 (ja) | 1998-07-16 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| Song et al. | An object-oriented progressive-simplification-based vectorization system for engineering drawings: model, algorithm, and performance | |
| JP2608571B2 (ja) | 入力走査画像データのベクトル化のための装置及び方法 | |
| JPH04104324A (ja) | プログラム作成装置 | |
| JP4443576B2 (ja) | パターン分離抽出プログラム、パターン分離抽出装置及びパターン分離抽出方法 | |
| JP2597006B2 (ja) | 矩形座標抽出方法 | |
| US6947596B2 (en) | Character recognition method, program and recording medium | |
| US4853885A (en) | Method of compressing character or pictorial image data using curve approximation | |
| KR940006918B1 (ko) | 디지탈 활자체의 문자윤곽을 채우는 방법 및 시스템 | |
| JPH032058A (ja) | フォントパターン処理方法 | |
| JPH0277889A (ja) | 図形塗りつぶし方式 | |
| JP2006227824A (ja) | 図面認識方法および装置 | |
| JP4878057B2 (ja) | 文字認識方法,プログラム及び記録媒体 | |
| JP2595361B2 (ja) | 折線からなる図形の内外判定方法 | |
| JPH01266689A (ja) | 画像認識装置 | |
| JPS5835674A (ja) | オンライン手書文字特徴抽出方法 | |
| CN112733621A (zh) | 一种地图高精度信息识别方法 | |
| JP2771981B2 (ja) | 高品質文字パターン発生方式 | |
| JPH0658689B2 (ja) | 線図形分離装置 | |
| JP3329528B2 (ja) | ドキュメント読取り装置 | |
| JPH02204881A (ja) | 図形文字分離方法 | |
| JP2835056B2 (ja) | 高品質文字パターン発生方式 | |
| JPH09147125A (ja) | 輪郭線抽出方法と抽出装置 | |
| JPS63316171A (ja) | 破線/鎖線抽出方式 | |
| EP0381794A1 (en) | Method for registering image data | |
| JP2001126078A (ja) | 閉領域塗りつぶし方法及び情報処理装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| LAPS | Cancellation because of no payment of annual fees |