JP3215179B2 - アウトラインフォントのヒンティング方法 - Google Patents
アウトラインフォントのヒンティング方法Info
- Publication number
- JP3215179B2 JP3215179B2 JP24082692A JP24082692A JP3215179B2 JP 3215179 B2 JP3215179 B2 JP 3215179B2 JP 24082692 A JP24082692 A JP 24082692A JP 24082692 A JP24082692 A JP 24082692A JP 3215179 B2 JP3215179 B2 JP 3215179B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- hinting
- size
- coordinate
- scaled
- 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
Links
- 238000000034 method Methods 0.000 claims description 18
- 238000006243 chemical reaction Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 3
- 238000005429 filling process Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
Landscapes
- Image Processing (AREA)
- Image Generation (AREA)
- Controls And Circuits For Display Device (AREA)
Description
のヒンティング時における精度誤差を除去したヒンティ
ング方法に関する。
成図である。フォントファイル1から読み込まれたアウ
トラインデータは、展開部2において輪郭線として展開
され、次いで変倍処理部3で求める大きさに変倍され、
ヒンティング処理部4では、変倍されたアウトラインデ
ータに対して線幅補正などのヒンティングを施し、ラス
タライザ5で塗りつぶし処理が行われて輪郭内をドット
データ6に展開する。
EI BYTE/JUNE1992pp158−165
(文献1),同FEBRUARY 1992 pp11
2−123(文献2)において詳細に説明されている。
を左下隅とする単位正方形であるものとし、従って、ピ
クセルの中心は、 (x+0.5 ,y+0.5) ただし、x,yは整数 にある。もちろん格子点をピクセル中心と仮定してもよ
い。
された文字“H”を、13×13ピクセルに縮小する例
を用いて、従来技術の問題点を説明する。フォントファ
イル1から読み込まれたアウトラインデータは、図4に
示すように輪郭線として展開される。このアウトライン
データを13×13ピクセルに縮小すると、図5のデー
タが得られる。
輪郭線の上または内部にピクセル中心のあるピクセルが
反転するという、塗りつぶし規則を採用すると、左側の
縦ステムは2ピクセルになり、右側の縦ステムは1ピク
セルになってしまう。
と、縦ステムの太さが違ってしまう。一方、四捨五入で
はなく、切り上げや切り捨てを用いると、右側のステム
が太くなり、左側のステムが細くなってしまう。このよ
うな線幅がバラついたりする問題点については、前掲し
た文献1の163ページにおいても指摘されている。こ
れを解決する手法がヒンティングと呼ばれる技術であ
る。
処理や丸めによって生じるステムの線幅のバラツキを効
果的に修正するアウトラインフォントの輪郭線補正方法
を提案した(特願平4−238629号)。この方法に
おいては、縦ステムの右側と横ステムの上側を丸め、縦
ステムの左側と下側には線幅補正(適合処理)を施すも
ので、その処理結果を図6に示す。
2の点1と点2に着目して説明する。デザイン時のx座
標は、点1が23であり、点2は49である。変倍され
た結果、点1のx座標は、23×13÷256=1.1
6796875であり、点2は49×13÷256=
2.48828125である。
て26×13÷256=1.3203125となる。そ
して、ヒンティングにおいては、まず変倍後の点2のx
座標が丸められて2になる。続いて、変倍後の点1に線
幅分加算してx座標が2.48828125(=1.1
6796875+1.3203125)となり、これが
丸められて2になる。最後に線分を丸めた1だけ減じて
1を得る。このようにして、図6に示すヒンティングさ
れたアウトラインデータが得られる。
ビットとデザインサイズD(2のk乗<D<2の(k+
1)乗)の関係が、k>nであるとき問題が生じる。す
なわち、具体例として上記した例を小数点以下を6ビッ
トで表現する系で処理すると、全く異なる結果を得る。
71875となり、点2については2.484375と
なり、線幅は1.328125となる。従って、ヒンテ
ィングにおいて、点2のx座標は丸めると2になる。点
1に線幅分を加算すると、そのx座標は、2.5にな
る。これを丸めると3となる。最後に線分を丸めた1だ
け減じて2を得る。この結果、演算精度の低い処理系で
は、図7に示すように、左右のステムの幅が異なるアウ
トラインデータになるという問題がある。
おいても正確な線幅補正を可能とするアウトラインフォ
ントのヒンティング方法を提供することにある。
に、請求項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の輪郭点の座標データを丸め処
理することによってヒンティングを行うことを特徴とし
ている。
低く、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は、図3のヒンティング処理部4に
よって実行される本発明のヒンティング処理のフローチ
ャートである。
トラインデータの輪郭点の点数をnumpointに設
定し(ステップ101)、nを0として(ステップ10
2)、nがnumpointを越えない限り(ステップ
103)、以下の処理を行う。アウトラインデータの輪
郭点が縦ステムの左端であるときには(ステップ10
4)、後述するヒンティング処理を施す(ステップ10
5)。
106)、x座標の丸めを行う(ステップ107)。何
れでもないとき、つまり斜線や曲線については他のヒン
ティング処理を行う(ステップ108)。nを次の点に
して(ステップ109)、以上の処理を繰返し、アウト
ラインデータの全ての輪郭点について処理する。
ヒンティングのみを示したが、横ステムのヒンティング
については、x軸をy軸に置き換えることによって実現
される。
幅テーブルを用意する。このテーブルにおいて、距離と
は、ある属性を持つ輪郭点から軸方向(x軸あるいはy
軸)に該当する距離だけ進んだところに対応する点があ
ることを示す。また、線幅とは、輪郭点と対応する輪郭
点との間に、黒ドットとして現われるべきドットの数を
表している。
グ時には変倍が施されているものとする。ヒンティング
時に得ることのできる座標データもまた変倍が施されて
いるものとする。
輪郭点2を例にする。なお、点1には属性1が、点2に
は属性0が設定されているものとする。
に、図1の処理において、縦ステムの右端についてはx
座標(変倍後の座標)の丸めを行う。すなわち、点2の
x座標を四捨五入する。左端(点1)については以下の
手順によってヒンティングを行う。すなわち、 (1)既に変倍されているx座標(x1’とする)を次
式1に従って、デザインサイズにおけるx座標(x1)
に変換する。ここで、既に変倍されているx座標は、前
述したようにその小数部がnビット(k>n)に収まる
ように丸められている。そして、例えば近年現われたフ
ォントファイルフォーマットであるTrue Type
においては、パラメータテーブルの値や輪郭点の座標デ
ータはヒンティング時には既に変倍されていて、フォン
トデータに収められた、変倍前の値を取り出すことは困
難となっている。
得るために、式1に従って既に変倍されたデータを逆変
換してデザイン時のデータを得るようにしたものであ
る。 Z=Z’×D÷S 式1 ここで、Z’は、変倍後の座標データや線幅データであ
り、Dは、X×Yピクセルの空間でデザインされたデザ
インサイズD(2のk乗<D<2の(k+1)乗)であ
り、Sは、変倍後の現サイズであり、Zは、デザイン時
の座標値や線幅などの整数データである。
た、左端の点から対応する右端の点までの距離(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ビットに収まるように
丸められている(例えば、四捨五入)。
れはヒンティング後の点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を移動する。
の手順の加減算を逆にすることによって行う。この実施
例によると、ステムの中心(点1と点2の中点)をピク
セル境界あるいはピクセル中心に合わせるように、ヒン
ティングされる。以上の説明において、式1、2におけ
るD,Sは実際にはそのまま使用する必要はなく、任意
の整数fに対してfD、fSを用いれば十分である。
ビットが比較的小さいとき、式1のZ’×Dを実行した
瞬間にオーバーフローする可能性がある。本実施例は、
オーバーフローすることなくヒンティング処理を行うよ
うにしたものである。
<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乗を表す。
発明によれば、演算時のデータ表現のための精度が低い
系においても正確な線幅補正を行うことができる。
でなく、整数部の精度が不足する系においても正確な線
幅補正を行うことができる。
ある。
る。
たアウトラインデータである。
Claims (2)
- 【請求項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】 前記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記載のアウトラインフォントのヒ
ンティング方法。
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 JPH0695643A (ja) | 1994-04-08 |
JP3215179B2 true 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) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010039375A (ja) * | 2008-08-07 | 2010-02-18 | Sharp Corp | 文字描画装置、文字描画方法、文字描画プログラム、およびコンピュータ読取可能な記録媒体 |
US8102397B2 (en) * | 2009-01-26 | 2012-01-24 | Mitsubishi Electric Research Laboratories Inc. | Method for improving uniform width character strokes using multiple alignment zones |
-
1992
- 1992-09-09 JP JP24082692A patent/JP3215179B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH0695643A (ja) | 1994-04-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2909273B2 (ja) | アウトライン・フォントの線幅調整方法および装置 | |
JP3215179B2 (ja) | アウトラインフォントのヒンティング方法 | |
KR0142162B1 (ko) | 문자 생성 방법 및 장치 | |
JP2828592B2 (ja) | カーニング処理方法 | |
JP2634851B2 (ja) | 画像処理装置 | |
JP3243293B2 (ja) | 輪郭線補正方法 | |
JP6169048B2 (ja) | 入力パスを変換する方法、入力パスのセグメントを内部又は外部としてラベル付けする方法、入力パスをレンダリングする方法、及び、入力パスの外形を描く方法 | |
JPH07334648A (ja) | 画像処理方法及びその装置 | |
JP3057959B2 (ja) | データ変換装置 | |
JP3146771B2 (ja) | フォントラスタライズ装置およびその方法 | |
KR940001106B1 (ko) | 선폭보정방법 및 그 장치 | |
JP2906717B2 (ja) | 画像変倍方法 | |
JPH06100906B2 (ja) | 文字処理方法 | |
JP2002244643A (ja) | 画像処理装置 | |
JP3032417B2 (ja) | 文字発生装置 | |
JP3338484B2 (ja) | アウトラインフォント変形装置 | |
JP2736803B2 (ja) | 画像倍率の変換方法 | |
JP2521756B2 (ja) | パタ―ンデ―タ生成装置 | |
JP3018426B2 (ja) | 文字・図形描画装置 | |
JP3260733B2 (ja) | ベクトルフォント辞書 | |
JPH04162092A (ja) | アウトラインフォントの文字発生方式 | |
JPH09282474A (ja) | 階調画像生成方法 | |
JPH0573026A (ja) | 文字図形発生方法 | |
JP3055306B2 (ja) | データ出力装置 | |
JPH056164A (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 |