JPH06309469A - Method for plotting outline character - Google Patents

Method for plotting outline character

Info

Publication number
JPH06309469A
JPH06309469A JP5116378A JP11637893A JPH06309469A JP H06309469 A JPH06309469 A JP H06309469A JP 5116378 A JP5116378 A JP 5116378A JP 11637893 A JP11637893 A JP 11637893A JP H06309469 A JPH06309469 A JP H06309469A
Authority
JP
Japan
Prior art keywords
line
vertex
entry
character
coordinate
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
Application number
JP5116378A
Other languages
Japanese (ja)
Inventor
Takayoshi Yoshida
隆義 吉田
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.)
Oki Electric Industry Co Ltd
Original Assignee
Oki Electric Industry Co 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 Oki Electric Industry Co Ltd filed Critical Oki Electric Industry Co Ltd
Priority to JP5116378A priority Critical patent/JPH06309469A/en
Publication of JPH06309469A publication Critical patent/JPH06309469A/en
Pending legal-status Critical Current

Links

Landscapes

  • Image Generation (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

PURPOSE:To quickly execute the painting-out of a rotated outline character. CONSTITUTION:The internal area of a character is divided into plural polygonal areas and plotting processing is executed by means of intermediate font data obtained by integrating these polygons. The shape of each polygon is selected so as to have two entering vertexes or less at the time of observing it from an optional direction. The coordinate transformation of the intermediate font data at the time of plotting includes the operation of parallel movement, magnification/reduction and rotation. This transformation is executed to deform a scquare surrounding the character font to a parallelogram. Although each polygon is also deformed, the property having two entering vertexes or less at the time of observing it from an optional direction is maintained. Since the entering vertexes of each polygon is restricted only to one or two also in the y-axis direction vertcial to scanning lines on the display screen, painting- out operation can quickly be executed.

Description

【発明の詳細な説明】Detailed Description of the Invention

【0001】[0001]

【産業上の利用分野】本発明は、アウトライン文字フォ
ントを用いてディスプレイやプリンタ等により文字を描
画するアウトライン文字描画方法に関するものである。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to an outline character drawing method for drawing a character on a display, a printer or the like using an outline character font.

【0002】[0002]

【従来の技術】アウトライン文字フォントは、文字の形
状をアウトライン即ち輪郭線によって表現するもので、
同一のフォントデータを用いて文字を任意の倍率で拡
大、縮小回転して表示することが可能である。アウトラ
イン文字フォントにより実際に文字を描画するには、輪
郭形状を規定する頂点座標を表示面上に座標変換した後
に輪郭線で囲まれた領域を塗りつぶせばよい。座標変換
は通常、平行移動、伸縮、回転の組合せから成る。表示
面上で輪郭線データを用いて文字領域に属する画素を塗
りつぶしていく処理は、走査変換あるいはラスター変換
と呼ばれる。尚、以下の説明ではフォントデータの読込
み及び座標変換を含む文字表示処理全体を含めて走査変
換と呼ぶことがある。この種の走査変換技術は、例えば
特願平4−205988号によって紹介されている。
2. Description of the Related Art An outline character font expresses the shape of a character by an outline or outline.
It is possible to display a character by enlarging, reducing and rotating it at an arbitrary magnification using the same font data. To actually draw a character with an outline character font, the vertex coordinates that define the contour shape are transformed on the display surface and then the area surrounded by the contour line is filled. Coordinate transformations usually consist of a combination of translation, stretching and rotation. The process of filling the pixels belonging to the character area on the display surface using the contour line data is called scan conversion or raster conversion. In the following description, the entire character display process including the reading of font data and coordinate conversion may be referred to as scan conversion. This type of scan conversion technique is introduced, for example, in Japanese Patent Application No. 4-205988.

【0003】従来の走査変換アルゴリズムには、上記文
献に開示される2つの処理方法がある。以下、これらの
処理方法を説明する。図2は、第1の従来方法によるア
ウトライン文字フォントの描画方法の説明図である。図
2は「愛」の文字の従来方法による描画過程を示してい
る。この「愛」の文字は、計123個の頂点を用いた7
個の多角形を輪郭線としている。y座標軸を下向き、x
座標軸を右向きにとれば、輪郭線の最上頂点+1を通る
走査線y=ymin から最下頂点を通る走査線y=ymax
までの各走査線について文字輪郭との交点を全て求め、
文字の内部領域に相当する線分を左から右に向かって塗
りつぶしていく。
The conventional scan conversion algorithm has two processing methods disclosed in the above document. Hereinafter, these processing methods will be described. FIG. 2 is an explanatory diagram of the outline character font drawing method according to the first conventional method. FIG. 2 shows a drawing process of a character of "love" by a conventional method. This "love" character uses a total of 123 vertices 7
Each polygon is used as a contour line. down the y coordinate axis, x
If the coordinate axis is directed to the right, the scanning line y = ymin passing through the top vertex +1 of the contour line to the scanning line y = ymax passing through the bottom vertex.
Find all intersections with the character contour for each scan line up to
The line segment corresponding to the internal area of the character is filled from left to right.

【0004】図2では、「愛」の文字が走査線y=yま
で塗りつぶされた状態を水平線のハッチングにより示し
ている。図3及び図4は、従来の第1方法による走査変
換のフローチャートを示す。これらの図は、この方法で
複数の文字(文字列)を描画するフローチャートを示
す。このフローチャートは、以下のような3重のループ
構造になっている。最も外側のループは1文字分の描
画の繰り返し処理を示している。ループは1文字分の
描画の際にその最上頂点から最下頂点までの各走査線の
繰り返し処理を示している。ループは1本の走査線上
において走査線と輪郭線との交点を左から右へたどり、
線分描画を繰り返す描画処理を表している。
In FIG. 2, the state in which the character "love" is filled up to the scanning line y = y is shown by the hatching of the horizontal line. 3 and 4 are flowcharts of scan conversion according to the first conventional method. These figures show a flowchart for drawing a plurality of characters (character strings) by this method. This flowchart has the following triple loop structure. The outermost loop shows the repeated processing of drawing one character. The loop indicates the repeating processing of each scanning line from the top vertex to the bottom vertex when drawing one character. The loop traces the intersection of the scan line and the contour line on one scan line from left to right,
This represents a drawing process in which line segment drawing is repeated.

【0005】図2で水平な走査線が上方から下方に移動
するにつれ、輪郭線との交点数が2個単位で増加または
減少していくが、この交点数を2個増加させる頂点を進
入頂点と呼び、交点数を2個減少させる頂点を退出頂点
と呼ぶ。これらの頂点は、輪郭線に沿って進んだとき、
y座標が極小値及び極大値をとる頂点である。図中+1
〜+14で示した14個の頂点が「愛」の文字の輪郭線
の進入頂点である。図3に示すもう1つのループは進
入頂点の存在する走査線上で実行される進入処理を表し
ている。進入頂点はy座標の昇順にソートされており、
このフローチャートでは隣り合う進入頂点のy座標の差
(進入差分)を用いて進入頂点を検出している。以上の
進入処理と描画処理を効率よく実行するために、アクテ
ィブエッジリスト(以下AELと呼ぶ)が使われる(ス
テップS101〜S107)。
As the horizontal scanning line moves downward from above in FIG. 2, the number of intersections with the contour line increases or decreases in units of two. The apex that increases the number of intersections by two is the entry vertex. The vertex that reduces the number of intersections by 2 is called the exit vertex. These vertices, when advanced along the contour line,
The y-coordinate is a vertex having a minimum value and a maximum value. +1 in the figure
The 14 vertices indicated by ˜ + 14 are the entry vertices of the contour line of the character “love”. The other loop shown in FIG. 3 represents the entry processing executed on the scan line where the entry vertex exists. The entry vertices are sorted in ascending order of y coordinate,
In this flowchart, the approach vertices are detected using the difference between the y coordinates of the approach vertices adjacent to each other (the approach difference). An active edge list (hereinafter referred to as AEL) is used to efficiently execute the above-described entry processing and drawing processing (steps S101 to S107).

【0006】図5に従来方法によるアクティブエッジリ
ストを示した。AELは現在の走査線と交わる稜線(ア
クティブエッジと呼ぶ)をx座標の昇順にソートしたデ
ータ構造である。稜線(エッジ)は進入頂点から退出頂
点に至る線分の連鎖、またはその内の1つの線分であ
る。線分データはx座標、高さh、傾き△xから成る。
図3のステップS108の進入処理では、進入頂点から
出る左側稜線及び右側稜線がx座標が昇順となるような
AELの位置に挿入される。また、ループの描画処理
の中では、アクティブエッジポインタ(AEP)がAE
L上を左から右にたどり、ステップS118でAEPの
指すアクティブエッジが呼び出され、ステップS119
で左側稜線か右側稜線かが判定される。
FIG. 5 shows an active edge list according to the conventional method. AEL is a data structure in which ridges (called active edges) that intersect the current scanning line are sorted in ascending order of x coordinates. The ridge line (edge) is a chain of line segments from the entry vertex to the exit vertex, or one of the line segments. The line segment data consists of an x coordinate, a height h, and an inclination Δx.
In the approach processing of step S108 of FIG. 3, the left edge line and the right edge line emerging from the entry vertex are inserted into the AEL position such that the x coordinate is in ascending order. In the drawing process of the loop, the active edge pointer (AEP) is AE
Traversing on L from left to right, the active edge pointed to by AEP is called in step S118, and step S119
Determines whether it is the left edge line or the right edge line.

【0007】左側稜線を通過することは文字領域の外部
から内部に進入することを示すから、予めステップS1
15で0に設定された整数変数wをステップS120で
カウントアップし、また右側稜線では文字領域の内部か
ら外部に出ることを示すから、ステップS123でwを
カウントダウンする。wは文字の外部領域で0、内部領
域で1以上となり、負になることはないものとする。図
4の処理手順では、このwの値を0から1に変える左側
稜線から1から0に変える右側稜線まで、即ちwが0で
ない範囲を塗りつぶす。即ち、ステップS122で塗り
つぶしの開始点x1を設定し、ステップS125で塗り
つぶしの終了点xrを設定するとともにx1からxrま
での画素をまとめて塗りつぶしている。
Since passing the left edge line indicates entering from the outside to the inside of the character area, step S1 is performed in advance.
The integer variable w set to 0 in 15 is counted up in step S120, and the right ridge line indicates that the character region goes out from the inside of the character area. Therefore, w is counted down in step S123. It is assumed that w is 0 in the outer area of the character and 1 or more in the inner area, and is not negative. In the processing procedure of FIG. 4, the area from the left ridgeline that changes the value of w from 0 to 1 to the right ridgeline that changes from 1 to 0, that is, the range in which w is not 0 is filled. That is, the fill start point x1 is set in step S122, the fill end point xr is set in step S125, and pixels from x1 to xr are collectively filled.

【0008】ステップS126では稜線のx座標を更新
し(増分△xを加算し)、高さhをカウントダウンし
(1を引き)、次の走査線に更新する。そして、ステッ
プS127でh=0になったらステップS128でアク
ティブエッジを次の稜線に更新し、xとhを再設定す
る。ここで、退出頂点に到達すれば、そのアクティブエ
ッジはAELから除去される。そして、AELに含まれ
る全てのアクティブエッジに対する処理を終了すると、
ステップS116からループを抜けてステップS11
7に進み、次の走査線に入る。このように、AELを用
いて走査線毎に必要に応じて進入処理と複数個の線分の
塗りつぶしを繰り返すことが第1の従来方法の特徴であ
る。次に、図6を参照して第2の従来方法を同様に
「愛」の文字を塗りつぶす場合を例にして説明する。
In step S126, the x coordinate of the ridge is updated (increment Δx is added), the height h is counted down (1 is subtracted), and the next scanning line is updated. Then, when h = 0 in step S127, the active edge is updated to the next ridge line in step S128, and x and h are reset. Here, when the exit vertex is reached, the active edge is removed from the AEL. When the processing for all active edges included in the AEL is completed,
Exit the loop from step S116 to step S11
Proceed to 7 to enter the next scan line. As described above, the first conventional method is characterized in that the AEL is used to repeat the entry process and the filling of a plurality of line segments for each scanning line as needed. Next, the second conventional method will be described with reference to FIG. 6 by exemplifying a case where the characters of "love" are similarly painted.

【0009】第2の従来方法では、文字の内部領域を1
0個の多角形に分割し、これらの多角形の内部領域の論
理和が文字全体の内部領域となるようにし、多角形単独
ではy軸方向に見て1個の進入頂点しか持たないように
する。そして、多角形の左右稜線データを集積した中間
フォントデータを予め作成しておき、文字の描画時には
多角形分割された中間フォントデータを読み出して、回
転を伴なわない移動、伸縮のみから成る座標変換を行な
い、分割された多角形毎に個別に座標変換する。図6
は、+1〜+4を進入頂点とする4個の多角形を塗りつ
ぶした状態を示す。
In the second conventional method, the internal area of a character is set to 1
Divide into 0 polygons, and make the logical sum of the internal regions of these polygons the internal region of the entire character, so that the polygon alone has only one entry vertex when viewed in the y-axis direction. To do. Then, the intermediate font data in which the left and right edge data of the polygon are accumulated is created in advance, and when the character is drawn, the polygon-divided intermediate font data is read out, and coordinate conversion consisting of only movement and expansion / contraction without rotation is performed. The coordinate conversion is performed individually for each of the divided polygons. Figure 6
Indicates a state in which four polygons whose entry vertices are +1 to +4 are filled.

【0010】図6は、第2の従来方法による走査変換の
フローチャートを示す。は文字ループ、は多角形ル
ープ、は走査線ループである。第2の従来方法はAE
Lを用いないので、第1の従来方法におけるこれに関連
した処理が不要であり、描画処理も単純になるので、第
1の従来方法より高速となる。まず、図7のステップS
16で文字列表示のコマンドを解釈し、実行する準備を
している。ステップS17で1文字分の中間フォントデ
ータを読込み、ステップS18で全ての頂点座標に表示
面への座標変換を施す。ここまでは第1の従来方法と同
じであるが、図3の第1の従来方法では座標変換S10
3の後に頂点と稜線の分類処理S104、及び進入頂点
リストと左右稜線リストの作成処理S105が入ってい
るが、図7の第2の従来例では回転をしないことを条件
としてこれらの処理が全く不必要になっている。
FIG. 6 shows a flow chart of scan conversion by the second conventional method. Is a character loop, is a polygon loop, and is a scan line loop. The second conventional method is AE
Since L is not used, the processing related to this in the first conventional method is unnecessary, and the drawing processing is also simplified, so that it is faster than the first conventional method. First, step S in FIG.
16 interprets the command for displaying the character string and prepares for execution. In step S17, the intermediate font data for one character is read in, and in step S18, all the vertex coordinates are subjected to coordinate conversion to the display surface. Up to this point, the procedure is the same as in the first conventional method, but in the first conventional method of FIG.
3 is followed by a vertex and edge classification process S104 and an entry vertex list and left and right edge line list creation process S105. However, in the second conventional example of FIG. It is unnecessary.

【0011】次のステップS19の左右稜線データ作成
は第1の従来方法と同じであるが、その後の描画処理
は、第1の従来方法におけるAEL及びAEPに関する
処理を第2の従来方法では全く含んでいない。それは分
割した結果の多角形の形状の進入頂点から退出頂点まで
の各走査線に1本だけの描画線分を発生するからであ
る。多角形ループに入ると、ステップS20では分割
多角形の左右稜線リストの最初の稜線データを取り出
す。ここでは左側稜線データの始点のx座標xrに、高
さをhrにそれぞれ設定する。ステップS21で進入頂
点のy座標y1 をyに設定する。走査線ループに入る
と、ステップS22、S23、S24で(xl,y)
(xr,y)までの画素を塗りつぶす。
The creation of the right and left ridge line data in the next step S19 is the same as that of the first conventional method, but the drawing processing thereafter includes the processing relating to AEL and AEP in the first conventional method at all in the second conventional method. Not at all. This is because only one drawing line segment is generated at each scanning line from the entry vertex to the exit vertex of the polygonal shape obtained by the division. When entering the polygon loop, in step S20, the first edge data of the left and right edge list of the divided polygon is taken out. Here, the x-coordinate xr and the height of the starting point of the left edge data are set to hr and hr, respectively. In step S21, the y coordinate y1 of the entry vertex is set to y. When entering the scan line loop, in steps S22, S23, and S24, (xl, y)
Pixels up to (xr, y) are filled.

【0012】ステップS25では左側稜線のx座標と高
さを次の走査線に更新し、ステップS32ではy座標を
次の走査線に更新している。高さhl又はhrが0にな
ると、ステップS28又はS31で次の稜線データを取
り出し、x座標と高さhを再設定する。退出頂点に達す
るとステップS27で次の左側稜線が存在しないことが
わかるので、その多角形の処理を終了する。以上で多角
形の内部が塗りつぶされるので、これをすべての多角形
について順に実行すればよい。2個以上の多角形が共有
する領域は当然塗りつぶされる。また、垂直線分で接し
ている2個の多角形は垂直線分上で隙間を空けないよう
に塗りつぶす必要がある。こうして1文字分描画が済む
と、ステップS17に戻って次の文字コードの指す多角
形分割中間フォントを読み込み、ステップS18で表示
位置を変えるように座標変換すれば次の文字が同様に描
画できる。これを指定文字数だけ繰り返せば文字列描画
が完了する。
In step S25, the x coordinate and height of the left edge line are updated to the next scanning line, and the y coordinate is updated to the next scanning line in step S32. When the height hl or hr becomes 0, the next ridge line data is taken out in step S28 or S31, and the x coordinate and the height h are reset. When the exit vertex is reached, it is found in step S27 that the next left edge line does not exist, so the processing of that polygon is terminated. Since the inside of the polygon is filled in as described above, this may be executed for all the polygons in order. Areas shared by two or more polygons are naturally filled. Further, it is necessary to paint two polygons that are in contact with each other on a vertical line segment so that no space is left on the vertical line segment. When drawing of one character is completed in this way, the process returns to step S17 to read the polygonal division intermediate font pointed to by the next character code, and coordinate conversion is performed so as to change the display position in step S18, so that the next character can be similarly drawn. The character string drawing is completed by repeating this for the specified number of characters.

【0013】[0013]

【発明が解決しようとする課題】しかしながら、上述し
た従来の技術には、次のような問題があった。まず、第
1の従来方法では、次のような多くの処理項目を1文字
描画する度に、あるいは1走査線毎に実行する必要があ
る。 a)座標変換(移動、伸縮、回転) b)左右稜線データ作成 c)進入頂点ソート d)AEL進入処理 e)AELソート f)AEL更新退出処理 g)AELを用いた描画処理
However, the above-mentioned conventional technique has the following problems. First, in the first conventional method, it is necessary to execute the following many processing items each time one character is drawn or every scanning line. a) coordinate conversion (movement, expansion / contraction, rotation) b) creation of left and right edge line data c) entry vertex sort d) AEL entry process e) AEL sort f) AEL update exit process g) Drawing process using AEL

