JP3391822B2 - Outline font file compression method - Google Patents

Outline font file compression method

Info

Publication number
JP3391822B2
JP3391822B2 JP29830092A JP29830092A JP3391822B2 JP 3391822 B2 JP3391822 B2 JP 3391822B2 JP 29830092 A JP29830092 A JP 29830092A JP 29830092 A JP29830092 A JP 29830092A JP 3391822 B2 JP3391822 B2 JP 3391822B2
Authority
JP
Japan
Prior art keywords
subroutine
contour
point
glyph
contour line
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP29830092A
Other languages
Japanese (ja)
Other versions
JPH0619450A (en
Inventor
貴浩 浅井
稔 境井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh 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 Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP29830092A priority Critical patent/JP3391822B2/en
Publication of JPH0619450A publication Critical patent/JPH0619450A/en
Application granted granted Critical
Publication of JP3391822B2 publication Critical patent/JP3391822B2/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

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

【0001】[0001]

【産業上の利用分野】本発明は、アウトラインフォント
ファイルの圧縮方法に関する。
BACKGROUND OF THE INVENTION 1. Field of the Invention The present invention relates to a method for compressing outline font files.

【0002】[0002]

【従来の技術】デスクトップパブリッシング、パーソナ
ルコンピュータ、ワードプロセッサ、ディジタルファッ
クス等においては、その装置内に文字フォントデータが
用意されている。斯るフォントデータは、通常、ドット
パターン方式、アウトライン方式、あるいはそれらの併
用方式の何れかの方式によって保持されている。そし
て、アウトラインフォントを表示、印刷するために、そ
のフォント表現はドットパターンに変換される。
2. Description of the Related Art In desktop publishing, personal computers, word processors, digital fax machines, etc., character font data is prepared in the apparatus. Such font data is normally held by a dot pattern method, an outline method, or a combination thereof. The font representation is then converted to a dot pattern for displaying and printing the outline font.

【0003】従来、アウトラインフォントをドットイメ
ージに変換するラスタライズにおいては、フォントファ
イルによって輪郭点の座標データと各輪郭点のヒンティ
ングに関する属性データが与えられ、実際のヒンティン
グ処理は、これら座標データと属性データを用いてラス
タライザが行っていた。
Conventionally, in rasterization for converting an outline font into a dot image, coordinate data of contour points and attribute data relating to hinting of each contour point are given by a font file, and the actual hinting process uses these coordinate data. It was done by the rasterizer using the attribute data.

【0004】ここで、ヒンティング処理とは、アウトラ
インを美しく整形するための処理をいい、例えば、特開
昭62−182884号公報に記載の文字発生方式など
種々の方法が提案されている。
Here, the hinting process is a process for shaping the outline beautifully, and various methods such as the character generation method described in JP-A-62-182884 have been proposed.

【0005】[0005]

【発明が解決しようとする課題】ところで、最近Tru
e Typeなどの新しいフォーマットが提案された。
これは、フォントファイルの中にプログラムとしてのヒ
ント情報が含まれていて、ラスタライザはそれを実行す
ることによってヒンティング処理を行うものである。こ
のように、従来ラスタライザが行っていたヒンティング
処理を、フォントファイル中にプログラムとして組み込
む必要があり、このためフォントファイルのサイズが非
常に大きくなるという問題があった。
By the way, recently, Tru
New formats such as e Type have been proposed.
In this, the font file contains hint information as a program, and the rasterizer executes the hinting process by executing the hint information. As described above, it is necessary to incorporate the hinting processing conventionally performed by the rasterizer into the font file as a program, which causes a problem that the size of the font file becomes very large.

【0006】そこで、本出願人は、先にファイルサイズ
を圧縮したアウトラインフォントファイルの構成法を提
案した(特願平4−95008号)。すなわち、図11
は、グリフデータに含まれる輪郭点1を制御するために
サブルーチンf1(1≦f1≦m)を呼び出し、輪郭点
2を制御するためにサブルーチンf2(1≦f2≦m)
を呼び出し、・・・、輪郭点nを制御するためにサブル
ーチンfn(1≦fn≦m)を呼び出す様子を示す図で
ある。ここに示したf1,f2,・・・fnは、サブル
ーチンをn個用意することを意味するものではなく、f
1は、点1を渡すべきサブルーチンであることを表して
いる。
Therefore, the present applicant previously proposed a method of constructing an outline font file whose file size is compressed (Japanese Patent Application No. 4-95008). That is, FIG.
Calls a subroutine f1 (1 ≦ f1 ≦ m) to control the contour point 1 included in the glyph data, and a subroutine f2 (1 ≦ f2 ≦ m) to control the contour point 2
Is a diagram showing how to call a subroutine fn (1 ≦ fn ≦ m) to control the contour point n. The f1, f2, ... Fn shown here do not mean that n subroutines are prepared, but f
1 represents a subroutine to which the point 1 should be passed.

【0007】上記したヒンティング処理をスタックマシ
ン上で実現すると、以下のようになる。すなわち、 最初にスタックの先頭に、処理されるべき点番号である
0を積み、続いて呼び出されるサブルーチン番号f0を
積む。CALL〔〕は、スタックの先頭にあるデータを
サブルーチン番号と解釈し、そこへ飛ぶ。呼び出された
サブルーチンf0は、スタックの先頭にあるデータを処
理すべき点の番号と解釈し、その点に対して予め決めら
れた処理(例えば、輪郭点を上に1ビットシフトするな
ど)を行う。このような処理を繰り返すことによって、
全ての点に対する所定のヒンティング処理が行われる。
When the above hinting process is realized on a stack machine, the following is done. That is, First, 0, which is the point number to be processed, is stacked at the top of the stack, and the subsequently called subroutine number f0 is stacked. CALL [] interprets the data at the top of the stack as a subroutine number and jumps to it. The called subroutine f0 interprets the data at the top of the stack as the number of the point to be processed and performs a predetermined process (for example, shifting the contour point upward by 1 bit) for that point. . By repeating such processing,
A predetermined hinting process is performed on all points.

【0008】ヒンティング情報のサイズは、各輪郭点に
ついてその番号とサブルーチン番号をスタックに積んで
からサブルーチン呼び出しをするため、輪郭点一つにつ
いて4バイト(つまり、点番号とサブルーチン番号、P
USH命令とCALL命令)を要する。従って、フォン
ト全体では、4×200×8,000=6,400,0
00となり、6.4メガバイトにもなり、更にヒンティ
ング情報を圧縮することが望まれていた。
The size of the hinting information is 4 bytes for each contour point (that is, the point number and the subroutine number, P because the subroutine number is called after stacking the number and the subroutine number for each contour point on the stack.
USH instruction and CALL instruction) are required. Therefore, for the entire font, 4 × 200 × 8,000 = 6,400,0
00, 6.4 megabytes, and further compression of hinting information has been desired.

【0009】本発明の目的は、ヒンティング情報のサイ
ズを小さくすることにより、ファイルサイズを圧縮した
アウトラインフォントファイル圧縮方法を提供すること
にある。
An object of the present invention is to provide an outline font file compression method in which the size of hinting information is reduced to reduce the file size.

【0010】[0010]

【課題を解決するための手段】前記目的を達成するため
に、請求項1記載の発明では、複数のグリフデータと、
輪郭点を制御するための各グリフに共通なサブルーチン
群を含む共有データとを有し、前記グリフデータは、連
続的に番号を付けられた輪郭点とその座標データからな
るアウトライン情報と該アウトライン情報を制御する命
令列からなるヒンティング情報によって構成されている
アウトラインフォントファイルを圧縮する方法であっ
て、前記ヒンティング情報は、第1のサブルーチンに渡
すための、一つのグリフを構成する輪郭線の終点番号の
列とその個数を含む命令列からなり、前記第1のサブル
ーチンは前記輪郭線の終点番号の列とその個数を受け取
って、各輪郭線の始点と終点の番号を生成するサブルー
チンであることを特徴としている。
In order to achieve the above object, in the invention according to claim 1, a plurality of glyph data,
Shared data including a group of subroutines common to each glyph for controlling contour points, wherein the glyph data is outline information consisting of consecutively numbered contour points and their coordinate data, and the outline information. Is a method for compressing an outline font file composed of hinting information consisting of a command sequence for controlling the above, wherein the hinting information is used for passing to a first subroutine, a contour line of one glyph. The first subroutine is a sub-routine that includes a sequence of end point numbers and an instruction sequence including the number thereof, and receives the sequence of end point numbers of the contour line and the number thereof to generate the start point and end point numbers of each contour line. It is characterized by that.

【0011】請求項2記載の発明では、前記ヒンティン
グ情報は、第2のサブルーチンに渡すための、一つのグ
リフを構成する輪郭線の終点番号と縦横ステムの線幅の
列とその個数を含む命令列からなり、前記第2のサブル
ーチンは前記輪郭線の終点番号と縦横ステムの線幅の列
とその個数を受け取って、各輪郭線の始点と終点の番号
を生成するサブルーチンであることを特徴としている。
According to the second aspect of the present invention, the hinting information includes the end point number of the contour line, the line width column of the vertical and horizontal stems, and the number of the contour lines, which form one glyph, to be passed to the second subroutine. The second sub-routine is composed of a command sequence and receives the end point number of the contour line, the line width column of the vertical and horizontal stems and the number thereof, and generates the start point and end point number of each contour line. I am trying.

【0012】請求項記載の発明では、前記ヒンティン
グ情報は、第のサブルーチンに渡すための、一つのグ
リフを構成する各輪郭線の始点および終点の点番号を含
む命令列からなり、前記第のサブルーチンは前記各輪
郭線の始点および終点の点番号を受け取って、各点番号
について位置補正を行うサブルーチンであることを特徴
としている。
According to a third aspect of the present invention, the hinting information comprises an instruction sequence including point numbers of a start point and an end point of each contour line which constitutes one glyph, and is passed to the third subroutine. The third subroutine is characterized by being a subroutine for receiving the point numbers of the starting point and the ending point of each contour line and correcting the position for each point number.

【0013】請求項記載の発明では、前記ヒンティン
グ情報は、第のサブルーチンに渡すための、一つのグ
リフを構成する各輪郭線の終点の点番号を含む命令列か
らなり、前記第のサブルーチンは前記各輪郭線の終点
の点番号を受け取って、各点番号について位置補正を行
うサブルーチンであることを特徴としている。
[0013] In the present invention of claim 4, wherein said hinting information consists instruction sequence including to pass to the fourth subroutine, the point number of the end point of each contour lines constituting one glyph, the fourth This subroutine is characterized in that it receives the point number of the end point of each contour line and corrects the position for each point number.

【0014】請求項記載の発明では、前記ヒンティン
グ情報は、第のサブルーチンに渡すための、一つのグ
リフを構成する各輪郭線に含まれる点の個数を含む命令
列からなり、前記第のサブルーチンは前記各輪郭線に
含まれる点の個数を受け取って、各点番号について位置
補正を行うサブルーチンであることを特徴としている。
According to a fifth aspect of the present invention, the hinting information is an instruction sequence including the number of points included in each contour line forming one glyph, which is passed to the fifth subroutine. 5 subroutine receives the number of points included in each contour is characterized by a subroutine to perform the position correction for each point number.

【0015】[0015]

【作用】アウトラインフォントファイルは、n個のグリ
フデータと輪郭点を制御するためのサブルーチンを含む
共有データによって構成される。グリフデータは、アウ
トライン情報とヒンティング情報からなる。アウトライ
ン情報は、連続的に番号を付けられた輪郭点とその座標
データからなり、ヒンティング情報は、アウトライン情
報を制御する命令列から構成される。一実施例のヒンテ
ィング情報としては、一つのグリフを構成する輪郭線の
終点番号の列とその個数をサブルーチンに渡すための命
令列からなる。これにより、従来の方式に比べてヒンテ
ィング情報の大きさを圧縮することが可能となる。
The outline font file is composed of shared data including n glyph data and a subroutine for controlling contour points. Glyph data consists of outline information and hinting information. The outline information is composed of consecutively numbered contour points and their coordinate data, and the hinting information is composed of a command sequence for controlling the outline information. The hinting information in one embodiment is composed of a sequence of end point numbers of contour lines forming one glyph and a sequence of instructions for passing the number to the subroutine. As a result, the size of hinting information can be compressed as compared with the conventional method.

【0016】[0016]

【実施例】以下、本発明の一実施例を図面を用いて具体
的に説明する。 〈実施例1〉 図1は、本実施例のアウトラインフォントファイルの構
成を示す図で、n個のグリフデータ1(グリフ1,グリ
フ2,・・・グリフn)と共有データ2によってファイ
ルが構成されている。
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS An embodiment of the present invention will be specifically described below with reference to the drawings. First Embodiment FIG. 1 is a diagram showing the structure of an outline font file of the present embodiment. The file is composed of n glyph data 1 (glyph 1, glyph 2, ... Glyph n) and shared data 2. Has been done.

【0017】図2は、グリフデータ1の構成を示す図
で、グリフデータは、アウトライン情報11とヒント情
報12からなっている。そして、アウトライン情報11
は、連続的に番号を付けられた輪郭点とその座標データ
からなり、ヒント情報12は、アウトライン情報11を
制御する命令列(例えば、点1を右に1ドットシフトす
るという命令など)から構成されている。
FIG. 2 is a diagram showing the structure of the glyph data 1, and the glyph data is composed of outline information 11 and hint information 12. And the outline information 11
Is composed of consecutively numbered contour points and their coordinate data, and the hint information 12 is composed of a command sequence for controlling the outline information 11 (for example, a command for shifting point 1 to the right by one dot). Has been done.

【0018】図3は、共有データ2の中に輪郭点を制御
するためのサブルーチン群(サブルーチン1からサブル
ーチンm)が含まれている図を示し、本実施例では、こ
れらのサブルーチンとして、後述するように、輪郭線の
始点、終点、縦横ステムの幅に関する情報が与えられ
て、輪郭線に対してヒンティング処理を行うサブルーチ
ンS0,S1、輪郭線の終点番号の列とその個数を受け
取って、各輪郭線の始点と終点の番号を生成するサブル
ーチンG0、輪郭線に含まれる輪郭点の数の列とその個
数を受け取って、各輪郭線の始点と終点の番号を生成す
るサブルーチンG1、輪郭線の終点番号と縦横ステムの
線幅の列とその個数を受け取って、各輪郭線の始点と終
点の番号を生成するサブルーチンG2、輪郭線に含まれ
る輪郭点の数と縦横ステムの線幅の列とその個数を受け
取って、各輪郭線の始点と終点の番号を生成するサブル
ーチンG3、サブルーチン呼び出し用のサブルーチンL
0が設けられている。
FIG. 3 shows a diagram in which the shared data 2 includes a group of subroutines (subroutines 1 to m) for controlling contour points. In this embodiment, these subroutines will be described later. As described above, information about the starting point, the ending point of the contour line, and the widths of the vertical and horizontal stems is given, and the subroutines S0 and S1 for performing the hinting process on the contour line, the column of the end point number of the contour line, and the number thereof are received Subroutine G0 for generating the start point and end point number of each contour line, Subroutine G1 for receiving the sequence of the number of contour points and the number thereof included in the contour line, and generating the start point and end point number of each contour line, contour line Subroutine G2 that receives the end point number and the line width column of the vertical and horizontal stems and their number to generate the start point and end point number of each contour line, the number of contour points included in the contour line, and the vertical and horizontal Receiving the columns and the number of line widths systems out, subroutine G3 that generates the number of start and end points of each contour line, the subroutine L for subroutine calls
0 is provided.

【0019】図4は、本実施例のヒンティング処理対象
となる輪郭線(グリフ)の例を示す図である。この例に
おいて、例えば、輪郭点をたどる方向は、右側に黒塗の
領域を見る方向であり、外側の輪郭線においては時計方
向となり、内側の輪郭線においては反時計方向となる。
このグリフは、外側の輪郭線は、点0から点14の15
個の輪郭点で構成され、内側の輪郭線は、点15から点
18の4個の輪郭点で構成されている。また、x軸は左
から右に、y軸は下から上に増加するものとする。
FIG. 4 is a diagram showing an example of a contour line (glyph) which is the object of the hinting process of this embodiment. In this example, for example, the direction of tracing the contour point is the direction in which the black-painted area is viewed on the right side, the outer contour line is clockwise, and the inner contour line is counterclockwise.
The outer contour of this glyph is 15 from point 0 to point 14
The contour line on the inner side is composed of four contour points 15 to 18. The x-axis increases from left to right and the y-axis increases from bottom to top.

【0020】図5は、本実施例の輪郭線ヒンティング処
理のフローチャートを示す。この処理は、一つの輪郭線
の始点と終点の番号(さらには縦横ステムの線幅)を受
け取り、その輪郭線に対するヒンティング処理を行うも
ので、図3の共有データ中にサブルーチンとして用意さ
れている。
FIG. 5 shows a flowchart of the contour line hinting process of this embodiment. This processing receives the numbers of the start and end points of one contour line (further, the line widths of the vertical and horizontal stems), and performs hinting processing for that contour line. It is prepared as a subroutine in the shared data of FIG. There is.

【0021】図5において、まず、HWに縦ステムの幅
を保持し、VWに横ステムの幅を保持する(ステップ1
01)。これらのデータの入手方法としては、これを呼
び出すサブルーチンが引数として渡す方法(引数として
渡され、本ヒンティング処理を行うサブルーチンをサブ
ルーチンS0と呼ぶ)、予め決められた値を用いる方法
(この場合のヒンティング処理を行うサブルーチンをサ
ブルーチンS1と呼ぶ)がある。
In FIG. 5, first, the width of the vertical stem is held in HW, and the width of the horizontal stem is held in VW (step 1).
01). As a method of obtaining these data, a subroutine that calls this data is passed as an argument (a subroutine that is passed as an argument and performs this hinting processing is called a subroutine S0), or a method that uses a predetermined value (in this case, There is a subroutine for performing the hinting process).

