JPH0695643A - アウトラインフォントのヒンティング方法 - Google Patents

アウトラインフォントのヒンティング方法

Info

Publication number
JPH0695643A
JPH0695643A JP4240826A JP24082692A JPH0695643A JP H0695643 A JPH0695643 A JP H0695643A JP 4240826 A JP4240826 A JP 4240826A JP 24082692 A JP24082692 A JP 24082692A JP H0695643 A JPH0695643 A JP H0695643A
Authority
JP
Japan
Prior art keywords
data
coordinate
hinting
outline
coordinate data
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
JP4240826A
Other languages
English (en)
Other versions
JP3215179B2 (ja
Inventor
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 JP24082692A priority Critical patent/JP3215179B2/ja
Publication of JPH0695643A publication Critical patent/JPH0695643A/ja
Application granted granted Critical
Publication of JP3215179B2 publication Critical patent/JP3215179B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Landscapes

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

Abstract

(57)【要約】 【目的】 演算精度の低い処理系においても正確な線幅
補正を可能とする。 【構成】 アウトラインデータの輪郭点が縦ステムの左
端であるときには(ステップ104)、既に変倍された
座標値と距離をデザインサイズに戻す。その座標値に距
離を加算した座標値を、変倍してから線幅補正のヒンテ
ィング処理を施す(ステップ105)。縦ステムの右端
に対しては(ステップ106)、x座標の丸め処理を行
う(ステップ107)。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、アウトラインフォント
のヒンティング時における精度誤差を除去したヒンティ
ング方法に関する。
【0002】
【従来の技術】図3は、アウトラインフォントの処理構
成図である。フォントファイル1から読み込まれたアウ
トラインデータは、展開部2において輪郭線として展開
され、次いで変倍処理部3で求める大きさに変倍され、
ヒンティング処理部4では、変倍されたアウトラインデ
ータに対して線幅補正などのヒンティングを施し、ラス
タライザ5で塗りつぶし処理が行われて輪郭内をドット
データ6に展開する。
【0003】なお、上記した技術については、NIKK
EI BYTE/JUNE1992pp158−165
(文献1),同FEBRUARY 1992 pp11
2−123(文献2)において詳細に説明されている。
【0004】以下の説明においては、ピクセルは格子点
を左下隅とする単位正方形であるものとし、従って、ピ
クセルの中心は、 (x+0.5 ,y+0.5) ただし、x,yは整数 にある。もちろん格子点をピクセル中心と仮定してもよ
い。
【0005】256×256ピクセルの空間でデザイン
された文字“H”を、13×13ピクセルに縮小する例
を用いて、従来技術の問題点を説明する。フォントファ
イル1から読み込まれたアウトラインデータは、図4に
示すように輪郭線として展開される。このアウトライン
データを13×13ピクセルに縮小すると、図5のデー
タが得られる。
【0006】ここで、塗りつぶし処理のために、例えば
輪郭線の上または内部にピクセル中心のあるピクセルが
反転するという、塗りつぶし規則を採用すると、左側の
縦ステムは2ピクセルになり、右側の縦ステムは1ピク
セルになってしまう。
【0007】また、各点のx,y座標を四捨五入する
と、縦ステムの太さが違ってしまう。一方、四捨五入で
はなく、切り上げや切り捨てを用いると、右側のステム
が太くなり、左側のステムが細くなってしまう。このよ
うな線幅がバラついたりする問題点については、前掲し
た文献1の163ページにおいても指摘されている。こ
れを解決する手法がヒンティングと呼ばれる技術であ
る。
【0008】
【発明が解決しようとする課題】本出願人は先に、変倍
処理や丸めによって生じるステムの線幅のバラツキを効
果的に修正するアウトラインフォントの輪郭線補正方法
を提案した(特願平4−238629号)。この方法に
おいては、縦ステムの右側と横ステムの上側を丸め、縦
ステムの左側と下側には線幅補正(適合処理)を施すも
ので、その処理結果を図6に示す。
【0009】上記提案した輪郭線補正方法について、図
2の点1と点2に着目して説明する。デザイン時のx座
標は、点1が23であり、点2は49である。変倍され
た結果、点1のx座標は、23×13÷256=1.1
6796875であり、点2は49×13÷256=
2.48828125である。
【0010】また、デザイン時の線幅26は、変倍され
て26×13÷256=1.3203125となる。そ
して、ヒンティングにおいては、まず変倍後の点2のx
座標が丸められて2になる。続いて、変倍後の点1に線
幅分加算してx座標が2.48828125(=1.1
6796875+1.3203125)となり、これが
丸められて2になる。最後に線分を丸めた1だけ減じて
1を得る。このようにして、図6に示すヒンティングさ
れたアウトラインデータが得られる。
【0011】ところが、小数部を表すのに使用されるn
ビットとデザインサイズD(2のk乗<D<2の(k+
1)乗)の関係が、k>nであるとき問題が生じる。す
なわち、具体例として上記した例を小数点以下を6ビッ
トで表現する系で処理すると、全く異なる結果を得る。
【0012】変倍後のx座標は、点1については1.1
71875となり、点2については2.484375と
なり、線幅は1.328125となる。従って、ヒンテ
ィングにおいて、点2のx座標は丸めると2になる。点
1に線幅分を加算すると、そのx座標は、2.5にな
る。これを丸めると3となる。最後に線分を丸めた1だ
け減じて2を得る。この結果、演算精度の低い処理系で
は、図7に示すように、左右のステムの幅が異なるアウ
トラインデータになるという問題がある。
【0013】本発明の目的は、演算精度の低い処理系に
おいても正確な線幅補正を可能とするアウトラインフォ
ントのヒンティング方法を提供することにある。
【0014】
【課題を解決するための手段】前記目的を達成するため
に、請求項1記載の発明では、ヒンテイング時の演算精
度が整数部に対してmビット、小数部に対してnビット
が割り当てられ、アウトラインフォントデータはX×Y
ピクセルの空間でデザインされ、該アウトラインフォン
トデータの変倍に用いられるデザインサイズDは2*k
<D<2*(k+1)を満たし(ただし、2*kは2の
k乗を表す)、該アウトラインフォントデータの変倍を
行うとき、すべての座標データおよび線幅データZに対
して、求めるサイズがSのとき、下記の式(1) Z’=
Z×S÷D 式(1) を用いて、変倍後のデータZ’を得て(ただし、Z’
は、その小数部がnビット(k>n)に収まるように丸
められている)、該変倍後のデータZ’に対してヒンテ
ィングを施すようにしたアウトラインフォントのヒンテ
ィング方法において、デザイン時におけるアウトライン
を構成する第1の輪郭点から軸方向に、対応する第2の
輪郭点までの距離が予め設定され、該第1の輪郭点と第
2の輪郭点の間の黒ドット数を表す線幅が予め設定さ
れ、前記サイズSに変倍されている前記第1の輪郭点の
座標データを、下記の式(2)を用いて、 Z”=Z’×D÷S 式(2) (Z’は、変倍後のデータであり、Z”はデザインサイ
ズDのデータ) デザインサイズDにおける第2の座標データに変換し、
前記サイズSに変倍されている前記距離を、前記式(2)
を用いてデザインサイズにおける第2の距離に変換し、
前記第2の座標データと前記第2の距離を加算して第3
の座標データを生成し、該第3の座標データを、前記式
(1)を用いてサイズSにおける第4の座標データに変換
し、前記線幅を前記式(1)を用いてサイズSにおける線
幅に変換し、該第4の座標データを丸め処理して第5の
座標データを生成し、該第5の座標データから、前記サ
イズSに変倍された黒ドット数を丸めた分だけ減じた第
6の座標データを生成し、生成された該第6の座標デー
タの位置に、前記第1の輪郭点を移動し、前記サイズに
変倍されている前記第2の輪郭点の座標データを丸め処
理することによってヒンティングを行うことを特徴とし
ている。
【0015】請求項2記載の発明では、前記mの精度が
低く、k>nであるとき、k−n<p<m+n−kを満
たすpを選び、前記式(2)を用いてデザインサイズのデ
ータに変換するときに、該pを用いて、 Z(1)=Z’×2*p÷S 式(3) を計算し、次いで、 Z(2)=Z(1)×(D÷2*p) 式(4) を計算する(ただし、2*pは、2のp乗を表す)こと
を特徴としている。
【0016】
【作用】演算精度の低い処理系においては、既に変倍さ
れた輪郭点の左端の座標値と距離を、デザイン時のデー
タに逆算し、逆算された座標値に距離を加算した座標値
を、変倍してから線幅補正のヒンティング処理を施し、
輪郭点の右端については、変倍後の座標値を丸め処理す
る。これにより、ヒンティング時の演算精度が低い処理
系であっても、精度誤差を除去することができ、正確な
線幅補正が可能となる。
【0017】
【実施例】以下、本発明の一実施例を図面を用いて具体
的に説明する。図1は、図3のヒンティング処理部4に
よって実行される本発明のヒンティング処理のフローチ
ャートである。
【0018】本実施例の動作について説明すると、アウ
トラインデータの輪郭点の点数をnumpointに設
定し(ステップ101)、nを0として(ステップ10
2)、nがnumpointを越えない限り(ステップ
103)、以下の処理を行う。アウトラインデータの輪
郭点が縦ステムの左端であるときには(ステップ10
4)、後述するヒンティング処理を施す(ステップ10
5)。
【0019】縦ステムの右端であるときには(ステップ
106)、x座標の丸めを行う(ステップ107)。何
れでもないとき、つまり斜線や曲線については他のヒン
ティング処理を行う(ステップ108)。nを次の点に
して(ステップ109)、以上の処理を繰返し、アウト
ラインデータの全ての輪郭点について処理する。
【0020】上記したフローチャートでは、縦ステムの
ヒンティングのみを示したが、横ステムのヒンティング
については、x軸をy軸に置き換えることによって実現
される。
【0021】さて、本実施例では、図2に示すような線
幅テーブルを用意する。このテーブルにおいて、距離と
は、ある属性を持つ輪郭点から軸方向(x軸あるいはy
軸)に該当する距離だけ進んだところに対応する点があ
ることを示す。また、線幅とは、輪郭点と対応する輪郭
点との間に、黒ドットとして現われるべきドットの数を
表している。
【0022】このテーブル中の距離や線幅はヒンティン
グ時には変倍が施されているものとする。ヒンティング
時に得ることのできる座標データもまた変倍が施されて
いるものとする。
【0023】以下の説明においては、図4の輪郭点1と
輪郭点2を例にする。なお、点1には属性1が、点2に
は属性0が設定されているものとする。
【0024】〈実施例1のヒンティング〉前述したよう
に、図1の処理において、縦ステムの右端についてはx
座標(変倍後の座標)の丸めを行う。すなわち、点2の
x座標を四捨五入する。左端(点1)については以下の
手順によってヒンティングを行う。すなわち、 (1)既に変倍されているx座標(x1’とする)を次
式1に従って、デザインサイズにおけるx座標(x1)
に変換する。ここで、既に変倍されているx座標は、前
述したようにその小数部がnビット(k>n)に収まる
ように丸められている。そして、例えば近年現われたフ
ォントファイルフォーマットであるTrue Type
においては、パラメータテーブルの値や輪郭点の座標デ
ータはヒンティング時には既に変倍されていて、フォン
トデータに収められた、変倍前の値を取り出すことは困
難となっている。
【0025】そこで、本実施例では、変倍前の座標値を
得るために、式1に従って既に変倍されたデータを逆変
換してデザイン時のデータを得るようにしたものであ
る。 Z=Z’×D÷S 式1 ここで、Z’は、変倍後の座標データや線幅データであ
り、Dは、X×Yピクセルの空間でデザインされたデザ
インサイズD(2のk乗<D<2の(k+1)乗)であ
り、Sは、変倍後の現サイズであり、Zは、デザイン時
の座標値や線幅などの整数データである。
【0026】(2)線幅テーブルから得られる変倍され
た、左端の点から対応する右端の点までの距離(h’と
する)を、上記した式1に従ってデザインサイズにおけ
る距離(h)に変換する。 (3)デザインサイズに変換されたx1とhを加える。
これはデザイン時の点2のx座標と同じである。 (4)得られたx座標を、次式2に従って、現在のサイ
ズSにおけるx座標(x1”とする)に変換する(これ
は、点2の現在の位置と同じである)。すなわち、 Z”=Z×S÷D 式2 ここで、変倍後のヒンティング時の演算精度が整数部に
対してmビット、小数部に対してnビットが割り当てら
れているものとする。フォントデータは、X×Yピクセ
ルの空間でデザインされ、フォントの変倍に用いられる
デザインサイズDは2のk乗<D<2の(k+1)乗を
満たすものとする。フォントの変倍に際してはすべての
座標データや線幅データZに対して、求めるサイズSの
とき上記式2を用いて変倍後の値Z”を得る。ただし、
ここではZ”は、その小数部がnビットに収まるように
丸められている(例えば、四捨五入)。
【0027】(5)x座標(x1”)の丸めを行う。こ
れはヒンティング後の点2の位置と同じである。
【0028】(6)丸められたx座標から、線幅テーブ
ルから得られる黒ドットとして現われるドット数(これ
は変倍後のものである)を丸めた分だけ減じる。
【0029】(7)得られたx座標の位置に点1を移動
する。
【0030】〈実施例2のヒンティング〉本実施例で
は、図6において、縦ステムの右端について以下の手順
によってヒンティングを行う。 (1)変倍されているx座標を式1に従って、デザイン
サイズにおけるx座標に変換する。 (2)線幅テーブルから得られる変倍された、左端の点
から対応する右端の点までの距離(h’とする)を、式
1に従ってデザインサイズにおける距離(h)に変換す
る。 (3)デザインサイズに変換された距離の1/2をx座
標から減じる。この値は、デザイン時の点1と点2の中
点のx座標を示す。 (4)新しいx座標を式2に従って、現在のサイズにお
けるx座標に変換する。この値は、現在のサイズにおけ
る点1と点2の中点のx座標を示す。 (5)x座標の丸めを行う。ここで丸めとは、線幅テー
ブルから得られる黒ドットとして現われるドット数が奇
数であるときピクセル中心への丸めを行い、偶数である
ときピクセル境界への丸めを行うことを意味する。 (6)丸められたx座標に、線幅テーブルから得られる
黒ドットとして現われるべきドット数を丸めた数の1/
2を加える。 (7)得られたx座標の位置に点2を移動する。
【0031】縦ステムの左端(点1)については、以上
の手順の加減算を逆にすることによって行う。この実施
例によると、ステムの中心(点1と点2の中点)をピク
セル境界あるいはピクセル中心に合わせるように、ヒン
ティングされる。以上の説明において、式1、2におけ
るD,Sは実際にはそのまま使用する必要はなく、任意
の整数fに対してfD、fSを用いれば十分である。
【0032】〈実施例3〉整数部の表現に使用されるm
ビットが比較的小さいとき、式1のZ’×Dを実行した
瞬間にオーバーフローする可能性がある。本実施例は、
オーバーフローすることなくヒンティング処理を行うよ
うにしたものである。
【0033】すなわち、k>nであるとき、k−n<p
<m+n−kを満たすpを選ぶ。前記した実施例1、2
において、式1を適用する際に、まず、pを用いて Z(1)=Z’×2*p÷S 式3 を計算し、次いで、 Z(2)=Z(1)×(D÷2*p) 式4 を計算することによって、オーバーフローすることなく
ヒンティング処理が可能になる。なお、2*pは、2の
p乗を表す。
【0034】
【発明の効果】以上、説明したように、請求項1記載の
発明によれば、演算時のデータ表現のための精度が低い
系においても正確な線幅補正を行うことができる。
【0035】請求項2記載の発明によれば、小数部だけ
でなく、整数部の精度が不足する系においても正確な線
幅補正を行うことができる。
【図面の簡単な説明】
【図1】本発明のヒンティング処理のフローチャートで
ある。
【図2】線幅テーブルを示す図である。
【図3】アウトラインフォントの処理構成図である。
【図4】展開されたアウトラインデータである。
【図5】変倍されたアウトラインデータである。
【図6】ヒンティングされたアウトラインデータであ
る。
【図7】左右のステムの幅が異なってヒンティングされ
たアウトラインデータである。
【符号の説明】
1 フォントファイル 2 展開部 3 変倍処理部 4 ヒンティング処理部 5 ラスタライザ 6 ドットデータ

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 ヒンテイング時の演算精度が整数部に対
    してmビット、小数部に対してnビットが割り当てら
    れ、アウトラインフォントデータはX×Yピクセルの空
    間でデザインされ、該アウトラインフォントデータの変
    倍に用いられるデザインサイズDは2*k<D<2*
    (k+1)を満たし(ただし、2*kは2のk乗を表
    す)、該アウトラインフォントデータの変倍を行うと
    き、すべての座標データおよび線幅データZに対して、
    求めるサイズがSのとき、下記の式(1) Z’=Z×S÷D 式(1) を用いて、変倍後のデータZ’を得て(ただし、Z’
    は、その小数部がnビット(k>n)に収まるように丸
    められている)、該変倍後のデータZ’に対してヒンテ
    ィングを施すようにしたアウトラインフォントのヒンテ
    ィング方法において、デザイン時におけるアウトライン
    を構成する第1の輪郭点から軸方向に、対応する第2の
    輪郭点までの距離が予め設定され、該第1の輪郭点と第
    2の輪郭点の間の黒ドット数を表す線幅が予め設定さ
    れ、前記サイズSに変倍されている前記第1の輪郭点の
    座標データを、下記の式(2)を用いて、 Z”=Z’×D÷S 式(2) (Z’は、変倍後のデータであり、Z”はデザインサイ
    ズDのデータ) デザインサイズDにおける第2の座標データに変換し、
    前記サイズSに変倍されている前記距離を、前記式(2)
    を用いてデザインサイズにおける第2の距離に変換し、
    前記第2の座標データと前記第2の距離を加算して第3
    の座標データを生成し、該第3の座標データを、前記式
    (1)を用いてサイズSにおける第4の座標データに変換
    し、前記線幅を前記式(1)を用いてサイズSにおける線
    幅に変換し、該第4の座標データを丸め処理して第5の
    座標データを生成し、該第5の座標データから、前記サ
    イズSに変倍された黒ドット数を丸めた分だけ減じた第
    6の座標データを生成し、生成された該第6の座標デー
    タの位置に、前記第1の輪郭点を移動し、前記サイズに
    変倍されている前記第2の輪郭点の座標データを丸め処
    理することによってヒンティングを行うことを特徴とす
    るアウトラインフォントのヒンティング方法。
  2. 【請求項2】 前記mの精度が低く、k>nであると
    き、k−n<p<m+n−kを満たすpを選び、前記式
    (2)を用いてデザインサイズのデータに変換するとき
    に、該pを用いて、 Z(1)=Z’×2*p÷S 式(3) を計算し、次いで、 Z(2)=Z(1)×(D÷2*p) 式(4) を計算する(ただし、2*pは、2のp乗を表す)こと
    を特徴とする請求項1記載のアウトラインフォントのヒ
    ンティング方法。
JP24082692A 1992-09-09 1992-09-09 アウトラインフォントのヒンティング方法 Expired - Fee Related JP3215179B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP24082692A JP3215179B2 (ja) 1992-09-09 1992-09-09 アウトラインフォントのヒンティング方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP24082692A JP3215179B2 (ja) 1992-09-09 1992-09-09 アウトラインフォントのヒンティング方法

Publications (2)

Publication Number Publication Date
JPH0695643A true JPH0695643A (ja) 1994-04-08
JP3215179B2 JP3215179B2 (ja) 2001-10-02

Family

ID=17065279

Family Applications (1)

Application Number Title Priority Date Filing Date
JP24082692A Expired - Fee Related JP3215179B2 (ja) 1992-09-09 1992-09-09 アウトラインフォントのヒンティング方法

Country Status (1)

Country Link
JP (1) JP3215179B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010039375A (ja) * 2008-08-07 2010-02-18 Sharp Corp 文字描画装置、文字描画方法、文字描画プログラム、およびコンピュータ読取可能な記録媒体
JP2010170097A (ja) * 2009-01-26 2010-08-05 Mitsubishi Electric Research Laboratories Inc 文字を画像のサンプリンググリッドにアラインする方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010039375A (ja) * 2008-08-07 2010-02-18 Sharp Corp 文字描画装置、文字描画方法、文字描画プログラム、およびコンピュータ読取可能な記録媒体
JP2010170097A (ja) * 2009-01-26 2010-08-05 Mitsubishi Electric Research Laboratories Inc 文字を画像のサンプリンググリッドにアラインする方法

Also Published As

Publication number Publication date
JP3215179B2 (ja) 2001-10-02

Similar Documents

Publication Publication Date Title
JPH06161419A (ja) 文字出力装置
JP3215179B2 (ja) アウトラインフォントのヒンティング方法
KR0142162B1 (ko) 문자 생성 방법 및 장치
JP3243293B2 (ja) 輪郭線補正方法
JP6169048B2 (ja) 入力パスを変換する方法、入力パスのセグメントを内部又は外部としてラベル付けする方法、入力パスをレンダリングする方法、及び、入力パスの外形を描く方法
JP2674287B2 (ja) グラフィックマイクロコンピュータ
JP3057959B2 (ja) データ変換装置
JPH08194816A (ja) 線分近似方法および線分近似方式
KR940001106B1 (ko) 선폭보정방법 및 그 장치
JP3260733B2 (ja) ベクトルフォント辞書
JP3338484B2 (ja) アウトラインフォント変形装置
JP2906717B2 (ja) 画像変倍方法
JPH0493992A (ja) 文字・図形描画装置
JP3035141B2 (ja) 文字作成装置及び文字作成方法
JP3032417B2 (ja) 文字発生装置
JP2521756B2 (ja) パタ―ンデ―タ生成装置
JPS59195759A (ja) 画像の拡大縮小方法
JPS62274472A (ja) パタ−ンデ−タの圧縮方式
JP2897721B2 (ja) 多角形二重化装置
JP2761222B2 (ja) 文字発生方式
JPH04162092A (ja) アウトラインフォントの文字発生方式
JPH04223495A (ja) 文字信号発生装置
JPH056164A (ja) 文字処理装置
JP3085396B2 (ja) ベクトルフォントの展開方法および装置
JPH0398091A (ja) 文字発生装置

Legal Events

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

Free format text: PAYMENT UNTIL: 20070727

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20080727

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20090727

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20090727

Year of fee payment: 8

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

Free format text: PAYMENT UNTIL: 20100727

Year of fee payment: 9

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

Free format text: PAYMENT UNTIL: 20110727

Year of fee payment: 10

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

Free format text: PAYMENT UNTIL: 20120727

Year of fee payment: 11

LAPS Cancellation because of no payment of annual fees