【0014】このうち、c)、d)、e)、f)の進入
頂点ソート、AEL進入、AELソート、AEL更新退
出に関する処理は、描画すべき画素の座標値を求めるた
めに直接的に必要な計算ではなく、g)のAELを用い
た描画処理に必要なデータを効率よく供給するための付
随的な処理である。これらの付随的な処理はアウトライ
ン文字の輪郭線の形状が複雑なために走査線と多数の交
点を持つので、これに対応した効率的な処理を行なうた
めに必要となる。ところが、これらの付随的な処理に走
査変換時間の大半を費やしてしまうという問題があっ
た。
Of these, the processes concerning the entry vertex sort, AEL entry, AEL sort, and AEL update exit of c), d), e), and f) are directly necessary to obtain the coordinate value of the pixel to be drawn. It is not an extra calculation, but an additional process for efficiently supplying the data necessary for the drawing process using the AEL of g). These additional processes have a large number of intersections with the scanning lines because the outline of the outline character has a complicated shape, and are required to perform efficient processes corresponding to these. However, there is a problem that most of the scan conversion time is spent on these incidental processes.

【0015】一方、第2の従来方法は文字を回転して表
示する場合には適用できない。例えば、図6の+4の頂
点を進入頂点とする多角形は、y軸方向に見ると(y座
標値のみ考慮すると)、進入頂点と退出頂点が各1個で
あるが、x軸方向に見ると(文字を90度回転してy軸
方向に見ると)4対の進入頂点と退出頂点が生じてしま
い、この多角形1個を描画するだけでもAELを用いた
処理が必要となる。従って、文字を回転すると、多角形
分割した場合でも処理時間が長くなる。本発明は、以上
の点に着目してなされたもので、アウトライン文字の走
査変換の際にアクティブエッジリストの生成処理を伴な
わず、かつ回転を含む座標変換が可能な、高速なアウト
ライン文字描画方法を提供することを目的とするもので
ある。
On the other hand, the second conventional method cannot be applied to the case of rotating and displaying characters. For example, a polygon having the +4 vertex as the entry vertex in FIG. 6 has one entry vertex and one exit vertex when viewed in the y-axis direction (considering only the y coordinate value), but viewed in the x-axis direction. And (when the character is rotated 90 degrees and viewed in the y-axis direction), four pairs of entry and exit vertices are generated, and even if only one polygon is drawn, the processing using the AEL is required. Therefore, when the character is rotated, the processing time becomes long even when the character is divided into polygons. The present invention has been made by paying attention to the above points, and is a high-speed outline character drawing capable of coordinate conversion including rotation without generating an active edge list during scan conversion of outline characters. It is intended to provide a method.

【0016】[0016]

【課題を解決するための手段】本発明の第1発明のアウ
トライン文字描画方法は、文字の輪郭線を複数の線分の
集合で形成し、当該複数の線分で囲まれた内部領域を複
数の多角形に分割する場合において、当該各多角形の内
部領域の論理和が前記文字の内部領域全体となるように
し、かつ、前記すべての多角形の形状が任意の方向に設
定された座標軸に関する位置座標が極小となる進入頂点
の数が所定数以下となるように前記各多角形を選定し、
当該各多角形の線分のデータを前記文字の中間フォント
データとして予め用意し、当該中間フォントデータであ
る各多角形を読み出して座標変換し、当該座標変換した
各多角形と走査線との交点を認識して当該交点間を塗り
潰すことを特徴とするものである。
In the outline character drawing method of the first invention of the present invention, a contour line of a character is formed by a set of a plurality of line segments, and a plurality of internal areas surrounded by the plurality of line segments are formed. In the case of division into polygons, the logical sum of the internal areas of the polygons is the entire internal area of the character, and the shapes of all the polygons are related to coordinate axes set in arbitrary directions. Select each of the polygons so that the number of entry vertices at which the position coordinates are the minimum is less than or equal to a predetermined number,
The line segment data of each polygon is prepared in advance as the intermediate font data of the character, each polygon which is the intermediate font data is read out, the coordinates are converted, and the intersection of each coordinate-converted polygon and the scanning line is read. Is recognized and the space between the intersections is filled.