【0022】Psに輪郭線の始点の番号(点0)を保持
し、Peにその次の点の番号(点1)を保持する(ステ
ップ102)。PsとPeのx座標が同じであるなら
ば、PsからPeに至る線分は垂直線である(ステップ
103)。そして、その線分は、縦ステムの左右端の何
れかであるが(ステップ110)、もし、Psのy座標
がPeのそれよりも大きければ右端、そうでなければ左
端と判定され、これらに対しては縦ステムの幅をVWに
するようなヒンティング処理を施す(ステップ111、
112)。
The starting point number (point 0) of the contour line is held in Ps, and the next point number (point 1) is held in Pe (step 102). If Ps and Pe have the same x coordinate, the line segment from Ps to Pe is a vertical line (step 103). The line segment is either the left or right end of the vertical stem (step 110), but if the y coordinate of Ps is larger than that of Pe, it is determined to be the right end, otherwise it is determined to be the left end. On the other hand, a hinting process is performed to set the width of the vertical stem to VW (step 111,
112).

【0023】PsとPeのx座標が異なり、y座標が等
しい場合も(ステップ104)全く同様に横ステムの上
端であるか下端であるかを判定する(ステップ11
3)。そして、これらに対しては横ステムの幅をHWに
するようなヒンティング処理を施す(ステップ114、
115)。
Even when the x-coordinates of Ps and Pe are different and the y-coordinates are the same (step 104), it is determined exactly whether it is the upper end or the lower end of the lateral stem (step 11).
3). Then, a hinting process is performed on these to set the width of the lateral stem to HW (step 114,
115).

