JP3097303B2 - 文字記号発生装置 - Google Patents

文字記号発生装置

Info

Publication number
JP3097303B2
JP3097303B2 JP04120511A JP12051192A JP3097303B2 JP 3097303 B2 JP3097303 B2 JP 3097303B2 JP 04120511 A JP04120511 A JP 04120511A JP 12051192 A JP12051192 A JP 12051192A JP 3097303 B2 JP3097303 B2 JP 3097303B2
Authority
JP
Japan
Prior art keywords
segment
data
point
curve
line
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
Application number
JP04120511A
Other languages
English (en)
Other versions
JPH05313630A (ja
Inventor
一磨 青木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Brother Industries Ltd
Original Assignee
Brother Industries Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Brother Industries Ltd filed Critical Brother Industries Ltd
Priority to JP04120511A priority Critical patent/JP3097303B2/ja
Publication of JPH05313630A publication Critical patent/JPH05313630A/ja
Application granted granted Critical
Publication of JP3097303B2 publication Critical patent/JP3097303B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、輪郭線の形状によって
定義された文字・記号の構成線の太さを変換する装置に
関するものである。
【0002】
【従来の技術】従来、任意の大きさの文字・記号を高品
位に印字でき、又、斜体・回転等の変形が容易であるた
め、直線及び曲線で構成される文字や記号等の輪郭線の
形状を、各々の直線または曲線の区別を表す情報と該直
線または曲線のデータ点の座標値とにより表現するアウ
トラインフォントを記憶し、文字・記号を出力する装置
がプリンタやディスプレイ等で実用化されている。
【0003】これらのプリンタやディスプレイで文字・
記号の線幅を変更する場合には、直線では、ベクトルデ
ータの簡単な移動処理で済むが、曲線にあっては、先ず
データをショートベクトルデータに分割し、その分割し
たショートベクトルデータに対して移動処理を行ってい
た。
【0004】又、上述した装置で用いられるアウトライ
ンフォントを作成する装置で同様に文字・記号の線幅を
変更する場合には、ショートベクトルに分割した曲線を
再び曲線式に変換して曲線のデータとしていた。
【0005】又、曲線をショートベクトルに分割せずに
線幅を変換する装置として本出願人による特願平3−1
31999号の出願で提案するものもある。
【0006】
【発明が解決しようとする課題】しかしながら、従来の
どの方法においても、線幅の変更量は全ての部分一定で
あったため、部分的に線幅の変更量を調整することはで
きなかった。
【0007】例えば、明朝体の太さを変更し、ウエイト
の異なる明朝体を発生させる場合、明朝体の特長となる
細い横線についてはあまり線幅を変更せず、その他の部
分の線幅を充分変更することが望ましい。
【0008】又、明朝体、楷書体或は行書体のように文
字の構成線の先端に筆を払ったように徐々に細くなる部
分(以後、この部分を「はらい」と称する)が存在する
書体の太さを変更し、ウエイトの異なるものを発生させ
る場合、「はらい」の部分の太さは「はらい」のある先
端に向かって徐々に線幅の変更量を減らしていくこと、
すなわち、「はらい」を持つ構成線の「はらい」の先端
の線幅はあまり変更せず、その他方の先端の線幅は充分
変更し、その中間部分は滑らかに変更量が変化すること
が望ましい。
【0009】同様に、「ウロコ」、「トメ」や「ハネ」
等の部分においても細かい調整を行うことが望ましい。
【0010】本発明は、上述した問題点を解決するため
になされたものであり、輪郭線によって形状を確定され
た文字・記号等の構成線の線幅の変更を行いウエイトの
異なる文字・記号等を発生させる際、線幅の変化量が一
定ではなく、部分的な変更量の調整を行い、高品位な文
字・記号等の形状を発生させる文字記号発生装置を提供
するものである。
【0011】
【課題を解決するための手段】この目的を達成するため
に本発明の構成は、図1の様な文字記号出力装置10で
あって、文字・記号等の太さを変更するためセグメン
トの種類を各セグメント毎に判断する判断手段11と、
前記判断手段11で判断されたセグメントの種類基づ
いて当該セグメントの構成点毎にその移動量を決定する
変更量決定手段12と、前記変更量決定手段12で決定
された各セグメントの構成点毎の移動量を各々前記各セ
グメントの構成点の座標値に加えて、文字・記号等の太
さを変更した新たな形状データを発生する変更手段13
とを備えている。
【0012】
【作用】上記の構成を有する本発明の文字記号発生装置
10の、判断手段11は文字・記号等の太さを変更する
ためセグメント種類を各セグメント毎に判断し、変更
量決定手段12は前記断手段11で判断されたセグメ
ントの種類基づいて当該セグメントの構成点毎にその
移動量を決定し、変更手段13は前記変更量決定手段1
2で決定された各セグメントの構成点毎の移動量を各々
前記各セグメントの構成点の座標値に加えて各セグメン
トを移動し、文字・記号等の太さを変更した新たな形状
データを発生する。
【0013】
【実施例】以下、本発明をレーザプリンタに適用した一
実施例を図面を参照して説明する。
【0014】本実施例のレーザプリンタは、外部からの
線幅の指定に応じて、記憶しているキャラクタの形状を
変換して、所望の線幅のキャラクタを印字可能なもので
ある。
【0015】図2はレーザプリンタの制御回路のうち、
主として文字・記号出力を行う関係部分を示すブロック
図である。この制御回路の主体を成すマイクロコンピュ
ータ部20はCPU22、キャラクタROM23、プロ
グラムROM24、テキストメモリ25、ワーキングメ
モリ26、ドットデータメモリ27を備えている。これ
らCPU22等は、バス28を介して接続されている。
更にマイクロコンピュータ部20には、バス28を介し
て入力装置29及び印字装置210が接続されている。
【0016】入力装置29は、外部から供給されるキャ
ラクタコード、線幅の指定、文字サイズの指定、斜体・
回転等の変形の指定等のデータを入力するものである。
尚、本実施例の線幅の指定は、記憶されているアウトラ
インフォントデータの線幅をどれだけ変更するかの移動
量で行い、太らせる場合は正の数、細らせる場合は負の
数で指定する。又、この移動量には移動量0〜8の種類
がある。この各々については後で明らかにする。
【0017】印字装置210は、電子写真方式によりド
ットデータメモリ27から読み出したドットマトリクス
データを印字する装置である。
【0018】プログラムROM24には本実施例で行う
様々な制御を実施するためのプログラムを記憶してい
る。
【0019】テキストメモリ25は、入力装置29から
入力されるキャラクタコード、線幅指定、文字サイズの
指定、斜体・回転等の変形の指定等のデータを記憶する
ものである。
【0020】ワーキングメモリ26は、CPU22がプ
ログラムを実行するときに必要なデータを一時的に記憶
するものである。
【0021】ドットデータメモリ27は、アウトライン
変換部65により得られるドットデータを記憶するもの
である。
【0022】キャラクタROM23は、文字・記号等の
輪郭線の形状を、直線及び3次ベジェ曲線(以下、単に
曲線と称する)の集合で定義したアウトラインフォント
データを記憶している。
【0023】本実施例のアウトラインフォントデータ
は、輪郭線の形状を定義する点のデータである複数の点
データから構成されている。この点データは、直線及び
曲線を区別する属性フラグと、その点が文字の修飾部分
である「ウロコ」を構成する点であることを示すウロコ
フラグと、座標値のデータである座標値データで構成さ
れる。
【0024】属性フラグには、キャラクタの輪郭線の1
つ(以下、閉ループと称する)の始点を示す「S」、直
線の終点を示す「L」、曲線の第1制御点を示す「B
1」、曲線の第2制御点を示す「B2」、曲線の終点を
示す「B」がある。属性フラグは1つの座標値データを
伴っている。尚、直線及び曲線の始点の座標は1つ前の
点データの座標値データである。
【0025】ウロコフラグは、0、1、2、3、4、5
の種類をもつ。本実施例のウロコは、図3の30のよう
に2つの曲線と、2つの直線で構成される。フラグ
「1」は31の点を示し、フラグ「2」は32の点を示
し、フラグ「3」は33の点を示し、フラグ「4」は3
4の点を示し、フラグ「5」は35の点を示す。又、3
6、37は直線で、38、39は曲線である。
【0026】又、データの順番は閉ループの始点から決
められた回転方向で順次記憶されている。尚、図のpn
の座標値は(xn,yn)で表わされる。本実施例では
輪郭線の外側の線を表すループ(以後、単に外ループと
称する)は反時計方向に、輪郭線の内側の線を表すルー
プ(以後、単に内ループと称する)は時計方向にそれぞ
れ決められている。
【0027】例えば図4に示す文字のアウトラインフォ
ントデータは、図5の様に記憶されている。このよう
に、外ループ41は反時計方向に、内ループ42は時計
方向にそれぞれ点データを記憶している。
【0028】以下に、本実施例のアウトラインフォント
処理について説明する。
【0029】先ず、図6にCPU22の処理の概念図を
示す。CPU22の処理は、データ読み出し部62、線
幅変換部63、データ展開部64及びアウトライン変換
部65から構成される。
【0030】データ読み出し部62は、テキストメモリ
25からキャラクタコードを1つ読み出し、そのキャラ
クタコードに応じたキャラクタのアウトラインフォント
データをキャラクタROM23の所定の領域からバス2
8を介して読み、ワーキングメモリ26内の図示しない
アウトラインデータバッファへ格納し、又、線幅の指
定、文字サイズ、斜体・回転変換の指定が変更されたと
き、ワーキングメモリ26内の図示しないパラメータメ
モリの各パラメータを変更するものである。
【0031】線幅変換部63は、データ読み出し部62
で読み出したキャラクタの線幅をパラメータメモリの線
幅の指定に応じて変更する処理を行い、その結果のアウ
トラインフォントデータをアウトラインデータバッファ
に行うものである。ここでの処理の詳細は後で説明す
る。
【0032】データ展開部64は、線幅変更部63で処
理を加えたアウトラインフォントデータをアウトライン
データバッファから読み出し、パラメータメモリの文字
サイズ、斜体・回転等の指示に応じた変形を加え、直線
と曲線のデータをショートベクトルのデータに変換する
ものである。
【0033】アウトライン変換部65は、データ展開部
64で変換したショートベクトル化されたアウトライン
フォントデータの内部にドットを置くことでドットデー
タに変換し、ドットデータメモリ27に格納するもので
ある。
【0034】尚、データ読み出し部62、データ展開部
64及びアウトライン変換部65の処理は既に様々な方
法で実用化されている公知の技術であり、又、本発明の
主たる部分ではないため詳細な説明は省略する。
【0035】以下に本発明の適用部分である線幅変換部
63について詳細に説明する。図7に、この線幅変換部
63の処理のフローチャートを示す。
【0036】S71は、アウトラインバッファのデータ
から直線或は曲線単位のデータであるセグメントデータ
を生成する。
【0037】セグメントデータはセグメント種、エレメ
ント種、座標値データ、結合情報、移動方法及び移動量
から構成される。
【0038】セグメント種は、直線、曲線の区別を示す
情報である。
【0039】エレメント種は、そのセグメントが文字の
どの部分かを表す情報である。エレメントとして、本実
施例では、ウロコの情報をもつ。ウロコの情報には、U
1、U2、U3、U4の種類がある。U1は、図3のセ
グメント36を示し、U2はセグメント37を示し、U
3はセグメント38を示し、U4はセグメント39を示
す。
【0040】座標値データは、直線セグメントの場合、
始点及び終点の座標値で構成され、曲線セグメントの場
合、始点、第1制御点、第2制御点及び終点の座標値で
構成される。尚、このデータの始点から終点への方向
は、このセグメントの方向とする。このセグメントの方
向は、キャラクタROM23内に格納されていた状態の
ものと一致している。
【0041】セグメントの結合情報は、セグメントとそ
の次に結合するセグメントとの結合状態を連続か不連続
かで示すものである。すなわち、その終点の結合状態を
示す情報である。この結合状態の判定の仕方は、そのセ
グメントの終点(=次のセグメントの始点)の前後の点
データの座標値を結んだ直線とそのセグメントの終点の
距離が、あるしきい値以下の場合は連続とし、その他の
場合は不連続とする。ここでのしきい値は0.6として
ある。尚、前後の点データの前の点データとは、そのセ
グメントが直線であれば、その直線の始点であり、曲線
であれば、その曲線の第2制御点である。又、後の点デ
ータとは、次のセグメントが直線であれば、その直線の
終点であり、曲線であれば、その曲線の第1制御点であ
る。
【0042】移動方法は、S72の処理で得られるこの
セグメントの移動方法を示す情報である。
【0043】移動量は、S73の処理で得られるこのセ
グメントの始点、終点の移動量を示す情報である。
【0044】尚、この処理は、本実施例のキャラクタR
OM23に格納された状態はデータ圧縮を考慮した形
式、すなわち、各セグメントの結合部分(始点と終点)
を共有する形で格納されており、以降の処理では扱いに
くいため行う処理である。よって、ここで、各セグメン
ト単位で、その始点から終点まで全ての座標値が明確に
なるデータ形式に変更する。
【0045】この図4の文字のアウトラインフォントデ
ータをここでセグメントデータの形式に変更すると図8
の様になる。
【0046】S72は、各セグメントの移動方法を決定
し、セグメントデータの移動方法に格納する処理であ
る。本実施例の移動方法には表1の種類がある。尚、こ
の処理の詳細は後で説明する。
【0047】
【表1】
【0048】S73は、各セグメントの始点と終点の移
動量をS72セグメントデータの移動方法に従って決定
し、セグメントデータの移動量に格納する処理である。
尚、この処理の詳細も後で説明する。
【0049】S74は、各セグメントをセグメントデー
タの移動量に従って移動する処理である。尚、この処理
の詳細も後で説明する。
【0050】S75は、S72〜74の処理結果をワー
キングメモリ26内の図示しないアウトラインデータバ
ッファに、セグメントデータからキャラクタROM23
内の形式に変換して格納する処理である。
【0051】以上の処理で線幅変換部63の処理は実現
できる。
【0052】次に、前述した移動方法決定処理S72、
移動量決定処理S73及び移動処理S74を順に説明す
る。
【0053】先ず、移動方法決定処理S72を説明す
る。この処理は表1に示した「細い水平線」、「ウロ
コ」の各部、「先細り線」及び「その他」の部分の認識
を行い、セグメントデータの移動方法に表に示した情報
を格納する処理である。
【0054】「細い水平線」の認識及び処理について説
明する。1文字分の全てのセグメントデータから任意の
2つの直線セグメントを調べ、以下の条件をすべて満た
すとき、この2つのセグメントは「細い水平線」を構成
するセグメントとして、そのセグメントデータの移動方
法に情報「H」を格納する。
【0055】条件1)2つのセグメントの長さが共に、
しきい値1以上である。
【0056】条件2)2つのセグメントのうち、下側に
あるセグメントが右向きセグメントであり、且つ、上側
にあるセグメントが左向きセグメントである。
【0057】条件3)2つのセグメントの距離が、しき
い値2以上であり、且つ、しきい値3以下である。
【0058】条件4)2つのセグメントのx方向の範囲
に重なり合う部分がある。
【0059】ここで、しきい値1、しきい値2及びしき
い値3は適当な値である。本実施例では、キャラクタR
OM23内のアウトラインフォントデータは1000×
1000程度の座標系で格納されているため、しきい値
1は5、しきい値2は10、しきい値3は45に設定さ
れている。
【0060】「ウロコ」の認識及び処理について説明す
る。「ウロコ」の情報は各セグメントデータのエレメン
ト種に格納されているフラグから、図3の36〜39の
部分を認識し、その情報を移動方法に情報「U1」〜
「U4」を格納する。
【0061】「先細り線」の認識及び処理について説明
する。1文字分の全てのセグメントデータから任意の2
つのセグメントを調べ、以下の条件1〜5をすべて満た
し、更に条件6〜7の全て、或は条件8〜9の全てを満
たすとき、この2つのセグメントは「先細り線」を構成
するセグメントとする。尚、この「先細り線」は図9に
示す90、91のような2種類のものがある。これらを
各々認識し、セグメントPの様にセグメントの終点にか
けて細くなるもの、すなわち移動量がセグメントの終点
にかけて移動量の減少するものに情報「Sd」を、又、
セグメントQの様にセグメントの終点にかけて太くなる
もの、すなわちセグメントの終点にかけて移動量の増加
するものに情報「Si」を設定する。又、90の様な種
類のものの先端部分の直線92には「St」を設定す
る。
【0062】条件1)2つのセグメントが共に垂直線或
は水平線ではない。
【0063】条件2)2つのセグメントが互いに結合し
ていない。
【0064】条件3)線の先端の距離がしきい値4以下
である。線の先端の距離とは点P1と点Q0の距離であ
る。
【0065】条件4)線の根元の距離が先端の距離より
大きい。線の根元の距離とは点P0と点P0からセグメ
ントQに下ろした垂線の足との距離と、点Q1と点Q1
からセグメントPに下ろした垂線の足との距離の小さい
方である。
【0066】条件5)2つのセグメントの主方向のなす
角がしきい値5以下である。主方向とはセグメントの始
点から終点への結んだ直線ベクトルのことである。
【0067】条件6)P1及びQ0が共に凸コーナであ
る。
【0068】条件7)P1及びQ0の間に直線を1つ挟
む。
【0069】条件8)P1及びQ0が共に凹コーナであ
る。
【0070】条件9)P1及びQ0の間に2つ以上のセ
グメントを挟む。
【0071】ここでのしきい値4は40に、しきい値5
は45度に設定してある。
【0072】尚、条件6〜7は90の様な「先細り線」
を認識する条件であり、条件7〜8は91の様な「先細
り線」を認識する条件である。
【0073】又、凸コーナとは、外側に突出しているコ
ーナであり、本実施例では左折するコーナを凸コーナと
して認識している。凹コーナとは、内側にくぼんでいる
コーナであり、本実施例では右折するコーナを凹コーナ
として認識している。
【0074】以上の「細い垂直線」「ウロコ」「先細り
線」のどれにも当てはまらなかったものを「その他」と
して、セグメントデータの移動方法に情報「O」格納す
る。
【0075】次に移動量決定処理S73について説明す
る。
【0076】この処理は、S72で得られたセグメント
データの移動方法に従って、各セグメントの始点と終点
の移動量を決定するものである。
【0077】移動方法が「細い垂直線」の場合は、外部
から与えられた移動量1の値を始点、終点ともに格納す
る。
【0078】移動方法が「ウロコ」の各部の場合は、外
部から与えられた移動量2〜5の値を用いて表2のよう
に決定する。
【0079】
【表2】
【0080】移動方法が「先細り線」の場合は、「S
t」の移動量には移動量6を設定する。「Si」及び
「Sd」の移動量の決定方法を、図10のフローチャー
トに従って説明する。
【0081】S101は「Si」及び「Sd」側共にグ
ループを認識する。ここでのグループは「先細り線」と
認識されたセグメントに連続に結合するセグメントのこ
とであり、「先細り線」として移動されるセグメントの
集合のことである。
【0082】ここでは移動方法に情報「Si」が付され
たセグメント、すなわち、図9のQはそれより後に結合
するセグメントを連続に結合する限り集めてグループと
する。同様に情報「Sd」が付されたセグメント、すな
わち、図9のPはそれより前に結合するセグメントを連
続に結合する限り集めてグループとする。
【0083】例えば、図4の文字の場合、情報「Sd」
が付されるセグメントは41であり、情報「Si」が付
されるセグメントは42である。この「Sd」側のグル
ープは42と44となり、「Si」側のグループは4
3、45、46及び47となる。
【0084】S102はグループの始点と終点の移動量
を求める。この移動量は、移動量の大きい方を移動量7
に、小さい方を移動量8に設定する。すなわち、「S
i」の場合は、始点の移動量には移動量8を終点の移動
量には移動量7を各々設定し、「Sd」の場合は、始点
の移動量には移動量7を終点の移動量には移動量8を各
々設定する。
【0085】S103はグループに属する各セグメント
の始点と終点の移動量を計算して各セグメントデータの
移動量を設定する。各グループに属するセグメントの移
動量は、そのグループの始点から終点までの軌跡の長さ
をdとし、移動量を求めようとする点のそのグループの
始点からの軌跡の長さをd’とすると、その始点或は終
点の移動量はdに対するd’の比で配分される。すなわ
ち、グループの始点の移動量をwsとし、グループの終
点の移動量をweとすると、求めたい移動量wは、w=
ws+(we−ws)×d’/dで計算できる。この結
果をセグメントデータの移動量の情報として格納する。
【0086】以上で「先細り線」の移動量が決定でき
る。
【0087】移動方法が「その他」の場合で、上述した
処理で移動量が決定されていないセグメントの移動量に
は移動量0を設定する。
【0088】この移動量0が12、移動量1が0、移動
量2が5、移動量3が5、移動量4が4、移動量5が
3、移動量6が1、移動量7が12、移動量8が2と入
力されているとき、図4の文字に移動量決定手段S73
を施した結果のセグメントデータを図11に示す。
【0089】先ず、移動処理74の処理全体の流れにつ
いて図12のフローチャートを用いて説明する。
【0090】S122は、セグメントデータ移動処理で
ある。すなわち、S122で得られた各セグメントを、
パラメータメモリ内の線幅の指定に応じて法線方向に内
側或は外側に移動する処理である。この処理については
後で詳細に説明する。
【0091】S123は、セグメントデータ結合処理で
ある。すなわち、S122でセグメントの移動を行う
と、移動前のセグメントデータが不連続に結合していた
部分は、接合すべきセグメントの始点、終点がずれてし
まうため、ここで結合処理を行う。この処理についても
後で詳細に説明する。
【0092】S124はこの処理の結果を適切にデータ
変換し、アウトラインデータバッファに格納する処理で
ある。
【0093】以上の処理で、移動処理74の処理は実現
できる。
【0094】次にこの移動処理74のセグメントデータ
移動処理S122及びセグメントデータ結合処理S12
3について詳細に説明する。
【0095】先ず、セグメントデータ移動処理S122
について図13のフローチャートを用いて説明する。
尚、ここでは1セグメントの移動処理について説明する
が、この処理をそのキャラクタのセグメント数だけ繰り
返すことによって、全てのセグメントの移動処理が実現
できる。
【0096】S131は、始点の移動を行う。始点の移
動は始点におけるそのセグメントの接線に対する法線方
向に行われる。又、セグメントの方向が、外ループは反
時計方向、内ループは時計方向に定められているので、
このセグメントの方向に対して右向きが正の方向、すな
わち、線幅が太くなる方向となり、左向きが負の方向、
すなわち、線幅が細くなる方向となる。従って、移動前
のセグメントの始点の座標値を(x0,y0)とし、セ
グメントの始点からの右方向の単位法線ベクトルの終点
を(x1,y1)とし、変更する線幅をwとすると、移
動後のセグメントの始点(x,y)は、(x,y)=
(x1−x0,y1−y0)×w+(x0,y0)、で
算出できる。
【0097】S132は、終点の移動を行う。終点の移
動は、始点と同様に、終点におけるそのセグメントの接
線に対する法線方向に行われ、セグメントの方向に対し
て右側を正の方向として行われる。算出方法はS131
と同様である。
【0098】S133は、このセグメントデータが直線
であるか否かを判定する。すなわち、セグメントデータ
内の属性フラグを参照して直線セグメントであれば、Y
ESとなり、S135を行わずに処理を終了する。又、
曲線セグメントであれば、NOとなり、S135を行
う。
【0099】S135は、曲線、すなわち、3次ベジェ
曲線の制御点の位置を決定している。この処理は、3次
ベジェ曲線の曲線の具合いをできるだけ保存したまま移
動を行うため、移動前の3次ベジェ曲線の始点、第1制
御点、第2制御点及び終点を結んでできる台形が相似形
になるようにこの第1制御点と第2制御点の位置を決定
する。図14に3次ベジェ曲線の移動を説明する図を示
す。セグメント140は、移動前の曲線セグメントで始
点141、第1制御点142、第2制御点143及び終
点144で定義されている。セグメント141は、移動
後の曲線セグメントで始点146、第1制御点147、
第2制御点148及び終点149で定義される。又、図
中のb0とb1は、移動前と移動後の始点終点の距離で
あり、l0とl1は、移動前と移動後の始点第1制御点
の距離であり、m0とm1は、移動前と移動後の終点と
第2制御点の距離である。α0とα1は移動前と移動後
の始点、終点を結んだ直線と始点、第1制御点を結んだ
直線のなす角であり、β0とβ1は移動前と移動後の始
点、終点を結んだ直線と終点、第2制御点を結んだ直線
のなす角である。このとき、移動後の第1制御点147
の位置及び第2制御点148の位置は、 ・b0:b1=l0:l1=m0:m1 ・α0=α1 ・β0=β1 となるように定める。尚、図中のベクトル1410及び
1411はこのセグメントの移動方向であり、wは移動
量である。
【0100】以上のようにセグメントデータ移動処理S
122が実現できる。
【0101】次に、セグメントデータ結合処理S123
について図15のフローチャートを用いて説明する。こ
こで、S0は1つのセグメントデータを指し、S1はS
0の次のセグメントデータを示す。尚、ここには、1つ
のセグメント終点側の結合についてのみ説明するが、こ
の処理をキャラクタを構成するセグメントの全てについ
て繰り返すことで、1キャラクタ分の処理を実現でき
る。
【0102】S151は、S0のセグメントデータを読
み込む。
【0103】S152は、S0の結合情報が連続である
か否かについて判定する。ここで、連続であると判定さ
れた場合、処理を終了する。
【0104】S153は、S1のセグメントデータを読
み込む。
【0105】S154は、S0、S1の属性フラグを参
照して、S0が直線セグメントであり、かつ、S1が直
線セグメントであるか否かを判定する。ここで、YES
と判定された場合は、S155で直線直線結合処理を行
う。この詳細は後で説明する。NOと判定された場合
は、S156以降を実行する。
【0106】S156は、S0、S1の属性フラグを参
照して、S0が直線セグメントであり、かつ、S1が曲
線セグメントであるか否かを判定する。ここで、YES
と判定された場合は、S157で直線曲線結合処理を行
う。この詳細は後で説明する。NOと判定された場合
は、S158以降を実行する。
【0107】S157は、S0、S1の属性フラグを参
照して、S0が曲線セグメントであり、かつ、S1が直
線セグメントであるか否かを判定する。ここで、YES
と判定された場合は、S159で曲線直線結合処理を行
う。この詳細は後で説明する。NOと判定された場合、
すなわち、S0が曲線セグメントであり、かつ、S1が
曲線セグメントである場合は、S1510を実行する。
【0108】S1510は、曲線曲線結合処理を行う。
この詳細は後で説明する。
【0109】以上の処理でセグメントデータ結合処理S
133は実現できる。
【0110】以下にこのセグメントデータ結合処理S1
23の直線直線結合処理S145、直線曲線結合処理S
157、曲線直線結合処理S159及び曲線曲線結合処
理S1510について詳細に説明する。
【0111】先ず、直線直線結合処理S155について
説明する。
【0112】この処理はS0の終点及びS1の始点を、
S0の直線セグメントの延長上の直線とS1の直線セグ
メントの延長上の直線の交点に変更する処理である。こ
の交点の算出は、数学的に行うものであるので詳細は省
略する。
【0113】次に、直線曲線結合処理S157について
図16のフローチャートを用いて説明する。
【0114】S161は、S0とS1の交点を算出す
る。すなわち、S0の直線セグメントの延長上の直線と
S1の曲線との交点を算出する。この交点の算出は、数
学的に行うものであるので詳細は省略する。
【0115】S162は、S161で交点があったか否
かを判定する。交点がなければ、S166以降を実行
し、交点があれば、S163以降を実行する。
【0116】以下に、S161で交点があった場合の処
理について説明する。
【0117】S163は、求められた交点の内、S0の
終点に最も近いものを選択する。
【0118】S164は、S163で選択した交点の位
置で、S1の曲線を切断する。この曲線の切断方法は、
後で詳細に説明する。
【0119】S165は、S0、S1に更新したデータ
を代入する。すなわち、S0の終点、S1の始点の座標
値データをS163で選択した交点の座標値に、S1の
第1制御点及び第2制御点の座標値データをS164で
切断した曲線の内、S1の終点の座標値を含む方の曲線
の第1制御点及び第2制御点の座標値を代入する。
【0120】以下に、S161で交点がなかった場合の
処理について説明する。
【0121】S156は、S0の延長線上の直線とS1
の始点における接線との交点を算出する。S1の始点に
おける接線は、3次ベジェ曲線の場合、始点と第1制御
点を通る直線である。この交点の算出は、数学的に行う
ものであるので詳細は省略する。
【0122】S157は、S0、S1に更新データを代
入する。すなわち、S0の終点及びS1の始点の座標値
データにS156で算出した交点の座標値を代入する。
【0123】次に、曲線直線結合処理S159について
図17のフローチャートを用いて説明する。
【0124】S171は、S0とS1の交点を算出す
る。すなわち、S1の直線セグメントの延長上の直線と
S0の曲線との交点を算出する。この交点の算出は、数
学的に行うものであるので詳細は省略する。
【0125】S172は、S171で交点があったか否
かを判定する。交点がなければ、S176以降を実行
し、交点があれば、S173以降を実行する。
【0126】以下に、S171で交点があった場合の処
理について説明する。
【0127】S173は、求められた交点の内、S0の
終点に最も近いものを選択する。
【0128】S174は、S173で選択した交点の位
置で、S0の曲線を切断する。この曲線の切断方法は、
後で詳細に説明する。
【0129】S175は、S0、S1に更新したデータ
を代入する。すなわち、S0の終点、S1の始点の座標
値データをS173で選択した交点の座標値に、S0の
第1制御点及び第2制御点の座標値データをS174で
切断した曲線の内、S0の始点の座標値を含む方の曲線
の第1制御点及び第2制御点の座標値を代入する。
【0130】以下に、S171で交点がなかった場合の
処理について説明する。
【0131】S176は、S1の延長線上の直線とS0
の終点における接線との交点を算出する。S0の終点に
おける接線は、3次ベジェ曲線の場合、終点と第2制御
点を通る直線である。この交点の算出は、数学的に行う
ものであるので詳細は省略する。
【0132】S177は、S0、S1に更新データを代
入する。すなわち、S0の終点及びS1の始点の座標値
データにS176で算出した交点の座標値を代入する。
【0133】次に、曲線曲線結合処理S1510につい
て図18のフローチャートを用いて説明する。
【0134】S181は、S0とS1の交点を算出す
る。すなわち、S0の曲線セグメントとS1の曲線セグ
メントとの交点を算出する。この交点の算出は、数学的
に行うものであるので詳細は省略する。
【0135】S182は、S181で交点があったか否
かを判定する。交点がなければ、S187以降を実行
し、交点があれば、S183以降を実行する。
【0136】以下に、S181で交点があった場合の処
理について説明する。
【0137】S183は、求められた交点の内、S0の
終点に最も近いものを選択する。
【0138】S184は、S183で選択した交点の位
置で、S0の曲線を切断する。この曲線の切断方法は、
後で詳細に説明する。
【0139】S185は、S183で選択した交点の位
置で、S1の曲線を切断する。この曲線の切断方法は、
後で詳細に説明する。
【0140】S186は、S0、S1に更新したデータ
を代入する。すなわち、S0の終点、S1の始点の座標
値データをS183で選択した交点の座標値に、S0の
第1制御点及び第2制御点の座標値データをS184で
切断した曲線の内、S1の始点の座標値を含む方の曲線
の第1制御点及び第2制御点の座標値を代入し、S1の
第1制御点及び第2制御点の座標値データをS185で
切断した曲線の内、S1の終点の座標値を含む方の曲線
の第1制御点及び第2制御点の座標値を代入する。
【0141】以下に、S181で交点がなかった場合の
処理について説明する。
【0142】S187は、S0の終点における接線とS
1の始点における接線との交点を算出する。S0の終点
に置ける接線は、3次ベジェ曲線の場合、終点と第2制
御点を通る直線であり、S1の始点における接線は、3
次ベジェ曲線の場合、始点と第1制御点を通る直線であ
る。この交点の算出は、数学的に行うものであるので詳
細は省略する。
【0143】S188は、S0、S1に更新データを代
入する。すなわち、S0の終点及びS1の始点の座標値
データにS187で算出した交点の座標値を代入する。
【0144】以上の処理で、各種結合処理を実現でき
る。
【0145】次に、上述した各種結合処理の曲線セグメ
ントの切断処理について図19を用いて説明する。
【0146】3次ベジェ曲線P1P2P3P4をパラメ
ータtにおいてa1a2a3a4とb1b2b3b4に
切断するものとする。図19の様にP1P2、P2P
3、P3P4をt:(1−t)に内分した点を各々Q1
Q2Q3とすると、 Q1=(1−t)×P1+t×P2 Q2=(1−t)×P2+t×P3 Q3=(1−t)×P3+t×P4 で表せる。Q1Q2Q3を同じくt:(1−t)に内分
した点をR1R2とすると、 R1=(1−t)×Q1+t×Q2 R2=(1−t)×Q2+t×Q3 であり、R1R2をt:(1−t)に内分した点Rは R=(1−t)×R1+t×R2 となる。これは、パラメータtにおける曲線上の点とな
る。切断した2つの曲線の始点、終点及び制御点は、 a1=P1 a2=Q1 a3=R1 a4=R b1=R b2=R2 b3=Q3 b4=P4 となる。従って、曲線の切断点の3次ベジェ曲線のパラ
メータtを求めて、上述した演算を行えば、曲線の切断
は実現できる。
【0147】本実施例では本発明をレーザプリンタに適
用した例を示したが、これに限らず他の方式のプリンタ
はもちろん、ディスプレイ等の他の出力装置にも適用可
能である。
【0148】又、本実施例では、線幅の変更量の調整を
行う対象として「細い水平線」、「ウロコ」、「先細り
線」を用いたがこれに限らずその他の部分に適用するこ
ともできる。
【0149】又、本実施例では、「ウロコ」の識別デー
タをキャラクタROM23内に持ったが、この部分を認
識する手段を持ち、移動方法決定処理を行ってもよい。
【0150】又、本実施例では、「先細り線」を移動方
法決定処理で認識を行ったが、この部分の識別データを
キャラクタROM23内に設けてもよい。
【0151】又、本実施例では、各セグメントの移動量
を移動量決定処理で算出していたが、この移動量を指示
するようなデータをキャラクタROM23内に持ち、こ
れを読み出すことによって、移動量方法を決定し、それ
にそれに従って移動量を決定する様な処理に変更しても
よい。
【0152】又、本実施例では、セグメントデータの結
合情報をアウトラインフォントデータ中に持たない例で
示したが、結合情報をアウトラインフォントデータ中に
持ってもよい。
【0153】又、本実施例では曲線の表現に3次ベジェ
曲線を用いたが、2次ベジェ曲線、スプライン、円弧等
の他の曲線にも適用できる。
【0154】又、本発明に外部記憶装置を付加して、新
たな文字・記号等のデータ作成装置としても利用でき
る。
【0155】その他、本発明の趣旨を逸脱しない範囲で
種々の応用が可能である。
【0156】
【発明の効果】以上説明したことから明かなように、本
発明の文字記号発生装置によれば、輪郭線によって形状
を確定された文字・記号等の構成線の線幅の変更を行い
ウエイトの異なる文字・記号等を発生させる際、線幅の
変化量が一定ではなく、部分的な変更量の調整を行い、
高品位な文字・記号等の形状を発生させる文字記号発生
装置を提供できる。
【図面の簡単な説明】
【図1】本発明の構成を示す図である。
【図2】本実施例のマイクロコンピュータ部のブロック
図である。
【図3】本実施例の「ウロコ」の形状を示す図である。
【図4】本実施例の文字の輪郭線を示す図である。
【図5】本実施例の文字のアウトラインフォントデータ
の概念図である。
【図6】本実施例のCPUの処理の概念図である。
【図7】本実施例の線幅変換部の処理を示すフローチャ
ートである。
【図8】本実施例のセグメントデータを示す図である。
【図9】本実施例の「先細り線」の例を示す図である。
【図10】本実施例の「先細り線」の移動量決定処理の
フローチャートである。
【図11】本実施例の移動方法決定処理及び移動量決定
処理を行った後のセグメントデータの例を示す図であ
る。
【図12】本実施例の移動処理のフローチャートであ
る。
【図13】本実施例のセグメントデータ移動処理のフロ
ーチャートである。
【図14】本実施例の曲線の移動処理を説明する図であ
る。
【図15】本実施例のセグメントデータ結合処理のフロ
ーチャートである。
【図16】本実施例の直線曲線結合処理のフローチャー
トである。
【図17】本実施例の曲線直線結合処理のフローチャー
トである。
【図18】本実施例の曲線曲線結合処理のフローチャー
トである。
【図19】本実施例の3次ベジェ曲線の切断処理を説明
する図である。
【符号の説明】
11 変更方法決定手段 12 変更量決定手段 13 変更手段
───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G09G 5/24

