JP3226734B2 - データ変換装置および方法 - Google Patents
データ変換装置および方法Info
- Publication number
- JP3226734B2 JP3226734B2 JP25372594A JP25372594A JP3226734B2 JP 3226734 B2 JP3226734 B2 JP 3226734B2 JP 25372594 A JP25372594 A JP 25372594A JP 25372594 A JP25372594 A JP 25372594A JP 3226734 B2 JP3226734 B2 JP 3226734B2
- Authority
- JP
- Japan
- Prior art keywords
- curve
- data
- pattern
- character
- input
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/001—Model-based coding, e.g. wire frame
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing of straight lines or curves
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Controls And Circuits For Display Device (AREA)
- Image Generation (AREA)
- Image Processing (AREA)
Description
【0001】
【産業上の利用分野】本発明は、文字の輪郭を直線およ
び曲線データで表すアウトラインフォントデータをより
実際の文字輪郭に近いアウトラインフォントデータに変
換するデータ処理装置および方法に関する。
び曲線データで表すアウトラインフォントデータをより
実際の文字輪郭に近いアウトラインフォントデータに変
換するデータ処理装置および方法に関する。
【0002】
【0003】
【従来の技術】従来から、アウトラインフォントは、文
字の輪郭が直線の場合はその両端点を記憶し、曲線の場
合は曲線を特定するための端点、中間点よりなる制御点
の座標と属性を記憶し、その制御点を基にアウトライン
フォントをビットマップ展開していた。
字の輪郭が直線の場合はその両端点を記憶し、曲線の場
合は曲線を特定するための端点、中間点よりなる制御点
の座標と属性を記憶し、その制御点を基にアウトライン
フォントをビットマップ展開していた。
【0004】
【発明が解決しようとする課題】しかしながら、文字の
輪郭を長い曲線で表す場合、中間点の座標と文字上の実
際の座標は、例えば、図10に示すようにかけ離れるの
で、ビットマップに展開する際に文字の占める領域が実
際にどれだけ必要なのかを正確に計算することができ
ず、このため、必要以上のメモリを設けていた。
輪郭を長い曲線で表す場合、中間点の座標と文字上の実
際の座標は、例えば、図10に示すようにかけ離れるの
で、ビットマップに展開する際に文字の占める領域が実
際にどれだけ必要なのかを正確に計算することができ
ず、このため、必要以上のメモリを設けていた。
【0005】また、図11に示すように、曲線として例
えばBezier曲線を用いた場合、Bezier曲線は端点を除き
制御点と曲線がかけはなれているので、正確な文字枠は
改めてBezier曲線から求めるしかなかった。
えばBezier曲線を用いた場合、Bezier曲線は端点を除き
制御点と曲線がかけはなれているので、正確な文字枠は
改めてBezier曲線から求めるしかなかった。
【0006】本発明の目的は、上記のような問題点を解
決し、より実際の文字輪郭に近いアウトラインフォント
に変換することができるデータ変換装置および方法を提
供することにある。
決し、より実際の文字輪郭に近いアウトラインフォント
に変換することができるデータ変換装置および方法を提
供することにある。
【0007】
【0008】
【課題を解決するための手段】請求項1の発明は、パタ
ーンの輪郭を表すデータのX,Yの最大値、最小値から
キャラクタBBoxを計算する計算手段と、前記パターンの
輪郭を表すデータのうちの曲線データを入力する入力手
段と、前記入力手段により入力された曲線データの制御
点が前記計算手段により計算されたキャラクタBBoxに接
するか否かを判別する判別手段と、前記曲線データによ
り表される曲線に極値が存在するか否かを判定する判定
手段と、前記判別手段により接しないと判別されるか、
あるいは、前記判定手段により存在しないと判定された
場合、曲線を分割せず、他方、前記判別手段により接す
ると判別され、かつ、前記判定手段により存在すると判
定された場合、極値で曲線を分割する分割手段と、前記
分割手段により分割された曲線または分割されなかった
曲線に対応する曲線データを出力する出力手段とを有す
ることを特徴とする。
ーンの輪郭を表すデータのX,Yの最大値、最小値から
キャラクタBBoxを計算する計算手段と、前記パターンの
輪郭を表すデータのうちの曲線データを入力する入力手
段と、前記入力手段により入力された曲線データの制御
点が前記計算手段により計算されたキャラクタBBoxに接
するか否かを判別する判別手段と、前記曲線データによ
り表される曲線に極値が存在するか否かを判定する判定
手段と、前記判別手段により接しないと判別されるか、
あるいは、前記判定手段により存在しないと判定された
場合、曲線を分割せず、他方、前記判別手段により接す
ると判別され、かつ、前記判定手段により存在すると判
定された場合、極値で曲線を分割する分割手段と、前記
分割手段により分割された曲線または分割されなかった
曲線に対応する曲線データを出力する出力手段とを有す
ることを特徴とする。
【0009】請求項1において、パターンは、文字パタ
ーンを含むことができる。
ーンを含むことができる。
【0010】請求項1において、パターンを印刷するプ
リンタをさらに有することができる。
リンタをさらに有することができる。
【0011】請求項1において、入力手段は、パターン
の輪郭を表すデータを入力し、フラグを調べ、調べた結
果、特定のフラグの場合は、続く3つのデータを曲線デ
ータとして入力し、特定のフラグでない場合は、次のパ
ターンの輪郭を表すデータを入力することができる。
の輪郭を表すデータを入力し、フラグを調べ、調べた結
果、特定のフラグの場合は、続く3つのデータを曲線デ
ータとして入力し、特定のフラグでない場合は、次のパ
ターンの輪郭を表すデータを入力することができる。
【0012】請求項5の発明は、パターンの輪郭を表す
データのX,Yの最大値、最小値からキャラクタBBoxを
計算する計算ステップと、前記パターンの輪郭を表すデ
ータのうちの曲線データを入力する入力ステップと、前
記入力ステップにより入力された曲線データの制御点が
前記計算ステップにより計算されたキャラクタBBoxに接
するか否かを判別する判別ステップと、前記曲線データ
により表される曲線に極値が存在するか否かを判定する
判定ステップと、前記判別ステップにより接しないと判
別されるか、あるいは、前記判定ステップにより存在し
ないと判定された場合、曲線を分割せず、他方、前記判
別ステップにより接すると判別され、かつ、前記判定ス
テップにより存在すると判定された場合、極値で曲線を
分割する分割ステップと、前記分割ステップにより分割
された曲線または分割されなかった曲線に対応する曲線
データを出力する出力ステップとを有することを特徴と
する。
データのX,Yの最大値、最小値からキャラクタBBoxを
計算する計算ステップと、前記パターンの輪郭を表すデ
ータのうちの曲線データを入力する入力ステップと、前
記入力ステップにより入力された曲線データの制御点が
前記計算ステップにより計算されたキャラクタBBoxに接
するか否かを判別する判別ステップと、前記曲線データ
により表される曲線に極値が存在するか否かを判定する
判定ステップと、前記判別ステップにより接しないと判
別されるか、あるいは、前記判定ステップにより存在し
ないと判定された場合、曲線を分割せず、他方、前記判
別ステップにより接すると判別され、かつ、前記判定ス
テップにより存在すると判定された場合、極値で曲線を
分割する分割ステップと、前記分割ステップにより分割
された曲線または分割されなかった曲線に対応する曲線
データを出力する出力ステップとを有することを特徴と
する。
【0013】請求項5において、パターンは、文字パタ
ーンを含むことができる。
ーンを含むことができる。
【0014】請求項5において、入力ステップは、パタ
ーンの輪郭を表すデータを入力し、フラグを調べ、調べ
た結果、特定のフラグの場合は、続く3つのデータを曲
線データとして入力し、特定のフラグでない場合は、次
のパターンの輪郭を表すデータを入力することができ
る。
ーンの輪郭を表すデータを入力し、フラグを調べ、調べ
た結果、特定のフラグの場合は、続く3つのデータを曲
線データとして入力し、特定のフラグでない場合は、次
のパターンの輪郭を表すデータを入力することができ
る。
【0015】
【0016】
【0017】
【0018】
【0019】
【0020】
【0021】
【0022】
【0023】
【0024】
【0025】
【0026】
【0027】
【0028】
【0029】
【実施例】以下、本発明の実施例を図面を参照して詳細
に説明する。
に説明する。
【0030】<第1実施例>図1は本発明の第1実施例
を示す。図1において、101はCPU(central proce
ssing unit) であり、本装置全体の制御や処理を行うも
のである。102はRAM(random access memory)であ
り、CPU101により一時記憶領域として用いられ
る。103はROM(read only memory)であり、CPU
101によるアウトラインフォント変換処理プログラム
やデータが記憶してある。104は入力装置であり、本
装置で処理するデータを入力するためのものである。1
05はプリンタや表示器等の出力装置であり、本装置で
処理したデータを出力するためのものである。
を示す。図1において、101はCPU(central proce
ssing unit) であり、本装置全体の制御や処理を行うも
のである。102はRAM(random access memory)であ
り、CPU101により一時記憶領域として用いられ
る。103はROM(read only memory)であり、CPU
101によるアウトラインフォント変換処理プログラム
やデータが記憶してある。104は入力装置であり、本
装置で処理するデータを入力するためのものである。1
05はプリンタや表示器等の出力装置であり、本装置で
処理したデータを出力するためのものである。
【0031】処理対象となるアウトラインフォントデー
タの一例を表1に示す。
タの一例を表1に示す。
【0032】
【表1】
【0033】このアウトラインフォントデータは、文字
の輪郭を表す直線と、3次Bezier曲線よりなる。表1に
おいて、X座標、Y座標はそれぞれ輪郭の制御点のX座
標、Y座標であり、フラグが1の場合はその点を含む連
続した4点で表される3次Bezier曲線の開始点であるこ
とを示し、フラグが−1の場合は1つの輪郭の最後の点
であることを示し、フラグが−2である場合は文字のデ
ータの最後であることを示す。
の輪郭を表す直線と、3次Bezier曲線よりなる。表1に
おいて、X座標、Y座標はそれぞれ輪郭の制御点のX座
標、Y座標であり、フラグが1の場合はその点を含む連
続した4点で表される3次Bezier曲線の開始点であるこ
とを示し、フラグが−1の場合は1つの輪郭の最後の点
であることを示し、フラグが−2である場合は文字のデ
ータの最後であることを示す。
【0034】3次Bezier曲線は、次式、すなわち、
【0035】
【数1】 x = P0x(1-t)3 + 3P1xt(1-t)2 + 3P2xt2(1-t) + P3xt3 y = P0y(1-t)3 + 3P1yt(1-t)2 + 3P2yt2(1-t) + P3yt3 (1) で表される。このように表される3次Bezier曲線は、例
えば、図2に示すように、端点と中間点よりなる矩形に
両端点でのみ接し内挿される。
えば、図2に示すように、端点と中間点よりなる矩形に
両端点でのみ接し内挿される。
【0036】図3は図1に示すROM103に格納され
るアウトラインフォント変換処理プログラムの一例を示
すフローチャートである。
るアウトラインフォント変換処理プログラムの一例を示
すフローチャートである。
【0037】ステップS301にて、配列の位置を示す
ポインタpを初期化する。ステップS302にて、輪郭
点情報を入力装置104を介して受信すると、その輪郭
点情報を配列のpの位置に入れ、pを1だけ増加する。
ついで、ステップS303にて、フラグが負か否かを判
定し、負である場合は、ステップS304にて、配列か
ら輪郭の開始点の情報を取り出し、その情報を配列上の
現在位置pの点の後に追加する。その後、フラグを0に
する。ステップS305にて、フラグが−2か否かを判
定する。
ポインタpを初期化する。ステップS302にて、輪郭
点情報を入力装置104を介して受信すると、その輪郭
点情報を配列のpの位置に入れ、pを1だけ増加する。
ついで、ステップS303にて、フラグが負か否かを判
定し、負である場合は、ステップS304にて、配列か
ら輪郭の開始点の情報を取り出し、その情報を配列上の
現在位置pの点の後に追加する。その後、フラグを0に
する。ステップS305にて、フラグが−2か否かを判
定する。
【0038】判定した結果、−2でない場合は、ステッ
プS302に戻る。他方、−2である場合は、配列から
輪郭の始点の情報を取り出し、その情報を配列上の現在
の点の後に追加する。そして、ステップS306にて、
pmax にpを代入する。ステップS307にて、配列上
の全ての点のx,yの最大値、最小値を求め、その値を
CharBBoxとする。ついで、ステップS308にて、ポイ
ンタを配列開始位置にセットする。
プS302に戻る。他方、−2である場合は、配列から
輪郭の始点の情報を取り出し、その情報を配列上の現在
の点の後に追加する。そして、ステップS306にて、
pmax にpを代入する。ステップS307にて、配列上
の全ての点のx,yの最大値、最小値を求め、その値を
CharBBoxとする。ついで、ステップS308にて、ポイ
ンタを配列開始位置にセットする。
【0039】ステップS309にて、ポインタの指す位
置のデータのフラグが1か否かを判定する。判定した結
果、1である場合は、ステップS310に移行し、ステ
ップS310にて、ポインタの位置に続く3つのデー
タ、すなわち、p+1,p+2、およびp+3番目のデ
ータを取り出し、ステップS311にて、ポインタpを
1だけ増加する。そして、ステップS312にて、この
座標値から計算される曲線データに極値が存在するか否
かを判定する。
置のデータのフラグが1か否かを判定する。判定した結
果、1である場合は、ステップS310に移行し、ステ
ップS310にて、ポインタの位置に続く3つのデー
タ、すなわち、p+1,p+2、およびp+3番目のデ
ータを取り出し、ステップS311にて、ポインタpを
1だけ増加する。そして、ステップS312にて、この
座標値から計算される曲線データに極値が存在するか否
かを判定する。
【0040】判定方法を詳しく説明する。式(1) で示す
Bezier曲線の制御点からx,yに対し、それぞれ、次
式、すなわち、
Bezier曲線の制御点からx,yに対し、それぞれ、次
式、すなわち、
【0041】
【数2】 x = (P3x-3P2x+3P1x-P0x)t3 + 3(P2x-2P1x+P0x)t2 + 3(P1x-P0x)t + P0x y = (P3y-3P2y+3P1y-P0y)t3 + 3(P2y-2P1y+P0y)t2 + 3(P1y-P0y)t + P0y (2) のようになる。この式(2) を微分すると、
【0042】
【数3】 dx/dt = 3(P3x-3P2x+3P1x-P0x)t2 + 6(P2x-2P1x+P0x)t + 3(P1x-P0x) dy/dt = 3(P3y-3P2y+3P1y-P0y)t2 + 6(P2y-2P1y+P0y)t + 3(P1y-P0y) (3) となる。ここで、AX=P3x-3P2x+3P1x-P0x, BX=P2x-2P1x+
P0x, CX=P1x-P0x とおくと、
P0x, CX=P1x-P0x とおくと、
【0043】
【数4】 Axt2+Bxt+Cx=0 Ayt2+Byt+Cy=0 (4) となり、tについて解くと、それぞれ、
【0044】
【数5】 t = (-Bx± sqrt(Bx 2 - 4 AxCx))/2Ax t = (-By± sqrt(By 2 − 4 AyCy))
/2Ay となる。その解が0より大きく1未満で、かつ、2重解
になっていなければその点が求める極値の座標である。
/2Ay となる。その解が0より大きく1未満で、かつ、2重解
になっていなければその点が求める極値の座標である。
【0045】Bezier曲線はx,yがそれぞれtを
媒介変数とする3次関数で表されるため、x,yはそれ
ぞれ極値が最大2つあり、このため、極値が0から4つ
までのBezier曲線が存在しうる。2つの極値を有するBe
zier曲線の一例を図4(a) に示し、3つの極値を有する
Bezier曲線の一例を図4(b) に、4つの極値を有するBe
zier曲線の一例を図4(c) に示す。
媒介変数とする3次関数で表されるため、x,yはそれ
ぞれ極値が最大2つあり、このため、極値が0から4つ
までのBezier曲線が存在しうる。2つの極値を有するBe
zier曲線の一例を図4(a) に示し、3つの極値を有する
Bezier曲線の一例を図4(b) に、4つの極値を有するBe
zier曲線の一例を図4(c) に示す。
【0046】ステップS312にて肯定判定された場合
は、ステップS313にて、p+1,p+2の少なくと
も一方がCharBBoxに接するか否かを判定する。肯定判定
された場合は、ステップS314にて極値で輪郭を分解
し、ステップS315にて、データを出力する。
は、ステップS313にて、p+1,p+2の少なくと
も一方がCharBBoxに接するか否かを判定する。肯定判定
された場合は、ステップS314にて極値で輪郭を分解
し、ステップS315にて、データを出力する。
【0047】他方、ステップS309にて判定した結
果、1でない場合は、ステップS315に移行する。
果、1でない場合は、ステップS315に移行する。
【0048】他方、ステップS312にて、極値が存在
しない場合はステップS315に移行する。
しない場合はステップS315に移行する。
【0049】他方、ステップS313にて、否定判定さ
れた場合はステップS315に移行する。
れた場合はステップS315に移行する。
【0050】ここで、3次Bezier曲線を分解する手法を
図5を参照して説明する。0≦a<<b≦1とすると、
tがaからbの区間を3次のBezier曲線にするために
は、sを媒介変数とした場合、sが0においてt=a、
sが1においてt=bとなるように、tとsを関係付け
ればよい。このことから、3次式x=f(t) (0≦ t≦1)
に、t=a+(b−a)sを代入し、sの式として表す
ことにより、曲線の一部をsの媒介変数として、sが0
から1までの区間で3次式となるBezier曲線を表すこと
ができる。ここで、sの各次数の係数の各制御点の座標
に変換することにより、曲線の制御点を変換することが
できる。
図5を参照して説明する。0≦a<<b≦1とすると、
tがaからbの区間を3次のBezier曲線にするために
は、sを媒介変数とした場合、sが0においてt=a、
sが1においてt=bとなるように、tとsを関係付け
ればよい。このことから、3次式x=f(t) (0≦ t≦1)
に、t=a+(b−a)sを代入し、sの式として表す
ことにより、曲線の一部をsの媒介変数として、sが0
から1までの区間で3次式となるBezier曲線を表すこと
ができる。ここで、sの各次数の係数の各制御点の座標
に変換することにより、曲線の制御点を変換することが
できる。
【0051】そして、ステップS316にて、最後のデ
ータまで処理したか否かを判定し、最後のデータまで処
理が終わっていた場合は、本装置の動作を終了し、終わ
っていない場合は、ステップS309に戻る。
ータまで処理したか否かを判定し、最後のデータまで処
理が終わっていた場合は、本装置の動作を終了し、終わ
っていない場合は、ステップS309に戻る。
【0052】なお、上述のフローに基づき処理されたデ
ータに基づき出力装置105に文字パターンを出力す
る。
ータに基づき出力装置105に文字パターンを出力す
る。
【0053】このように、輪郭の極大値、極小値で輪郭
を分解することにより、文字の輪郭が占める最大領域を
正確に計算することが可能となり、使用する文字のメモ
リを最小限にすることができる。
を分解することにより、文字の輪郭が占める最大領域を
正確に計算することが可能となり、使用する文字のメモ
リを最小限にすることができる。
【0054】<第2実施例>本実施例は第1実施例との
比較でいえば、アウトラインフォントデータを構成する
曲線が相違する。すなわち、第1実施例では、曲線を3
次Bezier曲線としたが、本実施例では、曲線を2次Bezi
er曲線とした。
比較でいえば、アウトラインフォントデータを構成する
曲線が相違する。すなわち、第1実施例では、曲線を3
次Bezier曲線としたが、本実施例では、曲線を2次Bezi
er曲線とした。
【0055】本実施例で処理対象となるアウトラインフ
ォントデータの一例を表2に示す。
ォントデータの一例を表2に示す。
【0056】
【表2】
【0057】2次Bezier曲線は、次式、すなわち、
【0058】
【数6】 x = P0x(1-t)2 + 2P1x(1-t)t + P2xt2 y = P0y(1-t)2 + 2P1y(1-t)t + P2yt2 で表される。このように表される2次Bezier曲線は、例
えば、図6に示すように、端点と中間点よりなる三角形
に両端点でのみ接し内挿される。
えば、図6に示すように、端点と中間点よりなる三角形
に両端点でのみ接し内挿される。
【0059】図7は図1に示すROM103に格納され
るアウトラインフォント変換処理プログラムの一例を示
すフローチャートである。図7に示すフローチャートは
図3に示すフローチャートとの比較でいえば、ステップ
S309にて、ポインタの指す位置のデータのフラグが
1か否かを判定し、判定した結果、1である場合に取り
出すデータが相違する。すなわち、第1実施例では、ス
テップS310にて、ポインタの位置に続く3つのデー
タ、すなわち、p+1,p+2、およびp+3番目のデ
ータを取り出し、ステップS311にて、ポインタpを
1だけ増加させた。これに対して、本実施例では、ステ
ップS710にて、ポインタ位置に続く2つのデータ、
すなわち、p+1およびp+2を取り出し、ステップS
311にて、ポインタpを1だけ増加させた。
るアウトラインフォント変換処理プログラムの一例を示
すフローチャートである。図7に示すフローチャートは
図3に示すフローチャートとの比較でいえば、ステップ
S309にて、ポインタの指す位置のデータのフラグが
1か否かを判定し、判定した結果、1である場合に取り
出すデータが相違する。すなわち、第1実施例では、ス
テップS310にて、ポインタの位置に続く3つのデー
タ、すなわち、p+1,p+2、およびp+3番目のデ
ータを取り出し、ステップS311にて、ポインタpを
1だけ増加させた。これに対して、本実施例では、ステ
ップS710にて、ポインタ位置に続く2つのデータ、
すなわち、p+1およびp+2を取り出し、ステップS
311にて、ポインタpを1だけ増加させた。
【0060】次に、2次Bezier曲線を分解する手法を図
8を参照して説明する。0≦a≦b≦1とすると、tが
aからbの区間を2次のBezier曲線にするためには、s
を媒介変数とした場合、sが0において、t=a、t=
bとなるように、tとsを関係付ければよい。このこと
から、2次式x=f(t) (0≦ t≦1)に、t=a+(b−
a)sを代入し、sの式として表すことにより、曲線の
一部をaの媒介変数として、sが0から1までの区間で
2次式となるBezier曲線を表すことができる。ここで、
sの各次数の係数を各制御点の座標に変換することによ
り、曲線の制御点を変換することが可能となった。
8を参照して説明する。0≦a≦b≦1とすると、tが
aからbの区間を2次のBezier曲線にするためには、s
を媒介変数とした場合、sが0において、t=a、t=
bとなるように、tとsを関係付ければよい。このこと
から、2次式x=f(t) (0≦ t≦1)に、t=a+(b−
a)sを代入し、sの式として表すことにより、曲線の
一部をaの媒介変数として、sが0から1までの区間で
2次式となるBezier曲線を表すことができる。ここで、
sの各次数の係数を各制御点の座標に変換することによ
り、曲線の制御点を変換することが可能となった。
【0061】このように、2次のBezier曲線を輪郭の極
大値、極小値で輪郭を分解することにより、文字の輪郭
が占める最大領域を正確に計算することができ、使用す
る文字のメモリを最小限に止めることができる。
大値、極小値で輪郭を分解することにより、文字の輪郭
が占める最大領域を正確に計算することができ、使用す
る文字のメモリを最小限に止めることができる。
【0062】第1および第2実施例では、Bezier曲線を
用いた例を説明したが、3次Bスプライン曲線、2次B
スプライン曲線等を用いることができる。線上に制御点
が存在しない曲線を用いる場合には、同様に、曲線を極
値で分解することにより、正確な文字枠を求めることが
可能となる。また、2次曲線を3次曲線に変換して文字
データを作り直した場合でも文字の占める領域が変わら
ない。
用いた例を説明したが、3次Bスプライン曲線、2次B
スプライン曲線等を用いることができる。線上に制御点
が存在しない曲線を用いる場合には、同様に、曲線を極
値で分解することにより、正確な文字枠を求めることが
可能となる。また、2次曲線を3次曲線に変換して文字
データを作り直した場合でも文字の占める領域が変わら
ない。
【0063】<第3実施例>図9は本発明の第3実施例
を示す。これは、第1および第2実施例のアウトライン
フォント変換装置を有するプリンタの例である。図9に
おいて、906は入力インタフェースであり、印字デー
タや制御コードの受信を行うものである。901はCP
Uであり、プリンタの制御やアウトラインフォントの展
開、描画のための計算等を行うものである。903はR
OMであり、プリンタの制御手順や文字データ等が記憶
してある。902はRAMであり、CPU901の計算
のための作業領域や印刷すべきイメージの展開等に用い
られている。907はビデオインタフェースであり、C
PU901によりRAM902上に形成されたイメージ
データをビデオ信号として出力するものである。908
は出力部であり、ビデオ信号をパルスのON/OFFに変換
し、このパルス信号をレーザのON/OFFに変換し、感光ド
ラム上に照射し、トナーを付着させ、それを紙に転写
し、定着することにより印刷するものである。
を示す。これは、第1および第2実施例のアウトライン
フォント変換装置を有するプリンタの例である。図9に
おいて、906は入力インタフェースであり、印字デー
タや制御コードの受信を行うものである。901はCP
Uであり、プリンタの制御やアウトラインフォントの展
開、描画のための計算等を行うものである。903はR
OMであり、プリンタの制御手順や文字データ等が記憶
してある。902はRAMであり、CPU901の計算
のための作業領域や印刷すべきイメージの展開等に用い
られている。907はビデオインタフェースであり、C
PU901によりRAM902上に形成されたイメージ
データをビデオ信号として出力するものである。908
は出力部であり、ビデオ信号をパルスのON/OFFに変換
し、このパルス信号をレーザのON/OFFに変換し、感光ド
ラム上に照射し、トナーを付着させ、それを紙に転写
し、定着することにより印刷するものである。
【0064】次に、本プリンタにおけるアウトラインデ
ータ変換部の動作を説明する。プリンタの文字コードを
受け取ると、コードに対応した文字輪郭データをROM
903から読み出す。読み出されたデータを、CPU9
01で、第1実施例と同様の手順に従って、正確に文字
枠を有するアウトラインフォントデータに変換し、RA
M902上に記憶する。ついで、RAM902上のデー
タを、出力文字サイズに従ってスケーリングし、キャラ
クタBBoxを求める。キャラクタBBoxを用いて必要なメモ
リサイズを計算し、この計算を基にRAM902上にワ
ークエリアを設定し、RAM902上のワークエリアに
文字の輪郭を描画し、内部を塗り潰すことによりビット
マップイメージを形成する。この文字のビットマップイ
メージを通常RAM902上に設定されるフレームバッ
ファの所定位置に転送し、出力イメージを形成する。こ
れを排紙命令が来るか、あるいは、1ページ分の出力イ
メージ形成が終了するまで実行する。排紙命令が来る
か、あるいは1ページ分の出力イメージ形成が終了する
と、このイメージをビデオインタフェースに送出する。
出力部はビデオ信号を受取り、紙上にトナーで画像を形
成し、印刷を行う。
ータ変換部の動作を説明する。プリンタの文字コードを
受け取ると、コードに対応した文字輪郭データをROM
903から読み出す。読み出されたデータを、CPU9
01で、第1実施例と同様の手順に従って、正確に文字
枠を有するアウトラインフォントデータに変換し、RA
M902上に記憶する。ついで、RAM902上のデー
タを、出力文字サイズに従ってスケーリングし、キャラ
クタBBoxを求める。キャラクタBBoxを用いて必要なメモ
リサイズを計算し、この計算を基にRAM902上にワ
ークエリアを設定し、RAM902上のワークエリアに
文字の輪郭を描画し、内部を塗り潰すことによりビット
マップイメージを形成する。この文字のビットマップイ
メージを通常RAM902上に設定されるフレームバッ
ファの所定位置に転送し、出力イメージを形成する。こ
れを排紙命令が来るか、あるいは、1ページ分の出力イ
メージ形成が終了するまで実行する。排紙命令が来る
か、あるいは1ページ分の出力イメージ形成が終了する
と、このイメージをビデオインタフェースに送出する。
出力部はビデオ信号を受取り、紙上にトナーで画像を形
成し、印刷を行う。
【0065】このように、文字を展開する前に、曲線を
輪郭の極大値、極小値で輪郭を分解することで文字の輪
郭が占める最大領域を正確に計算することが可能とな
り、メモリを効率良く使用でき、フレームバッファへの
データ転送量が少なくなることで、全体的なスループッ
トを上げることができる。また、文字の実際に占めるサ
イズが正確に分かるため、右マージンとの位置関係の計
算やアンダーラインを引く場合の文字幅の計算が容易に
なる。
輪郭の極大値、極小値で輪郭を分解することで文字の輪
郭が占める最大領域を正確に計算することが可能とな
り、メモリを効率良く使用でき、フレームバッファへの
データ転送量が少なくなることで、全体的なスループッ
トを上げることができる。また、文字の実際に占めるサ
イズが正確に分かるため、右マージンとの位置関係の計
算やアンダーラインを引く場合の文字幅の計算が容易に
なる。
【0066】ここでは、プリンタに組み込んだ例を説明
したが、勿論、プリンタに限らず表示器等アウトライン
フォントを用いるシステム全般で使用することが可能で
ある。
したが、勿論、プリンタに限らず表示器等アウトライン
フォントを用いるシステム全般で使用することが可能で
ある。
【0067】なお、本発明による文字とは、記号や図形
を含むものである。
を含むものである。
【0068】
【発明の効果】以上説明したように、本発明によれば、
上記のように構成したので、次の(1)〜(4) の効果があ
る。すなわち、(1) 文字展開に必要なメモリを最小限に
することができる、(2) メモリを必要最低限度であるの
で、展開後のデータ転送を高速に行うことができる、
(3) 正確な文字の幅を計算することが容易になるため、
処理が高速に行える、(4) 曲線の表現を変えても文字の
占める領域が変わらず、誤差の少ないシステムを構築す
ることができる。
上記のように構成したので、次の(1)〜(4) の効果があ
る。すなわち、(1) 文字展開に必要なメモリを最小限に
することができる、(2) メモリを必要最低限度であるの
で、展開後のデータ転送を高速に行うことができる、
(3) 正確な文字の幅を計算することが容易になるため、
処理が高速に行える、(4) 曲線の表現を変えても文字の
占める領域が変わらず、誤差の少ないシステムを構築す
ることができる。
【図1】本発明の第1実施例を示すブロック図である。
【図2】3次Bezier曲線が端点と中間点よりなる矩形に
両端点でのみ接し内挿されることを説明するための説明
図である。
両端点でのみ接し内挿されることを説明するための説明
図である。
【図3】第1実施例において図1に示すROM103に
格納されるアウトラインフォント変換処理プログラムの
一例を示すフローチャートである。
格納されるアウトラインフォント変換処理プログラムの
一例を示すフローチャートである。
【図4】3次Bezier曲線の例を示す図である。
【図5】3次Bezier曲線の分解手法を説明するための説
明図である。
明図である。
【図6】2次Bezier曲線が端点と中間点よりなる三角形
に両端点でのみ接し内挿されることを説明するための説
明図である。
に両端点でのみ接し内挿されることを説明するための説
明図である。
【図7】第2実施例において図1に示すROM103に
格納されるアウトラインフォント変換処理プログラムの
一例を示すフローチャートである。
格納されるアウトラインフォント変換処理プログラムの
一例を示すフローチャートである。
【図8】2次Bezier曲線の分解手法を説明するための説
明図である。
明図である。
【図9】本発明の第3実施例を示すブロック図である。
【図10】アウトラインフォントと曲線との関係の一例
を示す図である。
を示す図である。
【図11】曲線と文字枠との関係の一例を示す図であ
る。
る。
101 CPU 102 RAM 103 ROM 104 入力装置 105 出力装置
Claims (7)
- 【請求項1】 パターンの輪郭を表すデータのX,Yの
最大値、最小値からキャラクタBBoxを計算する計算手段
と、 前記パターンの輪郭を表すデータのうちの曲線データを
入力する入力手段と、 前記入力手段により入力された曲線データの制御点が前
記計算手段により計算されたキャラクタBBoxに接するか
否かを判別する判別手段と、 前記曲線データにより表される曲線に極値が存在するか
否かを判定する判定手段と、 前記判別手段により接しないと判別されるか、あるい
は、前記判定手段により存在しないと判定された場合、
曲線を分割せず、他方、前記判別手段により接すると判
別され、かつ、前記判定手段により存在すると判定され
た場合、極値で曲線を分割する分割手段と、 前記分割手段により分割された曲線または分割されなか
った曲線に対応する曲線データを出力する出力手段とを
有することを特徴とするデータ変換装置。 - 【請求項2】 請求項1において、前記パターンは、文
字パターンを含むことを特徴とするデータ変換装置。 - 【請求項3】 請求項1において、前記パターンを印刷
するプリンタをさらに有することを特徴とするデータ変
換装置。 - 【請求項4】 請求項1において、前記入力手段は、パ
ターンの輪郭を表すデータを入力し、フラグを調べ、調
べた結果、特定のフラグの場合は、続く3つのデータを
曲線データとして入力し、特定のフラグでない場合は、
次のパターンの輪郭を表すデータを入力することを特徴
とするデータ変換装置。 - 【請求項5】 パターンの輪郭を表すデータのX,Yの
最大値、最小値からキャラクタBBoxを計算する計算ステ
ップと、 前記パターンの輪郭を表すデータのうちの曲線データを
入力する入力ステップと、 前記入力ステップにより入力された曲線データの制御点
が前記計算ステップにより計算されたキャラクタBBoxに
接するか否かを判別する判別ステップと、 前記曲線データにより表される曲線に極値が存在するか
否かを判定する判定ステップと、 前記判別ステップにより接しないと判別されるか、ある
いは、前記判定ステップにより存在しないと判定された
場合、曲線を分割せず、他方、前記判別ステップにより
接すると判別され、かつ、前記判定ステップにより存在
すると判定された場合、極値で曲線を分割する分割ステ
ップと、 前記分割ステップにより分割された曲線または分割され
なかった曲線に対応する曲線データを出力する出力ステ
ップとを有することを特徴とするデータ変換方法。 - 【請求項6】 請求項5において、前記パターンは、文
字パターンを含むことを特徴とするデータ変換方法。 - 【請求項7】 請求項5において、前記入力ステップ
は、パターンの輪郭を表すデータを入力し、フラグを調
べ、調べた結果、特定のフラグの場合は、続く3つのデ
ータを曲線データとして入力し、特定のフラグでない場
合は、次のパターンの輪郭を表すデータを入力すること
を特徴とするデータ変換方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25372594A JP3226734B2 (ja) | 1994-10-19 | 1994-10-19 | データ変換装置および方法 |
US08/543,311 US5859647A (en) | 1994-10-19 | 1995-10-16 | Data processing apparatus and method and output device |
TW084110907A TW300292B (ja) | 1994-10-19 | 1995-10-17 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP25372594A JP3226734B2 (ja) | 1994-10-19 | 1994-10-19 | データ変換装置および方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08115419A JPH08115419A (ja) | 1996-05-07 |
JP3226734B2 true JP3226734B2 (ja) | 2001-11-05 |
Family
ID=17255282
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP25372594A Expired - Fee Related JP3226734B2 (ja) | 1994-10-19 | 1994-10-19 | データ変換装置および方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US5859647A (ja) |
JP (1) | JP3226734B2 (ja) |
TW (1) | TW300292B (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10293854A (ja) * | 1997-04-18 | 1998-11-04 | Koubundou:Kk | 曲線表示方法及び装置、同曲線を表すデータの作成方法及び装置、並びに同表示方法及び作成方法を実現するためのプログラムを記録した記録媒体 |
US7239318B2 (en) * | 2001-03-23 | 2007-07-03 | Rise Kabushikikaisha | Method and computer software program product for processing characters based on outline font |
US7239319B2 (en) * | 2004-08-27 | 2007-07-03 | Microsoft Corporation | Rendering outline fonts |
US7116327B2 (en) * | 2004-08-31 | 2006-10-03 | A{grave over (g)}fa Corporation | Methods for generating control points for cubic bezier curves |
JP4866013B2 (ja) * | 2005-03-31 | 2012-02-01 | 富士通株式会社 | 文字画像生成プログラム、そのシステム、及びその方法 |
US8237710B1 (en) | 2009-08-28 | 2012-08-07 | Adobe Systems Incorporated | Methods and apparatus for fill rule evaluation over a tessellation |
US9224219B2 (en) * | 2012-12-21 | 2015-12-29 | Citrix Systems, Inc. | Systems and methods for presenting a free-form drawing |
US10347016B2 (en) * | 2016-01-12 | 2019-07-09 | Monotype Imaging Inc. | Converting font contour curves |
US10936792B2 (en) | 2017-12-21 | 2021-03-02 | Monotype Imaging Inc. | Harmonizing font contours |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5241654A (en) * | 1988-12-28 | 1993-08-31 | Kabushiki Kaisha Toshiba | Apparatus for generating an arbitrary parameter curve represented as an n-th order Bezier curve |
JPH03259296A (ja) * | 1990-03-09 | 1991-11-19 | Canon Inc | パターン発生装置 |
JPH0458378A (ja) * | 1990-06-28 | 1992-02-25 | Mitsubishi Heavy Ind Ltd | ベジエ曲線を分割して展開する方法 |
JP3189276B2 (ja) * | 1990-09-12 | 2001-07-16 | ブラザー工業株式会社 | データ変換装置 |
JP2522107B2 (ja) * | 1990-10-17 | 1996-08-07 | 株式会社精工舎 | 曲線近似方法 |
US5500927A (en) * | 1993-03-18 | 1996-03-19 | Macromedia, Inc. | System and method for simplifying a computer-generated path |
US5381521A (en) * | 1993-05-14 | 1995-01-10 | Microsoft Corporation | System and method of rendering curves |
JPH07105362A (ja) * | 1993-10-06 | 1995-04-21 | Fujitsu Ltd | 曲線の標本点発生装置 |
US5583978A (en) * | 1994-05-27 | 1996-12-10 | Bitstream Inc. | Apparatuses and methods for creating and using portable fonted texts with embedded automatically-created font descriptions |
-
1994
- 1994-10-19 JP JP25372594A patent/JP3226734B2/ja not_active Expired - Fee Related
-
1995
- 1995-10-16 US US08/543,311 patent/US5859647A/en not_active Expired - Fee Related
- 1995-10-17 TW TW084110907A patent/TW300292B/zh active
Also Published As
Publication number | Publication date |
---|---|
JPH08115419A (ja) | 1996-05-07 |
US5859647A (en) | 1999-01-12 |
TW300292B (ja) | 1997-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5386510A (en) | Method of and apparatus for converting outline data to raster data | |
JP3226734B2 (ja) | データ変換装置および方法 | |
US5852710A (en) | Apparatus and method for storing image data into memory | |
EP0357383B1 (en) | Output apparatus | |
US4953033A (en) | Image forming apparatus for forming images by use of fonts | |
EP0424885B1 (en) | Control apparatus of high speed/high quality printer | |
US5586229A (en) | Band printing method for preventing band overrun error in page printer | |
EP0481787B1 (en) | Output method and apparatus | |
US6061070A (en) | Character outputting | |
EP0385269A3 (en) | Apparatus and method for generating character pattern | |
US5235675A (en) | Printer control system for controlling printers differing from each other in dot density | |
JP2711860B2 (ja) | 出力制御方法およびその装置 | |
JPH0462080A (ja) | 画像処理装置 | |
JP3084817B2 (ja) | 文字出力装置 | |
JPH10151815A (ja) | 印刷処理装置 | |
JP2629098B2 (ja) | 文字配置補正方式 | |
JP2776347B2 (ja) | プリンタ用描画装置 | |
JP3450958B2 (ja) | 印刷装置及び印刷方法 | |
JPH06243261A (ja) | 画像処理装置 | |
JP3419450B2 (ja) | 画素データ処理装置および方法 | |
JPH03112668A (ja) | 印刷装置 | |
EP0405031A1 (en) | Printer control system for controlling printers differing from each other in dot density | |
JPH09277616A (ja) | プリンタ及びその制御方法 | |
JP3055918B2 (ja) | フォントのデータ変換処理方法 | |
JPH0691938A (ja) | 印刷制御装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
LAPS | Cancellation because of no payment of annual fees |