【0024】また、それらの何れでもない場合は、斜線
または曲線として別のヒンティング処理を施す(ステッ
プ105)。次いで、Peが輪郭線の終点であるならば
(ステップ106)、PsにはPeの指していた点番号
を保持し、Peには輪郭線の始点の番号を保持する(ス
テップ109)。
If none of them, another hinting process is performed as a diagonal line or a curved line (step 105). Next, if Pe is the end point of the contour line (step 106), the point number pointed to by Pe is held in Ps, and the start point number of the contour line is held in Pe (step 109).

【0025】Peが輪郭線の終点ではなく、Psが輪郭
線の終点であるならば(ステップ107)、全ての点の
処理を終了したので、ヒンティング処理が終了する。そ
うでなければ、PsにはPeの指していた点番号を保持
し、Peにはその次の点の番号を保持する(ステップ1
08)。以下、ステップ103に戻り、Ps(点1),
Pe(点2)について同様の処理を行い、以上の処理を
全ての点について繰り返す。
If Pe is not the end point of the contour line but Ps is the end point of the contour line (step 107), the processing of all points is completed, so that the hinting processing is completed. Otherwise, Ps holds the point number pointed to by Pe, and Pe holds the number of the next point (step 1
08). After that, returning to step 103, Ps (point 1),
The same processing is performed for Pe (point 2), and the above processing is repeated for all points.

【0026】これによって、輪郭線の始点と終点、縦横
ステムの幅に関する情報があれば、その輪郭線をヒンテ
ィング処理することが可能であることが示された。
As a result, it has been shown that it is possible to perform the hinting processing on the contour line if there is information on the starting point and the end point of the contour line and the widths of the vertical and horizontal stems.

【0027】さて、輪郭線によって構成される縦横ステ
ムの幅が予め決められているものとする。従って、図5
のフローチャートにおいて、HWとVWに対する値の設
定は自動的に行われ(つまり、一つのグリフ中で縦横ス
テムの幅はそれぞれ一種類に限定される)、前述したよ
うに、図5のフローチャートは、サブルーチンS1とな
る。
Now, it is assumed that the widths of the vertical and horizontal stems formed by the contour lines are predetermined. Therefore, FIG.
5, the values for HW and VW are set automatically (that is, the widths of the vertical and horizontal stems are limited to one type in one glyph), and as described above, the flowchart of FIG. This is the subroutine S1.

【0028】本実施例では、図6に示されるフローチャ
ートに従うサブルーチンG0を共有データに用意する。
このサブルーチンG0は、一つのグリフを構成する輪郭
線の終点番号の列とその個数を受け取って、各輪郭線の
始点と終点の番号を生成し、その生成された始点と終点
の番号を逐次サブルーチンS1に渡すサブルーチンであ
る。
In the present embodiment, a subroutine G0 according to the flowchart shown in FIG. 6 is prepared for shared data.
This subroutine G0 receives a sequence of the end point numbers of contour lines forming one glyph and the number thereof, generates start point and end point numbers of each contour line, and sequentially generates the generated start point and end point numbers. This is a subroutine to be passed to S1.