Claims (1)

    (57)【特許請求の範囲】
  1. 【請求項1】 文字・記号等の輪郭線の形状を直線及び
    曲線を表すセグメントの集合で定義した形状データを記
    憶し、文字・記号等の太さを変換するために、この形状
    データを構成する各セグメントを移動して文字・記号等
    の新たな形状を発生する装置において、 文字・記号等の太さを変更するためセグメントの種類
    を各セグメント毎に判断する判断手段と、 前記判断手段で判断されたセグメントの種類基づいて
    当該セグメントの構成点毎にその移動量を決定する変更
    量決定手段と、 前記変更量決定手段で決定された各セグメントの構成点
    毎の移動量を各々前記各セグメントの構成点の座標値に
    加えて各セグメントを移動し、文字・記号等の太さを変
    更した新たな形状データを発生する変更手段とを備えた
    ことを特徴とする文字記号発生装置。
JP04120511A 1992-05-13 1992-05-13 文字記号発生装置 Expired - Fee Related JP3097303B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP04120511A JP3097303B2 (ja) 1992-05-13 1992-05-13 文字記号発生装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP04120511A JP3097303B2 (ja) 1992-05-13 1992-05-13 文字記号発生装置

Publications (2)

Publication Number Publication Date
JPH05313630A JPH05313630A (ja) 1993-11-26
JP3097303B2 true JP3097303B2 (ja) 2000-10-10