【0017】第2発明のアウトライン文字描画方法は、
文字の輪郭線を複数の線分で形成し、かつ当該輪郭線自
身が交差しない場合に、基準座標y軸に関する前記輪郭
線上の頂点のy座標が極小となるすべての進入頂点を、
y座標が昇順となるように、またy座標が等しければy
軸を反時計回りに90度回転した基準座標x軸に関する
x座標が降順となるように順序付けた進入頂点リストを
得て、前記各々の進入頂点から前記輪郭線に沿って文字
の内部領域を左側に見込む方向及び右側に見込む方向
に、各々y座標が極大となる退出頂点に至る線分の系列
として左側稜線及び右側稜線を得て、前記進入頂点リス
トの未使用の進入頂点から始まる左側稜線及び右側稜線
に挟まれる領域を走査線単位に塗りつぶし、当該走査線
が前記進入頂点に達することにより、別の左側稜線及び
右側稜線に挟まれる領域が生じるときは、現在の左側稜
線と右側稜線及び別の左側稜線と右側稜線のいずれか一
方の組合せの左右稜線データをスタックメモリに格納
し、他方の組合せの左側稜線及び右側稜線に挟まれる領
域を走査線単位に塗りつぶし、当該走査線が前記退出頂
点に達することにより、前記左側稜線又は右側稜線が退
出するときは、前記スタックメモリに格納された左側稜
線及び右側稜線を回復し、当該回復した左側稜線及び右
側稜線に挟まれる領域を走査線単位に塗りつぶすことを
特徴とするものである。
The outline character drawing method of the second invention is
When the contour line of a character is formed by a plurality of line segments and the contour lines themselves do not intersect, all the entry vertices where the y coordinate of the vertex on the contour line with respect to the reference coordinate y-axis becomes a minimum,
y so that the y coordinates are in ascending order, and if the y coordinates are equal, y
Obtain an entry vertex list ordered such that the x-coordinates of the reference coordinate x-axis rotated 90 degrees counterclockwise are in descending order, and the inner region of the character is left from each of the entry vertices along the contour line. In the direction to look in and the direction to the right, the left edge line and the right edge line are obtained as a series of line segments reaching the exit vertex where the y-coordinate becomes maximum, and the left edge line and the left edge line starting from the unused entry vertex in the entry vertex list When the area sandwiched between the right ridgelines is filled in scan line units and the scan line reaches the entrance apex, and another left ridgeline and a region sandwiched by the right ridgelines occur, the current left ridgeline and right ridgeline and another ridgeline are separated. The left and right edge data of one of the combinations of the left edge and the right edge of is stored in the stack memory, and the area sandwiched between the left edge and the right edge of the other combination is painted in scan line units. However, when the left ridge line or the right ridge line exits due to the scanning line reaching the exit vertex, the left ridge line and the right ridge line stored in the stack memory are restored, and the restored left ridge line and the right ridge line are restored. It is characterized in that the area sandwiched between the two is filled in every scanning line.

【0018】[0018]

【作用】第1発明のアウトライン文字描画方法において
は、文字の内部領域を複数の多角形の領域に分割し、多
角形を集積した形の中間フォントデータを用いて描画処
理を行なう。この場合、それらの多角形の形状は、任意
の方向から見て例えば高々2個の進入頂点を持つような
形状に選定される。描画時に中間フォントデータが座標
変換されるが、この座標変換は平行移動、伸縮、回転の
操作を含んだ変換である。これらの変換は文字フォント
を囲む正方形を平行四辺形に変形する変換である。個々
の多角形も変形を受けるが、任意の方向から見て高々2
個の進入頂点を持つという性質は維持される。従って、
座標変換の結果、表示面上の走査線に垂直な例えばy軸
方向についても多角形の進入頂点は1個または2個のい
ずれかとなる。従って、走査変換の中には、文字の回転
を伴なう場合に、従来必要とされたアクティブエッジリ
ストの生成処理は含まれないので、処理が高速化され
る。
In the outline character drawing method according to the first aspect of the present invention, the internal area of the character is divided into a plurality of polygonal areas, and the drawing processing is performed using the intermediate font data in which the polygons are integrated. In this case, those polygonal shapes are selected to have, for example, at most two entry vertices when viewed from an arbitrary direction. The coordinate conversion of the intermediate font data is performed at the time of drawing, and this coordinate conversion is a conversion including operations of parallel movement, expansion and contraction, and rotation. These transformations are transformations that transform a square surrounding a character font into a parallelogram. Each polygon is also deformed, but at most 2 when viewed from any direction.
The property of having one entry vertex is maintained. Therefore,
As a result of the coordinate conversion, there are either one or two polygonal entry vertices in the y-axis direction perpendicular to the scanning line on the display surface. Therefore, the scan conversion does not include the generation processing of the active edge list which has been conventionally required when the character is rotated, so that the processing speed is increased.

【0019】第2発明のアウトライン文字描画方法にお
いては、y座標でソートした進入頂点リストと左右稜線
データを用いて塗りつぶし処理を行なう。この場合、ア
クティブエッジリストを用いて走査変換を行なうのでな
く、1対の左側稜線と右側稜線に挟まれ、上下を1対の
走査線で挟まれた領域を単位として塗りつぶし処理を行
なう。同じ走査線上に複数の描画線分が発生した場合に
は最も左方の(x座標の小さい)線分を含む領域から優
先的に塗りつぶす。即ち、描画中の領域内に進入頂点が
存在し、その進入頂点から出発する左右稜線によって2
つの描画領域に分離された場合、左方の領域を優先的に
塗りつぶす。そして、その終了後に右方の領域の塗りつ
ぶしを再開できるように、右方の領域を挟む左右稜線を
対にして第1のスタックメモリに格納する。優先的に処
理された左方の領域の右側稜線のみが退出し、右方の領
域は未だ描画されていない場合は右方の領域の描画終了
後に左右の領域の合流が可能となるように左側稜線を第
2のスタックメモリに格納する。以上のようにして、文
字の内部領域全体を塗りつぶす。
In the outline character drawing method according to the second aspect of the present invention, the filling process is performed using the entry vertex list sorted by the y coordinate and the left and right edge line data. In this case, the scan conversion is not performed using the active edge list, and the filling process is performed in units of a region sandwiched between a pair of left and right ridge lines and a pair of upper and lower scan lines. When a plurality of drawing line segments occur on the same scanning line, the area including the leftmost line segment (small x coordinate) is preferentially filled. That is, there is an entry vertex in the area being drawn, and 2
When separated into two drawing areas, the area on the left is preferentially filled. Then, the left and right ridge lines sandwiching the right area are paired and stored in the first stack memory so that the filling of the right area can be resumed after the end. If only the right edge of the left area that has been preferentially processed exits and the right area has not been drawn yet, the left side will be merged so that the left and right areas can merge after drawing the right area. The edge line is stored in the second stack memory. As described above, the entire inner area of the character is filled.

【0020】[0020]

【実施例】以下、本発明の実施例を図面を参照して詳細
に説明する。 (第1発明)図1は、第1発明による文字の多角形分割
の例の説明図である。図1においては、本発明の方法に
適するように「愛」の文字を多角形に分割している。即
ち、文字の内部領域が互いに重なり合わない計15個の
多角形+1〜+15に分割されている。連続する内部領
域は、図中の計14本の分割線分を用いて分割され、隣
接する2つの多角形の共有辺となっている。これらの多
角形は、任意の方向から見て1個又は2個の進入頂点を
持つ形状となるように分割されている。例えば、y軸方
向から見ると、+5の多角形以外の多角形はすべて1個
の進入頂点しか持たない形状となっている。+5の多角
形は、y方向に見ると、2個の進入頂点を持つが、x軸
方向に見ると、1個の進入頂点しか持たず、その他の方
向では2個の進入頂点を持つ。+9のような凸多角形
(図示の例では、ほぼ平行四辺形)は、+9以外の多角
形は、凹多角形で、見る方向によって進入頂点を2個持
つことはあるが、3個の進入頂点を持つことがないよう
に分割されている。
Embodiments of the present invention will now be described in detail with reference to the drawings. (First Invention) FIG. 1 is an explanatory diagram of an example of polygon division of a character according to the first invention. In FIG. 1, the letters "love" are divided into polygons to suit the method of the present invention. That is, the internal area of the character is divided into a total of 15 polygons +1 to +15 that do not overlap each other. The continuous internal region is divided using a total of 14 dividing line segments in the figure, and is a shared side of two adjacent polygons. These polygons are divided so as to have a shape having one or two entry vertices when viewed from an arbitrary direction. For example, when viewed from the y-axis direction, all polygons other than the +5 polygon have a shape with only one entry vertex. The +5 polygon has two entry vertices when viewed in the y direction, but has only one entry vertex when viewed in the x-axis direction, and has two entry vertices in the other directions. A convex polygon such as +9 (in the illustrated example, a substantially parallelogram) is a polygon other than +9, which is a concave polygon and may have two entry vertices depending on the viewing direction, but three entry vertices. It is divided so that it has no vertices.

【0021】以下では、まず、第1発明に関し、凸多角
形又は進入頂点が2個の凹多角形への分割方法、これら
の多角形の座標変換方法、これらの多角形の描画方法を
順に述べる。 [多角形分割の方法]文字の輪郭線が複数の多角形で形
成されている場合に、文字の内部領域を横断する複数の
分割線分で分割する方法を示す。中間フォントデータの
増大を防ぐため、分割回数は最小限にとどめる必要があ
る。分割線分で分離された各々の内部領域を囲む多角形
は、必須条件として凸多角形又は進入頂点が2個の凹多
角形でなければならない。これらの多角形は座標変換さ
れ、描画される。凸多角形は従来の第2方法で高速に描
画される。進入頂点が2個の凹多角形でも凸多角形に準
ずる速度で描画できるが、この描画速度を向上させるに
は凸多角形に近い形状であることが望ましい。以上の条
件を満たす分割手順を以下に示す。
In the following, first, regarding the first invention, a method of dividing into a convex polygon or a concave polygon having two entering vertices, a coordinate conversion method of these polygons, and a drawing method of these polygons will be described in order. . [Polygon dividing method] When the outline of a character is formed by a plurality of polygons, a method of dividing by a plurality of dividing line segments that cross the internal area of the character will be described. To prevent the increase of intermediate font data, it is necessary to keep the number of divisions to a minimum. The polygon surrounding each of the internal regions separated by the dividing line segment must be a convex polygon or a concave polygon with two entry vertices as an essential condition. These polygons are coordinate-transformed and drawn. The convex polygon is drawn at high speed by the second conventional method. Even a concave polygon having two entry vertices can be drawn at a speed similar to that of a convex polygon, but in order to improve the drawing speed, a shape close to a convex polygon is desirable. The division procedure satisfying the above conditions is shown below.