【0029】すなわち、図6において、まず、PsとN
を0に設定する(ステップ201)。Nが輪郭線の終点
番号の個数(この個数は予めスタックからポップして記
憶しておく)より小さい間、以下の処理を繰り返す(ス
テップ202)。ステップ203で、Peにデータ(終
点番号)を一つ読み込む(スタックからポップする)。
PsとPeを引数として、サブルーチンS1を呼び出す
(ステップ204)。その後、PsにはPe+1、Nに
はN+1を設定し(ステップ205)、ステップ202
に戻る。
That is, in FIG. 6, first, Ps and N
Is set to 0 (step 201). While N is smaller than the number of contour end points (this number is popped from the stack and stored in advance), the following process is repeated (step 202). In step 203, one data (end point number) is read into Pe (popped from the stack).
The subroutine S1 is called with Ps and Pe as arguments (step 204). After that, Pe + 1 is set to Ps and N + 1 is set to N (step 205), and step 202
Return to.

【0030】このサブルーチンG0を用いることによ
り、例えば図4のヒンティング情報は次のようになる。
すなわち、 PUSH〔3〕 18 14 2 G0 CALL〔〕 ここで、PUSH〔3〕は、後に続く4バイトのデータ
をスタックに積む命令であり、“18”は、図4の内側
の輪郭線の終点番号であり、“14”は、図4の外側の
輪郭線の終点番号であり、“2”は、番号列の個数であ
り、G0は、サブルーチン番号である。
By using this subroutine G0, for example, the hinting information of FIG. 4 becomes as follows.
That is, PUSH [3] 18 14 2 G0 CALL [] where PUSH [3] is an instruction for stacking the following 4 bytes of data on the stack, and “18” is the end point of the inner contour line in FIG. 4, “14” is the end point number of the outer contour line in FIG. 4, “2” is the number of number strings, and G0 is the subroutine number.

【0031】従って、呼び出されたサブルーチンG0
は、最初の処理で、Ps=0,Pe=14を生成して、
サブルーチンS1に渡し、次の処理で、Ps=15(P
e+1),Pe=18を生成して、サブルーチンS1に
渡される。
Therefore, the called subroutine G0
Generates Ps = 0 and Pe = 14 in the first process,
It is passed to the subroutine S1 and Ps = 15 (P
e + 1) and Pe = 18 are generated and passed to the subroutine S1.

【0032】なお、一般的には、輪郭線の数が多いた
め、 NPUSH〔〕 n+2 点0 点1 ...点n−1 n G0 CALL〔〕 という手順になる。ここで、n+2は、スタックに積む
データの個数である。
In general, since the number of contour lines is large, NPUSH [] n + 2 points 0 points 1. . . The procedure is point n-1 n G0 CALL []. Here, n + 2 is the number of data to be stacked.

【0033】ヒンティング情報のサイズは、各輪郭線に
ついて、その終点の番号と輪郭線の数、サブルーチン番
号をスタックに積んでからサブルーチン呼び出しを行う
ので、グリフ毎に15バイト(輪郭線の数が10、点の
個数を知らせるためのnそれ自身、サブルーチン番号、
そしてNPUSH命令と積む個数n+2、CALL命
令)、フォント全体では、 15×8,000=120,000 となり、120キロバイトで済むことになる。
The size of the hinting information is 15 bytes for each glyph since the number of the end point of each contour line, the number of contour lines and the subroutine number are stacked on the stack before the subroutine is called. 10, n itself for notifying the number of points, subroutine number,
The number of NPUSH instructions and the number of stacks (n + 2), CALL instructions), and the total font size is 15 × 8,000 = 120,000, which is 120 kilobytes.

【0034】〈実施例2〉 実施例2は、輪郭線の終点番号の代わりに輪郭線に含ま
れる輪郭点の数を渡す実施例であり、図7は、そのフロ
ーチャートである。これは、一つのグリフを構成する輪
郭線に含まれる輪郭点の数の列とその個数を受け取っ
て、各輪郭線の始点と終点の番号を生成し、それを逐次
サブルーチンS1に渡すサブルーチンG1である。
<Second Embodiment> A second embodiment is an embodiment in which the number of contour points included in a contour is passed instead of the end point number of the contour, and FIG. 7 is a flowchart thereof. This is a subroutine G1 that receives a sequence of the number of contour points included in a contour line that constitutes one glyph and the number of contour points, generates a start point and an end point number of each contour line, and passes it to the subroutine S1 in sequence. is there.

【0035】具体的には、まずPsとNを0に設定す
る。Nが輪郭点の数の個数より小さい間、以下の処理を
繰り返す。Pnにデータを一つ読み込む。PeをPs+
Pn−1として輪郭線の終点を求める。PsとPeを引
数として、サブルーチンS1を呼び出す。その後、Ps
にはPe+1、NにはN+1を設定しなおす。
Specifically, first, Ps and N are set to 0. While N is smaller than the number of contour points, the following processing is repeated. Read one data into Pn. Pe to Ps +
The end point of the contour line is obtained as Pn-1. The subroutine S1 is called with Ps and Pe as arguments. After that, Ps
Is reset to Pe + 1 and N is reset to N + 1.

【0036】このサブルーチンG1を用いることによっ
て、例えば図4のヒンティング情報は、次のようにな
る。すなわち、 PUSH〔3〕 4 15 2 G1 CALL〔〕 ここで、“4”は、内側の輪郭線の輪郭点の数であり、
“15”は、外側の輪郭線の輪郭点の数であり、“2”
は、輪郭点の数の個数である。
By using this subroutine G1, for example, the hinting information of FIG. 4 becomes as follows. That is, PUSH [3] 4 15 2 G1 CALL [] where “4” is the number of contour points of the inner contour line,
"15" is the number of contour points on the outer contour line, and "2"
Is the number of contour points.

【0037】ただし、一般的には輪郭線の数が多いた
め、前述した実施例と同様に、PUSH命令ではなく、
NPUSH命令を使うことになる。ヒンティング情報の
サイズも実施例1と同じである。
However, since the number of contour lines is generally large, it is not the PUSH instruction, as in the above-described embodiment.
The NPUSH instruction will be used. The size of hinting information is also the same as that in the first embodiment.

【0038】〈実施例3〉 実施例3は、一つのグリフを構成する輪郭線の終点番号
と縦横ステムの線幅の列とその個数を受け取って、各輪
郭線の始点と終点の番号を生成し、それを逐次サブルー
チンS0に渡すサブルーチンG2である。図8は、その
フローチャートであり、共有データにサブルーチンG2
として用意されている。
<Third Embodiment> In the third embodiment, the end point number of the contour line and the line width column of the vertical and horizontal stems constituting one glyph and the number thereof are received, and the start point and end point number of each contour line are generated. Then, it is a subroutine G2 that sequentially passes it to the subroutine S0. FIG. 8 is a flowchart thereof, and shows a subroutine G2 for shared data.
It is prepared as.

