JPH07319444A - アウトライン文字描画方法 - Google Patents
アウトライン文字描画方法Info
- Publication number
- JPH07319444A JPH07319444A JP6136498A JP13649894A JPH07319444A JP H07319444 A JPH07319444 A JP H07319444A JP 6136498 A JP6136498 A JP 6136498A JP 13649894 A JP13649894 A JP 13649894A JP H07319444 A JPH07319444 A JP H07319444A
- Authority
- JP
- Japan
- Prior art keywords
- line
- character
- contour line
- contour
- polygon
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims description 29
- 230000003247 decreasing effect Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000008602 contraction Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 239000003973 paint Substances 0.000 description 1
- 238000010422 painting Methods 0.000 description 1
Landscapes
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
- Image Analysis (AREA)
Abstract
実現する。 【構成】 予め文字の輪郭線により囲まれた図形を複数
のポリゴンに分割する。このとき、文字の内部を横切る
ような分割線分11−1〜11−3が必要となる。この
分割線分にはポリゴン生成の際に、分割線分である旨を
表示する識別情報を付与しておく。この情報は文字塗り
つぶしの際は無視されるが、文字の輪郭を印刷したり表
示する場合に利用され、識別情報が付与された線分の表
示が抑制される。従って、分割線分を含むポリゴンデー
タ14により構成されたフォントデータを使用した場合
に、その輪郭表示の際、分割線分の表示が自動的に抑制
される。
Description
ページプリンタに表示され出力される文字等をアウトラ
インフォントを用いて描画する場合のアウトライン文字
描画方法に関する。
アウトライン即ち輪郭線によって表現する。これは、同
一のフォントデータを用いて文字を拡大、縮小、回転し
て表示出力できる特徴を持つ。このため、アウトライン
フォントはディスプレイやプリンタに広く採用されてい
る。このようなアウトラインフォントの描画を行う場合
には、文字等の輪郭形状を規定する頂点座標を表示画面
上に座標変換した後に、輪郭線で囲まれた領域を一定の
塗りつぶしパタンで塗りつぶす。輪郭線で囲まれた領域
を高速に塗りつぶすための技術は、例えば特願平4−2
05988号に記載されている。
な従来のアウトライン文字描画方法には次のような解決
すべき課題があった。既に紹介した従来のアウトライン
フォントの高速塗りつぶし方法では、文字の内部領域を
複数の多角形(ポリゴン)に分割し、ポリゴン毎に塗り
つぶしを実行する。従って、予めフォントデータはこの
ようなポリゴン毎の輪郭線の連鎖構造として加工されて
いる。ところが、このようなデータをそのまま使用する
と、文字の輪郭のみを印刷したり表示しようとすると、
全てのポリゴンの輪郭線が表示され、実際には便宜上の
分割線であって、文字を構成しない分割線も表示されて
しまう。
するため、次の構成を採用する。即ち、この方法では、
まず文字の輪郭線を複数の線分に分割し、輪郭線を、各
線分の頂点座標の環状連鎖構造として表現してポリゴン
データを得る場合に、予め設定された基準座標軸につい
て見た輪郭線上の任意の点の位置座標が、極大または極
小となるような輪郭線に囲まれた図形の凹頂点を抽出す
る。次に、前記凹頂点を通る基準座標軸に平行な線分に
より、輪郭線により囲まれた図形を複数のポリゴンに分
割し、凹頂点を通る基準座標軸に平行な線分に分割線分
である旨を表示する識別情報を付与する。その後、文字
を構成する全てのポリゴンについて、分割線分を含まな
い輪郭線を描画する。
塗りつぶしを実現するために、予め文字の輪郭線により
囲まれた図形を複数のポリゴンに分割する。このとき、
文字の内部を横切るような分割線分が必要となる。この
分割線分にはポリゴン生成の際に、分割線分である旨を
表示する識別情報を付与しておく。この情報は文字塗り
つぶしの際は無視されるが、文字の輪郭を印刷したり表
示する場合に利用され、識別情報が付与された線分の表
示が抑制される。従って、分割線分を含むポリゴンデー
タにより構成されたフォントデータを使用した場合に、
その輪郭表示の際、分割線分の表示が自動的に抑制され
る。
明する。図1は、本発明のアウトライン文字描画方法を
示す説明図である。この図は、「W]の文字の形状が1
3個の頂点V1〜V13から成る多角形で表現され、こ
の多角形がy軸に平行な3本の分割線分11−1〜11
−3によって4つの単純な形のポリゴン(多角形と同
義)に分割され、分割された4つのポリゴンP1,P
2,P3,P4を順番に塗りつぶせばよいことを示して
いる。
いるが、分割線分11−1〜11−3のところでx方向
に引き離して描いてある。分割線分11−1は輪郭線上
のy座標が極大または極小となる凹頂点12(ここでは
文字Wの頂点V6)を起点としている。これらのポリゴ
ンはポインタによって関係付けられたポリゴンリスト1
3及びポリゴンデータ14によってひとまとまりのデー
タとされる。分割された各ポリゴンの形状は、y座標の
極小点と極大点が1個ずつしかなく、任意の水平線と2
個以下の交点を持つ形状であるため、単純な処理手順で
塗りつぶしができる。即ち、多角形の塗りつぶしは、x
軸に平行な走査線と多角形の左右稜線との2個の交点を
求め、その線分上の画素を塗りつぶすことを多角形の極
小頂点から極大頂点に至る全ての走査線について実行す
る。
フォントをポリゴン分割して左右稜線データを得て、中
間フォントデータとして記憶装置に格納し、その後表示
面上に文字描画を行う。
たものの原型であるアウトライン文字の例説明図であ
る。また、図3及び図4は本発明によるポリゴン分割フ
ローチャートである。以下、図2の文字「W]を具体的
にポリゴン分割する処理を用いて説明する。まず、図3
ステップS1で1文字分のアウトラインフォントデータ
を読み込む。アウトラインは1個以上の外部輪郭線から
成るものとし、最初は穴を囲む内部輪郭線が存在しない
場合を考える。
を頂点の環状連鎖構造として表現したポリゴンデータを
作成する。この例では、外部輪郭線が1個しかなく、そ
のポリゴンデータは、図2の14個の頂点v1〜v13
をv1から始め、反時計回りに閉ループを形成したもの
となっている。頂点データは、それぞれ次の頂点へのポ
インタ、x座標、y座標、その他の情報を含む記憶ブロ
ックから成る。
割を行うが、これは図4に示すようなポリゴン再帰分割
処理を実行することである。図4のステップS8の頂点
の分類では、始点v1から反時計回りに進んでx座標と
y座標の増減を調べ、y座標について極大及び極小点を
検出し、更に各頂点の凹凸を判別する。
各頂点v1〜v13について、そのx座標とy座標を示
し、dx,dyは頂点を1つ進んだときのx座標及びy
座標の増減を+1(増加)、−1(減)または0(増減
なし)で示す。また、y座標が増加を開始する頂点(極
小点)をs=1で、y座標が減少を開始する頂点(極大
点)をs=−1で示し、凸頂点をt=1で、凹頂点をt
=−1で示す。
よって求めたものである。i ,i+1,i-1 はそれぞれ添
字で、頂点の添字1〜13に対応する。また、sgnは
sinのことである。 a) dx i=sgn(x i+1−x i) b) dy i=sgn(y i+1−y i) c) dy i=1かつdy i-1=1のときs i=1 d) dy i=−1かつdy i-1=−1のときs i=−
1 e) その他のとき s i=0 f) t i=sgn{(x i+1−x i)(y i−y i-
1)−(y i+1−y i)(x i−x i-1)} 但し、 g) x>0のとき sgn(x)=1 h) x<0のとき sgn(x)=−1 i) x=0のとき sgn(x)=0
または極小となる凹頂点を探す。これは、図5におい
て、s=1またはs=−1で、かつt=−1の頂点であ
る。
3、v6、及びv11である。これらの頂点から文字の
内部領域に向かって(s=1なら上方、s=−1なら下
方に)分割線を引き、内部領域を横断してポリゴンの輪
郭線と最初に出会う点までを分割線分とする(図4ステ
ップS10、S11)。こうして得られた3本の垂直線
分を分割線分として文字の内部領域を4個のポリゴンに
分割する(図4ステップS12)。
〜S14に従って逐次的に処理すれば、最初に頂点v3
を通る分割線分v3v14で左右に分割し、その左側ポ
リゴンを分割線分v6v15で左右に分割し、更にその
右側ポリゴンを分割線分v11v16で分割する。ポリ
ゴンを分割した場合には、分割によって得られたポリゴ
ンデータの輪郭のうち、どの部分が分割線分であるかを
識別できるように、識別情報を付与するものとする。
1のポリゴンデータは、頂点v15にdiv=1の符号
を付与する。これは、頂点v15から次の頂点v6まで
が分割線分であることを示す。ポリゴンの分割が終了し
たら、図3ステップS3からS4に進み、4個のポリゴ
ンの左右稜線リストを作成する。ポリゴン分割の済んだ
ポリゴンデータP1〜P4にステップS8と同じ頂点の
分類を行うと図6に示すようになる。
す。図において、例えばポリゴンP1については、s=
1の極小点v8とs=−1の極大点v15が各々1個ず
つ存在する。この例では、極小点v8から極大点v15
まで反時計回りに進んで頂点の連鎖構造を作ったものを
左側稜線リストとし、極小点v8から極大点15まで時
計回りに進んで頂点の連鎖構造を作ったものを右側稜線
リストとする。図中、divの欄には、頂点v15が分
割線分である識別情報が示されている。他のポリゴンP
2〜P4も同様である。
説明図を示す。図6のリストを展開すれば、図7のポリ
ゴンリスト上のポリゴンポインタP1から枝別れした左
側稜線リスト及び右側稜線リストになる。左側稜線リス
トはポリゴンデータの一部をそのまま用いて作り、右側
稜線リストは、頂点データv8及びv15の複製と、ポ
リゴンデータの残りの頂点データを用いて、ポインタの
向きを逆方向にしたリストを作り、ポリゴンポインタP
1にポインタを1つ追加し、右側稜線リストを指すよう
にする。右側稜線リストは時計回りになるので、分割線
分についての描画処理を開始する前に、分割線分の識別
情報をその線分の終点でなく、始点データに含まれるよ
うに処理する必要がある。こうして1本の外部輪郭線を
分割した結果のポリゴンリストと、全てのポリゴンの左
右稜線リストが図7のように求められる。
データに移動、伸縮、回転等の座標変換を施す前のフォ
ントの定義座標値を用いて行われるもので、後に座標変
換をする際に、移動伸縮はするが、文字の回転はしない
ことを前提としている。
ゴン分割処理を1文字の全ての外部輪郭線に対して実行
したかを判断している。全ての処理終了後はステップS
6で、その結果である左右稜線データの単純な集積を新
規のアウトラインフォントとして記憶装置に格納する。
ステップS7では、アウトラインデータの定義された全
文字に対して以上のポリゴン分割処理を実行したかを判
断している。これらが終了した結果、中間フォントデー
タが得られる。
により得られた中間フォントデータを用いて描画処理を
行う手順を説明する。図8は、本発明の走査変換フロー
チャートを示す。この図は、ある文字列の文字描画にお
いて、最初に文字の内部領域を塗りつぶし、次に文字の
輪郭線を描画するフローチャートである。この図で、ル
ープは文字描画の繰り返し処理を、ループはポリゴ
ン描画の繰り返し処理を、ループはポリゴンの極小点
から極大点までの走査線の描画処理を示す。
マンドを解釈し、実行する準備をする処理である。次
に、ステップS17では、1文字分のポリゴン分割中間
フォントデータを読み込み、ステップS18では全ての
頂点座標に表示面への伸縮と移動から成る座標変換を施
している。ステップS19では左右稜線を構成する全て
の線分の高さと勾配を計算する。
と、ステップS20では分割ポリゴンの左右稜線リスト
の最初の線分データを取り出す。ここでは、左側稜線の
始点(エッジ)のx座標をxlに、高さをhlに、勾配
をdxlに設定し、右側稜線の始点のx座標をxrに、
高さをhrに、勾配をdxrに設定する。ステップS2
1でy座標の初期値をyminに設定し、走査線ループ
に入る。ステップS22、S23、S24で座標(x
l,y)から座標(xr,y)までの画素を塗りつぶ
す。
稜線のx座標と高さhとy座標を次の走査線に更新し、
hlまたはhrが0になると、ステップS28またはS
31で次の線分データを取り出し、極大点に達するとス
テップS27で左側稜線が途切れたことを検出するの
で、そのポリゴンの処理を終了する(ステップS27か
らS33へ)。以上でポリゴンの内部が塗りつぶされる
ので、これを全てのポリゴンについて順に実行すればよ
い。
を描画する。これも中間フォントデータを用いて、分割
されたポリゴンの輪郭を一定の線幅で塗りつぶす。ただ
し、図6に示したデータより、輪郭線の中で分割線分の
識別情報のある部分は描画しない。
イン文字(6文字)のポリゴン分割結果と表示結果を示
す。図9の下段は、この文字列をポリゴン単位に同じパ
タンで塗りつぶした後、ポリゴンの左右稜線の内、分割
線分を除く部分を一定の線幅で線描画を施し、以上の塗
りつぶしと線描画の操作を座標値をずらして2回実行す
ることにより、重ね書きしたものである。なお、文字外
部の横罫線は単なる背景を示している。
む文字のポリゴン分割のための内部輪郭線除去方法を図
10を用いて説明する。図10は、「B」の字のアウト
ラインフォントである。この文字には外部輪郭線が1本
と内部輪郭線が2本ある。このように内部輪郭線を含む
場合には、内部輪郭線と外部輪郭線を適当な線分で結
び、その線分を往復経路として1本の新たな外部輪郭線
に合成する。
によって文字の内部領域が局部的に分離されている。一
方の領域の境界線をA1B1とし、他方の領域の境界線
をA2B2として左右に分離し、これら境界線を往復経
路として外部輪郭線と内部輪郭線とを結合すると、1本
の新たな外部輪郭線が形成される。ここで、A1とA
2、及びB1とB2はそれぞれ同じ座標値を持つが、x
方向に引き離して描いてある。これは、ポリゴンデータ
を2分割する方法と似ているが、ここでは逆に2つのポ
リゴンデータが1つに融合する。こうして内部輪郭線を
除去することができる。この操作を内部輪郭線の個数だ
け実行すれば全ての内部輪郭線が除去される。
を分割線分C1D1及びC2D2によって除去してい
る。こうしてできた外部輪郭線のみに囲まれた文字領域
を、ポリゴン分割する方法は既に述べた通りである。ま
た、この文字を画面に表示する際には、内部輪郭線の除
去に用いた分割線分にも分割線分の識別情報を付与し
て、輪郭線として表示されないようにすればよい。従っ
て、図10の線分A1B1、A2B2、C1D1、C2
D2は輪郭線としては表示されない。
ついて、その内部輪郭線を分割線分によって除去した結
果を示し、同図下段は更にポリゴン分割した結果を示
す。例えば、文字「あ」は内部輪郭線を2個含むので、
2本の分割線分によって1本の外部輪郭線に統合され、
その外部輪郭線の囲む領域がその後8本の垂直分割線分
によって9個のポリゴンに分割される。
発明は文字の輪郭線を表現するアウトラインデータを複
数のポリゴンに分割したものとして表現し、その中に文
字の内部領域を横切るような分割線が存在するような場
合に、その線分の表示を抑制することを目的としてい
る。従って、分割線分を設ける位置や方向等は分割され
た結果のポリゴンの形状が任意の走査線と2個以下の交
点をもつようにすればよく、またその分割線分の識別情
報は上記の実施例に限らず他の線分と区別できるような
ものであれば何でもよい。また、本発明は文字の輪郭線
の表示出力のみの場合であっても、内部領域を塗りつぶ
す処理と併用した場合であっても実施できることはいう
までもない。
描画方法は、文字の内部領域を予め一定の多角形(ポリ
ゴン)に分割することによって塗りつぶしを高速化する
ことができる。更に、そのようなポリゴンデータの中に
分割線分が含まれる場合に、これを他の線分と区別し、
描画を抑制するようにしたので、文字の本来必要な輪郭
線のみの描画を行うことができる。従って、上記のよう
な高速化のための加工をアウトラインデータに加えた後
においても、ポリゴン分割のための処理をした形跡が残
らない良好な表示や印刷を実行できる。
描画の両方が同一のフォントデータを用いて実行できる
ので、ポストスクリプト等のページ記述言語による文字
描画機能が実現できる。また、このような文字塗りつぶ
しとアウトライン描画を同時にできるポリゴン分割中間
フォントを用いることができれば、ポリゴン描画処理が
高速になり、しかもフォントデータ保存のためのメモリ
を削減することができる。
す説明図である。
る。
である。
る。
る。
果説明図である。
Claims (3)
- 【請求項1】 文字の輪郭線を複数の線分に分割し、前
記輪郭線を、各線分の頂点座標の環状連鎖構造として表
現してポリゴンデータを得る場合に、 予め設定された基準座標軸について見た輪郭線上の任意
の点の位置座標が、極大または極小となるような前記輪
郭線に囲まれた図形の凹頂点を抽出し、 前記凹頂点を通る前記基準座標軸に平行な線分により、
前記輪郭線により囲まれた図形を複数のポリゴンに分割
し、 前記凹頂点を通る前記基準座標軸に平行な線分に分割線
分である旨を表示する識別情報を付与し、 前記文字を構成する全てのポリゴンについて、分割線分
を含まない輪郭線を描画することを特徴とするアウトラ
イン文字描画方法。 - 【請求項2】 所定の起点よりポリゴンの輪郭線をそれ
ぞれ反対方向にたどる、基準座標軸の方向に見てその位
置座標を単調増加または単調減少させる、一対の左側稜
線データと右側稜線データを作成し、 前記複数のポリゴンについての前記左右稜線データを集
積した中間フォントデータを、描画を要求される文字毎
に予め記憶しておき、 前記中間フォントデータを読み出して、 前記文字を構成する全てのポリゴンについて、前記左右
稜線データと前記基準座標軸に垂直な走査線との交点を
認識して、前記ポリゴンを塗りつぶし、 前記文字を構成する全てのポリゴンについて、前記左右
稜線データの内、前記分割線分の識別情報の付与されて
いない全ての線分を、所定の線幅で描画し、 前記分割線分を含まない輪郭線を描画することを特徴と
する請求項1記載のアウトライン文字描画方法。 - 【請求項3】 文字の輪郭線に外部輪郭線とこの外部輪
郭線に囲まれる内部輪郭線が存在する場合に、 前記内部輪郭線上の1点と、その内部輪郭線を包囲する
外部輪郭線上の1点を結ぶ線分が、その両端点以外では
文字のいかなる輪郭線とも交差しないように輪郭線に新
たに含める線分を選定し、 その線分を往復経路として、前記外部輪郭線と内部輪郭
線を連結して1本の新たな輪郭線を合成し、 当該線分に分割線分である旨を表示する識別情報を付与
し、 前記輪郭線の連続処理によって、全ての前記内部輪郭線
を除去した後、 前記輪郭線について、凹頂点の抽出を実行することを特
徴とする請求項1記載のアウトライン文字描画方法。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP6136498A JPH07319444A (ja) | 1994-05-26 | 1994-05-26 | アウトライン文字描画方法 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP6136498A JPH07319444A (ja) | 1994-05-26 | 1994-05-26 | アウトライン文字描画方法 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH07319444A true JPH07319444A (ja) | 1995-12-08 |
Family
ID=15176577
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP6136498A Pending JPH07319444A (ja) | 1994-05-26 | 1994-05-26 | アウトライン文字描画方法 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH07319444A (ja) |
-
1994
- 1994-05-26 JP JP6136498A patent/JPH07319444A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US6501475B1 (en) | Glyph-based outline font generation independent of resolution | |
| KR100297238B1 (ko) | 저해상도및고해상도공간을위한획형폰트생성방법및장치 | |
| EP0715281A2 (en) | Modifying a graphics display image | |
| US4779081A (en) | Graphics in display unit | |
| JP2681367B2 (ja) | 図形処理方法及びその装置 | |
| US5200740A (en) | Dropout-free center point fill method for displaying characters | |
| JPH08146936A (ja) | アウトラインフォントデータの処理方法および装置 | |
| KR940006918B1 (ko) | 디지탈 활자체의 문자윤곽을 채우는 방법 및 시스템 | |
| KR100212412B1 (ko) | 문자패턴 생성장치 | |
| EP0841639A2 (en) | Method and apparatus for automatic gap closing in computer aided drawing | |
| JPH07319444A (ja) | アウトライン文字描画方法 | |
| JP2770582B2 (ja) | 図形塗潰し装置 | |
| JPH02270019A (ja) | 高品質文字パターン発生方式 | |
| JPH10143134A (ja) | 文字の生成と記憶のための方法と装置 | |
| EP0466330B1 (en) | Method for editing character bit maps at small sizes using connected runs | |
| JP3082467B2 (ja) | アウトラインデータ処理装置 | |
| JP2002056403A (ja) | 描画指示装置及び描画指示方法及びコンピュータ読み取り可能な記憶媒体 | |
| JP3344538B2 (ja) | 文字生成装置 | |
| JP3536894B2 (ja) | 図形処理装置 | |
| US5579460A (en) | Paint-out method and apparatus | |
| JP3843794B2 (ja) | 図形処理装置 | |
| JPH06175639A (ja) | 文字生成方法及びその装置 | |
| JP2835056B2 (ja) | 高品質文字パターン発生方式 | |
| JPH0736433A (ja) | 文字データベース作成装置 | |
| JPH0772847A (ja) | 文字フォント出力装置及び文字フォント生成装置 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20050415 |
|
| RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20050606 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050914 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080922 Year of fee payment: 3 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090922 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090922 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100922 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100922 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110922 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120922 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120922 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (prs date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130922 Year of fee payment: 8 |