【0022】a)輪郭線上の各頂点について文字の内部
領域を見込む内角が180度より大きいか小さいかによ
り凹凸を判別する。 b)凹頂点同士を結ぶ線分が文字の内部領域に完全に含
まれるか否かにより分割線分の候補を選定する。 c)分割線分は両頂点の内角を各々2分割するので、こ
の分割によって凹頂点を消滅させるものを有力な候補と
する。これにより、凸多角形又は進入頂点が2個の凹多
角形に分割する。 d)分割された多角形の個数が少なく、形状が凸多角形
又は進入頂点が2個の凹多角形で、各多角形の面積がな
るべく均一に分かれるように実際の分割線分を決定す
る。 e)分割された多角形に凹多角形が含まれている場合に
は、その凹多角形がどの方向から見ても進入頂点が2個
以下であることを確認する。
A) The unevenness is discriminated based on whether the interior angle of the interior of the character for each vertex on the contour line is larger or smaller than 180 degrees. b) A segment line segment candidate is selected depending on whether the line segment connecting the concave vertices is completely included in the internal area of the character. c) Since the dividing line segment divides the interior angles of both vertices into two, the one that eliminates the concave vertex by this division is a strong candidate. This divides the convex polygon or the concave vertex into two concave polygons. d) The number of divided polygons is small, and the shape is a convex polygon or a concave polygon with two entry vertices, and the actual dividing line segment is determined so that the area of each polygon is divided as evenly as possible. e) When the divided polygon includes a concave polygon, it is confirmed that the concave polygon has two or less entry vertices in any direction.

【0023】図1に示す分割結果は、以上の手順に従っ
て人為的に分割線分を決定したものである。これによ
り、少数の単純な形状の多角形の集合が得られる。図8
は、上述したe)の条件の確認方法と分割方法を示す。
図8(a)の凹多角形は、頂点P1〜P7間の凹部(凹
頂点の連鎖)が、その両端辺で立てた外向き法線方向n
1及びn6の間の方向(θ1)から見るとP1とP7を
共に進入頂点とし、またP7〜P9間の凹部が、n7及
びn8の間の方向(θ2)から見るとP7とP9を進入
頂点とする。従って、θ1とθ2の両者に重なる方向か
ら見ると3個の進入頂点P1、P7、P9を持つことに
なり、条件e)を満たさない。ところが、図8(b)に
示すように、凹頂点P4を通る分割線分P4 Qで2つの
多角形に分割すれば、右側の多角形でθ1とθ2が重な
らなくなる。従って、条件e)が満たされることにな
る。θ1とθ2は同方向にも反対方向にも重ならず、そ
の和は180度を超えない。θ1やθ2の値が0に近い
ほど、凸多角形に近い凹多角形である。
The division result shown in FIG. 1 is obtained by artificially determining the division line segment according to the above procedure. This gives a small set of simple shaped polygons. Figure 8
Shows the method of confirming the condition e) and the method of division described above.
In the concave polygon of FIG. 8A, the concave portion between the vertices P1 to P7 (a chain of concave vertices) has an outward normal direction n which is erected at both ends thereof.
When viewed from the direction between 1 and n6 (θ1), P1 and P7 are both entry vertices, and the recess between P7 and P9 is P7 and P9 when viewed from the direction (θ2) between n7 and n8. And Therefore, when viewed from the direction in which both θ1 and θ2 are overlapped with each other, there are three entry vertices P1, P7, and P9, and the condition e) is not satisfied. However, as shown in FIG. 8B, if the polygon is divided by the dividing line segment P4 Q passing through the concave vertex P4 into two polygons, θ1 and θ2 do not overlap in the polygon on the right side. Therefore, the condition e) is satisfied. θ1 and θ2 do not overlap in the same direction or in the opposite direction, and their sum does not exceed 180 degrees. The closer the values of θ1 and θ2 are to 0, the closer the polygon is to the convex polygon.

【0024】[多角形の座標変換方法]図9(a)はア
ウトラインフォントの定義座標系O−xyにおいて、矩
形ABCDに内接する多角形を示す。図9(b)は次式
によって画面座標系O′−x′y′に変換した結果を示
す。 x′=ax+by+e y′=cx+dy+f この式で表される変換をアフィン変換という。これによ
り、矩形ABCDは平行四辺形A′B′C′D′に写像
され、多角形の写像はこの平行四辺形A′B′C′D′
に内接する。この多角形の写像が例えば図9(b)に示
すように、y′座標が極小となる進入頂点V′1、V′
2を持ち、y′座標が極大となる退出頂点V′3、V′
4を持つものとし、それらの原像をV1、V2、V3、
V4とする。V′1、V′2、V′3、V′4のy′座
標値を各々y′1、y′2、y′3、y′4とすると、
これらを通る水平走査線の原像は図9(a)に示す傾斜
する4本の平行線になる。これら4本の直線が平行であ
ることは図9(a)に示す式の形から明かである。ま
た、これらの4本の直線に垂直な方向(y′方向)に適
当に座標軸を設けると、その座標値がcx+dy+f即
ちy′に一致するようにできる。従って、V1、V2、
V3、V4はこの座標軸に関して進入頂点又は退出頂点
となっている。多角形の原像が任意の方向に見て2個以
下の進入頂点を持つなら、この座標軸の座標値y′に関
しても2個以下の進入頂点を持つことがわかる。従っ
て、アフィン変換によって進入頂点が3個以上になるこ
とはない。
[Polygon Coordinate Conversion Method] FIG. 9A shows a polygon inscribed in a rectangle ABCD in the outline font definition coordinate system O-xy. FIG. 9B shows the result of conversion into the screen coordinate system O'-x'y 'by the following equation. x ′ = ax + by + e y ′ = cx + dy + f The transformation represented by this equation is called an affine transformation. As a result, the rectangle ABCD is mapped to the parallelogram A'B'C'D ', and the polygonal map is mapped to this parallelogram A'B'C'D'.
Inscribe. For example, as shown in FIG. 9B, the mapping of this polygon has the entry vertices V′1 and V ′ at which the y ′ coordinates are minimal.
Exit vertices V'3, V'which have 2 and have a maximum y'coordinate.
4 and their original images are V1, V2, V3,
Set to V4. If the y'coordinate values of V'1, V'2, V'3, V'4 are y'1, y'2, y'3, y'4 respectively,
The original image of the horizontal scanning line passing through these is four inclined parallel lines shown in FIG. The fact that these four straight lines are parallel is clear from the form of the equation shown in FIG. Further, when the coordinate axes are appropriately provided in the direction perpendicular to these four straight lines (the y'direction), the coordinate value can be made to coincide with cx + dy + f, that is, y '. Therefore, V1, V2,
V3 and V4 are the entrance vertex or the exit vertex with respect to this coordinate axis. If the original image of the polygon has two or less entry vertices in an arbitrary direction, it can be seen that the coordinate value y ′ of this coordinate axis also has two or less entry vertices. Therefore, the affine transformation does not result in more than three entry vertices.

【0025】[多角形の描画方法]図10〜図12は、
本発明による文字列の走査変換フローチャートを示す。
図10で、ループは1文字を描くごとに1回実行され
るループであり、ループは1つの多角形を描くごとに
1回実行されるループである。ここで、各多角形の形状
は座標変換後の表示面上で、走査線に垂直な下向き方向
(y方向)に見て進入頂点は1個又は2個である。これ
はステップS204でy座標の増減を調べながら左右稜
線データを作成した時点で判明する。進入頂点が1個な
ら、ステップS206に進み、その進入頂点のy座標を
設定する。そして、次のステップS207では、進入頂
点から出る左右稜線の最初の線分データを(xl,h
l)及び(xr,hr)に取り出す。ステップS209
は、図12の描画処理を実行する。図12の描画処理は
一対の左右稜線間の領域描画処理である。この処理で
は、左右稜線のいずれかが退出するか(ステップS24
9)、又は指定された走査線数分の高さhだけ描画した
時に(ステップS250)、呼び出した処理に戻るもの
とする。そして、この処理は従来の第2方法の描画部分
と同様の処理を同程度の速度で実行する(ステップS2
41〜S248)。このようにして、進入頂点が1個の
多角形が描画される。進入頂点が2個の場合には、本発
明に特有の走査変換処理が行なわれる。
[Polygon drawing method] FIGS.
3 shows a scan conversion flowchart of a character string according to the present invention.
In FIG. 10, the loop is a loop executed once for each character drawn, and the loop is a loop executed once for each polygon drawn. Here, each polygonal shape has one or two entry vertices when viewed in the downward direction (y direction) perpendicular to the scanning line on the display surface after coordinate conversion. This becomes clear when the left and right ridge line data is created while checking the increase and decrease of the y coordinate in step S204. If there is one entry vertex, the process proceeds to step S206, and the y coordinate of the entry vertex is set. Then, in the next step S207, the first line segment data of the left and right ridgelines that exit from the approach vertex is (xl, h
l) and (xr, hr). Step S209
Executes the drawing process of FIG. The drawing process of FIG. 12 is a region drawing process between a pair of left and right ridges. In this process, whether any of the left and right ridgelines is leaving (step S24)
9) or when the drawing is performed by the height h corresponding to the designated number of scanning lines (step S250), the called processing is returned to. Then, this process executes the same process as the drawing part of the conventional second method at a similar speed (step S2).
41-S248). In this way, a polygon having one entry vertex is drawn. When there are two entry vertices, the scan conversion processing unique to the present invention is performed.

【0026】図13は2個の進入頂点を持つ凹多角形の
描画方法を場合分けして図解した説明図である。2個の
進入頂点V1,V2のy座標をy1,y2(y1≦y
2)とし、最初にy=y1からy=y2までの高さh=
y2−y1の領域を無条件に塗りつぶす。この状態をハ
ッチングで示す。この処理は、ステップS215で描画
A1として図12の領域描画処理を呼び出すことにより
実行する(h>0の時のみ)。
FIG. 13 is an explanatory view illustrating a method of drawing a concave polygon having two entry vertices in different cases. The y-coordinates of the two approach vertices V1 and V2 are y1 and y2 (y1 ≦ y
2), first, the height h from y = y1 to y = y2 h =
The area of y2-y1 is unconditionally filled. This state is shown by hatching. This processing is executed by calling the area drawing processing of FIG. 12 as drawing A1 in step S215 (only when h> 0).

【0027】次に、V2の高さまで塗りつぶした時点で
の左右稜線のx座標の現在値xl,xrとV2のx座標
値x2との大小関係を図10のステップS216で調べ
る。x2<x1であれば図13(a)のような状態に多
角形が置かれているから、ステップS217以下の処理
を実行する。ステップS217では、描画A2としてパ
ラメータを再設定せずに図12の描画処理を再度呼んで
いる。その結果、領域A1に引き続く領域A2が塗りつ
ぶされる。第1退出頂点V3に達すると左側稜線が退出
して描画処理を終了する。次のステップS218は右側
稜線の現在値(xr,hr)を例えば(xs,hs)な
る変数に一時退避しておく。ステップS219〜S22
1は第2進入頂点V2から始まる領域A3を描画する。
頂点V3で右側稜線が退出して戻ると、次のステップS
222では、左側稜線はそのまま使い、右側稜線だけ
(xs,hs)の値を復帰する。そして、ステップS2
23で領域A4を描画する。最後に、左右稜線が第2退
出頂点V4で同時に退出して多角形の描画を終了する。
Next, the magnitude relationship between the current values xl and xr of the x-coordinates of the left and right ridges at the time of painting to the height of V2 and the x-coordinate value x2 of V2 is checked in step S216 in FIG. If x2 <x1, the polygon is placed in the state as shown in FIG. 13 (a), and therefore the processing of step S217 and thereafter is executed. In step S217, the drawing process of FIG. 12 is called again without resetting the parameters for drawing A2. As a result, the area A2 following the area A1 is filled. When the first exit vertex V3 is reached, the left edge line exits and the drawing process ends. In the next step S218, the current value (xr, hr) of the right ridge is temporarily saved in a variable (xs, hs). Steps S219 to S22
1 draws the area A3 starting from the second approach vertex V2.
When the right ridge line exits and returns at the vertex V3, the next step S
At 222, the left edge line is used as it is, and only the right edge line is restored to the value (xs, hs). And step S2
The area A4 is drawn at 23. Finally, the left and right ridge lines simultaneously exit at the second exit vertex V4, and the drawing of the polygon is completed.