【0039】具体的には、まずPsとNを0に設定す
る。Nが輪郭点の数の個数より小さい間、以下の処理を
繰り返す。Peにデータを一つ読み込む。続いて、HW
とVWにそれぞれデータを読み込む。Ps、Pe、HW
とVWを引数として、サブルーチンS0を呼び出す。そ
の後PsにはPe+1、NにはN+1を設定しなおす。
このサブルーチンG2を用いることによって、例えば図
4のヒンティング情報は、次のようになる。すなわち、 NPUSH〔〕 8 18 hw vw 14 hw vw 6 G2 CALL〔〕 ここで、G2は、サブルーチン番号、“6”は、サブル
ーチン番号G2が受け取るデータの個数(プッシュされ
たvwから18までの6個のデータ)、“14hw v
w”は、外側の輪郭線の終点番号と、縦ステムの幅h
w、横ステムの幅vw、“18 hw vw”は、内側
の輪郭線の終点番号と、縦ステムの幅hw、横ステムの
幅vwである。
Specifically, first, Ps and N are set to 0. While N is smaller than the number of contour points, the following processing is repeated. Read one data into Pe. Then, HW
And data are read into VW respectively. Ps, Pe, HW
Subroutine S0 is called with and VW as arguments. After that, Pe + 1 is reset to Ps and N + 1 is reset to N.
By using this subroutine G2, for example, the hinting information of FIG. 4 becomes as follows. That is, NPUSH [] 8 18 hw vw 14 hw vw 6 G2 CALL [] where G2 is a subroutine number, and “6” is the number of data received by the subroutine number G2 (6 data from pushed vw to 18). Data), “14 hw v
w ”is the end number of the outer contour line and the width h of the vertical stem
w, the width vw of the horizontal stem, and “18 hw vw” are the end point number of the inner contour line, the width hw of the vertical stem, and the width vw of the horizontal stem.

【0040】本実施例によるヒンティング情報のサイズ
は、各輪郭線について、その終点の番号と輪郭線の数、
縦横ステムの線幅とサブルーチン番号をスタックに積ん
でからサブルーチン呼び出しを行うので、グリフ毎に3
5バイト(輪郭線の数が10、縦横ステムの線幅がそれ
ぞれ10、データの個数を知らせるための数、サブルー
チン番号、そしてNPUSH命令と積む個数、CALL
命令)、フォント全体では、 35×8,000=280,000 となり、280キロバイトで済むことになる。
The size of the hinting information according to the present embodiment is, for each contour line, the end point number and the number of contour lines,
Since the line width of vertical and horizontal stems and the subroutine number are stacked on the stack before calling the subroutine, 3 for each glyph
5 bytes (the number of contour lines is 10, the line widths of the vertical and horizontal stems are 10, the number for notifying the number of data, the subroutine number, and the number to be stacked with the NPUSH instruction, CALL
Command), the total font size is 35 × 8,000 = 280,000, which is 280 kilobytes.

【0041】〈実施例4〉 実施例4は、輪郭線の終点番号の代わりに輪郭線に含ま
れる輪郭点の数を渡す実施例であり、図9は、そのフロ
ーチャートである。これは、一つのグリフを構成する輪
郭線に含まれる輪郭点の数と縦横ステムの線幅の列とそ
の個数を受け取って、各輪郭線の始点と終点の番号を生
成し、それを逐次サブルーチンS0に渡すサブルーチン
G3である。
<Embodiment 4> Embodiment 4 is an embodiment in which the number of contour points included in a contour line is passed instead of the end point number of the contour line, and FIG. 9 is a flowchart thereof. This is to receive the number of contour points included in a contour line that composes one glyph, the line width column of the vertical and horizontal stems and the number of them, generate the start point and end point numbers of each contour line, and use them for successive subroutines. It is a subroutine G3 to be passed to S0.

【0042】具体的には、まずPsとNを0に設定す
る。Nが輪郭点の数の個数より小さい間、以下の処理を
繰り返す。Pnにデータを一つ読み込む。PeをPs+
Pn−1として輪郭線の終点を求める。Ps、Pe、H
WとVWを引数として、サブルーチンS0を呼び出す。
その後、PsにはPe+1、NにはN+1を設定しなお
す。
Specifically, first, Ps and N are set to 0. While N is smaller than the number of contour points, the following processing is repeated. Read one data into Pn. Pe to Ps +
The end point of the contour line is obtained as Pn-1. Ps, Pe, H
Subroutine S0 is called with W and VW as arguments.
Then, Pe + 1 is reset to Ps and N + 1 is reset to N.

【0043】このサブルーチンG3を用いることによっ
て、例えば図4のヒンティング情報は、次のようにな
る。すなわち、 NPUSH〔〕 8 4 hw vw 15 hw vw 6 G3 CALL〔〕 ヒンティング情報のサイズは実施例3と同じである。こ
のサブルーチンを用いることにより、画数の多いグリフ
などにおいてステムの幅が部分的に変化する場合にも対
応することが可能となる。
By using this subroutine G3, for example, the hinting information of FIG. 4 becomes as follows. That is, the size of the NPUSH [] 8 4 hw vw 15 hw vw 6 G3 CALL [] hinting information is the same as that in the third embodiment. By using this subroutine, it is possible to deal with the case where the width of the stem partially changes in a glyph having a large number of strokes.

【0044】〈実施例5〉 前述したように、従来のヒンティング処理は以下のよう
にして行っていた。 実際には、上記手順には無駄が多い。そこで、これを以
下のように変更する。
<Embodiment 5> As described above, the conventional hinting process is performed as follows. In practice, the above procedure is wasteful. Therefore, change this as follows.

【0045】 このように変更しても全く同様の処理が行われる。[0045] Even if the change is made in this way, exactly the same processing is performed.

【0046】本実施例では、これを再度変更して、以下
を得る。すなわち、 となる。
In this embodiment, this is changed again to obtain the following. That is, Becomes

【0047】本実施例によるヒンティング情報のサイズ
は、各輪郭点について、その番号とサブルーチン番号を
スタックに積んでからサブルーチン呼び出しを行うの
で、輪郭点一つについて3バイト(点番号とサブルーチ
ン番号、CALL命令)を要する。その他にNPUSH
命令のために2バイトを要するので、フォント全体で
は、(3×200+2)×8,000=4,816,0
00となり、4.8メガバイトで済むことになる。
The size of the hinting information according to the present embodiment is such that, for each contour point, the number and the subroutine number are stacked on the stack before the subroutine is called, so that 3 bytes (point number and subroutine number, CALL instruction) is required. In addition, NPUSH
Since 2 bytes are required for an instruction, (3 × 200 + 2) × 8,000 = 4,816,0 in the entire font.
It will be 00 and will be 4.8 megabytes.

【0048】〈実施例6〉 本実施例は、上記実施例5のサブルーチン呼び出しの繰
返しを圧縮した実施例である。図10に示すフローチャ
ートは、整数を一つ引数として、スタック上のデータの
数が引数より少なくなるまでCALL命令を繰り返すサ
ブルーチンL0で、共有データ中に用意される。
<Embodiment 6> This embodiment is an embodiment in which the repetition of the subroutine call of Embodiment 5 is compressed. The flowchart shown in FIG. 10 is prepared in the shared data by the subroutine L0 that repeats the CALL instruction with the integer as one argument until the number of data on the stack becomes smaller than the argument.

【0049】具体的には、まずNに引数を格納する。ス
タック上のデータの数をSに格納する。NがSより小さ
ければCALL命令を実行する。本実施例のサブルーチ
ンL0を用いることにより、前述した従来のヒンティン
グ処理は、次のように変更できる。
Specifically, first, the argument is stored in N. The number of data on the stack is stored in S. If N is smaller than S, the CALL instruction is executed. By using the subroutine L0 of this embodiment, the conventional hinting processing described above can be changed as follows.

【0050】すなわち、 NPUSH〔〕 2×n+1 n fn:2 f2 1 f1 0 f0 L 0 CALL〔〕 となる。That is,   NPUSH [] 2 × n + 1 n fn: 2 f2 1 f1 0 f0 L 0   CALL [] Becomes

