JPH0619450A - ヒンティング情報圧縮方法 - Google Patents

ヒンティング情報圧縮方法

Info

Publication number
JPH0619450A
JPH0619450A JP4298300A JP29830092A JPH0619450A JP H0619450 A JPH0619450 A JP H0619450A JP 4298300 A JP4298300 A JP 4298300A JP 29830092 A JP29830092 A JP 29830092A JP H0619450 A JPH0619450 A JP H0619450A
Authority
JP
Japan
Prior art keywords
information
subroutine
hinting
glyph
outline
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.)
Granted
Application number
JP4298300A
Other languages
English (en)
Other versions
JP3391822B2 (ja
Inventor
Takahiro Asai
貴浩 浅井
Minoru Sakai
稔 境井
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/ja
Publication of JPH0619450A publication Critical patent/JPH0619450A/ja
Application granted granted Critical
Publication of JP3391822B2 publication Critical patent/JP3391822B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【目的】 ヒンティング情報のサイズを小さくすること
により、ファイルサイズを圧縮する。 【構成】 アウトラインフォントファイルは、n個のグ
リフデータ1と輪郭点を制御するためのサブルーチンを
含む共有データ2によって構成され、グリフデータは、
アウトライン情報とヒンテイング情報からなる。アウト
ライン情報は、連続的に番号を付けられた輪郭点とその
座標データからなり、ヒンテイング情報は、アウトライ
ン情報を制御する命令列(例えば、サブルーチン番号
と、サブルーチンに渡される輪郭線の終点番号の列とそ
の個数など)から構成される。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、アウトラインフォント
ファイルにおけるヒンティング情報の圧縮方法に関す
る。
【0002】
【従来の技術】デスクトップパブリッシング、パーソナ
ルコンピュータ、ワードプロセッサ、ディジタルファッ
クス等においては、その装置内に文字フォントデータが
用意されている。斯るフォントデータは、通常、ドット
パターン方式、アウトライン方式、あるいはそれらの併
用方式の何れかの方式によって保持されている。そし
て、アウトラインフォントを表示、印刷するために、そ
のフォント表現はドットパターンに変換される。
【0003】従来、アウトラインフォントをドットイメ
ージに変換するラスタライズにおいては、フォントファ
イルによって輪郭点の座標データと各輪郭点のヒンティ
ングに関する属性データが与えられ、実際のヒンティン
グ処理は、これら座標データと属性データを用いてラス
タライザが行っていた。
【0004】ここで、ヒンティング処理とは、アウトラ
インを美しく整形するための処理をいい、例えば、特開
昭62−182884号公報に記載の文字発生方式など
種々の方法が提案されている。
【0005】
【発明が解決しようとする課題】ところで、最近Tru
e Typeなどの新しいフォーマットが提案された。
これは、フォントファイルの中にプログラムとしてのヒ
ント情報が含まれていて、ラスタライザはそれを実行す
ることによってヒンティング処理を行うものである。こ
のように、従来ラスタライザが行っていたヒンティング
処理を、フォントファイル中にプログラムとして組み込
む必要があり、このためフォントファイルのサイズが非
常に大きくなるという問題があった。
【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を渡すべきサブルーチンであることを表して
いる。
【0007】上記したヒンティング処理をスタックマシ
ン上で実現すると、以下のようになる。すなわち、 PUSH〔1〕 0 f0 CALL〔〕 PUSH〔1〕 1 f1 CALL〔〕 PUSH〔1〕 2 f2 CALL〔〕 . . . PUSH〔1〕 n fn CALL〔〕 最初にスタックの先頭に、処理されるべき点番号である
0を積み、続いて呼び出されるサブルーチン番号f0を
積む。CALL〔〕は、スタックの先頭にあるデータを
サブルーチン番号と解釈し、そこへ飛ぶ。呼び出された
サブルーチンf0は、スタックの先頭にあるデータを処
理すべき点の番号と解釈し、その点に対して予め決めら
れた処理(例えば、輪郭点を上に1ビットシフトするな
ど)を行う。このような処理を繰り返すことによって、
全ての点に対する所定のヒンティング処理が行われる。
【0008】ヒンティング情報のサイズは、各輪郭点に
ついてその番号とサブルーチン番号をスタックに積んで
からサブルーチン呼び出しをするため、輪郭点一つにつ
いて4バイト(つまり、点番号とサブルーチン番号、P
USH命令とCALL命令)を要する。従って、フォン
ト全体では、4×200×8,000=6,400,0
00となり、6.4メガバイトにもなり、更にヒンティ
ング情報を圧縮することが望まれていた。
【0009】本発明の目的は、ヒンティング情報のサイ
ズを小さくすることにより、ファイルサイズを圧縮した
ヒンティング情報圧縮方法を提供することにある。
【0010】
【課題を解決するための手段】前記目的を達成するため
に、請求項1記載の発明では、複数のグリフデータと該
データを規定する共有データとを有し、前記各グリフデ
ータは、輪郭点の集合であるアウトライン情報と該アウ
トライン情報を制御する命令列であるヒンティング情報
からなり、前記共有データは、前記命令列から呼び出さ
れるサブルーチン群を含み、該各サブルーチンはアウト
ライン情報を制御する命令列によって構成されているア
ウトラインフォントファイルにおいて、前記ヒンティン
グ情報は、グリフの各輪郭線に含まれる全ての輪郭点の
点番号を生成するに必要な情報を前記サブルーチンに渡
すための命令列から構成されていることを特徴としてい
る。
【0011】請求項2記載の発明では、前記ヒンティン
グ情報は、グリフの各輪郭線に含まれる全ての輪郭点の
点番号を生成するに必要な情報と該輪郭線によって構成
されるステムの幅に関する情報を前記サブルーチンに渡
すための命令列から構成されていることを特徴としてい
る。
【0012】請求項3記載の発明では、前記ヒンティン
グ情報の命令列が、PUSH命令とサブルーチン呼び出
しが交互に現われる命令列であるとき、さきにPUSH
命令をまとめて実行し、サブルーチン呼び出しを続けて
実行することを特徴としている。
【0013】請求項4記載の発明では、スタック上のデ
ータ数が指定された値よりも少なくなるまで繰返しサブ
ルーチン呼び出しを実行するための命令列から構成され
た第1のサブルーチンを設け、前記ヒンティング情報の
命令列が、PUSH命令とサブルーチン呼び出しが交互
に現われる命令列であるとき、さきにPUSH命令をま
とめて実行し、最後に前記第1のサブルーチンを呼び出
すことを特徴としている。
【0014】請求項5記載の発明では、複数のグリフデ
ータと該データを規定する共有データとを有し、前記各
グリフデータは、輪郭点の集合であるアウトライン情報
と該アウトライン情報を制御する命令列であるヒンティ
ング情報からなり、前記共有データは、前記命令列から
呼び出されるサブルーチン群を含み、該各サブルーチン
はアウトライン情報を制御する命令列によって構成され
ているアウトラインフォントファイルにおいて、各グリ
フの有するヒンティング情報は、グリフの各輪郭線の始
点および終点の点番号の情報を前記サブルーチンに渡す
ための命令列から構成されていることを特徴としてい
る。
【0015】請求項6記載の発明では、前記各グリフの
有するヒンティング情報は、グリフの各輪郭線の終点の
点番号の情報を前記サブルーチンに渡すための命令列か
ら構成されていることを特徴としている。
【0016】請求項7記載の発明では、前記各グリフの
有するヒンティング情報は、グリフの各輪郭線に含まれ
る点の個数の情報を前記サブルーチンに渡すための命令
列から構成されていることを特徴としている。
【0017】
【作用】アウトラインフォントファイルは、n個のグリ
フデータと輪郭点を制御するためのサブルーチンを含む
共有データによって構成される。グリフデータは、アウ
トライン情報とヒンティング情報からなる。アウトライ
ン情報は、連続的に番号を付けられた輪郭点とその座標
データからなり、ヒンティング情報は、アウトライン情
報を制御する命令列から構成される。一実施例のヒンテ
ィング情報としては、一つのグリフを構成する輪郭線の
終点番号の列とその個数をサブルーチンに渡すための命
令列からなる。これにより、従来の方式に比べてヒンテ
ィング情報の大きさを圧縮することが可能となる。
【0018】
【実施例】以下、本発明の一実施例を図面を用いて具体
的に説明する。 〈実施例1〉図1は、本実施例のアウトラインフォント
ファイルの構成を示す図で、n個のグリフデータ1(グ
リフ1,グリフ2,・・・グリフn)と共有データ2に
よってファイルが構成されている。
【0019】図2は、グリフデータ1の構成を示す図
で、グリフデータは、アウトライン情報11とヒント情
報12からなっている。そして、アウトライン情報11
は、連続的に番号を付けられた輪郭点とその座標データ
からなり、ヒント情報12は、アウトライン情報11を
制御する命令列(例えば、点1を右に1ドットシフトす
るという命令など)から構成されている。
【0020】図3は、共有データ2の中に輪郭点を制御
するためのサブルーチン群(サブルーチン1からサブル
ーチンm)が含まれている図を示し、本実施例では、こ
れらのサブルーチンとして、後述するように、輪郭線の
始点、終点、縦横ステムの幅に関する情報が与えられ
て、輪郭線に対してヒンティング処理を行うサブルーチ
ンS0,S1、輪郭線の終点番号の列とその個数を受け
取って、各輪郭線の始点と終点の番号を生成するサブル
ーチンG0、輪郭線に含まれる輪郭点の数の列とその個
数を受け取って、各輪郭線の始点と終点の番号を生成す
るサブルーチンG1、輪郭線の終点番号と縦横ステムの
線幅の列とその個数を受け取って、各輪郭線の始点と終
点の番号を生成するサブルーチンG2、輪郭線に含まれ
る輪郭点の数と縦横ステムの線幅の列とその個数を受け
取って、各輪郭線の始点と終点の番号を生成するサブル
ーチンG3、サブルーチン呼び出し用のサブルーチンL
0が設けられている。
【0021】図4は、本実施例のヒンティング処理対象
となる輪郭線(グリフ)の例を示す図である。この例に
おいて、例えば、輪郭点をたどる方向は、右側に黒塗の
領域を見る方向であり、外側の輪郭線においては時計方
向となり、内側の輪郭線においては反時計方向となる。
このグリフは、外側の輪郭線は、点0から点14の15
個の輪郭点で構成され、内側の輪郭線は、点15から点
18の4個の輪郭点で構成されている。また、x軸は左
から右に、y軸は下から上に増加するものとする。
【0022】図5は、本実施例の輪郭線ヒンティング処
理のフローチャートを示す。この処理は、一つの輪郭線
の始点と終点の番号(さらには縦横ステムの線幅)を受
け取り、その輪郭線に対するヒンティング処理を行うも
ので、図3の共有データ中にサブルーチンとして用意さ
れている。
【0023】図5において、まず、HWに縦ステムの幅
を保持し、VWに横ステムの幅を保持する(ステップ1
01)。これらのデータの入手方法としては、これを呼
び出すサブルーチンが引数として渡す方法(引数として
渡され、本ヒンティング処理を行うサブルーチンをサブ
ルーチンS0と呼ぶ)、予め決められた値を用いる方法
(この場合のヒンティング処理を行うサブルーチンをサ
ブルーチンS1と呼ぶ)がある。
【0024】Psに輪郭線の始点の番号(点0)を保持
し、Peにその次の点の番号(点1)を保持する(ステ
ップ102)。PsとPeのx座標が同じであるなら
ば、PsからPeに至る線分は垂直線である(ステップ
103)。そして、その線分は、縦ステムの左右端の何
れかであるが(ステップ110)、もし、Psのy座標
がPeのそれよりも大きければ右端、そうでなければ左
端と判定され、これらに対しては縦ステムの幅をVWに
するようなヒンティング処理を施す(ステップ111、
112)。
【0025】PsとPeのx座標が異なり、y座標が等
しい場合も(ステップ104)全く同様に横ステムの上
端であるか下端であるかを判定する(ステップ11
3)。そして、これらに対しては横ステムの幅をHWに
するようなヒンティング処理を施す(ステップ114、
115)。
【0026】また、それらの何れでもない場合は、斜線
または曲線として別のヒンティング処理を施す(ステッ
プ105)。次いで、Peが輪郭線の終点であるならば
(ステップ106)、PsにはPeの指していた点番号
を保持し、Peには輪郭線の始点の番号を保持する(ス
テップ109)。
【0027】Peが輪郭線の終点ではなく、Psが輪郭
線の終点であるならば(ステップ107)、全ての点の
処理を終了したので、ヒンティング処理が終了する。そ
うでなければ、PsにはPeの指していた点番号を保持
し、Peにはその次の点の番号を保持する(ステップ1
08)。以下、ステップ103に戻り、Ps(点1),
Pe(点2)について同様の処理を行い、以上の処理を
全ての点について繰り返す。
【0028】これによって、輪郭線の始点と終点、縦横
ステムの幅に関する情報があれば、その輪郭線をヒンテ
ィング処理することが可能であることが示された。
【0029】さて、輪郭線によって構成される縦横ステ
ムの幅が予め決められているものとする。従って、図5
のフローチャートにおいて、HWとVWに対する値の設
定は自動的に行われ(つまり、一つのグリフ中で縦横ス
テムの幅はそれぞれ一種類に限定される)、前述したよ
うに、図5のフローチャートは、サブルーチンS1とな
る。
【0030】本実施例では、図6に示されるフローチャ
ートに従うサブルーチンG0を共有データに用意する。
このサブルーチンG0は、一つのグリフを構成する輪郭
線の終点番号の列とその個数を受け取って、各輪郭線の
始点と終点の番号を生成し、その生成された始点と終点
の番号を逐次サブルーチンS1に渡すサブルーチンであ
る。
【0031】すなわち、図6において、まず、PsとN
を0に設定する(ステップ201)。Nが輪郭線の終点
番号の個数(この個数は予めスタックからポップして記
憶しておく)より小さい間、以下の処理を繰り返す(ス
テップ202)。ステップ203で、Peにデータ(終
点番号)を一つ読み込む(スタックからポップする)。
PsとPeを引数として、サブルーチンS1を呼び出す
(ステップ204)。その後、PsにはPe+1、Nに
はN+1を設定し(ステップ205)、ステップ202
に戻る。
【0032】このサブルーチンG0を用いることによ
り、例えば図4のヒンティング情報は次のようになる。
すなわち、 PUSH〔3〕 18 14 2 G0 CALL〔〕 ここで、PUSH〔3〕は、後に続く4バイトのデータ
をスタックに積む命令であり、“18”は、図4の内側
の輪郭線の終点番号であり、“14”は、図4の外側の
輪郭線の終点番号であり、“2”は、番号列の個数であ
り、G0は、サブルーチン番号である。
【0033】従って、呼び出されたサブルーチンG0
は、最初の処理で、Ps=0,Pe=14を生成して、
サブルーチンS1に渡し、次の処理で、Ps=15(P
e+1),Pe=18を生成して、サブルーチンS1に
渡される。
【0034】なお、一般的には、輪郭線の数が多いた
め、 NPUSH〔〕 n+2 点0 点1 ...点n−1
n G0 CALL〔〕 という手順になる。ここで、n+2は、スタックに積む
データの個数である。
【0035】ヒンティング情報のサイズは、各輪郭線に
ついて、その終点の番号と輪郭線の数、サブルーチン番
号をスタックに積んでからサブルーチン呼び出しを行う
ので、グリフ毎に15バイト(輪郭線の数が10、点の
個数を知らせるためのnそれ自身、サブルーチン番号、
そしてNPUSH命令と積む個数n+2、CALL命
令)、フォント全体では、 15×8,000=120,000 となり、120キロバイトで済むことになる。
【0036】〈実施例2〉実施例2は、輪郭線の終点番
号の代わりに輪郭線に含まれる輪郭点の数を渡す実施例
であり、図7は、そのフローチャートである。これは、
一つのグリフを構成する輪郭線に含まれる輪郭点の数の
列とその個数を受け取って、各輪郭線の始点と終点の番
号を生成し、それを逐次サブルーチンS1に渡すサブル
ーチンG1である。
【0037】具体的には、まずPsとNを0に設定す
る。Nが輪郭点の数の個数より小さい間、以下の処理を
繰り返す。Pnにデータを一つ読み込む。PeをPs+
Pn−1として輪郭線の終点を求める。PsとPeを引
数として、サブルーチンS1を呼び出す。その後、Ps
にはPe+1、NにはN+1を設定しなおす。
【0038】このサブルーチンG1を用いることによっ
て、例えば図4のヒンティング情報は、次のようにな
る。すなわち、 PUSH〔3〕 4 15 2 G1 CALL〔〕 ここで、“4”は、内側の輪郭線の輪郭点の数であり、
“15”は、外側の輪郭線の輪郭点の数であり、“2”
は、輪郭点の数の個数である。
【0039】ただし、一般的には輪郭線の数が多いた
め、前述した実施例と同様に、PUSH命令ではなく、
NPUSH命令を使うことになる。ヒンティング情報の
サイズも実施例1と同じである。
【0040】〈実施例3〉実施例3は、一つのグリフを
構成する輪郭線の終点番号と縦横ステムの線幅の列とそ
の個数を受け取って、各輪郭線の始点と終点の番号を生
成し、それを逐次サブルーチンS0に渡すサブルーチン
G2である。図8は、そのフローチャートであり、共有
データにサブルーチンG2として用意されている。
【0041】具体的には、まず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である。
【0042】本実施例によるヒンティング情報のサイズ
は、各輪郭線について、その終点の番号と輪郭線の数、
縦横ステムの線幅とサブルーチン番号をスタックに積ん
でからサブルーチン呼び出しを行うので、グリフ毎に3
5バイト(輪郭線の数が10、縦横ステムの線幅がそれ
ぞれ10、データの個数を知らせるための数、サブルー
チン番号、そしてNPUSH命令と積む個数、CALL
命令)、フォント全体では、 35×8,000=280,000 となり、280キロバイトで済むことになる。
【0043】〈実施例4〉実施例4は、輪郭線の終点番
号の代わりに輪郭線に含まれる輪郭点の数を渡す実施例
であり、図9は、そのフローチャートである。これは、
一つのグリフを構成する輪郭線に含まれる輪郭点の数と
縦横ステムの線幅の列とその個数を受け取って、各輪郭
線の始点と終点の番号を生成し、それを逐次サブルーチ
ンS0に渡すサブルーチンG3である。
【0044】具体的には、まずPsとNを0に設定す
る。Nが輪郭点の数の個数より小さい間、以下の処理を
繰り返す。Pnにデータを一つ読み込む。PeをPs+
Pn−1として輪郭線の終点を求める。Ps、Pe、H
WとVWを引数として、サブルーチンS0を呼び出す。
その後、PsにはPe+1、NにはN+1を設定しなお
す。
【0045】このサブルーチンG3を用いることによっ
て、例えば図4のヒンティング情報は、次のようにな
る。すなわち、 NPUSH〔〕 8 4 hw vw 15 hw v
w 6 G3 CALL〔〕 ヒンティング情報のサイズは実施例3と同じである。こ
のサブルーチンを用いることにより、画数の多いグリフ
などにおいてステムの幅が部分的に変化する場合にも対
応することが可能となる。
【0046】〈実施例5〉前述したように、従来のヒン
ティング処理は以下のようにして行っていた。 PUSH〔1〕 0 f0 CALL〔〕 PUSH〔1〕 1 f1 CALL〔〕 PUSH〔1〕 2 f2 CALL〔〕 . . . PUSH〔1〕 n fn CALL〔〕 実際には、上記手順には無駄が多い。そこで、これを以
下のように変更する。
【0047】 PUSH〔1〕 n fn . . . PUSH〔1〕 2 f2 PUSH〔1〕 1 f1 PUSH〔1〕 0 f0 CALL〔〕 CALL〔〕 CALL〔〕 . . . CALL〔〕 このように変更しても全く同様の処理が行われる。
【0048】本実施例では、これを再度変更して、以下
を得る。すなわち、 NPUSH〔〕 2×n n fn...2 f2 1
f1 0 f0 CALL〔〕 CALL〔〕 CALL〔〕 . . . CALL〔〕 となる。
【0049】本実施例によるヒンティング情報のサイズ
は、各輪郭点について、その番号とサブルーチン番号を
スタックに積んでからサブルーチン呼び出しを行うの
で、輪郭点一つについて3バイト(点番号とサブルーチ
ン番号、CALL命令)を要する。その他にNPUSH
命令のために2バイトを要するので、フォント全体では 、(3×200+2)×8,000=4,816,00
0 となり、4.8メガバイトで済むことになる。
【0050】〈実施例6〉本実施例は、上記実施例5の
サブルーチン呼び出しの繰返しを圧縮した実施例であ
る。図10に示すフローチャートは、整数を一つ引数と
して、スタック上のデータの数が引数より少なくなるま
でCALL命令を繰り返すサブルーチンL0で、共有デ
ータ中に用意される。
【0051】具体的には、まずNに引数を格納する。ス
タック上のデータの数をSに格納する。NがSより小さ
ければCALL命令を実行する。本実施例のサブルーチ
ンL0を用いることにより、前述した従来のヒンティン
グ処理は、次のように変更できる。
【0052】すなわち、 NPUSH〔〕 2×n+1 n fn:2 f2 1
f1 0 f0 L0 CALL〔〕 となる。
【0053】本実施例によるヒンティング情報のサイズ
は、各輪郭点について、その番号とサブルーチン番号を
スタックに積んでからサブルーチンL0を呼び出すの
で、輪郭点一つについて2バイト(点番号とサブルーチ
ン番号)を要する。その他にNPUSH命令のために2
バイト、CALL命令のために3バイトを要するので、
フォント全体では、 (2×200+5)×8,000=3,240,000 となり、3.2メガバイトで済み、従来の方式の半分に
まで圧縮することができる。
【0054】輪郭線にヒンティング処理を施す方法につ
いて説明した。前述した実施例は、輪郭線の終点番号の
列を渡す例と輪郭線に含まれる輪郭点の個数の列を渡す
例を示したが、実際に何を渡すかについては種々の選択
肢があり、本発明は上記したものに限定されるものでは
ない。ここで、重要なことは、輪郭線の始点と終点を特
定するための最小限の情報を渡すことである。
【0055】また、実施例3、4において、縦横ステム
の両方を渡す例を示したが、本発明はこれに限定される
ものではない。例えば、一つのグリフ中で縦ステムの幅
が一定であるのに対して、横ステムの幅が輪郭線毎に異
なるような場合には、横ステムの線幅のみを渡せばよい
ことは明らかである。さらに、予め定められた線幅につ
いて処理を行うサブルーチンS1において、その線幅を
変えたS1’,S1”,...の如きサブルーチンを各
種用意するように実施例を変更することもできる。いず
れにしても、前述した説明から明らかなように、従来の
方法では数メガバイトも要していたヒンティングのため
の情報が、僅か数百キロバイトで済むことになる。
【0056】また、上記実施例6は、境界条件を一つの
引数としてとるサブルーチンL0の例であるが、本発明
はこれに限定されるものではなく、種々の変更が可能で
ある。例えば、必要なCALL命令の回数を引数とする
もの、あるいはスタック上のデータがなくなるまでCA
LL命令を繰り返すものなどに変更することができる。
【0057】〈実施例7〉共有データに含まれるサブル
ーチン群はどのグリフからも呼び出すことが可能である
ので、各グリフに共通なサブルーチンを共有データ内に
用意することによって、フォントファイル全体のサイズ
を圧縮することができる。
【0058】図12は、実施例7に係る、共有データ内
に用意されたサブルーチンFのフローチャートである。
このサブルーチンFは、受け取った輪郭点の点番号に対
して、その点に応じた位置補正を行うヒンティングルー
チンである。
【0059】すなわち、サブルーチンFは、現在処理中
である輪郭点の点番号をPとすると、点Pが縦ステムの
点であるかを判定し(ステップ301)、縦ステムの点
であるときには、縦ステムの左側か否かを判定し(ステ
ップ304)、左側のときは、縦ステムの左側の位置補
正を行い(ステップ306)、そうでなければ縦ステム
の右側の位置補正を行う(ステップ305)。
【0060】点Pが縦ステムの点でないときには、横ス
テムの点であるかを判定し(ステップ302)、横ステ
ムの点であるときには、横ステムの上側か否かを判定し
(ステップ307)、上側のときは上端の補正を行い
(ステップ309)、そうでないときは下端の補正を行
う(ステップ308)。ステップ302で横ステムの点
でないと判定されたときは、曲線、斜線上の点であるの
で、斜線(曲線)補正を行う(ステップ303)。
【0061】図1のアウトラインフォントファイルにお
いて、本実施例のグリフ1の有するヒンティング情報1
2は、グリフに含まれる各輪郭線の始点と終点とを共有
データ12内のサブルーチンFに渡すための命令列から
構成されている。そして、データの受け渡しはスタック
を用いて行われる。
【0062】図13は、本実施例7の動作フローチャー
トである。まず、当該グリフに含まれる各輪郭線の始点
および終点をスタックに積む操作が行われる(ステップ
401)。次いで、始点の番号がスタックからポップさ
れ(ステップ402)、現在処理中の点である点Pに代
入される(ステップ403)。同様に、終点の番号がス
タックからポップされ(ステップ404)、終点の点番
号Pendに代入される(ステップ405)。
【0063】サブルーチンFが呼ばれると、点Pに対し
て前述した位置の補正処理が施される(ステップ40
6)。サブルーチンFは各輪郭線のもつ点の個数だけ繰
返し呼び出され、輪郭線の全ての点の位置補正を行う
(ステップ406、407、408)。
【0064】一つの輪郭線に含まれる点の全てについて
位置補正を行った後、スタックを調べる(ステップ40
9)。スタックが空である場合は、全ての輪郭線につい
て処理を終了しているので、そのまま終了し、そうでな
い場合は、次の輪郭線について同様の処理を行う。
【0065】〈実施例8〉図14は、実施例8の動作フ
ローチャートである。この実施例では、各輪郭線の終点
の点番号のみをスタックに積む。つまり、図4の輪郭線
の例では、第1の輪郭線の終点番号14と、第2の輪郭
線の終点番号18がスタックに積まれる。ただし、最初
の輪郭線の最初の点の点番号は常に0である。前述した
実施例7と全く同様に点番号0から順に位置補正を行
う。
【0066】〈実施例9〉図15は、実施例9の動作フ
ローチャートである。この実施例では、各輪郭線に含ま
れる点の個数をスタックに積む(図4の輪郭線の例で
は、外側の輪郭線の点の個数15個と、内側の輪郭線の
点の個数4個)。輪郭線の終点の点番号Pendは、始
点の点番号Pと輪郭線に含まれる点の個数から求めるこ
とができる。ただし、本実施例においても、最初の輪郭
線の最初の点の点番号は常に0である。その他は、前述
した実施例7の場合と同様であるので説明を省略する。
【0067】
【発明の効果】以上、説明したように、請求項1記載の
発明によれば、輪郭線の始点と終点を特定するための最
小限の情報を、ヒンティング処理を行うサブルーチンに
渡しているので、従来の方式に比べてヒンティング情報
のサイズを大幅に圧縮することができる。請求項2記載
の発明によれば、輪郭線の始点と終点を特定するための
最小限の情報とステム幅の情報を、ヒンティング処理を
行うサブルーチンに渡しているので、従来の方式に比べ
てヒンティング情報のサイズを大幅に圧縮することがで
きる。請求項3記載の発明によれば、PUSH命令を先
にまとめて実行しているので、ヒンティング情報のサイ
ズを小さくすることができる。請求項4記載の発明によ
れば、CALL命令の繰返しを行うサブルーチンを用い
るので、処理効率を落すことなくヒンティング情報量を
更に圧縮させることができる。
【0068】請求項5、6記載の発明によれば、各輪郭
線の点番号の情報をヒンティング処理を行うサブルーチ
ンに渡しているので、ヒンティング情報のサイズが圧縮
され、フォントファイルのサイズを圧縮することができ
る。
【0069】請求項7記載の発明によれば、各輪郭線に
含まれる点の個数の情報をヒンティング処理を行うサブ
ルーチンに渡しているので、一つのグリフを構成する点
が多すぎるために、スタックに始点あるいは終点を積む
ことが困難である場合に効果的である。
【図面の簡単な説明】
【図1】本発明のアウトラインフォントファイルの構成
を示す図である。
【図2】グリフデータの構成を示す図である。
【図3】共有データの中に輪郭点を制御するためのサブ
ルーチンが含まれている図である。
【図4】輪郭線の例を示す図である。
【図5】本発明の輪郭線ヒンティング処理のフローチャ
ートである。
【図6】実施例1に係る輪郭線の終点の列を受け取るサ
ブルーチンである。
【図7】実施例2に係る輪郭点の個数を受け取るサブル
ーチンである。
【図8】実施例3に係る輪郭線の終点の列と線幅を受け
取るサブルーチンである。
【図9】実施例4に係る輪郭点の個数と線幅を受け取る
サブルーチンである。
【図10】実施例6に係るサブルーチン呼び出し用サブ
ルーチンである。
【図11】本出願人が先に提案した、輪郭点を制御する
ためにサブルーチンを呼び出す図である。
【図12】実施例7に係るサブルーチンFのフローチャ
ートである。
【図13】実施例7の動作フローチャートである。
【図14】実施例8の動作フローチャートである。
【図15】実施例9の動作フローチャートである。
【符号の説明】
1 グリフデータ 2 共有データ 11 アウトライン情報 12 ヒンティング情報

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 複数のグリフデータと該データを規定す
    る共有データとを有し、前記各グリフデータは、輪郭点
    の集合であるアウトライン情報と該アウトライン情報を
    制御する命令列であるヒンティング情報からなり、前記
    共有データは、前記命令列から呼び出されるサブルーチ
    ン群を含み、該各サブルーチンはアウトライン情報を制
    御する命令列によって構成されているアウトラインフォ
    ントファイルにおいて、前記ヒンティング情報は、グリ
    フの各輪郭線に含まれる全ての輪郭点の点番号を生成す
    るに必要な情報を前記サブルーチンに渡すための命令列
    から構成されていることを特徴とするヒンティング情報
    圧縮方法。
  2. 【請求項2】 前記ヒンティング情報は、グリフの各輪
    郭線に含まれる全ての輪郭点の点番号を生成するに必要
    な情報と該輪郭線によって構成されるステムの幅に関す
    る情報を前記サブルーチンに渡すための命令列から構成
    されていることを特徴とする請求項1記載のヒンティン
    グ情報圧縮方法。
  3. 【請求項3】 前記ヒンティング情報の命令列が、PU
    SH命令とサブルーチン呼び出しが交互に現われる命令
    列であるとき、先にPUSH命令をまとめて実行し、サ
    ブルーチン呼び出しを続けて実行することを特徴とする
    請求項1記載のヒンティング情報圧縮方法。
  4. 【請求項4】 スタック上のデータ数が指定された値よ
    りも少なくなるまで繰返しサブルーチン呼び出しを実行
    するための命令列から構成された第1のサブルーチンを
    設け、前記ヒンティング情報の命令列が、PUSH命令
    とサブルーチン呼び出しが交互に現われる命令列である
    とき、先にPUSH命令をまとめて実行し、最後に前記
    第1のサブルーチンを呼び出すことを特徴とする請求項
    3記載のヒンティング情報圧縮方法。
  5. 【請求項5】 複数のグリフデータと該データを規定す
    る共有データとを有し、前記各グリフデータは、輪郭点
    の集合であるアウトライン情報と該アウトライン情報を
    制御する命令列であるヒンティング情報からなり、前記
    共有データは、前記命令列から呼び出されるサブルーチ
    ン群を含み、該各サブルーチンはアウトライン情報を制
    御する命令列によって構成されているアウトラインフォ
    ントファイルにおいて、各グリフの有するヒンティング
    情報は、グリフの各輪郭線の始点および終点の点番号の
    情報を前記サブルーチンに渡すための命令列から構成さ
    れていることを特徴とするヒンティング情報圧縮方法。
  6. 【請求項6】 前記各グリフの有するヒンティング情報
    は、グリフの各輪郭線の終点の点番号の情報を前記サブ
    ルーチンに渡すための命令列から構成されていることを
    特徴とする請求項5記載のヒンティング情報圧縮方法。
  7. 【請求項7】 前記各グリフの有するヒンティング情報
    は、グリフの各輪郭線に含まれる点の個数の情報を前記
    サブルーチンに渡すための命令列から構成されているこ
    とを特徴とする請求項5記載のヒンティング情報圧縮方
    法。
JP29830092A 1992-05-08 1992-11-09 アウトラインフォントファイル圧縮方法 Expired - Fee Related JP3391822B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP29830092A JP3391822B2 (ja) 1992-05-08 1992-11-09 アウトラインフォントファイル圧縮方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP4-115663 1992-05-08
JP11566392 1992-05-08
JP29830092A JP3391822B2 (ja) 1992-05-08 1992-11-09 アウトラインフォントファイル圧縮方法

Publications (2)

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

Family

ID=26454144

Family Applications (1)

Application Number Title Priority Date Filing Date
JP29830092A Expired - Fee Related JP3391822B2 (ja) 1992-05-08 1992-11-09 アウトラインフォントファイル圧縮方法

Country Status (1)

Country Link
JP (1) JP3391822B2 (ja)

Cited By (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
US6232987B1 (en) 1996-04-02 2001-05-15 Hyundai Electronics Industries Co., Ltd. Progressively renderable outline font and methods of generating, transmitting and rendering the same
JP2014527193A (ja) * 2011-12-30 2014-10-09 北大方正集▲団▼有限公司 フォントアウトラインの変更に従って命令を発生するための方法およびシステム

Cited By (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
US6232987B1 (en) 1996-04-02 2001-05-15 Hyundai Electronics Industries Co., Ltd. Progressively renderable outline font and methods of generating, transmitting and rendering the same
JP2014527193A (ja) * 2011-12-30 2014-10-09 北大方正集▲団▼有限公司 フォントアウトラインの変更に従って命令を発生するための方法およびシステム

Also Published As

Publication number Publication date
JP3391822B2 (ja) 2003-03-31

Similar Documents

Publication Publication Date Title
US5590247A (en) Character string outputting method and apparatus capable of varying sizes of characters
JP3391822B2 (ja) アウトラインフォントファイル圧縮方法
JP2018041185A (ja) 画像処理装置、画像処理方法および制御プログラム
US5920324A (en) Character pattern producing apparatus capable of producing character pattern having connected character elements
JP3442089B2 (ja) アウトラインフォントファイルを使用したアウトラインフォントの形成方法
JPH05207266A (ja) 画像編集処理装置
JP3032417B2 (ja) 文字発生装置
JP3087427B2 (ja) 輪郭線データ変換装置
JP3280160B2 (ja) 文書処理装置および文書処理方法
JPH0580741A (ja) 文字フオント生成方式及び装置
JPH04104296A (ja) 文字・図形描画装置
JP2532367B2 (ja) 文字パタ−ン発生方法
JP3039015B2 (ja) 文字処理装置
JP2598858B2 (ja) キャラクタ作成/出力方法および装置
JP3692639B2 (ja) 描画処理装置
JP3375069B2 (ja) 描画処理装置
JP3536894B2 (ja) 図形処理装置
JPS63224965A (ja) 文字発生装置
JPH02231686A (ja) 図形塗りつぶし方法
JP3055306B2 (ja) データ出力装置
JPS60242492A (ja) 文字発生装置
JPH0948160A (ja) 文字記憶装置
JPS62211691A (ja) 文字合成方式
JPH05307255A (ja) 仮想割付矩形に従って文字群の配置を調整する組版方法
JPH04291463A (ja) データ変換装置

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