【0028】一方、ステップS216でx1<x2<x
rの場合には、図13(b)のようになっているから、
第2進入頂点V2から始まる左右稜線の間を塗りつぶさ
ないようにする。即ち、ステップS224〜S226で
は右側稜線のみV2から始まる右側稜線に交換して領域
B2を描画する。つまり、ステップS224で右側エッ
ジを退避する。そして、ステップS225で第2進入頂
点の右エッジを取り出す。この場合の右エッジは、多角
形の内部から頂点V2を見て右側のエッジである。そし
て、ステップS226で領域B2を描画する。その後、
ステップS227〜230では領域B3を描画する。つ
まり、ステップS227で第2進入頂点V2のy座標y
2を取り出す。そして、ステップS228で第2進入頂
点V2の左エッジを取り出す。この場合の左エッジは、
多角形の内部から頂点V2を見て左側のエッジである。
そして、ステップS229でステップS224において
退避した右エッジを復帰する。これにより、ステップS
230で領域B3を描画する。
On the other hand, in step S216, x1 <x2 <x
In the case of r, as shown in FIG. 13B,
The space between the right and left ridgelines starting from the second approach vertex V2 is not filled. That is, in steps S224 to S226, only the right ridge line is replaced with the right ridge line starting from V2 and the area B2 is drawn. That is, the right edge is saved in step S224. Then, in step S225, the right edge of the second entry vertex is extracted. The right edge in this case is the right edge when the vertex V2 is seen from inside the polygon. Then, in step S226, the area B2 is drawn. afterwards,
In steps S227 to 230, the area B3 is drawn. That is, in step S227, the y coordinate y of the second approach vertex V2.
Take out 2. Then, in step S228, the left edge of the second approach vertex V2 is extracted. The left edge in this case is
It is an edge on the left side when the vertex V2 is seen from the inside of the polygon.
Then, in step S229, the right edge saved in step S224 is restored. By this, step S
At 230, the area B3 is drawn.

【0029】また、ステップS216でxr<x2の場
合には、図13(c)のようになっているから、同図
(a)と同様の処理手順で多角形が描画される(ステッ
プS231〜S237)。この場合、ステップS232
では左エッジを退避し、ステップS236では左エッジ
を復帰する。同図(c)のように、多角形の辺の中に水
平な線分が含まれる場合は、ステップS204の左右稜
線データの作成時、又は図11のエッジ更新時にスキッ
プするように制御する。
If xr <x2 in step S216, the process is as shown in FIG. 13C, and therefore a polygon is drawn by the same processing procedure as that shown in FIG. 13A (steps S231-). S237). In this case, step S232
The left edge is retracted, and the left edge is restored in step S236. When a horizontal line segment is included in the sides of the polygon as shown in FIG. 7C, control is performed so as to be skipped when the left and right edge line data is created in step S204 or when the edge is updated in FIG.

【0030】(第2発明)図14〜図21は、第2発明
によるアウトライン文字塗りつぶし手順の説明図であ
る。まず、文字の輪郭線を複数の線分で形成し、かつ当
該輪郭線自身が交差しない場合に、文字に対して導入し
た基準座標y軸に関する前記輪郭線上の頂点のy座標が
極小となるすべての進入頂点を、y座標が昇順となるよ
うに、またy座標が等しければy軸を反時計回りに90
度回転した基準座標x軸に関するx座標が降順となるよ
うに順序付けた進入頂点リストを作成する。そして、各
々の進入頂点から輪郭線に沿って文字の内部領域を左側
に見込む方向及び右側に見込む方向に、各々y座標が極
大となる退出頂点に至る線分の系列として左側稜線及び
右側稜線を得る。この後、次の手順で塗りつぶしを行な
う。
(Second Invention) FIGS. 14 to 21 are explanatory views of the outline character filling procedure according to the second invention. First, if the contour line of a character is formed by a plurality of line segments and the contour lines themselves do not intersect, the y coordinate of the vertex on the contour line with respect to the reference coordinate y axis introduced to the character is minimal. The entry vertices of y so that the y coordinates are in ascending order, and if the y coordinates are equal, the y axis is rotated counterclockwise 90
An approach vertex list is created in which the x-coordinates about the reference coordinate x-axis rotated by degrees are in descending order. Then, the left ridge line and the right ridge line are defined as a series of line segments from the respective entry vertices along the contour line to the leftward and rightward directions of the character internal region, respectively, to the exit vertices where the y coordinate is maximum. obtain. After that, painting is performed according to the following procedure.

【0031】まず、図14に示すように、進入頂点リス
トの未使用の進入頂点から始まる左側稜線及び右側稜線
に挟まれる領域を走査線単位に塗りつぶし、当該走査線
が次の進入頂点に達したとき、その進入頂点の位置に応
じて以下のような塗りつぶしを行なう。次の進入頂点が
図15に示すように現在塗りつぶしを行なっている領域
の外側に現われたときは、現在塗りつぶしを行なってい
る領域の塗りつぶしを続けるか新たに生じた領域の塗り
つぶしを行なうかのいずれかを選択する。例えば、次の
進入頂点が現在塗りつぶしを行なっている領域の右外側
に現われたときはこれを無視し、図15の点線に示すよ
うに現在塗りつぶしを行なっている領域の塗りつぶしを
続ける。
First, as shown in FIG. 14, the area sandwiched by the left edge line and the right edge line starting from an unused entry vertex in the entry vertex list is filled in units of scanning lines, and the scanning line reaches the next entry vertex. At this time, the following filling is performed according to the position of the entry vertex. When the next entry vertex appears outside the currently filled area as shown in FIG. 15, either the area currently being filled is continuously filled or the newly created area is filled. Or select. For example, when the next entry vertex appears on the right outer side of the area currently being filled, this is ignored and the area currently being filled is filled as shown by the dotted line in FIG.

【0032】一方、図16に示すように次の進入頂点が
現在塗りつぶしを行なっている領域の内側に現われたと
きは、左側稜線及び右側稜線に挟まれる領域が2つ生じ
る。このときは、一方の組合せの左右稜線データをスタ
ックメモリに格納する。例えば、図16の例では、右側
の領域の左右稜線データを第1のスタックメモリに格納
し、点線で示すように左側の領域の塗りつぶしを行な
う。また、図17に示すように次の進入頂点が現在塗り
つぶしを行なっている領域の左外側に現われたときは、
現在塗りつぶしを行なっている領域の左右稜線データを
第1のスタックメモリに格納する。そして、点線で示す
ように次の進入頂点から始まる領域の塗りつぶしを行な
う。以上のように塗りつぶし領域が2つに分かれたとき
は、左側の領域を優先的に塗りつぶすようにする。
On the other hand, as shown in FIG. 16, when the next entry vertex appears inside the currently filled area, there are two areas sandwiched by the left edge line and the right edge line. At this time, the left and right edge data of one combination is stored in the stack memory. For example, in the example of FIG. 16, the right and left edge data of the right side area is stored in the first stack memory, and the left side area is filled as indicated by the dotted line. Also, as shown in FIG. 17, when the next entry vertex appears outside the left side of the area currently being filled,
The left and right edge data of the area currently being filled is stored in the first stack memory. Then, as shown by the dotted line, the area starting from the next entry vertex is filled. When the filled area is divided into two as described above, the left side area is preferentially filled.

【0033】他方、走査線が退出頂点に達することによ
り、図18に示すように右側稜線が退出するときは、現
在塗りつぶしを行なっている領域の左側稜線データを第
2のスタックメモリに格納し、第1のスタックメモリに
格納された左側稜線及び右側稜線を回復する。そして、
点線で示すように、回復した左側稜線及び右側稜線に挟
まれる領域を走査線単位に塗りつぶす。
On the other hand, when the scanning line reaches the exit vertex and the right ridge exits as shown in FIG. 18, the left ridge data of the area currently being filled is stored in the second stack memory, Restore the left edge and right edge stored in the first stack memory. And
As indicated by the dotted line, the area sandwiched between the restored left and right ridges is filled in scan line units.

【0034】また、図19に示すように左側稜線が退出
するときは、第2のスタックメモリに格納された左側稜
線データを回復し、点線で示す領域の塗りつぶしを行な
う。一方、図20に示すように右側稜線が退出し、第1
のスタックメモリが空のときは、点線で示すように未使
用の進入頂点から始まる領域の塗りつぶしを開始する。
そして、図21に示すように左右両方の稜線が退出し、
未使用の進入頂点がないときは塗りつぶしを終了する。
As shown in FIG. 19, when the left ridgeline leaves, the left ridgeline data stored in the second stack memory is restored and the area indicated by the dotted line is filled. On the other hand, as shown in FIG. 20, the right ridge line exits and the first
When the stack memory of is empty, as shown by the dotted line, filling of the area starting from an unused entry vertex is started.
Then, as shown in FIG. 21, both the left and right ridgelines leave,
When there are no unused entry vertices, the filling is finished.

【0035】図22及び図23は、第2発明による1文
字分の走査変換のフローチャートを示す。また、図24
は、「O」のアウトライン文字をこのフローチャートに
従って塗りつぶした結果を示す。そして、図25は、
「愛」のアウトライン文字を回転した後、このフローチ
ャートに従って塗りつぶした結果を示す。図24及び図
25では、文字の内部領域が5種類の塗りつぶしパター
ンを用いて塗られているが、これらの塗りつぶしパター
ン〜は図24及び図25のフローチャートの処理経
路上の〜のどのルートを通過したかを示している。
22 and 23 show a flowchart of scan conversion for one character according to the second invention. Also, FIG.
Indicates the result of filling the outline character “O” according to this flowchart. And in FIG. 25,
After rotating the outline character of "love", the result of painting according to this flowchart is shown. In FIG. 24 and FIG. 25, the internal area of the character is painted using five types of paint patterns, but these paint patterns ~ pass through any route of ~ on the processing paths of the flowcharts of FIGS. 24 and 25. Shows what you did.

【0036】図22のステップS301では、進入頂点
リストを作成する。図24の例では、進入頂点は2つあ
る。そして、ステップS302でRスタック(第1のス
タックメモリ)及びLスタック(第2のスタックメモ
リ)を空にする。その後、ステップS303で進入頂点
リストの先頭から見ていき、ステップS304で未使用
の進入頂点があるか否かを判定する。未使用の進入頂点
があるときは、ステップS305で一番最初の進入頂点
を各走査パラメータにセットする。そして、ステップS
306で次の進入頂点をynextにセットする。
In step S301 of FIG. 22, an entry vertex list is created. In the example of FIG. 24, there are two entry vertices. Then, in step S302, the R stack (first stack memory) and the L stack (second stack memory) are emptied. Then, in step S303, the entry vertex list is viewed from the beginning, and in step S304, it is determined whether there is an unused entry vertex. If there is an unused entry vertex, the first entry vertex is set in each scanning parameter in step S305. And step S
At 306, the next entry vertex is set to y next.