【0051】本実施例によるヒンティング情報のサイズ
は、各輪郭点について、その番号とサブルーチン番号を
スタックに積んでからサブルーチンL0を呼び出すの
で、輪郭点一つについて2バイト(点番号とサブルーチ
ン番号)を要する。その他にNPUSH命令のために2
バイト、CALL命令のために3バイトを要するので、
フォント全体では、 (2×200+5)×8,000=3,240,000 となり、3.2メガバイトで済み、従来の方式の半分に
まで圧縮することができる。
As for the size of the hinting information according to the present embodiment, since the subroutine L0 is called after stacking the number and the subroutine number of each contour point on the stack, 2 bytes for each contour point (point number and subroutine number). Requires. 2 for NPUSH instruction
Byte, 3 bytes are required for CALL instruction,
The total font size is (2 × 200 + 5) × 8,000 = 3,240,000, which is 3.2 megabytes, and can be compressed to half of the conventional method.

【0052】輪郭線にヒンティング処理を施す方法につ
いて説明した。前述した実施例は、輪郭線の終点番号の
列を渡す例と輪郭線に含まれる輪郭点の個数の列を渡す
例を示したが、実際に何を渡すかについては種々の選択
肢があり、本発明は上記したものに限定されるものでは
ない。ここで、重要なことは、輪郭線の始点と終点を特
定するための最小限の情報を渡すことである。
The method of performing the hinting process on the contour line has been described. The above-described embodiment has shown an example of passing the sequence of the end point number of the contour line and an example of passing the sequence of the number of contour points included in the contour line, but there are various options as to what is actually passed, The present invention is not limited to the above. Here, what is important is to pass the minimum information for identifying the starting point and the ending point of the contour line.

【0053】また、実施例3、4において、縦横ステム
の両方を渡す例を示したが、本発明はこれに限定される
ものではない。例えば、一つのグリフ中で縦ステムの幅
が一定であるのに対して、横ステムの幅が輪郭線毎に異
なるような場合には、横ステムの線幅のみを渡せばよい
ことは明らかである。さらに、予め定められた線幅につ
いて処理を行うサブルーチンS1において、その線幅を
変えたS1’,S1”,...の如きサブルーチンを各
種用意するように実施例を変更することもできる。いず
れにしても、前述した説明から明らかなように、従来の
方法では数メガバイトも要していたヒンティングのため
の情報が、僅か数百キロバイトで済むことになる。
In the third and fourth embodiments, an example in which both vertical and horizontal stems are passed is shown, but the present invention is not limited to this. For example, if the width of the vertical stem is constant in one glyph, but the width of the horizontal stem differs for each contour line, it is clear that only the width of the horizontal stem needs to be passed. is there. Further, in the subroutine S1 for processing a predetermined line width, the embodiment can be modified so that various subroutines such as S1 ′, S1 ″, ... With different line widths are prepared. However, as is clear from the above description, the information for hinting, which required several megabytes in the conventional method, is only required in hundreds of kilobytes.

【0054】また、上記実施例6は、境界条件を一つの
引数としてとるサブルーチンL0の例であるが、本発明
はこれに限定されるものではなく、種々の変更が可能で
ある。例えば、必要なCALL命令の回数を引数とする
もの、あるいはスタック上のデータがなくなるまでCA
LL命令を繰り返すものなどに変更することができる。
The sixth embodiment is an example of the subroutine L0 which takes the boundary condition as one argument, but the present invention is not limited to this and various modifications can be made. For example, one that takes the required number of CALL instructions as an argument, or CA until there is no data on the stack.
It can be changed to one that repeats the LL instruction.

【0055】〈実施例7〉 共有データに含まれるサブルーチン群はどのグリフから
も呼び出すことが可能であるので、各グリフに共通なサ
ブルーチンを共有データ内に用意することによって、フ
ォントファイル全体のサイズを圧縮することができる。
<Embodiment 7> Since the subroutine group included in the shared data can be called from any glyph, the size of the entire font file can be reduced by preparing a subroutine common to each glyph in the shared data. Can be compressed.

【0056】図12は、実施例7に係る、共有データ内
に用意されたサブルーチンFのフローチャートである。
このサブルーチンFは、受け取った輪郭点の点番号に対
して、その点に応じた位置補正を行うヒンティングルー
チンである。
FIG. 12 is a flowchart of the subroutine F prepared in the shared data according to the seventh embodiment.
This subroutine F is a hinting routine for performing position correction on the received contour point number according to the point.

【0057】すなわち、サブルーチンFは、現在処理中
である輪郭点の点番号をPとすると、点Pが縦ステムの
点であるかを判定し(ステップ301)、縦ステムの点
であるときには、縦ステムの左側か否かを判定し(ステ
ップ304)、左側のときは、縦ステムの左側の位置補
正を行い(ステップ306)、そうでなければ縦ステム
の右側の位置補正を行う(ステップ305)。
That is, when the point number of the contour point currently being processed is P, the subroutine F determines whether the point P is a vertical stem point (step 301), and when it is a vertical stem point, It is determined whether or not it is on the left side of the vertical stem (step 304). If it is on the left side, the position on the left side of the vertical stem is corrected (step 306), and if not, the position on the right side of the vertical stem is corrected (step 305). ).

【0058】点Pが縦ステムの点でないときには、横ス
テムの点であるかを判定し(ステップ302)、横ステ
ムの点であるときには、横ステムの上側か否かを判定し
(ステップ307)、上側のときは上端の補正を行い
(ステップ309)、そうでないときは下端の補正を行
う(ステップ308)。ステップ302で横ステムの点
でないと判定されたときは、曲線、斜線上の点であるの
で、斜線(曲線)補正を行う(ステップ303)。
When the point P is not a vertical stem point, it is determined whether it is a horizontal stem point (step 302). When it is a horizontal stem point, it is determined whether it is above the horizontal stem (step 307). If it is on the upper side, the upper end is corrected (step 309), and if not, the lower end is corrected (step 308). If it is determined in step 302 that the point is not the lateral stem, it is a point on a curved line or a diagonal line, and therefore a diagonal line (curve) is corrected (step 303).

【0059】図1のアウトラインフォントファイルにお
いて、本実施例のグリフ1の有するヒンティング情報1
2は、グリフに含まれる各輪郭線の始点と終点とを共有
データ12内のサブルーチンFに渡すための命令列から
構成されている。そして、データの受け渡しはスタック
を用いて行われる。
In the outline font file of FIG. 1, hinting information 1 included in the glyph 1 of this embodiment.
Reference numeral 2 is composed of an instruction sequence for passing the starting point and the ending point of each contour included in the glyph to the subroutine F in the shared data 12. Then, the data transfer is performed using the stack.

【0060】図13は、本実施例7の動作フローチャー
トである。まず、当該グリフに含まれる各輪郭線の始点
および終点をスタックに積む操作が行われる(ステップ
401)。次いで、始点の番号がスタックからポップさ
れ(ステップ402)、現在処理中の点である点Pに代
入される(ステップ403)。同様に、終点の番号がス
タックからポップされ(ステップ404)、終点の点番
号Pendに代入される(ステップ405)。
FIG. 13 is an operation flowchart of the seventh embodiment. First, an operation of stacking the start point and the end point of each contour included in the glyph on the stack is performed (step 401). Then, the starting point number is popped from the stack (step 402) and is substituted for the point P that is currently being processed (step 403). Similarly, the end point number is popped from the stack (step 404) and is substituted into the end point number Pend (step 405).