Family

ID=14788029

Family Applications (1)

Application Number Title Priority Date Filing Date
JP04120511A Expired - Fee Related JP3097303B2 (ja) 1992-05-13 1992-05-13 文字記号発生装置

Country Status (1)

Country Link
JP (1) JP3097303B2 (ja)

Also Published As

Publication number Publication date
JPH05313630A (ja) 1993-11-26

Similar Documents

Publication Publication Date Title
US5959635A (en) Character pattern generator
US5640589A (en) Method and device for generating graphic data using a writing motion model
JP3238580B2 (ja) 太め細め文字生成装置
JP4085183B2 (ja) 遺伝的アルゴリズムによるフォント生成システム
JP3097303B2 (ja) 文字記号発生装置
EP0357389B1 (en) Output device
JP3055187B2 (ja) 輪郭線データ処理装置
JPH05232926A (ja) 文字記号発生装置
JP3344538B2 (ja) 文字生成装置
JPH02280195A (ja) 文字処理装置および方法
JP3082467B2 (ja) アウトラインデータ処理装置
JP3089795B2 (ja) 文字記号発生装置
JP2697328B2 (ja) 輪郭線データ処理装置
JP2881884B2 (ja) 文書作成装置
JPH0493992A (ja) 文字・図形描画装置
JP2647510B2 (ja) 文字処理装置及び方法
JP2856704B2 (ja) 文字発生装置
JP3120542B2 (ja) 文字記号発生装置
JPH07205481A (ja) アウトラインフォントデータ発生装置
JPH0691938A (ja) 印刷制御装置
JP3082236B2 (ja) キャラクタ描画装置
JP3457336B2 (ja) アウトラインデータ処理装置
JPH05188911A (ja) アウトラインフォント発生装置
JP2861201B2 (ja) データ変換装置
JP3018426B2 (ja) 文字・図形描画装置

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20000711

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080811

Year of fee payment: 8

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090811

Year of fee payment: 9

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100811

Year of fee payment: 10

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110811

Year of fee payment: 11

LAPS Cancellation because of no payment of annual fees