【0037】これにより、ステップS307〜S310
で図24のの領域が塗りつぶされる。そして、次の進
入頂点のところまで塗りつぶされると、ステップS30
7の判定を抜け、図23のステップS311及びS31
4で左方進入か右方進入かが判定される。図24の例で
は、左方進入でも右方進入でもなく、塗りつぶす部分が
左右に分かれる場合である。従って、ステップS315
が実行され、現在描画中の右側の稜線のパラメータがR
スタック(第1のスタックメモリ)に格納される。ま
た、ステップS316で進入頂点の左側のパラメータが
Rスタックに格納され、現在描画中の領域の右側のパラ
メータが進入頂点の右側のパラメータに変更される。そ
して、ステップS317で次の進入頂点がynextにセッ
トされるが、この場合、次の進入頂点はないのでその旨
の情報がセットされる。
As a result, steps S307 to S310 are performed.
The area of FIG. 24 is filled with. When the next entry vertex is filled, step S30
After exiting the determination of step 7, steps S311 and S31 of FIG.
At 4, it is determined whether the vehicle is to the left or to the right. In the example of FIG. 24, the part to be filled is divided into the left and right, not the left approach or the right approach. Therefore, step S315
Is executed and the parameter of the right ridge line currently being drawn is R
It is stored in the stack (first stack memory). Further, in step S316, the parameter on the left side of the entry vertex is stored in the R stack, and the parameter on the right side of the area currently being drawn is changed to the parameter on the right side of the entry vertex. Then, in step S317, the next entry vertex is set to ynext. In this case, since there is no next entry vertex, the information to that effect is set.

【0038】これにより、ステップS307〜S310
で図のの領域が塗りつぶされる。そして、退出頂点の
ところまで塗りつぶされると、ステップS310の判定
を抜け、図23のステップS318及びS320で左の
み退出か右のみ退出かが判定される。図24の例では右
のみ退出であるので、ステップS321が実行され、現
在描画中の領域の左側のパラメータがLスタック(第2
のスタックメモリ)に格納される。そして、ステップS
322でRスタックは空か否かが判定され、図24の例
では空でないので、ステップS323でRスタックから
左右の描画パラメータが取り出される。そして、ステッ
プS324で次の進入頂点がynextにセットされるが、
この場合、次の進入頂点はないのでその旨の情報がセッ
トされる。
As a result, steps S307 to S310 are performed.
The area in the figure is filled with. When the exit vertex is filled, the determination in step S310 is skipped, and in steps S318 and S320 of FIG. 23, it is determined whether only the left exit or the right exit. In the example of FIG. 24, only the right exit is performed, so step S321 is executed, and the parameter on the left side of the area currently being drawn is the L stack (second
Stack memory). And step S
At 322, it is determined whether the R stack is empty or not. In the example of FIG. 24, the R stack is not empty, so the drawing parameters on the left and right are extracted from the R stack at step S323. Then, in step S324, the next entry vertex is set to y next,
In this case, since there is no next entry vertex, the information to that effect is set.

【0039】これにより、ステップS307〜S310
で図24のの領域が塗りつぶされる。そして、退出頂
点のところまで塗りつぶされると、ステップS310の
判定を抜け、図23のステップS318及びS320で
左のみ退出か右のみ退出かが判定される。図24の例で
は左のみ退出であるので、ステップS319が実行さ
れ、Lスタックの内容が左側の描画パラメータにセット
される。
As a result, steps S307 to S310 are performed.
The area of FIG. 24 is filled with. When the exit vertex is filled, the determination in step S310 is skipped, and in steps S318 and S320 of FIG. 23, it is determined whether only the left exit or the right exit. In the example of FIG. 24, only the left side exits, so step S319 is executed and the contents of the L stack are set in the drawing parameter on the left side.

【0040】これにより、ステップS307〜S310
で図のの領域が塗りつぶされる。そして、退出頂点の
ところまで塗りつぶされると、ステップS310の判定
を抜け、図23のステップS318及びS320で左の
み退出か右のみ退出かが判定される。図24の例では左
右両方の退出であるので、ステップS322が実行さ
れ、Rスタックはからか否かが判定される。このとき、
Rスタックは空になっているので、図22のステップS
303に戻る。そして、未使用の進入頂点はないので、
ステップS304の判定を抜けて描画処理が終了する。
As a result, steps S307 to S310 are performed.
The area in the figure is filled with. When the exit vertex is filled, the determination in step S310 is skipped, and in steps S318 and S320 of FIG. 23, it is determined whether only the left exit or the right exit. In the example of FIG. 24, since both left and right exits, step S322 is executed and it is determined whether the R stack is empty. At this time,
Since the R stack is empty, step S in FIG.
Return to 303. And since there are no unused entry vertices,
The drawing process ends after passing the determination in step S304.

【0041】次に、図25に示す「愛」の文字を塗りつ
ぶす場合について説明する。まず、ステップS301で
「愛」の文字についての進入頂点のリストを作成し、ス
テップS302でRスタック及びLスタックを空にす
る。そして、ステップS304を経てステップS305
で最初の進入頂点P1が描画パラメータにセットされ
る。その際、ステップS306で次の進入頂点P2がy
nextにセットされる。
Next, the case of painting the character "love" shown in FIG. 25 will be described. First, in step S301, a list of entry vertices for the character "love" is created, and in step S302, the R stack and the L stack are emptied. Then, through step S304, step S305
The first entry vertex P1 is set as a drawing parameter. At that time, in step S306, the next entry vertex P2 is y.
Set to next.

【0042】これにより、ステップS307〜S310
で最初の進入頂点P1のところからパターンでの塗り
つぶしが行なわれる。次の進入頂点P2のところまで行
くと、ステップS307を抜け、ステップS311、S
314の判定が行なわれるが、この進入頂点P2は右方
進入であるため無視され、ステップS317で次の進入
頂点P3がynextにセットされる。そして、図22のス
テップS307に戻り、ステップS307〜S310で
パターンでの塗りつぶしが続けられる。次の進入頂点
P3のところまで行っても進入頂点P3は右方進入であ
るため進入頂点P2と同様に無視される。従って、進入
頂点P4のところまでパターンでの塗りつぶしが行な
われる。
As a result, steps S307 to S310 are performed.
At, the pattern is filled from the first entry vertex P1. When reaching the next approaching vertex P2, the process exits step S307, and steps S311 and S3.
Although the determination at 314 is made, this approach vertex P2 is ignored because it is a right approach, and the next approach vertex P3 is set to ynext in step S317. Then, returning to step S307 of FIG. 22, the pattern filling is continued in steps S307 to S310. Even if the approaching vertex P3 is reached, the approaching vertex P3 is ignored like the approaching vertex P2 because it is a rightward approach. Therefore, pattern filling is performed up to the entry vertex P4.

【0043】進入頂点P4のところでステップS307
を抜け、図23のステップS311及びS314の判定
が行なわれると、進入頂点P4は左方進入でも右方進入
でもないので、ステップS315が実行され、右側の稜
線データがRスタックに格納される。そして、ステップ
S316で進入頂点P4の左側の稜線データがRスタッ
クに格納され、右側の稜線データが右側の描画パラメー
タにセットされる。その際、ステップS317で次の進
入頂点P5がynextにセットされる。
At the entrance vertex P4, step S307
When exiting and the determinations of steps S311 and S314 of FIG. 23 are made, since the entry vertex P4 is neither leftward entry nor rightward entry, step S315 is executed and the right edge data is stored in the R stack. Then, in step S316, the ridge line data on the left side of the entry vertex P4 is stored in the R stack, and the ridge line data on the right side is set to the drawing parameter on the right side. At that time, the next approach vertex P5 is set to ynext in step S317.

【0044】これにより、図22のステップS307〜
S310でパターンでの塗りつぶしが開始される。進
入頂点P5、P6は右方進入であるので無視される。従
って、進入頂点P7のところまでパターンでの塗りつ
ぶしが行なわれる。進入頂点P7は左方進入でも右方進
入でもないので、進入頂点P4のときと同様の処理がス
テップS315〜S317で行なわれる。同様に、進入
頂点P8〜P11は右方進入であるので無視され、進入
頂点P12のところまでパターンでの塗りつぶしが行
なわれる。進入頂点P12は左方進入でも右方進入でも
ないので、進入頂点P4、P7のときと同様の処理がス
テップS315〜S317で行なわれる。そして、退出
頂点T1のところでステップS310の判定を抜け、ス
テップS318、S320の判定で中央の退出頂点であ
ると判定され、ステップS322の判定が行なわれる。
As a result, steps S307 through S307 of FIG.
In S310, pattern filling is started. The approach vertices P5 and P6 are ignored because they are right approaches. Therefore, pattern filling is performed up to the entry vertex P7. Since the entry vertex P7 is neither leftward entry nor rightward entry, the same processing as in the entry vertex P4 is performed in steps S315 to S317. Similarly, since the approach vertices P8 to P11 are rightward approaches, they are ignored and the pattern is filled up to the approach vertex P12. Since the entry vertex P12 is neither leftward entry nor rightward entry, the same processing as in the entry vertices P4 and P7 is performed in steps S315 to S317. Then, at the exit vertex T1, the determination in step S310 is exited, it is determined to be the central exit vertex in the determinations in steps S318 and S320, and the determination in step S322 is performed.

【0045】ステップS322の判定では、Rスタック
が空でないため、ステップS323が実行され、Rスタ
ックの内容が描画パラメータにセットされる。その際、
ステップS324では次の進入頂点P13がセットされ
る。これにより、ステップS307〜S310で領域R
3についてパターンでの塗りつぶしが行なわれる。そ
して、退出頂点T2のところで塗りつぶしが終り、ステ
ップS321でそのときの左側の稜線データがLスタッ
クに格納される。その後、ステップS323でRスタッ
クの次の内容が左右稜線データにセットされる。これに
より、領域R4についてパターンでの塗りつぶしが行
なわれる。同様に、領域R5についてパターンでの塗
りつぶしが行なわれる。この後、Rスタックは空にな
り、ステップS322を抜けて図22のステップS30
3に戻る。
In the determination of step S322, since the R stack is not empty, step S323 is executed and the contents of the R stack are set in the drawing parameter. that time,
In step S324, the next entry vertex P13 is set. Thereby, in steps S307 to S310, the region R
The pattern 3 is filled with the pattern. Then, the filling is finished at the exit vertex T2, and the left ridge line data at that time is stored in the L stack at step S321. Then, in step S323, the next contents of the R stack are set in the left and right edge line data. As a result, the area R4 is filled with the pattern. Similarly, the area R5 is filled with a pattern. After this, the R stack becomes empty, and the process exits step S322 and returns to step S30 of FIG.
Return to 3.

【0046】以上の処理を繰り返して図25に示すよう
に「愛」の文字の塗りつぶしが行なわれる。その結果
は、以下のようになる。 ステップS303から始まる進入頂点リストの最初の
未使用の進入頂点からの領域描画はパターンで塗りつ
ぶされる。この塗りつぶしは7回繰り返される。 進入頂点が描画領域内部に進入し、左右に分けられた
場合の左側の(x座標の小さい)領域はパターンで塗
りつぶされる。その際、右側の領域はステップS31
5、S316でRスタックに格納される。
By repeating the above processing, the character "love" is painted as shown in FIG. The result is as follows. The area drawing from the first unused entry vertex of the entry vertex list starting from step S303 is filled with a pattern. This filling is repeated 7 times. When the entry vertex enters the drawing area and is divided into the left and right areas, the area on the left side (small x coordinate) is filled with a pattern. In that case, the area on the right side is step S31.
5, stored in the R stack in S316.