【0061】サブルーチンFが呼ばれると、点Pに対し
て前述した位置の補正処理が施される(ステップ40
6)。サブルーチンFは各輪郭線のもつ点の個数だけ繰
返し呼び出され、輪郭線の全ての点の位置補正を行う
(ステップ406、407、408)。
When the subroutine F is called, the point P is subjected to the above-described position correction processing (step 40).
6). The subroutine F is repeatedly called by the number of points of each contour line, and the position of all the points of the contour line is corrected (steps 406, 407, 408).

【0062】一つの輪郭線に含まれる点の全てについて
位置補正を行った後、スタックを調べる(ステップ40
9)。スタックが空である場合は、全ての輪郭線につい
て処理を終了しているので、そのまま終了し、そうでな
い場合は、次の輪郭線について同様の処理を行う。
After performing the position correction for all the points included in one contour line, the stack is examined (step 40).
9). If the stack is empty, the process has been completed for all contour lines, so the process ends as it is. Otherwise, the same process is performed for the next contour line.

【0063】〈実施例8〉 図14は、実施例8の動作フローチャートである。この
実施例では、各輪郭線の終点の点番号のみをスタックに
積む。つまり、図4の輪郭線の例では、第1の輪郭線の
終点番号14と、第2の輪郭線の終点番号18がスタッ
クに積まれる。ただし、最初の輪郭線の最初の点の点番
号は常に0である。前述した実施例7と全く同様に点番
号0から順に位置補正を行う。
<Embodiment 8> FIG. 14 is an operation flowchart of Embodiment 8. In this embodiment, only the point number of the end point of each contour is stacked on the stack. That is, in the example of the contour line of FIG. 4, the end point number 14 of the first contour line and the end point number 18 of the second contour line are stacked on the stack. However, the point number of the first point of the first contour line is always 0. The position correction is performed sequentially from the point number 0 in exactly the same way as in the seventh embodiment described above.

【0064】〈実施例9〉 図15は、実施例9の動作フローチャートである。この
実施例では、各輪郭線に含まれる点の個数をスタックに
積む(図4の輪郭線の例では、外側の輪郭線の点の個数
15個と、内側の輪郭線の点の個数4個)。輪郭線の終
点の点番号Pendは、始点の点番号Pと輪郭線に含ま
れる点の個数から求めることができる。ただし、本実施
例においても、最初の輪郭線の最初の点の点番号は常に
0である。その他は、前述した実施例7の場合と同様で
あるので説明を省略する。
<Ninth Embodiment> FIG. 15 is an operation flowchart of the ninth embodiment. In this embodiment, the number of points included in each contour line is stacked (in the example of the contour line of FIG. 4, the number of points of the outer contour line is 15 and the number of points of the inner contour line is 4). ). The point number Pend of the end point of the contour line can be obtained from the point number P of the start point and the number of points included in the contour line. However, also in this embodiment, the point number of the first point of the first contour line is always 0. Others are the same as in the case of the above-described seventh embodiment, and therefore description thereof will be omitted.

【0065】[0065]

【発明の効果】以上、説明したように、本発明によれ
ば、以下のような効果が得られる。 (1) 輪郭線の始点と終点を特定するための最小限の情
報を、ヒンティング処理を行うサブルーチンに渡してい
るので、従来の方式に比べてヒンティング情報のサイズ
を大幅に圧縮することができる。(2) 輪郭線の始点と終点を特定するための最小限の情
報とステム幅の情報を、ヒンティング処理を行うサブル
ーチンに渡しているので、従来の方式に比べてヒンティ
ング情報のサイズを大幅に圧縮することができる。(3) PUSH命令を先にまとめて実行しているので、
ヒンティング情報のサイズを小さくすることができる。(4) CALL命令の繰返しを行うサブルーチンを用い
るので、処理効率を落すことなくヒンティング情報量を
更に圧縮させることができる。(5) 各輪郭線の点番号の情報をヒンティング処理を行
うサブルーチンに渡しているので、ヒンティング情報の
サイズが圧縮され、フォントファイルのサイズを圧縮す
ることができる。(6) 各輪郭線に含まれる点の個数の情報をヒンティン
グ処理を行うサブルーチンに渡しているので、一つのグ
リフを構成する点が多すぎるために、スタックに始点あ
るいは終点を積むことが困難である場合に効果的であ
る。
As described above, according to the present invention.
In this case, the following effects can be obtained. (1) Since the minimum information for identifying the start point and the end point of the contour line is passed to the subroutine that performs the hinting process, the size of the hinting information can be significantly reduced compared to the conventional method. it can. (2) Since the minimum information for specifying the starting point and the ending point of the contour line and the information of the stem width are passed to the subroutine that performs the hinting process, the size of the hinting information is significantly larger than that of the conventional method. Can be compressed into. (3) Since the PUSH instructions are executed collectively in advance,
The size of hinting information can be reduced. (4) Since the subroutine for repeating the CALL instruction is used, the hinting information amount can be further compressed without lowering the processing efficiency. (5) Since the information on the point number of each contour line is passed to the subroutine for performing the hinting processing, the size of the hinting information is compressed and the size of the font file can be compressed. (6) Since information about the number of points included in each contour line is passed to the subroutine that performs the hinting process, it is difficult to stack the start point or the end point on the stack because there are too many points forming one glyph. Is effective when

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

【図1】本発明のアウトラインフォントファイルの構成
を示す図である。
FIG. 1 is a diagram showing a configuration of an outline font file of the present invention.

【図2】グリフデータの構成を示す図である。FIG. 2 is a diagram showing a structure of glyph data.

【図3】共有データの中に輪郭点を制御するためのサブ
ルーチンが含まれている図である。
FIG. 3 is a diagram in which shared data includes a subroutine for controlling contour points.

【図4】輪郭線の例を示す図である。FIG. 4 is a diagram showing an example of a contour line.

【図5】本発明の輪郭線ヒンティング処理のフローチャ
ートである。
FIG. 5 is a flowchart of contour line hinting processing of the present invention.

【図6】実施例1に係る輪郭線の終点の列を受け取るサ
ブルーチンである。
FIG. 6 is a subroutine for receiving a sequence of end points of contour lines according to the first embodiment.

【図7】実施例2に係る輪郭点の個数を受け取るサブル
ーチンである。
FIG. 7 is a subroutine for receiving the number of contour points according to the second embodiment.

【図8】実施例3に係る輪郭線の終点の列と線幅を受け
取るサブルーチンである。
FIG. 8 is a subroutine for receiving an end point column and a line width of a contour line according to the third embodiment.

【図9】実施例4に係る輪郭点の個数と線幅を受け取る
サブルーチンである。
FIG. 9 is a subroutine for receiving the number of contour points and the line width according to the fourth embodiment.

【図10】実施例6に係るサブルーチン呼び出し用サブ
ルーチンである。
FIG. 10 is a subroutine for calling a subroutine according to the sixth embodiment.

【図11】本出願人が先に提案した、輪郭点を制御する
ためにサブルーチンを呼び出す図である。
FIG. 11 is a diagram called a subroutine for controlling contour points, which has been previously proposed by the applicant.

【図12】実施例7に係るサブルーチンFのフローチャ
ートである。
FIG. 12 is a flowchart of a subroutine F according to the seventh embodiment.

【図13】実施例7の動作フローチャートである。FIG. 13 is an operation flowchart of the seventh embodiment.

【図14】実施例8の動作フローチャートである。FIG. 14 is an operation flowchart of the eighth embodiment.