【0047】左側の領域の描画を終了または中断し、
ステップS323でRスタックを取り出して右側の領域
の描画を再開するときはパターンで塗りつぶされる。
左側の領域の描画を中断するのは右側稜線のみが退出し
た場合で、残った左側の稜線はステップS321でLス
タックに格納される。 進入頂点によって分けられた左右の領域が合流すると
きはパターンで塗りつぶされる。これは右側の領域の
左側稜線のみが退出した場合で、ステップS319でL
スタックの左側稜線が取り出される。 進入頂点が描画領域の外部の左方に進入した場合はパ
ターンで塗りつぶされる。図25に示す「愛」の文字
では3つの領域がパターンで塗りつぶされる。
End or suspend drawing of the left area,
In step S323, when the R stack is taken out and the drawing of the area on the right side is restarted, it is filled with the pattern.
The drawing of the left side area is interrupted when only the right side edge line leaves, and the remaining left side edge line is stored in the L stack in step S321. When the left and right areas separated by the entry vertex merge, they are filled with a pattern. This is the case where only the left ridgeline of the right side area has exited, and in step S319, L
The left edge of the stack is fetched. When the entry vertex enters the left side outside the drawing area, it is filled with a pattern. In the character “love” shown in FIG. 25, three areas are filled with a pattern.

【0048】また、進入頂点が描画領域の外部の右方に
進入した場合は、その進入頂点は無視され、描画領域は
変更されない。図25の例では、最初に文字の左側部分
を描画中は、右側の多くの進入頂点は上記の条件
を満たさないので使用されないまま残る。図22及び図
23のフローチャートではこの未使用の進入頂点に対す
る処理をそのような未使用の進入頂点がなくなるまで続
けている。そして、進入頂点リストの次の未使用の進入
頂点はそのy座標ynextによって進入を検出される。進
入も退出もない領域の描画中はステップS307〜S3
10のループを回る。図22のステップS307〜S3
10は、図11とほぼ同様の処理内容である。従って、
第2発明の描画処理も第1発明の描画処理と同様に、第
1の従来方法と比較して処理速度が非常に大きくなる。
When the entry vertex enters the right side outside the drawing area, the entry vertex is ignored and the drawing area is not changed. In the example of FIG. 25, while the left side portion of the character is first drawn, many of the entry vertices on the right side do not satisfy the above condition and thus remain unused. In the flowcharts of FIGS. 22 and 23, the processing for this unused approach vertex is continued until there is no such unused approach vertex. Then, the entry of the next unused entry vertex in the entry vertex list is detected by its y coordinate y next. Steps S307 to S3 are being performed while drawing an area with neither entry nor exit.
Go around 10 loops. Steps S307 to S3 of FIG.
The processing content 10 is almost the same as that shown in FIG. Therefore,
Like the drawing process of the first invention, the drawing process of the second invention has a very high processing speed as compared with the first conventional method.

【0049】[従来方法との性能比較]図26は、20
0×200画素の「愛」のアウトライン文字を22.5
度ずつ回転した16通りの表示結果を示す。また、図2
7は、第1の従来方法、第2の従来方法、本発明の第1
発明、第2発明の計4つの方法の性能測定結果を棒グラ
フで示す。図27のグラフからわかるように、従来の第
1方法では回転しない「愛」の文字を描くのに5.4ms
ecかかり、座標変換して45度回転した場合には8.4
msecかかる。これに対して、第1発明では回転しない場
合1.9msec、45度回転した場合2.5msecであり、
3倍前後高速になっている。その他の回転角でも同様に
高速になっている。
[Performance Comparison with Conventional Method] FIG.
22.5 outline characters of "love" of 0x200 pixels
16 shows the display results of 16 rotations. Also, FIG.
7 is a first conventional method, a second conventional method, and a first method of the present invention.
The bar graph shows the performance measurement results of the four methods of the invention and the second invention. As can be seen from the graph in FIG. 27, it takes 5.4 ms to draw the character of “love” that does not rotate with the conventional first method.
If ec is applied and the coordinates are converted and rotated 45 degrees, 8.4
It takes msec. On the other hand, in the first invention, it is 1.9 msec when not rotating and 2.5 msec when rotating 45 degrees,
About 3 times faster. At other rotation angles, the speed is similarly high.

【0050】また、第2発明も第1発明と同程度の性能
を示す。これは従来の第1方法がAELの処理に大半の
時間を費やすことと、AELを用いて間接的に稜線デー
タを呼び出すことを水平線分描画の小さな処理単位で多
数回繰り返すのに対し、第1発明及び第2発明では一度
呼び出した一対の稜線データを用いて領域単位で描画を
実行できるからである。第2の従来方法でも同様の性質
により高速な塗りつぶしが行なえるが、回転のない正立
文字の場合にのみ描画速度が最大(1.2msec)とな
り、回転した場合には第1の従来方法よりもかえって処
理が遅くなる。
The second invention also exhibits the same performance as the first invention. This is because the first method of the related art spends most of the time for processing the AEL, and indirectly calls edge data using the AEL is repeated many times in a small processing unit of horizontal line segment drawing. This is because in the invention and the second invention, drawing can be executed in area units using a pair of edge line data that has been called once. With the second conventional method, high-speed filling can be performed due to the same property, but the drawing speed is maximum (1.2 msec) only for upright characters without rotation, and when rotated, it is faster than the first conventional method. On the contrary, the processing becomes slow.

【0051】尚、上述した実施例においては、例えば、
第2発明の実施例において、2つの塗りつぶし領域が現
われた場合、左側の領域を優先的に塗りつぶすようにし
たが、本発明はこれに限定されるものではなく、右側を
優先的に塗りつぶすようにしてもよいことはいうまでも
ない。
In the above embodiment, for example,
In the embodiment of the second invention, when two filled areas appear, the left area is preferentially filled, but the present invention is not limited to this, and the right side is preferentially filled. It goes without saying that it is okay.

【0052】[0052]

【発明の効果】以上説明したように、第1発明のアウト
ライン文字描画方法によれば、文字の内部領域を所定数
以下の進入頂点を持つ多角形に分割するようにしたの
で、当該多角形を塗りつぶすことにより、文字を回転す
るなどの座標変換を施しても、高速な塗りつぶしを行な
うことができる。また、進入頂点が1個の凸多角形に限
らず、所定数の進入頂点を持つ凹多角形も許容すること
で、少数の単純な多角形に容易に分割することができ
る。更に、多角形分割の結果は中間フォントデータとし
て描画を要求される文字について予め作成し記憶してお
くことにより、分割過程の処理が描画処理の中に含まれ
ず、描画用に最適な分割が可能である。そして、これら
の多角形には、高速な塗りつぶしを行なうことができ、
この性質は多角形を回転した場合にも維持することがで
きる。一方、第2発明のアウトライン描画方法によれ
ば、文字の内部領域が進入頂点及び退出頂点を通る走査
線によって分割され、分割された領域毎に高速に描画さ
れることとなるので、文字を塗りつぶすなどした場合に
も、多角形分割をせずに高速な塗りつぶしを行なうこと
ができる。
As described above, according to the outline character drawing method of the first aspect of the present invention, the internal area of the character is divided into polygons having a predetermined number or less of entry vertices. By filling, high-speed filling can be performed even if coordinate conversion such as rotation of characters is performed. Further, not only a convex polygon having one entry vertex but also a concave polygon having a predetermined number of entry vertices is allowed, so that the polygon can be easily divided into a small number of simple polygons. Furthermore, the result of polygon division is created and stored in advance as intermediate font data for the characters that are required to be drawn, so the process of the dividing process is not included in the drawing process, and it is possible to perform the optimum division for drawing. Is. And these polygons can be filled fast,
This property can be maintained even when the polygon is rotated. On the other hand, according to the outline drawing method of the second aspect of the present invention, the internal area of the character is divided by the scanning line passing through the entry vertex and the exit vertex, and each segmented area is drawn at high speed. Even in such a case, high-speed filling can be performed without dividing the polygon.

【図面の簡単な説明】[Brief description of drawings]

【図1】第1発明による文字の多角形分割の例の説明図
である。
FIG. 1 is an explanatory diagram of an example of polygon division of a character according to the first invention.

【図2】第1の従来方法による文字塗りつぶし方法の説
明図である。
FIG. 2 is an explanatory diagram of a character filling method according to a first conventional method.

【図3】第1の従来方法による走査変換手順のフローチ
ャート(その1)である。
FIG. 3 is a flowchart (part 1) of a scan conversion procedure according to a first conventional method.

【図4】第1の従来方法による走査変換手順のフローチ
ャート(その2)である。
FIG. 4 is a flowchart (No. 2) of the scan conversion procedure according to the first conventional method.

【図5】従来方法によるアクティブエッジリストの構成
図である。
FIG. 5 is a configuration diagram of an active edge list according to a conventional method.

【図6】第2の従来方法による文字塗りつぶし方法の説
明図である。
FIG. 6 is an explanatory diagram of a character filling method according to a second conventional method.

【図7】第2の従来方法による走査変換手順のフローチ
ャートである。
FIG. 7 is a flowchart of a scan conversion procedure according to a second conventional method.

【図8】凹多角形の分割方法の説明図である。FIG. 8 is an explanatory diagram of a method of dividing a concave polygon.

【図9】凹多角形の座標変換の説明図である。FIG. 9 is an explanatory diagram of coordinate conversion of a concave polygon.

【図10】第1発明による走査変換手順のフローチャー
ト(その1)である。
FIG. 10 is a flowchart (No. 1) of the scan conversion procedure according to the first invention.

【図11】第1発明による走査変換手順のフローチャー
ト(その2)である。
FIG. 11 is a flowchart (No. 2) of the scan conversion procedure according to the first invention.

【図12】第1発明による走査変換手順のフローチャー
ト(その3)である。
FIG. 12 is a flowchart (No. 3) of the scan conversion procedure according to the first invention.

【図13】凹多角形の描画方法の説明図である。FIG. 13 is an explanatory diagram of a method of drawing a concave polygon.

【図14】第2発明によるアウトライン文字塗りつぶし
手順(その1)の説明図である。
FIG. 14 is an explanatory diagram of an outline character filling procedure (No. 1) according to the second invention.

【図15】第2発明によるアウトライン文字塗りつぶし
手順(その2)の説明図である。
FIG. 15 is an explanatory diagram of an outline character filling procedure (No. 2) according to the second invention.

【図16】第2発明によるアウトライン文字塗りつぶし
手順(その3)の説明図である。
FIG. 16 is an explanatory diagram of an outline character filling procedure (3) according to the second invention.

【図17】第2発明によるアウトライン文字塗りつぶし
手順(その4)の説明図である。
FIG. 17 is an explanatory diagram of an outline character filling procedure (No. 4) according to the second invention.

【図18】第2発明によるアウトライン文字塗りつぶし
手順(その5)の説明図である。
FIG. 18 is an explanatory diagram of an outline character filling procedure (5) according to the second invention.

【図19】第2発明によるアウトライン文字塗りつぶし
手順(その6)の説明図である。
FIG. 19 is an explanatory diagram of an outline character filling procedure (6) according to the second invention.

【図20】第2発明によるアウトライン文字塗りつぶし
手順(その7)の説明図である。
FIG. 20 is an explanatory diagram of an outline character filling procedure (7) according to the second invention.

【図21】第2発明によるアウトライン文字塗りつぶし
手順(その8)の説明図である。
FIG. 21 is an explanatory diagram of an outline character filling procedure (8) according to the second invention.