【図15】実施例9の動作フローチャートである。FIG. 15 is an operation flowchart of the ninth embodiment.

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

1 グリフデータ 2 共有データ 11 アウトライン情報 12 ヒンティング情報 1 glyph data 2 shared data 11 Outline information 12 Hinting information

───────────────────────────────────────────────────── フロントページの続き (58)調査した分野(Int.Cl.7,DB名) G09G 5/24 ─────────────────────────────────────────────────── ─── Continuation of front page (58) Fields surveyed (Int.Cl. 7 , DB name) G09G 5/24

Claims (5)

(57)【特許請求の範囲】(57) [Claims] 【請求項1】 複数のグリフデータと、輪郭点を制御す
るための各グリフに共通なサブルーチン群を含む共有デ
ータとを有し、前記グリフデータは、連続的に番号を付
けられた輪郭点とその座標データからなるアウトライン
情報と該アウトライン情報を制御する命令列からなるヒ
ンティング情報によって構成されているアウトラインフ
ォントファイルを圧縮する方法であって、前記ヒンティ
ング情報は、第1のサブルーチンに渡すための、一つの
グリフを構成する輪郭線の終点番号の列とその個数を含
む命令列からなり、前記第1のサブルーチンは前記輪郭
線の終点番号の列とその個数を受け取って、各輪郭線の
始点と終点の番号を生成するサブルーチンであることを
特徴とするアウトラインフォントファイル圧縮方法。
1. A plurality of glyph data and shared data including a group of subroutines common to each glyph for controlling contour points, wherein the glyph data are contour points sequentially numbered. A method of compressing an outline font file composed of outline information composed of the coordinate data and hinting information composed of a command sequence for controlling the outline information, wherein the hinting information is passed to the first subroutine. Of the contour line that constitutes one glyph and a sequence of commands including the number of contour lines, and the first subroutine receives the sequence of end point numbers of the contour line and the number thereof, A method for compressing an outline font file, which is a subroutine for generating start and end point numbers.
【請求項2】 前記ヒンティング情報は、第2のサブル
ーチンに渡すための、一つのグリフを構成する輪郭線の
終点番号と縦横ステムの線幅の列とその個数を含む命令
列からなり、前記第2のサブルーチンは前記輪郭線の終
点番号と縦横ステムの線幅の列とその個数を受け取っ
て、各輪郭線の始点と終点の番号を生成するサブルーチ
ンであることを特徴とする請求項1記載のアウトライン
フォントファイル圧縮方法。
2. The hinting information comprises a sequence of end points of contour lines forming one glyph, a sequence of line widths of vertical and horizontal stems, and an instruction sequence including the number thereof, which is passed to the second subroutine. 2. The second subroutine is a subroutine for receiving the end point number of the contour line, the line width column of the vertical and horizontal stems and the number thereof and generating the start point and end point numbers of each contour line. Outline font file compression method.
【請求項3】 前記ヒンティング情報は、第のサブル
ーチンに渡すための、一つのグリフを構成する各輪郭線
の始点および終点の点番号を含む命令列からなり、前記
のサブルーチンは前記各輪郭線の始点および終点の
点番号を受け取って、各点番号について位置補正を行う
サブルーチンであることを特徴とする請求項1記載のア
ウトラインフォントファイル圧縮方法。
Wherein said hinting information to pass to the third subroutine consists instruction sequence including a point number of the start point and end point of each contour lines constituting one glyph, the third subroutine the 2. The outline font file compression method according to claim 1, wherein the outline font file compression method is a subroutine for receiving the point numbers of the start point and the end point of each contour line and correcting the position for each point number.
【請求項4】 前記ヒンティング情報は、第のサブル
ーチンに渡すための、一つのグリフを構成する各輪郭線
の終点の点番号を含む命令列からなり、前記第のサブ
ルーチンは前記各輪郭線の終点の点番号を受け取って、
各点番号について位置補正を行うサブルーチンであるこ
とを特徴とする請求項1記載のアウトラインフォントフ
ァイル圧縮方法。
Wherein said hinting information to be passed to a fourth subroutine consists instruction sequence including a point number of the end point of each contour lines constituting one glyph, the fourth subroutine said each contour Receive the point number at the end of the line,
The outline font file compression method according to claim 1, wherein the subroutine is a subroutine for performing position correction for each point number.
【請求項5】 前記ヒンティング情報は、第のサブル
ーチンに渡すための、一つのグリフを構成する各輪郭線
に含まれる点の個数を含む命令列からなり、前記第
サブルーチンは前記各輪郭線に含まれる点の個数を受け
取って、各点番号について位置補正を行うサブルーチン
であることを特徴とする請求項1記載のアウトラインフ
ォントファイル圧縮方法。
Wherein said hinting information to pass to the fifth subroutine, consists instruction sequence including a number of points included in each contour forming one glyph, the fifth subroutine each 2. The outline font file compression method according to claim 1, which is a subroutine for receiving the number of points included in the contour line and correcting the position for each point number.
JP29830092A 1992-05-08 1992-11-09 Outline font file compression method Expired - Fee Related JP3391822B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP29830092A JP3391822B2 (en) 1992-05-08 1992-11-09 Outline font file compression method

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP11566392 1992-05-08
JP4-115663 1992-05-08
JP29830092A JP3391822B2 (en) 1992-05-08 1992-11-09 Outline font file compression method

Publications (2)

Publication Number Publication Date
JPH0619450A JPH0619450A (en) 1994-01-28
JP3391822B2 true JP3391822B2 (en) 2003-03-31

Family

ID=26454144

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29830092A Expired - Fee Related JP3391822B2 (en) 1992-05-08 1992-11-09 Outline font file compression method

Country Status (1)

Country Link
JP (1) JP3391822B2 (en)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0735496A1 (en) * 1995-03-30 1996-10-02 Eastern Graphics Technology Co. Ltd. A storage compression process for structural character & graphics
KR0172581B1 (en) 1996-04-02 1999-03-30 이진기 Transformation and rendering method for progressively renderable font
CN103186365B (en) * 2011-12-30 2015-08-12 北大方正集团有限公司 A kind of method and system generating steering order according to character contour change

Also Published As

Publication number Publication date
JPH0619450A (en) 1994-01-28

Similar Documents

Publication Publication Date Title
JP3356612B2 (en) High-speed contour smoothing method and apparatus
US6507677B2 (en) Image data adjusting device and method
JP3238580B2 (en) Thicker text generator
JP3391822B2 (en) Outline font file compression method
US5519412A (en) Pattern processing method
JPH05269956A (en) Electronic composition device for composing along optional line
JP3055187B2 (en) Contour data processing device
JP3442089B2 (en) Forming outline fonts using outline font files
JP3032417B2 (en) Character generator
JP3344538B2 (en) Character generator
JP3039015B2 (en) Character processor
JPH0580741A (en) System and device for character font generation
JPH04104296A (en) Character/graphic plotter
JP3536894B2 (en) Graphic processing unit
JP3055306B2 (en) Data output device
JP2598858B2 (en) Character creation / output method and device
JP3437032B2 (en) Character creator
JPS62211691A (en) Character synthesization system
JPH07262385A (en) Outline data generator
JPH02226491A (en) Data converting method
JP3359166B2 (en) Printer device and line segment division drawing method of printer device
JPH09179542A (en) Output method and device for character image data
JPS60242492A (en) Character generator
JPH03163596A (en) System for correcting crook point of vector font data
JPH04278993A (en) Outline data processor

Legal Events

Date Code Title Description
FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080124

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20090124

Year of fee payment: 6

LAPS Cancellation because of no payment of annual fees