【図22】第2発明による走査変換手順のフローチャー
ト(その1)である。
FIG. 22 is a flowchart (1) of a scan conversion procedure according to the second invention.

【図23】第2発明による走査変換手順のフローチャー
ト(その2)である。
FIG. 23 is a flowchart (No. 2) of the scan conversion procedure according to the second invention.

【図24】第2発明による文字塗りつぶし結果(その
1)の説明図である。
FIG. 24 is an explanatory diagram of a character filling result (No. 1) according to the second invention.

【図25】第2発明による文字塗りつぶし結果(その
2)の説明図である。
FIG. 25 is an explanatory diagram of a character filling result (No. 2) according to the second invention.

【図26】回転文字の表示結果の説明図である。FIG. 26 is an explanatory diagram of a display result of rotated characters.

【図27】第1発明及び第2発明と従来方法との性能比
較図である。
FIG. 27 is a performance comparison diagram between the first invention and the second invention and the conventional method.

【符号の説明】[Explanation of symbols]

+1〜+13 多角形 +1 to +13 polygon

Claims (3)

【特許請求の範囲】[Claims] 【請求項1】 文字の輪郭線を複数の線分の集合で形成
し、当該複数の線分で囲まれた内部領域を複数の多角形
に分割する場合において、 当該各多角形の内部領域の論理和が前記文字の内部領域
全体となるようにし、かつ、前記すべての多角形の形状
が任意の方向に設定された座標軸に関する位置座標が極
小となる進入頂点の数が所定数以下となるように前記各
多角形を選定し、 当該各多角形の線分のデータを前記文字の中間フォント
データとして予め用意し、 当該中間フォントデータである各多角形を読み出して座
標変換し、 当該座標変換した各多角形と走査線との交点を認識して
当該交点間を塗り潰すことを特徴とするアウトライン文
字描画方法。
1. When a contour line of a character is formed by a set of a plurality of line segments and an inner region surrounded by the plurality of line segments is divided into a plurality of polygons, the inner region of each polygon is The logical sum is for the entire internal area of the character, and the number of entry vertices at which the position coordinates on the coordinate axes in which all the polygonal shapes are set in arbitrary directions are the minimum is less than or equal to a predetermined number. The polygons are selected, line segment data of the polygons are prepared in advance as intermediate font data for the characters, the polygons that are the intermediate font data are read out, the coordinates are converted, and the coordinates are converted. An outline character drawing method characterized by recognizing an intersection between each polygon and a scanning line and filling the space between the intersections.
【請求項2】 文字の輪郭線を複数の線分で形成し、か
つ当該輪郭線自身が交差しない場合に、基準座標y軸に
関する前記輪郭線上の頂点のy座標が極小となるすべて
の進入頂点を、y座標が昇順となるように、またy座標
が等しければy軸を反時計回りに90度回転した基準座
標x軸に関するx座標が降順となるように順序付けた進
入頂点リストを得て、 前記各々の進入頂点から前記輪郭線に沿って文字の内部
領域を左側に見込む方向及び右側に見込む方向に、各々
y座標が極大となる退出頂点に至る線分の系列として左
側稜線及び右側稜線を得て、 前記進入頂点リストの未使用の進入頂点から始まる左側
稜線及び右側稜線に挟まれる領域を走査線単位に塗りつ
ぶし、 当該走査線が前記進入頂点に達することにより、別の左
側稜線及び右側稜線に挟まれる領域が生じるときは、現
在の左側稜線と右側稜線及び別の左側稜線と右側稜線の
いずれか一方の組合せの左右稜線データをスタックメモ
リに格納し、 他方の組合せの左側稜線及び右側稜線に挟まれる領域を
走査線単位に塗りつぶし、 当該走査線が前記退出頂点に達することにより、前記左
側稜線又は右側稜線が退出するときは、前記スタックメ
モリに格納された左側稜線及び右側稜線を回復し、 当該回復した左側稜線及び右側稜線に挟まれる領域を走
査線単位に塗りつぶすことを特徴とするアウトライン文
字描画方法。
2. All entry vertices in which the y-coordinate of the vertex on the contour line with respect to the reference coordinate y-axis is minimum when the contour line of the character is formed by a plurality of line segments and the contour lines themselves do not intersect. To obtain an entry vertex list in which the y-coordinates are in ascending order, and if the y-coordinates are equal, the x-coordinates with respect to the reference coordinate x-axis rotated 90 degrees in the counterclockwise direction are in descending order, A left ridge line and a right ridge line are defined as a series of line segments from the respective entry vertices to the exit vertex where the y coordinate is maximized in a direction looking to the left and a direction looking to the right of the inner region of the character along the contour line. Then, the area sandwiched between the left edge line and the right edge line starting from an unused entry vertex in the entry vertex list is filled in for each scan line, and when the scan line reaches the entry vertex, another left edge line and a right edge line are created. When a region between ridge lines occurs, the left and right ridge line data of the current left ridge line and right ridge line and another left ridge line and right ridge line combination is stored in the stack memory, and the left ridge line and right side ridge line of the other combination are stored. When the left ridge line or the right ridge line exits by filling the area sandwiched by the ridge lines in units of scanning lines and the scan line reaches the exit vertex, the left ridge line and the right ridge line stored in the stack memory are restored. The outline character drawing method is characterized in that the area sandwiched between the restored left edge line and right edge line is filled in units of scanning lines.
【請求項3】 進入頂点リストの未使用の進入頂点から
始まる左側稜線及び右側稜線に挟まれる領域を走査線単
位に塗りつぶし、 前記領域を挟む左側稜線又は右側稜線が退出頂点に達す
るか、又は前記走査線が進入頂点リストの次の未使用の
進入頂点に達するまで前記領域の塗りつぶしを続け、 前記走査線が前記進入頂点に達した場合に、前記進入頂
点のx座標が前記左右稜線のx座標の現在値より大きい
ならば当該進入頂点を使用せずに前記領域の塗りつぶし
を継続し、 前記進入頂点が前記左側稜線と前記右側稜線との中間に
あれば、前記進入頂点から始まる別の左側稜線及び前記
右側稜線を対として第1のスタックメモリに格納し、元
の左側稜線及び前記進入頂点から始まる別の右側稜線の
間の領域を塗りつぶし、 前記進入頂点のx座標が前記左側稜線のx座標の現在値
より小さいならば、前記元の左側稜線及び右側稜線の対
を前記第1のスタックメモリに格納し、当該進入頂点か
ら始まる別の左側稜線及び右側稜線の間の領域を塗りつ
ぶし、 左側稜線又は右側稜線が退出頂点に達した場合に、前記
右側稜線のみが退出頂点に達した場合は、前記左側稜線
を第2のスタックメモリに格納し、前記第1のスタック
メモリに格納された最新の左側稜線及び右側稜線の対を
回復し、y座標を再設定して塗りつぶしを再開し、 前記左側稜線のみが退出頂点に達した場合は、前記第2
のスタックメモリに格納された最新の左側稜線を回復
し、現在の右側稜線とともに用いて塗りつぶしを再開
し、 前記右側稜線が退出頂点に達した場合に、前記第1のス
タックメモリが空ならば、y座標が最も小さい未使用の
進入頂点からの領域の塗りつぶしを再開し、未使用の進
入頂点がなければ塗りつぶしを終了することを特徴とす
る請求項2記載のアウトライン文字描画方法。
3. The area between the left ridge line and the right ridge line starting from an unused entry vertices in the entry vertices list is filled in units of scanning lines, and the left ridge line or the right ridge line sandwiching the region reaches the exit vertex, or Continuing to fill the area until the scan line reaches the next unused entry vertex in the entry vertex list, and when the scan line reaches the entry vertex, the x coordinate of the entry vertex is the x coordinate of the left and right edges. If it is larger than the current value of, the area is continued to be filled without using the approach vertex, and if the approach vertex is between the left edge line and the right edge line, another left edge line starting from the approach vertex And storing the right edge line as a pair in the first stack memory, filling a region between the original left edge line and another right edge line starting from the entry vertex, and setting the x coordinate of the entry vertex. Is smaller than the current value of the x coordinate of the left edge line, the pair of original left edge line and right edge line is stored in the first stack memory, and between the other left edge line and right side edge line starting from the entry vertex. When the left edge line or the right edge line reaches the exit vertex and only the right edge line reaches the exit vertex, the left edge line is stored in the second stack memory and the first stack is filled. If the latest left-side edge and right-side edge pair stored in the memory is recovered, the y coordinate is reset, and filling is resumed, and if only the left-side edge reaches the exit vertex, the second
Recovers the latest left edge stored in the stack memory of, resumes the fill with the current right edge, and when the right edge reaches the exit vertex, if the first stack memory is empty, 3. The outline character drawing method according to claim 2, wherein filling of the area from the unused entry vertex having the smallest y coordinate is resumed, and if there is no unused entry vertex, the filling is finished.
JP5116378A 1993-04-20 1993-04-20 Method for plotting outline character Pending JPH06309469A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5116378A JPH06309469A (en) 1993-04-20 1993-04-20 Method for plotting outline character

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5116378A JPH06309469A (en) 1993-04-20 1993-04-20 Method for plotting outline character

Publications (1)

Publication Number Publication Date
JPH06309469A true JPH06309469A (en) 1994-11-04

Family

ID=14685520

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5116378A Pending JPH06309469A (en) 1993-04-20 1993-04-20 Method for plotting outline character

Country Status (1)

Country Link
JP (1) JPH06309469A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8320016B2 (en) 2007-10-31 2012-11-27 Brother Kogyo Kabushiki Kaisha Image processing method for fast fill-in of a figure and computer readable medium therefor

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8320016B2 (en) 2007-10-31 2012-11-27 Brother Kogyo Kabushiki Kaisha Image processing method for fast fill-in of a figure and computer readable medium therefor
US8472077B2 (en) 2007-10-31 2013-06-25 Brother Kogyo Kabushiki Kaisha Image processing method for fast fill-in of a figure and computer readable medium therefor

Similar Documents

Publication Publication Date Title
KR0159498B1 (en) Method and apparatus for minimizing the visual degradation oes
US5774130A (en) Computer animation generator creating hierarchies of models for rapid display
US5621827A (en) Image processing method and apparatus for obtaining object data to reconstruct the original image
JPH04220780A (en) Method and apparatus for decomposing arbitrary polygon into trapezoid
JPH05174140A (en) Method and device for image processing
JPH0816795A (en) Method and apparatus for improvement of edge of pixel image
JP2681367B2 (en) Graphic processing method and apparatus thereof
Chouinard et al. Thinning and segmenting handwritten characters by line following
JPH06309469A (en) Method for plotting outline character
US5694536A (en) Method and apparatus for automatic gap closing in computer aided drawing
EP0469915B1 (en) Figure processing method and apparatus
US20040169655A1 (en) Active region determination for line generation in regionalized rasterizer displays
US5574839A (en) Method and apparatus for automatic gap closing in computer aided drawing
EP0469918B1 (en) Figure processing method
JPH08123835A (en) Shape design support device
EP0469914B1 (en) Figure processing method
GB2257878A (en) Method for tracing a line image processor
JP3034140B2 (en) Character generation method and device
Rodrıguez et al. Fast neighborhood operations for images and volume data sets
JP3731221B2 (en) Thick line drawing apparatus and thick line drawing method
CN102646281B (en) Method and system for rasterizing elliptic arc
JP2773127B2 (en) Image editing method
JP3338484B2 (en) Outline font transformation device
JP3536894B2 (en) Graphic processing unit
JP2782904B2 (en) Polygon fill method