JPH06266847A - ラスタ化されたオブジェクトを表示する方法および装置 - Google Patents

ラスタ化されたオブジェクトを表示する方法および装置

Info

Publication number
JPH06266847A
JPH06266847A JP4281108A JP28110892A JPH06266847A JP H06266847 A JPH06266847 A JP H06266847A JP 4281108 A JP4281108 A JP 4281108A JP 28110892 A JP28110892 A JP 28110892A JP H06266847 A JPH06266847 A JP H06266847A
Authority
JP
Japan
Prior art keywords
coordinate space
bezier curve
cubic bezier
outline data
straight 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.)
Withdrawn
Application number
JP4281108A
Other languages
English (en)
Inventor
Christopher R Hassett
クリストファ・アール・ハセット
Harry J Collins
ハリイ・ジェイ・コリンズ
John W Nogrady
ジョン・ダブリュ・ノーグラディ
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.)
Adobe Inc
Original Assignee
Adobe Systems Inc
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 Adobe Systems Inc filed Critical Adobe Systems Inc
Publication of JPH06266847A publication Critical patent/JPH06266847A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/00Two-dimensional [2D] image generation
    • G06T11/20Drawing from basic elements
    • G06T11/23Drawing from basic elements using straight lines or curves

Landscapes

  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Dot-Matrix Printers And Others (AREA)
  • Image Generation (AREA)

Abstract

(57)【要約】 【目的】 フォント・アウトラインをラスタ化されたビ
ットマップへ変換する装置と方法を得ることである。 【構成】 この方法は、第1の座標空間内のオブジェク
トを表す記憶されているアウトライン・データをアクセ
スし、そのアウトライン・データを、第2の座標空間内
の物体を表す対応するデータへ変換し、両方の座標空間
内の領域関係情報を、複数の直線変換マトリックスとし
て表される非直線変換を介して維持して、オブジェクト
を表示するために適当なビットマップを発生する。本発
明は、ベジエ曲線を解析し、それらの曲線の各部分が直
線として近似するように十分に平らになるまで、必要に
応じてそれらのカーブを細分割し、アウトラインを充填
し、ビットマップを発生するために、どの線分が画素の
中間線と交差するかを計算するための装置を含む。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明の装置はタイプセッタ、イ
メージセッタ、カラープリンタ、レーザプリンタ、およ
びビデオ表示装置などで用いられる高性能、かつ高画質
の表示装置用の制御装置である。この装置は単一のチッ
プであることが好ましい。この制御装置は、描画ヒント
を含むフォント・アウトラインを翻訳し、ヒントとアウ
トラインとを変換して黒、白、またはその他の色あるい
はパターンを充たされたキャラクタのラスタ化されたビ
ットマップを得るのに有用である。
【0002】
【従来の技術】ラスタ表示装置で画像を描画するには印
刷過程のある点においてラスタ画像を形成することを必
要とする。キャラクタの場合には、必要とされる各キャ
ラクタのラスタ・ビットマップをメモリに記憶でき、そ
れからそのキャラクタが求められた時にはメモリからプ
リンタの入力バッファへそのラスタ・ビットマップを単
にコピーできる。完全なキャラクタ・セットをメモリに
記憶できるが、そのためには特定の各キャラクタを必要
なあらゆる点の大きさおよび解像度で記憶する必要があ
る。そのためには大用量の記憶装置を使用することがあ
る。あるいは、キャラクタセットをなんらかのやり方で
符号化し、そらから選択した表示装置のために適切な特
定の解像度および特定の大きさのキャラクタに対するビ
ットマップへ変換できる。より高速の印刷を容易にする
ために、再使用されるキャラクタをキャッシュ・メモリ
に記憶することができる。典型的な印刷ジョブは単一の
大きさおよび解像度の、小文字の完全なセットと、多く
の、しかし全てではない大文字を必要とする。したがっ
て、それらの各キャラクタのビットマップを発生でき、
ジョブが行われている間それをキャッシュ・メモリに保
持できる。その後でキャッシュ・メモリをクリヤし、次
のジョブのために必要なキャラクタでそのキャッシュ・
メモリを充たす。典型的なプリンタ・メモリは簡単なジ
ョブに対して十分な、少数のフォントを取り扱うことが
できる。あるジョブが多数のフォントと多数の点サイズ
の少なくとも一方を要求する時は、キャッシュ・メモリ
の容量を超えることがあり、そのためにいくつかのキャ
ラクタ・ビットを何回も発生させる必要がある。
【0003】好適な実施例においては、PostScr
ipt(商標)Type1フォントのアウトラインをビ
ットマップへ変換するためにこの装置が用いられる。P
ostScriptは本願の出願人であるアドービ・シ
ステムズ社(AdobeSystems Inc.)
(以下「アドービ」と記す)により開発されたものであ
る。PostScriptシステムは高レベル図形情報
をデジタル・レーザ・プリンタと通信するために開発さ
れたものである。それは記憶されているアウトライン・
フォントからキャラクタを描画し、図形領域を表現し、
一般的なプログラミング作業を行うための融通性に富
む、コンパクトで、強力な言語である。本発明の装置の
好適な実施例をPostScriptプリンタ、タイプ
セッタおよび画像セッタに関して説明する。PostS
cript、その使用および応用がアドービにより出版
された、「PostScript言語参考マニュアル、
第2版(POSTSCRIPT LANGUAGERE
FERENCEMANUAL,Scond Editi
on,1990)」、「PostScript言語プロ
グラム設計(POSTSCRIPT LANGUAGE
PROGRAMDESIGN,1988)」を含めた何
冊かの書籍に詳しく記載されている。PostScri
ptおよび関連するページ記述言語は、高解像度ビデオ
表示装置またはその他の表示装置はもちろん、タイプセ
ッタ、画像セッタ、カラープリンタおよび高スループッ
ト・プリンタにとって有用である。
【0004】本発明は現在利用できる多くの印刷環境に
おいて有用である。アウトライン・フォントは1台また
は複数のマーキング(印刷)装置を有するアップル(A
pple)(商標),マッキントッシュ(Macint
osh)(商標)、アイビーエム(IBM)(商標)P
C、サン(Sun)(商標)およびUNIX(商標)を
ベースとするその他のコンピュータを用いて、多くのタ
イプセッティングおよび印刷の組み合わせに関連して用
いられる。現在のソフトウェアはアドービのPostS
criptおよびATM(商標)ソフトウェアおよびハ
ードウェアと、BitstreamおよびCompug
raphicからのアウトライン・フォントを含む。プ
リンタを制御するために用いられるページ記述言語はア
ドービのPostScript言語と、ヒューレット・
パッカード(HewlettPackard)のPC
L,キャノンのLIPS、京セラおよびゼロックス(X
erox)によるその他の言語を含む。
【0005】プリンタ、ビデオ表示装置およびその他の
そのような装置は、時にはマーキング装置またはマーキ
ング・エンジンと呼ばれる。マーキング・エンジンに関
連するラスタ画像プロセッサ(RIP)が入力情報と指
令を、関連する出力装置で表示するために適するラスタ
化された(ビットマップされた)領域へ変換する。市販
されている装置はアップル・LaserWriters
(商標)、Linotronics(商標)100およ
び300、アドービAtlas(商標)RIP、エメラ
ルド(Emerald)RIP、およびヒューレット・
パッカードDeskWriter(商標)およびLas
erJet(商標)を含む。マーキング・エンジンは、
メモリからの記憶されているビットのパターンを出力装
置へ単に転送することにより、ビットマップからのキャ
ラクタを印刷する。これは正しい寸法および正しい解像
度のキャラクタのビットマップを必要とする。
【0006】ビットマップされるフォントよりアウトラ
イン・フォントが優れている主な点は、主な欠点でもあ
る。任意のサイズのキャラクタに対するビットマップを
シングル・アウトライン・フォントから発生するために
アウトライン・フォントを使用できる。これによって柔
軟性を有し、コンパクトな記憶装置が得られるが、求め
れらている各ビットマップを作成するのに時間がかか
り、全てのビットマップの表現が審美的な魅力を確保す
るという重荷を付加する。特定のサイズに対してのみ、
最適な結果を生ずるために、ビットマップされたフォン
トを特に編集できる。付加サイズは付加ビットマップを
必要とする。ビットマップされたフォントは従来から速
度が高く、ビットマップを直接プリントできることが利
点である。二率背反は速度に対する要求対記憶容量に対
する要求である。
【0007】アウトライン・フォントを用いるほぼ全て
のプログラムは、ラスタ・プリンタでキャラクタを印刷
する前に、アウトライン情報をビットマップへ変換せね
ばならない。典型的な応用においては、アウトラインは
一般にキャラクタ空間と呼ばれる。高解像度の座標系に
おいて定められる。マーキング・エンジンで印刷するた
めに、アウトラインを求められているサイズに合わせ、
マーキング・エンジンに適切な座標系へマップせねばな
らない。第2の座標空間は一般に装置空間と呼ばれる。
そのアウトラインを近似するために、装置空間における
アウトラインは一連の画素で充たされる。装置空間画素
格子上の最後のキャラクタの整列を改善するために、キ
ャラクタ空間または装置空間においてキャラクタを調整
すなわち「ヒント」せねばならない。
【0008】キャラクタ・アウトラインを、サイズを合
わされたキャラクタ・ビットマップへ変換する従来の方
法はソフトウェアを基にしていた。その方法によって柔
軟性が得られたが、キャラクタ・ビットマップの発生速
度は大幅に制限された。ソフトウェアを基にした描画器
の制約は、多数の異なるフォントまたはサイズを必要と
するジョブを印刷するためにとくに厳しくなる。その理
由は、各フォントの各サイズにおける各キャラクタを、
ビットマップとしてマーキング・エンジンが利用できる
ようにせねばならないからである。求められているキャ
ラクタを求められているサイズおよびフォントで利用で
きないとすると、対応するアウトラインを調整し、変換
せねばならない。ソフトウェアを基にした描画器の制約
は、限られた繰り返しだけで多数のキャラクタを用いる
日本語のような外国語を印刷する場合にも重大である。
キャラクタ・ビットマップをキャッシュ・メモリで得ら
れないと、新しいビットマップを発生せねばならない。
利用できるメモリが一杯であれば、以前に記憶されてい
たキャラクタ・ビットマップを移動させねばならない。
【0009】ビットマップを発生するためにアウトライ
ンの大きさを基準化する問題は、長年にわたって解決す
べき目標であった。任意の尺度でビットマップを発生す
るためにアウトラインを解析する問題の多くは、アドー
ビATM製品において解決されている。ATMにおいて
用いられている方法が、いずれもアドービへ譲渡された
米国特許出願第388,336号、第388,339
号、第539,222号、第552,788号に記載さ
れている。それらの米国特許出願の明細書に記載されて
いる方法のいくつか、たとえば、アウトラインの解析、
経路の交点の識別および経路のトレーシング等を行う方
法が改良され、本発明の基礎を成している。
【0010】
【発明が解決しようとする課題】本発明は、フォント・
アウトラインをラスタ化されたビットマップへ変換する
ための新規な装置および方法を提供するものである。
【0011】
【課題を解決するための手段】ラスタ化されたオブジェ
クトを表示するための1つの方法は、第1の座標空間内
のオブジェクトを表すアウトライン・データをコンピュ
ータ・メモリすなわち記憶装置からアクセスすることに
より始まり、それからそのアウトライン・データを、第
2の座標空間内のオブジェクトを表す対応するアウトラ
イン・データへ変換する。この変換において第1の座標
空間内のアウトライン・データの領域関係情報が第2の
座標空間内で保持される。この方法は、a)第1の座標
空間内の表現からの物体のアウトライン・データを直線
変換を用いて第2の座標空間の最初の表現へ変換する過
程と、b)領域関係データを第2の座標空間内のオブジ
ェクトの表現へ主として加えて、複数の直線変換マトリ
ックスとして表された非直線変換マトリックスを得る過
程と、c)非線形変換マトリックスを、第1の座標空間
内のオブジェクトを表すアウトライン・データへ加え
て、第2の座標空間内の第2の表現を得る過程と、d)
第2の座標空間内のオブジェクトの第2の表現を、表示
のために適当なフォームでオブジェクトを記述するラス
タデータへ変換する過程と、e)ラスタデータを記憶す
る過程またはオブジェクトをラスタ装置で表示する過程
とを含む。
【0012】別の面から、この方法は、記憶装置からの
アウトライン情報の最初のアクセス動作の後で、第1の
座標空間内のオブジェクト・アウトラインを第2の座標
空間へ基準化する。それから、この方法は第2の座標空
間内の第1の座標における1つまたは複数の選択点の座
標を識別し、それらの座標を第2の座標空間内の希望の
座標または予め選択した座標と比較し、第2の座標空間
内の希望の座標と実際の座標との差を測定する。それか
らこの方法は、複数の不連続直線変換マトリックスによ
り近似された非直線変換を得て、適切な直線変換マトリ
ックスを加え、第1の座標空間からのアウトラインを調
整された第2の座標空間へ直接変換する。最後に、この
方法はオブジェクトのアウトラインを、ラスタ装置で表
示するために適当なホームで充たし、記憶して、そのア
ウトラインを表示できる。
【0013】湾曲したアウトラインを、希望のビットマ
ップを計算するために適当な直線線分へ変換するため
に、本発明は、各次元が中点を細分割し、ベジエ曲線に
対して平坦性試験を行うために4つの並列加算器を含
む。そのベジエ曲線は制御点の第1のセットにより形成
される。それらの制御点は第1の制御点を基準として用
いて正規化される。ベジエ曲線はそれのほぼ中点で第2
のベジエ曲線と第3のベジエ曲線に分割され、内側の各
制御点と最も近い終点の間の距離が、正味の終点間距離
と平坦性係数の和の3分の1以内であるかどうかを判定
することによりテストされる。その平坦性係数は、たと
えば、画素の幅の半分のことがある。
【0014】アウトラインが一連の線分へ縮められる
と、画素の中心の間の中線とそれらの線分が交差する
か、およびどこで交差するかについて各線分が調べられ
る。画素をサブユニットへ細分割することにより最後の
ビットマップの計算が容易になる。本発明の装置によっ
て、線分の基準化および線分の細分割を簡単にすること
により、従来のソフトウェア使用よりも優れた点がいく
つか得られる。画素のどの細分割で交差が起きるかを調
べるために、中線と交差する基準化された線分がテスト
され、アウトラインをとられた画像の中心の充填をドロ
ップアウト制御と衝突制御により、それらの交差につい
ての情報がコンパイルされ、相関させられる。
【0015】本発明の方法と装置は、キャラクタ・アウ
トラインを、ラスタ印刷装置またはラスト表示装置で表
示するために適当なビットマップへ変換するためにとく
に有用である。アウトラインはキャラクタスペース内で
非常に高い解像度で一般に定められ、各キャラクタに対
して1000画素高くしばしば設定される。キャラクタ
のアウトラインは、画素格子上のある点で始める一連の
直線および曲線として定めることができる。アドービ・
タイプ1フォント・フォーマット(ADOBETYPE
1 FONTFORMAT)(“BLACKBOO
K”、1990)を参照されたい。アウトラインは一般
に表示スペースへ転送せねばならない。その表示スペー
スは選択された表示装置で利用できる最高解像度に等し
い単位を全体として有する。アウトラインは求められて
いるサイズに基準化され、ビットマップとして表現さ
れ、選択された表示装置で表示される。
【0016】
【実施例】本発明の装置は、ラスタ・プリンタ制御器内
のマイクロプロセッサと共に使用するコプロセッサを1
チップに組み込むように構成されている。便宜上、本発
明の好適な実施例をフォント描画コプロセッサ、以下
「FRC」と記す、について説明することにする。図1
を参照して、コプロセッサ10が印刷装置または表示装
置の主バス16へ接続されることにより、制御マイクロ
プロセッサ12とシステム・メモリ13へ接続される。
中間値および最終値を記憶するために、コプロセッサ1
0は任意選択の専用キャッシュ・メモリ11へ接続で
き、かつそのキャッシュ・メモリを使用でき、あるい
は、コプロセッサ10は内部メモリを含むことができ、
またはシステム・メモリ13を使用できる。当業者に周
知の適切な出力装置をドライブするために、この装置は
表示制御器15(ビデオ装置のため)とプリンタ・イン
ターフェイス14(プリンタ装置のため)の少なくとも
一方を含むことができる。
【0017】次に図2を参照する。コプロセッサ10の
主な素子はマイクロマシン21と、ベジエおよびスタッ
ク・マシン22とCscan装置23とである。それら
の素子は前方チャネル・バス26を介して互いに接続さ
れるとともに、前方チャネル・インターフェイス24へ
接続される。その前方チャネル・インターフェイス24
は線30を介して主バス26(図1)へ接続される。各
素子21,22,23は後方チャネル・インターフェイ
ス27を介して互いに接続されるとともに、後方チャネ
ル・インターフェイス25へ接続される。その後方チャ
ネル・インターフェイス25は線31を介して任意選択
専用メモリ11(図1)へ接続される。マイクロマシン
21とベジエおよびスタック・マシン22はパイプライ
ン28を介して一緒に接続される。同様に、ベジエおよ
びスタック・マシン22とCscan装置23はパイプ
ライン29を介して一緒に接続される。各素子の動作
と、各パイプラインに沿って伝えられる情報については
後で詳しく説明する。1つのバスが故障したり、正しく
機能しないとすると、それらの素子の間に別の相互接続
を用いるためにコプロセッサ10を再構成できるよう
に、図2に示されている各バスとチャネルをプログラム
制御の下に変更できる。コプロセッサ10の機能は、タ
イプ1フォント・プログラムを特定のラスタ・ビットマ
ップへ理解できるようにして表現することである。タイ
プ1フォント・プログラムを描画する過程は、3つの主
な区域、すなわち、1)ベジエ制御点の「ヒントを与え
られた(hinted)」変換と、2)キャラクタアウ
トラインの直線化と、3)アウトラインの知能充填と、
に分けることができる。それらの過程はマイクロマシン
21と、ベジエおよびスタック・マシン22と、Csc
an装置23とにより行われる。
【0018】マイクロマシン21 マイクロマシン21はタイプ1フォント・プログラムに
おけるヒント(hint)を翻訳し、それらのヒントを
加えてタイプ1フォント・プログラムを理解できるよう
に変換されたベジエ制御点の流れに変換するという第1
の過程を行う。後で詳しく説明するヒントは、たとえ
ば、等しい幅または類似の幅のある特徴を保持するこ
と、大きい点サイズのある範囲内、およびより小さい点
サイズのより限られた範囲内に入るようにxの高さを設
定すること、および広い範囲の基準化されたサイズにわ
たってフォントの一般的な特徴の維持を助けるその他の
要素またはパラメータと、を示唆するフォントまたはキ
ャラクタで符号化された、タイプ設計者からの指示であ
る。
【0019】次に、マイクロマシン21の主な部品であ
るサブシステム110とデータパッチ109が示されて
いる図3を参照する。サブシステム110はタイプ1フ
ォント・プログラムのヒントを与える動作の最初の段階
を実現する論理回路の集合である。サブシステム110
は、その動作を制御し、統合するシーケンサ101を含
む。サブシステム110の主なブロックは産業において
一般に知られ、理解されている。シーケンサ110は、
分岐、すなわち、サブルーチンへの分岐および条件付き
分岐を含む、一般的なマイクロプロセッサの機能を実行
する。シーケンサ101への命令はROM102に含ま
れている。好適な実施例においては、そのROMはたと
えば896語の長さを保持し、マイクロ命令語の長さは
58ビットである。サブシステム110はRAM103
を含む。このRAMはたとえばマイクロ命令RAMの1
28語を保持し、ROMに含まれているプログラムの制
御の下にロードできる。RAM103をボードに設け、
シーケンサ101へ接続することにより、要求されなけ
れば、および要求されるまではコプロセッサ10に存在
する必要がないソフトウェアをシーケンサ101が実行
できるようにされる。タイプ1プログラミング言語が複
雑であること、およびそれが常に発展を続けることによ
って、この態様の柔軟性を含むことができるようにされ
る。
【0020】シーケンサ101はデータパス109内の
一連の論理素子および記憶区域を、制御信号をバス10
4を介して交換し、かつ制御フラッグをバス105を介
して交換することにより、制御する。データパス109
はレジスタ・ファイル106と、StemList R
AM107と、機能ブロック108を含む。機能ブロッ
ク108は論理機能と、1つまたは複数の加算器/減算
器と、状態フラッグと、24×24ビット乗算器と、固
定小数点除算器とを含む。関数ブロック108は、幅お
よび中心(WidthandCenter)のようなス
テムサーチ・オペレーションのような描画器に特有のオ
ペレーション、描画過程を加速するためにFRCにおい
て特に実現された機能とを実行する。
【0021】特定のサイズのビットマップを発生するた
めに、アウトラインはマーキング・エンジンに表示され
る時に正しいサイズに一般的に基準化せねばならない。
また、ある特徴を識別し、画素境界上の類似の特徴を平
衡させられている特徴次元(feature dime
nnsion)に整列させると助けになる。アウトライ
ンを歪ませる方法は簡単で、速くなければならず、ソフ
トウェアとハードウェアの両方で実現することが好まし
い。
【0022】次に図6を参照する。アウトラインを変換
および調整する一般的な過程は、少なくともいくつかの
点を装置スペースの座標へ最初にマップすること、行う
必要がある調整、たとえば、サイズが類似するステム幅
を保持すること、または画素の境界上で整列されている
特徴を保持すること、それから必要とされている歪みを
達成する変換マトリックスを得ることである。それから
変換マトリックスをキャラクタアウトライン・データ内
の重要な点に適用して、アウトラインを装置スペースへ
変換することができる。従来の方法は変換のために2つ
の過程を必要とするが、現在の方法は1つの過程を節約
する。次に、基準化され、調整されたアウトラインを直
線化し、過程117、充填およびラスタ化し、過程11
8、ラスタ装置またはプリンタで表示する用意をする。
現在の方法は装置スペース内の差を計算して、それらの
差を用い、過程115、それから元のアウトライン・デ
ータをヒントを与えられた装置スペースへ変換する、過
程116。以前はそれらの過程のいずれも行われなかっ
た。
【0023】アウトライン・データ−背景変換 次に図4,図5,図7,図8,図9を参照する。キャラ
クタの形を1つまたは複数の特定の軸、たとえばX軸に
おいて変更できる。ある特徴を表示空間内の画素境界に
整列させ、可能である時は、十分な画素を含む特徴ディ
メンションを与えることができる。図7によれば、アウ
トライン121はスケーリングだけを用いてキャラクタ
・スペースから装置スペースへのアウトライン・データ
の直接変換を示す。スケーリングされた点のサイズのこ
の特定のアウトラインを表示するためには、当業者に周
知の多くの選択、たとえば、(x,y)座標(3,1)
〜(3,7)に画素128〜129を、または画素13
0を座標(12,13)に表示するか否かを行う必要が
ある。アウトライン121は線分131と132からな
るセリフ特徴を含む。この特徴はある点サイズすなわち
解像度以下では表示できないことがある。図8と図9を
参照すると、元のアウトラインのディメンションを全体
的に維持し、可能であれば画素全体を用いるようにアウ
トライン121はヒントを与えられた装置スペース内で
アウトライン133へ歪まされる。図9は、画素格子に
表示することがアウトライン121よりもアウトライン
133の方がどのようにしてはるかに容易であるかを示
す合成図である。
【0024】典型的なキャラクタは1つまたは複数の領
域を含む。それらの領域はたとえば垂直ステムまたは水
平ステムであって、それらのステムはキャラクタ内部
と、キャラクタの間の内部にある。垂直ステムの例は
「H」,「B」または「P」における垂直部、たとえば
図7のステム122、および「B」または「P」の湾曲
部の垂直端部、たとえば図7のステム124である。
「B」は2つの湾曲部を有し、したがって2つまたは3
つの湾曲部を有する。図7によれば、ステム125と1
27は水平ステムである。水平ステムと垂直ステムをバ
ランスさせることが一般に好ましい。1つのタイプフェ
イスでの小文字「o」は滑らかで、円形であり、等しい
水平ステムと垂直ステムを求めることができ、別の
「o」は上と下を細くでき、等しい垂直ステムとは異な
る寸法の等しい水平ステムを求めることがある。タイプ
設計者およびユーザーはカウンターも用いる。それらは
キャラクタの形すなわち意匠に影響を与える一般に特定
のスペースである。垂直カウンター123と水平カウン
ター126は2つの例である。
【0025】キャラクタを領域へ分割できる。各領域は
垂直ステム、またはステムの間またはステムの外側のス
ペースを含むことができる。圧縮または膨脹により各領
域を歪ませることにより、種々の領域の間のバランスを
維持しながらキャラクタをスケーリングできるようにし
て、キャラクタの満足な描画を行う。典型的なスケーリ
ング過程は領域の圧縮と膨脹を含むことができる。たと
えば、重要な領域がスケーリングされた時に画素の幅よ
り狭いとすると、1画素幅になるようにそれを膨脹でき
(等しい重要性の対応する領域と共に)、介在する領域
を圧縮して描画をバランスできる。図4を参照すると、
領域1,3は「H」の垂直部または「P」の垂直部と湾
曲部のような重要な特徴を表し、領域0,2,4はほぼ
背景であって、領域1と3に対して行われる操作の結果
として歪まされる。したがって、領域1と3は歪み領域
と考えることができ、領域0,2,4は補償領域と考え
ることができる。どの歪みを加えるかの選択はタイプの
設計についての考慮と、解像度およびキャラクタのサイ
ズのような表示特徴とを基にする。歪みの指定方法は当
業者には周知である。1つの指定法は、タイプ1フォン
ト記述において用いられるものであって、それについて
は以下に説明する。
【0026】変換マトリックスの獲得 装置に特有の描画を発生するために、キャラクタ・アウ
トラインはキャラクタ・スペースから装置スペースへ変
換されるから、求められている任意の歪みを得るために
同じ変換を用いることが論理的であるようである。希望
の歪み列が変換マトリックスで実現される。変換マトリ
ックス・オペレーションはマトリックスのリストを用い
て領域エリアへ分離できる。各領域ごとに1つのマトリ
ックスが対応する。それとともに、それらのマトリック
スは、キャラクタ・スペース内の座標を装置スペース内
の座標へ変換するための不連続変換マトリックスを表
す。図4を参照して、領域0,1,2,3,4はマトリ
ックスM0,M1,M2,M3,M4(マトリックスは
示していない)に対応し、変更された領域0′,1′,
2′,3′,4′はマトリックスM0′,M1′,M
2′,M3′,M4′に対応する。領域0と4は、キャ
ラクタに対して定められたスペースの端まで延びる。領
域の間の全ての点に対して、対応するマトリックスが、
キャラクタ・スペース内の点を装置スペース内の点へ変
換するために加えられる。2つの領域と縁部を共有する
点を1つの領域または別の領域へランダムに割り当てる
ことができ、または規則によって領域へ割り当てること
ができる。たとえば、左側の領域を常に用いる。
【0027】各領域に対する変換マトリックスは、歪み
なしという簡単な場合において同じである。たとえば、
領域1と3を簡単な直線変換により50%だけ圧縮する
ことにより、それらの領域は歪まされる。そうするとそ
れらの領域に対する新しい領域は、 M1′=M1*0.5 M3′=M3*0.5 である。ここに、
【0028】MZは第1の座標空間内の領域Z内の点に
対するマトリックス、MZ′は第2の座標空間内の領域
Zである。
【0029】図4と図7を参照する。図4の領域1は、
「P」び直立ステムであるステム122に対応し、図4
の領域2はカウンター123に対応し、領域3は「P」
の湾曲部であるステム124に対応し、領域0,4は、
「P」を隣りのキャラクタから分離する左右のベアリン
グにそれぞれ対応する。図4における値は図示のためお
よび計算を容易にするために選んだものであって、図7
の寸法には正確には対応しない。
【0030】最適なラスタ化はスケーリングばかりでな
く、たとえば画素の境界上に落とすために、領域を装置
スペース内の画素列に整列させることもしばしば要求す
る。たとえば、最も右側の縁部を移動させるだけで領域
1と3を50%圧縮できる。これはキャラクタの各スト
ロークの幅を狭くして、活版業者にライトフェイスとし
て知られている、より細いキャラクタを実効的に作るこ
とに等しい。この種の圧縮は、主なストローク幅を整数
へ画素に等しくセットすることがしばしば必要である。
調整されていないストローク幅が約2.5画素である図
7を、ストローク幅が画素2個分まで圧縮されている図
8と比較する。図4を参照して、
【0031】 元のもの 変更されたもの 領域1 CSn 200 CS′n 200(動かされず) CSn+1 300 CS′n+1 250(幅が50%だけ圧縮された) ここに n :縁部「n」、領域の左側縁部 n+1 :領域の右側縁部 CSn :キャラクタ・スペース縁部「n」(調整せ
ず) CS′n :調整された(ヒントを与えられた)キャラ
クタ・スペース縁部「n」 である。
【0032】領域2の左側縁部CSn′ は移動し、領域
1としての領域1の右側縁部CS′n+1 が圧縮され、領
域2を50単位だけ膨脹するが、領域2の右側縁部は2
50単位の調整された幅に対して、固定されたままであ
る。
【0033】領域2 CSn 300 CS′n 250(領域1と縁
部を共用) CSn+1 500 CS′n+1 500(領域3と縁
部を共用)
【0034】活字デザイン基準に適合するように装置ス
ペース内の点を調整する必要があるとすると、完全な変
換マトリックスは一般に非直線である。ここで、領域2
は25%だけ大きくなり、領域1は50%だけ小さくな
るから、領域は種々のマトリックスを使用せねばならな
い。
【0035】補償係数(Cf) は領域を歪ませるために
必要なスケーリング係数を与える。Cf は単に、領域の
元の幅で除された領域の調整された幅の比である。補償
係数の比を下に示す。
【0036】(数1) Cf =変更された幅/変更されない幅 =deltaCS+(CSn+1−CSn)/(CSn+1−CSn
【0037】たとえば、領域2に対して、
【0038】(数2) Cf[2]=(300−250)+(500−300)/(500−300)
=1.25
【0039】である。領域変換を実現する従来の方法
は、領域から領域へ、たとえば領域1から領域2への、
変換マトリックス値遷移の急変として不連続を生ずるこ
とがある。Cf=1.25と設定し、領域2を25%だ
け拡大することだけで領域2の左側縁部が250*1.
25=312.5へ変換され、領域2の右側縁部が50
0*1.25=625へ変換される。それらは希望値で
はない。それらの不連続は各縁部に顕著な効果を生ず
る。それらの不連続をなくすために、変換マトリックス
を変更して変換係数を含むことができる。
【0040】(数3) x′[Z]=(x−CSn)*Cf+CS′n
【0041】ここに、 x=領域Z内の点x (x−CSn)=現在の領域Z内の元の点xを「幅」と
して正規化する Cf =補償係数、総(amount)領域が歪まされる CS′n=変換係数、新しい座標空間へ復帰
【0042】領域2に対しては、これは
【0043】(数4) x′[2]=(x−300)*Cf+250
【0044】になる。領域2の右側縁部の変換は(50
0−300)*1.25+250=500になる。これ
は正確に希望値である。このプロセスは類似のやり方で
反復され、各領域に対してCf とオフセット翻訳を計算
して、不連続な、一般に非直線の変換マトリックス(S
x,Sy)を生ずる。
【0045】上の例は、キャラクタ・スペース(CS)
内の、元の座標データの、ヒントを与えられたキャラク
タ・スペース(CS′)と呼ばれる新しい座標空間への
変換を示す。従来のATM法においては、それらの歪み
はまず装置スペース(全てのキャラクタ変更の実際の目
標)で行われ、それから逆変換マトリックス(すなわ
ち、装置スペース変換マトリックスを「元へ戻す(un
does)」変換マトリックス)を介してキャラクタ・
スペースへ戻されて、CS′座標データを生ずる。C
S′データ点をヒントを与えられた装置スペース(C
S′)へ変換するには、最後の変換マトリックス
[Sx,Sy]をCS内の元の座標データ[Cxn,Cyn
へ加えることを必要とする。
【0046】(数5) CS[Cx0,Cy0]->CS′ CS′[Sx,Sy]->DS′ [Cx1,Cy1] ・・・ [Cxn,Cyn
【0047】そうすると、DS′データ点を、従来の方
法または下記の方法を用いて充たすことができる。充填
されたアウトラインは記憶したり、直接表示したりでき
る。
【0048】本発明の方法 本発明は、補償変換と装置スペース変換を組み合わせ
て、処理量がより大きい、流線形状の操作を行えるよう
にするものである。この方法は、領域ベースで加えられ
る一連の変換マトリックスを作成することにより、オブ
ジェクトのアウトラインを歪ませる。この方法は、非直
線変換関数のオペレーションをエミュレートするために
変換マトリックスリストを用いる、不連続非直線変換と
呼ばれることがある。
【0049】アウトライン・データの変換および変換マ
トリックスの獲得 FRCは、僅かに異なるが、数学的には同じやり方で領
域歪みを実現する。上の例とは対照的に、FRCは領域
の最後の幅、たとえば図4では領域1に対しては11
3、領域2に対しては114、または領域の新しい右側
縁部(領域1では300->250)のいずれも追従しな
いが、変化のデルタ(領域1と2に対して112ユニッ
トまたは−50ユニット)を追跡する。領域をより小さ
くすることは負の値として取り扱われる。この変化によ
ってCf の計算が一層簡単になる。
【0050】(数6) Cf =デルタ/元の幅 =−50/100=−0.5 領域1に対して =+50/200=0.25 領域2に対して
【0051】変換の式は下記のようになる。
【0052】(数7) x′CS[Z]=(x−CSn)*(1.0+Cf)+CS′n x′DS[Z]=Sf *(x−CSn)*(1.0+Cf)+CS′n * Sf =(x−CSn)*(Sf+C′f)+DS′n 領域2に対して、 x′CS[2]=(x−300)*(1.0+Cf)+250 x′DS[2]=(x−300)*(Sf+C′f)+DS′n
【0053】この式は新しい係数Sf 、すなわち、fデ
ィメンション(xまたはy)に対する換算係数(sca
le factor)を含む。それらの式は簡単にでき
る。装置スペース内の領域の歪ませられた幅(DS′
幅)は、ヒントを与えられないキャラクタ・スペース幅
(CS幅)により除して、組み合わされた装置スペース
変換/補償係数値を生ずることができる。座標を完全に
変換するための式は下記のようになる。
【0054】(数8) Cfc=(DS′n+1−DS′n)/(CSn+1−CSn
【0055】この式は次のように表すことができる。
【0056】(数9) Cfc=Sf+(deltaDSn+1−deltaDSn)/(CSn+1−CSn ) =Sf+C′f x′CS[Z]=(xCS−CSn)* Cf+CS′n x′DS[Z]=x′CS * Sf =(xCS−CSn)* Cf * Sf+CS′n * Sf =(xCS−CSn)* Cfc+DS′n
【0057】これを簡単にして、
【0058】(数10) x′DS[Z]=xCS * Cfc+(DS′n−CSn * Cfc
【0059】定数項はKに等しくセットされる。
【0060】(数11) K=DS′n−CSn * Cfc ここに、 Cfc :複合補償係数 Sf :換算係数、たとえばxディメンションのSx C′f:Cfc−Sf
【0061】変換オペレーションのただ1つのレベルが
求められるから、描画器により行われる乗算の回数が減
少された。この方法は下記の疑似コードを用いて実現で
きる。
【0062】 (表1) PseudoProcedure CreateMap #Repeat for each axis,typically x and y n=1 #initialize index K=[0]=deltaDS′「0」 #Offset factor Cfc[0]=Sf #Compound compensation factor for n ≦ NumberOfEdges #Calculate Transformation Mapping Cfc[n]=Sf+(deltaDS′[n+1]−deltaDS′[n]/(CS[n+1]−CS[n ]) K[n]=DS′[n]−Cfc[n]* CS[n] next n K[n]=deltaDS′[n] Cfc[n]=Sf
【0063】アウトライン・データへ変換を適用する 補償マトリックスおよび装置スペース・マトリックスを
組み合わせ、元のアウトライン・データへ適用して、希
望の最終的な変換を1ステップで行うことができる。従
来の歪みは、キャラクタをCSからCS′、ヒントを与
えられたキャラクタ・スペースへ変換し、それからヒン
トを与えられた装置スペースDS′へ変換する。ヒント
を与えることが装置スペースに留まるならば、多くの数
学演算(および長い時間)を避けることができる。本発
明はオペレーションを簡単にするためにCS′座標系を
迂回する。新しい補償係数が、歪み係数に加えて、実際
の装置スペース変換を含む。
【0064】(数12)
【0065】そうするとDS′データ点を従来の方法ま
たは下記の方法を用いて充たすことができる。充たされ
たアウトラインは記憶でき、または直接に表示できる。
【0066】ヒント付与 ラスタ化プロセスを故意に歪ませて、発生されるキャラ
クタの外観と読みやすさの少なくとも一方を改善でき
る。最後のビットマップのスケーリングとラスタ化にお
いて調整し修正を行う描画器を指揮すなわち導き、より
最適の結果を生ずるために、特定の情報をフォントデー
タに含ませることができる。そのようなプロセスの1つ
がヒント付与と呼ばれ、フォント・アウトラインに全体
として含まれているデータはヒントと呼ばれる。ヒント
は装置スペースへ典型的に加えられるが、アウトライン
・データをスケーリングする前にキャラクタスペースに
加えることもできる。
【0067】ヒント付与プロセスは、オブジェクトのク
ラスのある共通特性を識別すること、極端に大きいか、
小さいサイズでも、描画されるオブジェクトの美的性質
(および、フォントの場合には読みやすさ)を維持する
ために一連のプロセスの制定を含む。基本的なヒント付
与法と応用が、「アドービ・タイプ1フォント・フォー
マット(ADDBE TYPE 1 FONT FOR
MAT)」に、(「ブラック・ブック(Black B
ook)」1990)に、タイプ1フォント符号化仕様
とともに詳しく記載されている。FRCはそれらのオペ
レーションを新規なやり方で実現する。
【0068】ヒント付与指令はステム・ヒント付与指令
hstem、vstem、hstem3、vstem3
を含む。前記歪み法に従って、ステムは歪み領域に類似
する。ステムの間の区域(活字用語では「カウンター」
と呼ばれる)は補償領域になる。プログラム設計者また
はタイプデザイナーは、最適な描画のためのステムの縁
部の配置と、ストローク色を一貫させるステムの幅とを
制御するために、ある規則を選択できる。それらの方法
によって、歪みマトリックス・リストを作成するために
用いられる歪みの結果がもたらされる。タイプ1フォン
ト仕様はBlueValues[]アレイとOther
Blues[]アレイにより指定される付加領域を含
む。それらのアレイにより、以下に述べるように、小さ
いサイズで適切なキャラクタ高さを確保するために、ス
テム領域の配置が調整させられる。高さという用語は、
x高さおよびその他の活字トップ領域の上のアセンダ
と、基線その他の活字ボトム領域の下側のデセンダとを
含む。下記の方法はステムの幅と縁部配置を制御するた
めに用いられる。例はX座標および幅に関するものであ
るが、Y座標と高さにおける対応する調整は類似のやり
方で行われる。
【0069】幅 キャラクタ・スペースにおけるステムの幅はWidth
DSにより表される。装置スペースへの変換の後の幅は、
一般に小数値付きで、WidthDSにより表される。W
idthDSはi・ffとして表すことができる。ここ
に、iは幅の整数部を表し、・ffは小数部を表す。画
素中心に一致するというような、あるしきい値の上に正
確にある点の数が最少であるならば、以後の処理は一層
容易にされる。選択されたしきい値点を中心として幅を
調整できる。しきい値点は、視覚的に受けることができ
る。またはより良く、しかも最適の表現を達成するため
に、設計者によりセットされる。たとえば、幅の値を、
下限(0.625)と上限(0.900)により決定さ
れる指定された範囲へ制限できる。図5は1つの幅の評
価を示し、ステムの幅をLowerBound138と
UpperBound139の間の範囲に入れるため
に、deltawidth による幅136の調整を示す。全
ての幅を指定された境界の間に保つために、delta
width により幅を調整するために下記の規則を使用でき
る。
【0070】(1)もし(0.625<.ff≦0.9
00)ならば deltawidth=0.0 (2)もし(0.5≦.ff≦0.625)ならば deltawidth=0.625−0.ff (3)もし(.ff>0.900)ならば deltawidth=0.900−0.ff (4)もし(.ff<0.5)ならば deltawidth=(0.900−1)−0.ff
【0071】それらの例は4つの幅調整規則を示す。 10.75->10.75、deltawidth=0.0
規則1) 9.55->9.625、deltawidth=+0.07
5(規則2) 4.97->4.900、deltawidth=−0.07
規則3) 9.45->8.9、deltawidth=−0.55(
則4
【0072】WidthDSに対するこの調整は、各縁部
の間に全deltawidth を配分することにより、縁部
の動きに転換できる。deltawidth の1/2をより
大きく縁部(最も右側の縁部、次の縁部すなわち「への
縁部」としばしば呼ばれる)へ加え、deltawidth
の1/2を下側の縁部(最も左側の縁部、第1の縁部す
なわち「から縁部」としばしば呼ばれる)からさし引
く。負のdeltawidt h は、ステムが細くなることを
意味し、したがって左側の縁部を右へ動かし(数値的に
大きくする)、右側の縁部を左へ動かさねばならない
(小さくする)。図5を参照すると、左縁部134と右
縁部135の間のステムの幅136は2.55である。
この幅値はLowerBound138とUpperB
ound139の間に小数部を持たないから、調整せね
ばならない。規則2を適用すると、幅136は2.62
5へ調整される。これは右縁部135を位置135Aへ
動かして、deltawidth 137=0.075を与え
ることに等しい。deltawi dth は、左縁部から0.
075/2をさし引き、それを位置134Aへ動かし、
右縁部135へ0.075/2を加えて、それを位置1
35Bへ動かすことにより、縁部の間に配分される。
【0073】センターリング 可能な時には画素全体により特徴を表し、可能であれ
ば、ステムの縁部が落ちる場所を選択することが重要で
ある。小さい特徴に対しては、または小さい点サイズの
キャラクタに対しては、ステムの中心を位置させること
により縁部の場所を制御できる。規則は非常に簡単で、
1)ステムの丸められた幅が平らであれば、中心をそれ
に最も近い画素境界へ動かす。2)ステムの丸められた
幅が異常であれば、中心を最も近い1/2画素境界へ動
かす。一般に、幅のヒント付与はセンターリングの前に
行われる。以下にセンターリングのいくつかの例を示
す。
【0074】(表2) WidthDS=5.73,Center=4 (EVEN)Center->4.0(deltacenter
=−0.3) WidthDS=8.90,Center=11.6 (ODD)Center->11.5(deltacenter
=−0.1) WidthDS=3.8,Center=7.65 (EVEN)Center->8.0(deltacenter
=+0.35) WidthDS=6.6875,Center=9.3 (ODD)Center->9.5(deltacenter
+0.2)
【0075】deltacenter値は両方の縁部へ等しく
加えられ、本質的には両方の縁部を同じ向きへ移動して
両方の縁部に整列させる。デルタ・ステムを評価する1
つの方法が下記の疑似コードで与えられる。
【0076】 (表3) PseudoProcedure SetDelta For n=1 to NMax DSn=CSn * Sf #scale edges DSn+1=CSn+1 * Sf Adjust widths: StemWidth=DSn+1−DSn HintedStemWidth=round(StemWidth) #Alternatively,hintedStemWid th can be selectively defined for a stem if HintedStemWidth is even,CenterOffset=0, else CenterOffset=0.5 fError_w=HintedStemWidth−StemWidth Adjust centers: StemCenter=(DSn+1+DSn)/2 HintedStemCenter=round(StemCenter)+CenterOffset fError_c=HintedStemCenter−StemCenter DS′n=DSn−fError_w/2+fError_c/2 DS′n+1=DSn+1+fError_w/2+fError_c/2
【0077】幅調整とセンターリング調整を行った後
で、ステムには十分にヒントが与えられる。ヒントを与
えられた各ステムの縁部に1組の調整誤差が関連させら
れる。それらの調整誤差は、アウトライン・データを歪
ませるために用いられる変換マトリックス・リストへ変
更せねばならない。
【0078】図4を参照して、領域1と3がディメンシ
ョン1′と3′へ調整すべき区域であると仮定する。領
域は、基準タイプ1フォント・フォーマットの下記のv
stem指令により指定される。
【0079】(表4)200 100vstem 50
0 100vstem (vstemはユニット200
で始まり、デルタ100ユニットは次の縁部までであ
り、それからvstemがユニット500で始まり、デ
ルタは100ユニットである)。
【0080】装置スペース変換は、たとえば0.083
33の倍率でなければならない。それは約236点/cm
(600dpi)の10点キャラクタに対応する。縁部
対は下記のようになる。
【0081】 (表5) CS DS WidthDS [200,300] [16.667,25.0] [8.333] [500,600] [41.667,50.0] [8.333]
【0082】最初のステップは各ステムの幅を調整する
ことである。値は前記幅調整規則4によりカバーされる
から、 8.333->7.900(deltawidth =−0.4
33) deltawidth は下記のようにステム縁部へ配分され
る。 領域1 16.667−(−0.433/2)=16.667+0.217=16.883 25.0+(−0.433/2)=24.999−0.217=24.783 領域3 41.667−(−0.433/2)=41.667+0.217=41.883 50.0+(−0.433/2)=50.0−0.217=49.783 幅7.900は8.0に四捨五入されて8.0になる。
これは偶数である。ステムの現在の中心は、領域1では
20.833、領域3では45.833である。偶数の
幅のステムは最も近い画素縁部へ動かされる。したがっ
て、 20.833->21.0(deltawidth =+0.1
67) 45.833->46.0(deltawidth =+0.1
67) である。
【0083】センタの位置を再び定めることは、両方の
縁部を同じ量だけ移動させることにより行われるから、
deltacenter値を領域の両方の縁部へ加える。 領域1 16.883+0.167=17.050 24.783+0.167=24.95 領域3 41.883+0.167=42.050 49.783+0.167=49.950
【0084】これはステムへのヒント付与を終わらせ
る。ステム縁部の最後の場所はDS′座標である。それ
らの座標はステムの最後にヒントを与えられた位置であ
る。アウトライン・データを歪ませる変換マトリックス
を形成して、キャラクタ・スペース座標が新しいヒント
を与えられた装置スペース座標面へマップするようにす
るために、取り扱われる全ての縁部とヒント付与におい
てひき起こされる歪みの量はリストにまとめられる。
【0085】 (表6) 倍率=0.0833 領域 CS DS DS′ 正味deltahints 1 200 16.667 17.050 +0.383 2 300 25.0 24.950 −0.050 3 500 41.667 42.050 +0.383 4 600 50.0 49.950 −0.050
【0086】これは4つの縁部(200,300,50
0,600)と5つの領域(<200,200->30
0,300->500,500->600,>600)を与
える。式は数11を数10へ代入することに等しいフォ
ーマットに従う。
【0087】(数13) x′[Z]=Cfc * x+K
【0088】マトリックス・リストを構成するために、
【0089】(表7) 領域0(x<200) Cfc=Sx=0.0833 K=deltaDS′[0]=0 領域1(200<x<300) Cfc=(24.950−17.050)/(300−200)=0.078125 K=17.050−0.078125 * 200=1.250 領域2(300<x<500) Cfc=(42.05−24.950)/(500−300)=0.0855 K=24.950−0.0855 * 300=−0.700 領域3(500<x<600) Cfc=(49.95−42.05)/(600−500)=0.07900 K=42.05=0.07900 * 500=2.550 領域4(600<x) Cfc=0.0833 K=deltaDS′[4]=−0.0500
【0090】境界領域0と4は異なって計算されること
に注目されたい。それらの領域は調整されないから、倍
率は不変でなければならない。しかし、隣接する領域と
共用される縁部における移動を補償する必要があること
もある。これは、DS縁部位置とDS′縁部位置の間の
差に等しい移動を導入することにより行われる。
【0091】FRCヒント付与 ヒントを解釈し、上記マトリックス・リストを発生する
ための基本的なメカニズムは、特殊化されたハードウェ
ア素子を用いて、FRCにおいて実現される。それらに
よりFRCをソフトウェアまたは汎用処理装置よりもも
のすごく高性能にできる。下記の指令は下記のパラメー
タを用い、戻す。
【0092】幅fWidthDS,lowerBnd,u
pperBnd,fErrorw幅指令は、ステムへヒ
ントを与えるための第1のステップのために必要なステ
ム幅調整を実行する。fWidthDS変数はステムのヒ
ントを与えられない装置スペース幅を含む。lower
BndとupperBndはしきい値定数である(上の
例ではそれぞれ0.625,0.900である)。fE
rrorw は幅指令のずれ結果を保持するために供給さ
れる。
【0093】中心fWidthDS,fCenterDS
fErrorC 中心指令は、ステムへヒントを与える第2のステップに
おいて行われるセンターリング・オペレーションを実行
する。fWidthDS変数は、ステムのなめらかさ(e
ven)/異常性(odd ness)を決定できるよ
うに、装置スペース内のステムのヒントを与えられる幅
を提供する。変数fCenterDSはステムのヒントを
与えられない、装置スペース中心である。fError
C は、縁部の正しい位置決めのために中心点に対して行
うべき調整を保持する。
【0094】より多くのヒント付与 この点につての説明は、変換マトリックス・リストを用
いてアウトライン・データ点を歪ませる方法と、ステム
へヒントを与えるためにその方法を用いることをカバー
する。アウトライン・データに対するほとんど任意の歪
みが変換リストを用いて可能である。上で概略述べた方
法は、ステムへのヒント付与のサブ画素取り扱いを、希
望のヒント付与結果をもたらす変換マトリックスのリス
トへどのようにして変換できるかを示すものである。装
置スペース座標データのほぼ任意の希望される取り扱い
を、マトリックス・リストを使用することによって行う
ことができる。
【0095】ステムを固定するためばかりでなく、ステ
ムの間の白スペースすなわち間隙(カウンターとして知
られている)を制御するように、または特定のサイズま
たは特定のサイズ範囲のフォントにおける別のキャラク
タの表現に合致させるためにキャラクタ・ボデーの高さ
と幅の少なくとも一方を制御するようにステムを位置さ
せるために、キャラクタのヒント付与を使用できる。ス
テムのヒント付与オペレーションの後の装置スペース取
り扱いを用いてそれらの目標を達成できる。それらの目
標の達成に有用な2つの主なヒント付与スキームは、ブ
ラック・ブック(Black Book)の5.2節、
5.5節およびそれ以下に記載されているように、Bl
ueValuesとFamilyBluesを用いる。
【0096】高さ制御 フォントの詳細の微妙さはあるサイズ以下では表示でき
ないことがある。そのようなサイズにおいては、フォン
トの特定の特徴を均質にする必要があることがある。キ
ャラクタの高さ(「e」と「o」の高さのような)は、
フルサイズのキャラクタでは僅かに異なることがあるが
小さいサイズではまだ区別できないので、それらのキャ
ラクタの高さはより小さいサイズにできる。タイプ1フ
ォント辞書内のBlueValue[]アレイとOth
erBlues[]アレイは、それらのオペレーション
を求めることができる時と、どの高さにキャラクタを合
致させるべきかを検出するための情報を提供する。適切
であれば、ステム縁部は、変換マトリックスの形成にお
いてdeltaheight(上記のdeltawidth に類似
する)を介して調整される。ヒントを与えられない装置
スペース高さの比較を可能にするために、ステムへヒン
トを与える前に高さ制御が行われる。
【0097】カウンター制御 ステムのサイズを制御することばかりでなく、ステムの
間の間隔(カウンター)を制御することも時には必要で
ある。本発明の方法も従来の方法もカウンター:ステム
間隔と全体的な着色を制御するために2種類の修正を用
いる。
【0098】ステム間隔は、3つのステムカウンター
(小文字のmにおけるvstemのような)を有するキ
ャラクタを調整するためにvstem3とhstem3
を用いる。最初に正常なやり方でステムへヒントが与え
られ、それから各カウンターがそれの予めヒントが与え
られた幅と比較される。「理想的な」幅に最も近いカウ
ンターが制御カウンターになり、この制御カウンターを
囲むステムは変更されない。残りのステムの両方の縁部
を動かすことにより他のカウンターが変更される。その
ステムは変更すべきカウンターに隣接する最も外側のス
テムである。最も外側のステムの両方の縁部を動かすこ
とにより、ヒントを与えられたステムの幅が維持され
る。
【0099】全体的な着色によりステムおよびカウンタ
ーを制御するより完全な方法が得られる。カウンターの
認識を容易にするために(およびカウンターの重要性に
優先順位をつけるため)、ステム経路を指定する特殊デ
ータがタイプ1フォント・プログラムに含まれる。ステ
ム経路は、それからステムの間のカウンターを制御すべ
き一連のステムである。キャラクタは多くのステム経路
を有することができ、各ステム経路は多くのステムを有
することができる。ステム経路データの呈示は階層を推
論させる、すなわち、最初のステム経路が最も重要であ
るとみなされ、以後のステム経路の重要性は低くなる。
全体的な着色法について、以下に文章で、それから疑似
コードで、説明する。
【0100】全体の幅、高さ等のような他のキャラクタ
特徴を維持するために、許される歪みの量を制限する必
要が時にはある。これは「画素バジェット(budge
t)」と呼ばれることがある。ステムだけが制御される
時は、カウンターにおいて歪みを補償できる。ステムと
カウンターを制御しても補償領域が残らないことがあ
る。その場合には、ステムだけを制御することが好まし
い。したがって、カウンターについての制御は、ステム
へのヒント付与プラス固定されているキャラクタ・パラ
メータに対する全体的な歪みを考慮せねばならない。
【0101】カウンター調整法は、これまで説明した限
りでは、他のヒント付与法に類似する。カウンター・サ
イズはステム縁部の装置スペース画素取り扱いを用いて
調整される。カウンターが膨脹または収縮させられる
と、それの上または下のステムを移動せねばならない。
カウンターをどのように調整するか、および調整の優先
順をどのようにつけるかを決定するために用いられる実
際の方法は複雑なことがある。基本的には、その方法は
3ステップ・プロセス、すなわち、群化、再群化および
調整、を利用する。
【0102】まず、相互のサイズのあるしきい値内に入
るカウンターの群を識別する。各カウンターは群に一時
的にセットされ、平均化され、共通の整数サイズに丸め
られる。カウンターの順序はステム経路から容易に決定
される。カウンターを潜在的な群として順次考慮する
が、サイズが現在の群中のカウンターのサイズと等しい
としても隣接しないカウンターを含むことなしに、カウ
ンターはそれの形状および場所に応じて(geogra
phically)群にまとめられる。各ステム経路を
順次通ることにより、群内で、および階層的な優先レベ
ルで最も重要なカウンターを考察できる。全てのカウン
ターの全ディメンションが、群の幅を用いて、計算さ
れ、所定のしきい値内に全体的にある、利用可能なスペ
ースと比較される。そのしきい値は基準化された点サイ
ズで変化することがある。
【0103】再群化ステップは、カウンター群の中で求
められるサイズ調整を配分する。カウンターを群化し、
調整した後で、キャラクタ・ボデーの全体のサイズが非
常に大きく歪まされたとすると、群を再び群化でき、全
体的な着色ヒントに対するカウンターのコンプライアン
スを最大にすることを試みつつ、サイズの歪みを最小に
するためにサイズ調整が再び配分される。それから、群
は識別される。その結果として、与えられたキャラクタ
のための歪みしきい値に入る調整が行われることにな
る。あるオブジェクトは歪みのないしきい値、膨脹係数
と呼ばれることがある、を有することがある。このしき
い値より大きいサイズのキャラクタは調整されたカウン
ターを有するべきでない。
【0104】希望のカウンター・サイズを達成するため
の必要に応じてステム縁部は再び位置させられる。ステ
ムにヒントを与えるための移動をこえる、「移動」の結
果としての新しいセットが、マトリックスのリストの発
生のために用いられる。カウンターを制御する前に、ス
テムへヒントを与えねばならない。カウンターを指定す
るデータは一連のステム(ステム経路)として表され
る。それらのステムは標準的なやり方で(幅、センター
リング)ヒントを与えられ、それからステムの間のカウ
ンターが調整される。再び位置させられる各ステムは常
駐StemListメモリに記憶され、「ロックされ
た」フラッグでマークされる。現在StemListに
あるステムに作用する以後のhstem/vstemへ
はヒントを与える必要はなく、それによりカウンターの
制御が以後の全てのステム表現に正しく反映されるよう
にする。
【0105】それらのステップの1つの実現が下記の疑
似コードに述べられている。
【0106】 (表8) PseudoProcedure GlobalColor read PathCounter[i = 0 to Max]from hints or memory for i = 0 to Max Calculate width adjustments Calculate center adjustments next i PixelBudget = Ef * PathLengthDs′#Ef = Expansion factor(e.g.0.75) #PathLengthDS′= Size of Counter Path j = k = 0 for i = 0 to Max # Collect CounterGroup[j] GroupWidth[j]= WidthOfCounter[i] GroupMin[j]= GroupMax[j]= WidthOfCounter[i] #Initialize if |WidthOfCounter[i]− GroupWidth[j]| < AllowedWidthVariation if (WidthOfCounter[i]< GroupMin[j]) GroupMin[j]= WidthOfCounter[i] if (WidthOfCounter[i]> GroupMax[j]) GroupMax[j]= WidthOfCounter[i] CounterGroup[j,k]= i #compile array of stems in group else # Calculate the pseudo-mean of the group GroupWidth[j]= (GroupMin[j]+ GroupMax[j])/ 2 JMax = j j = j + 1 ;k = 0 next i CounterSum = 0 while |CounterSum − PixelBudget| ≦ Tolerance # adjust counters as needed to set total to PixelBudget for j = 0 to JMax #calculate CounterSum = sum of all adjusted counter widths CounterSum = CounterSum + GroupWidth[j]*size(CounterGroup [j ,k]) next j if CounterSum > PixelBudget,Sign = −1;else Sign = + 1 #readjust GroupWidth[j]′s,starting with maximum value for j = j to JMax GroupWidth[j]= GroupWidth[j]+ Sign #Groups of counters can have different thresholds of allowable dimensions Calculate CounterSum If |CounterSum − PixelBudget| ≦ Tolerance, next j,restarting loop if necessary to further decrement GroupWidths else regroup : subdivide largest group and collect counter groups again # CounterSum is within Tolerance of PixelBudget,calculate transformation matrix using final counter width values
【0107】本発明のカウンター制御法は、ATMソフ
トウェア描画器に用いられる全体的な着色の改良であ
る。ATMソフトウェア法は、カウンターを形状および
大きさによらずにカウンターを群にまとめる、すなわ
ち、カウンターの「群」を順次形成する必要はなく、キ
ャラクタ・ボデー全体にわたって拡げることができる。
本発明の方法はカウンター・データの形状と大きさを基
にした群化を実現する。漢字のようなフォントでは、カ
ウンターをそれの形状と大きさを基にして群化すること
によって、一層望ましい結果が得られる。というのは、
カウンター群も視覚的な群(すなわち、互いに近いカウ
ンターの群)になる。1つのカウンター制御法が、アド
ービへ譲渡された米国特許第5,050,103号「漢
字表示法(Method for Displayin
g Kanji Characters)」に記載され
ている。
【0108】2つの方法の間の別の違いは、群の境界と
平均カウンターサイズを計算する現在の方法である。2
つの引き続くカウンターの間の差があるしきい値より大
きくなるまで、カウンターは群にまとめられる。この点
で、その群に対する平均カウンター寸法が、その群内の
最小カウンターと最大カウンターの平均を求めることに
より、計算される。カウンター制御のためにかかる処理
時間をできるだけ短くし、この方法の複雑さをできるだ
け低くするために、その差の計算を必要とする。調整を
行う方法(すなわち、群の分割、画素の配分(budg
eting)等)は非常に類似し、実現方法が異なるだ
けである。
【0109】 図7と図9を参照して、アウトライン121と133
は、それぞれヒントを与えられなかったDSと、ヒント
を与えられ、それからオーバーラップされたDS′のヘ
ルベチカ・メディムの大文字の「P」を示す。下記の例
は、約118点/cm(300dpi)の解像度で、約
5.9ポイントへ換算された1000×1000CSデ
ィメンションを示す。本発明のある面を示すために、図
はセリフ、すなわち、線分131と132を含む、小さ
くて、全体として水平の特徴、を含むが、下記の例はセ
リフのない元のキャラクタについてのものである。
【0110】タイプ1フォーマット・ヒント・データ 20−21hstem 303 83hstem 63
5 83hstem097vstem 436 100
vstem図7を参照すると、097vstemは垂直
ステム122であり、436 100vstemは垂直
ステム124であり、303 83hstemは水平ス
テム127であり、635 83hstemは水平ステ
ム125である。 ヒント付与データ:(注:ヒントを与えられる縁部位置
は中心幅調整だけである)
【0111】
【表1】
【0112】(表9) 変換リストの作成 水平 領域 0: Y <−1 キャラクタ基線の下 Cfc-y′= Sy = 0.0245833 K[0]= deltaDS′[0]= 0 領域 1: −1 < Y < 20 Cfc-y′=(0.8125−0.1875)/(20−(−1))= 0.0
2976 K[1]= 0.1875−(0.02976 *−1)= 0.2172 {etc.} 領域 5: 635 < Y < 718 Cfc-y′=(17.45−15.55)/(718−635)= 0.02289 K[5] = 15.55−(−0.02289 * 635)=+1.01374 領域 6: Y > 718 Cfc-y′= Sy = 0.0245833 K[6] = deltaDS′[n]= −0.2008
【0113】水平および垂直Cfc-y,Cfc-xおよびKに
ついての完全な値は
【0114】 (表10) 水平 領域 CS DS DS′ Net Delta Cfc-x K 0 0.0245833 0 1 -1 -0.025 0.1875 0.2121 0.0297643 0.2172 2 20 0.4917 0.81252 0.3209 0.0238073 0.3364 3 303 7.4487 7.54999 0.101253 0.0228917 0.6183 4 386 9.4892 9.45001 -0.03915 0.0244979 -0.0062 5 635 15.61 15.55 -0.0604 0.0228917 1.01374 6 718 17.651 17.45 -0.2008 0.0245833 -0.2008 垂直 領域 CS DS DS′ Net Delta Cfc-y K 0.024583 0. 1 0 0 0.05001 0.05 0.019587 0.05 2 97 2.38458 1.94999 -0.4 0.026844 -0.654 3 436 10.7183 11.05 0.33 0.019 2.7659 4 536 13.1766 12.95 -0.2 0.024583 -0.227
【0115】ベジエおよびスタック・マシン 背景 周知のように、x軸成分とy軸成分をおのおの有する2
点により線分は表される。ここでの説明のために、始点
をP0(「現在の」点)とし、終点をP3とすると、それ
らの点の間の距離(デルタ)がP3−P0で定められる。
一般に、直線方程式と、曲線方程式と、アルゴリズムに
ついては、ニューマン(WilliamM.Newma
n)、スプロウル(Robert F.Sproul
l)著、「対話型コンピュータ・グラフィックスの原理
(PRINCIPLES OFINTERACTIVE
COMPUTER GRAPHICS)」第2版、マ
グロー・ヒル(McGraw−Hill)、New Y
ork、(1979年)、309〜331ページを参照
されたい。
【0116】図10、図11、図12に示すように、立
方ベジエ曲線が4個の点P0,P1,P2,P3により表さ
れている。各点はx軸成分とy軸成分を有し、ベジエ曲
線の形成機能を果たし、ここでは包括的な意味で呼ぶ。
4個の点のうち少なくとも2個、始点P0と終点P3、は
曲線上になければならない端点である。他の2個の点、
1とP2、は制御点である。点P0,P3に関連する制御
点P1,P2の位置が曲線の形を決定する。制御点が端点
またはベジエ曲線に十分に近いと、始点がP0で、終点
がP3 である直線としてベジエ曲線を近似できる。図1
0と図12はいくつかのベジエ曲線を示す。図10、図
11、図12を参照すると、始点P0(201,20
5,209)と、終点P3 (204,208,212)
がそれぞれの曲線の端にあり、制御点P1(202,2
06,210)とP2(203,207,211)はそ
れぞれの曲線の外にあり、それらの曲線の形を決定す
る。アメリカ合衆国カリホルニア州 ロス・アルトス
(Los Altos)所在のモーガン・カウフマン出
版社(Morgan Kaufmann Publis
hers,Inc.)発行の、バースキー(Brian
A.Barsky)、バーテルス(Richard
H.Bartels)、ビーティ(John C.Be
atty)著「コンピュータ・グラフィックスおよび幾
何学的モデル化に使用するスプライン入門(AN IN
TRODUCTION TO SPLINES FOR
USE IN COMPUTER GRAPHICS
AND GEOMETRIC MODELING)」
(1987年)、211〜245ページを参照された
い。
【0117】細分割は、ベジエ曲線を一連の線分に分割
して、1つまたは複数の線分によりカーブを近似するた
めに用いられる既知の方法である。中点細分割は元のベ
ジエ曲線をより小さい2つのベジエ曲線に分割する。2
つのより小さいベジエ曲線のおのおのを再び細分割し
て、より小さいベジエ曲線を発生できる。各細分割は制
御点P1とP2を実際の曲線へより近く動かす。最終的に
は、制御点は収束して曲線上に乗り(1個の点とし
て)、または曲線を直線で近似できるように曲線に十分
近づく。
【0118】平坦性試験は、ベジエ曲線を直線で近似で
きるように、ベジエ曲線が十分に小さいかどうかを判定
する方法である。典型的な従来技術の試験は、点P0
3に関連して制御点P1とP2の距離を測定するために
距離方程式を用いる。平坦性試験は不要であるが、ベジ
エ曲線を1個の点まで縮減できるから、繰り返し細分割
プロセスをできるだけ速く終わらせるために、ベジエ曲
線が十分に小さくなった時には、直線でベジエ曲線を近
似することは一般に速い。
【0119】図12を参照すれば、点P0,P1,P2
3で形成されているベジエ曲線を細分割することによ
り、より小さいベジエ曲線が2つ得られる。第1の曲線
は端点A0とA3を有し、第2の曲線は端点B0とB3を有
し、かつそれぞれ制御点A1 とA2、B1とB2 を有す
る。下に、立方ベジエの中点細分割のための一般式を示
す。
【0120】(数14) A1 =(P0+P1)/2 A2 =(P0+2P1+P2)/4 A3 =(P0+3P1+3P2+P3)/8 B0 =(P0+3P1+3P2+P3)/8 B1 =(P1+2P2+P3)/4 B2 =(P2+P3)/2 B3 = P3
【0121】図12は、端点が201と204で、中点
213(終点がA3、始点がB0)で最初の分割が行われ
た細分割されたベジエ曲線が示されている。結果として
得られた2個のより小さい曲線は端点A0,A3とB0
3を有する。中点219(終点G3、始点H0)で分割
し、端点と制御点がG0〜G3(201,220,22
1,219)である結果としての曲線を得る1つの方法
も示されている。
【0122】実現 図13を参照すると、ベジエおよびスタック・マシン2
2は細分割および平坦性試験ディスパッチ222と、ベ
ジエ縮小状態マシン223と、ベジエ・スタック・マシ
ン224とで構成される。ベジエおよびスタック・マシ
ン22は1組のスケーリングされた座標点を入力として
マイクロマシン21(図2)から受け、グラフィック・
オペレーションを基にしてデータを処理し(線分または
ベジエ曲線)、線分のためのベクトルとしてデルタx値
とデルタy値を出力し、またはベジエ曲線のための一連
のデルタx値とデルタy値を出力してCscanユニッ
ト23へ供給する。ベジエおよびスタック・マシン22
はベジエ・ユニットおよびベジエ縮小状態マシン223
とベジエ・スタック・マシン224で構成される。マシ
ン223はベジエX軸ユニットとベジエY軸ユニットを
含み、マシン224はスタッカとアンスタッカを含む。
【0123】マシン223のベジエX軸ユニットとベジ
エY軸ユニットは並列に実行する。便宜上、以下の説明
では、ベジエX軸ユニットとベジエY軸ユニットの両方
に対して動作が同じである、短縮した名称ベジエ・ユニ
ット223を用いることにする。
【0124】ベジエ・ユニット223は、終点(P3
から現在の点(P0)を差し引き、結果としてのデルタ
値、本質的にはベクトル、をCscanユニット23
(図2)へ送るという1ステップ動作で線分で構成され
る入力を処理する。ベジエ・ユニット223は別のジョ
ブを受けることができる。
【0125】ベジエ曲線からなる処理入力はより複雑で
ある。図13、図14、図15、図16を参照し、それ
らの図に概略的に示されている方法を用いて、ベジエ・
ユニット223が中点細分割および平坦性試験の多ステ
ップ・オペレーションを開始する。ベジエ・ユニット2
23において実行される細分割および平坦性試験がハー
ドウェア実現のために最適にされている。それらのタス
クは並列に実行され、演算は加算と、減算と、桁送り
(2のべきの乗算と除算)とに減少されている。細分割
および平坦性試験は並列に実行されるから、次のオペレ
ーションについての細分割および平坦性試験の終わりに
次の判定が行われる。
【0126】ベジエ曲線がx軸とy軸の両方における平
坦性試験に合格したとすると、細分割からの結果が無視
され、ベジエ曲線は直線により近似させられるとみなさ
れる。デルタx値とデルタy値はXLineDetaお
よびYLineDetaとしてCscanユニット23
へ送られる。この点でベジエおよびスタックマシン22
は、以前の細分割の結果として任意のベジエ制御点がス
タックされていたかどうかを検査する。スタックが空で
ないとすると、アンスタッカ・ユニットがベジエ・デー
タをスタッカから外し、細分割オペレーションと平坦性
試験オペレーションを再び行う。スタックが空である
と、ベジエおよびスタック・マシン22は元のベジエ曲
線の処理を終わり、マイクロマシン21(図2)が新し
いデータを提供することを待つ。
【0127】x軸とy軸の少なくとも一方における平坦
性試験にベジエ曲線が落ちたとすると、細分割からの結
果が用いられ、ベジエ曲線は2つのより小さいベジエ曲
線(P′とP″または図12のAとB)へ分割される。
図13をなお参照して、ベジエ・ユニットは1度に1つ
のベジエ曲線を処理するだけであるから、2つのより小
さいベジエ曲線のうちの第2の曲線(P″)がベジエ・
スタック・マシン224によりスタックへ書き込まれ
る。スペースを留保するために、スタックされた点が正
規化される(P0″ が他の点から差し引かれる。)これ
により各軸当たり、4個の点の代わりに、3個の点だけ
をスタックできる(P1″,P2″,P3″)。P0″ は
零である。第2のベジエ曲線がスタックされているか
ら、ベジエ・ユニット223は、2つのより小さいベジ
エ曲線の第1の曲線(P′)の細分割と平坦性試験を実
行する用意がある。
【0128】スペースを節約し、有限スタック区域を納
めるために、スタックにおける素子の数が最大にセット
される。現在のコプロセッサ実現においては、スタック
の深さが16(384バイト)にセットされる。ベジエ
曲線が平坦性試験に落ちたとすると、ベジエ曲線は、そ
れが平坦性試験にパスしたかのように取り扱われるか
ら、線分により近似される。
【0129】従来の中点細分割法が、下記のようにFR
Cが使用するために最適にされている。点P0が零に等
しくセットされ、点P1〜P3が点P0を基準にして正規
化されていることに注目されたい。こうすることによっ
ていくつかの演算が簡単にされる。2による除算(2の
べきによる除算)はハードウェアにより1つの下位桁送
り(≫として記されている)として容易に実行される。
【0130】(数15) TEMP=1/2(P1+P2)=((P1+P2)≫1) A0 = P001 = 1/2(P0+P1)=1/2(P1)=(P1 ≫1) A2 = 1/2(A1+TEMP)=((A1+TEMP)≫1) A3 = B0 = 1/2(A2+B1)=((A2+B1)≫1) B1 = 1/2(B2+TEMP)=((B2+TEMP)≫1) B2 = 1/2(P2+P3)=((P2+P3)≫1) B3 = P3
【0131】FRCにおける平坦性試験はハードウェア
実現のために最適にされる。この試験は、非2のべき乗
算と平方根演算を要する距離式とは異なり、簡単な加算
および桁送り(2のべき乗算および除算)を必要とす
る。図12を参照して、平坦性試験は、終点204(P
3)に関連して制御点P1とP2 (202,203)の位
置を評価する。点202の正規化された座標が点204
の正規化された座標の1/3(プラス平坦性係数)であ
り、点203の正規化された座標が点204の正規化さ
れた座標の2/3(プラス平坦性係数)であると、ベジ
エ曲線は平坦であるとみなされる。
【0132】(数16) FlatC1=FF−ABS(P3−(3*P1))=FF−ABS(P3−((P1<1)+P1)) FlatC2=FF−ABS(P3−(3/2*P2))=FF−ABS(P3−((P2<1)+P2))
【0133】ここに、ABSは絶対値関数、FFはマイ
クロマシン21によりベジエおよびスタック・マシン2
2へ送られるFlatnessFactor(許容限
界)である。次に図16を参照する。下記のステップ
は、細分割された2つの曲線を与えるために、ベジエ曲
線Pの中点細分割と平坦性試験を構成するものである。
【0134】ステップ1:0 を基準にして点を正規化
する。RPnは一時的な点である。
【0135】(数17) PR3 = P3−P0 PR2 = P2−P0 PR1 = P1−P0 PR0 = 0
【0136】ステップ2:細分割および平坦性試験のス
テージ1。
【0137】(数18) TEMP1 =((RP1+RP2)≫1) B2 = RP2+RP33 = RP31 = (RP1 ≫1) A0 = RP0 TEMPC = ((RP1 ≪1)+RP1) TEMPD = ((RP2 ≫1)+RP2
【0138】ステップ3:細分割および平坦性試験のス
テージ2。
【0139】(数19) B1 =((TEMP1+B2)≫1) A2 =((TEMP1+A1)≫1) TEMPC = RP3−TEMPC TEMPD = RP3−TEMPD
【0140】ステップ4:細分割および平坦性試験のス
テージ3。
【0141】(数20) A3 = B0 =((B1+B2)≫1) FlatC1 = FlatnessFactor+/−TEMPC FlatC2 = FlatnessFactor+/−TEMPD
【0142】FlatC1の決定において、TEMPC
零より小さいとすると、加算が行われるTEMPC が零
またHそれより大きいとすると、減算が行われる。これ
はTEMP0 に対しても適用される。これは、
【0143】(数21) FlatC1=FlatnessFactor−ABS(TEMPC) FlatC2=FlatnessFactor−ABS(TEMPD
【0144】を有することに等しい。したがって、ベジ
エ曲線が平らであるか、または2つの新しいベジエ曲線
を用いて更に細分割を必要とするか、を4ステップ(ク
ロック・サイクル)で判定できる。4ステップを必要と
することは、4つの加算器/減算器ユニットを有するベ
ジエ・ユニットを用いることを基にしている。加算器/
減算器ユニットの数が増加すると、細分割および平坦性
試験を行うために要するステップ数が減少する。これと
は逆に、加算器/減算器ユニットの数が減少すると、細
分割および平坦性試験を行うために要するステップ数が
増加する。この方法を別の構成で実現するためにこの教
示をどのように変えるかを当業者は認めるであろう。
【0145】上の方法を基にして、FlatC1とFl
atC2が零より大きいかどうかについて平坦性が判定
される。いずれも負か、零であるとすると、ベジエ曲線
は平坦性テストに不合格であるから、更に細分割せねば
ならない。Y方向においても類似の試験が行われ、曲線
が平坦であると見なされるためには全部で4回の平坦性
試験に合格せねばならない。
【0146】Cscanユニット23 次に図17を参照する。Cscanユニット23は、ベ
クトルの態様の一連の連結されている線分であるキャラ
クタのアウトラインをフィル(fill)論理に組み合
わせて、どの画素をキャラクタ・ビットマップで表示す
るかを選択する。Cscanユニット23は、線発生器
301と、交差発生器302と、構造(CSCAM1構
成)アドレスおよびデータ発生器(SADG)303と
の3つの主なユニットを含む。
【0147】線発生器301は端点(0,0)および
(XLineData,YLineData)により描
かれる線を一連の中間線交差事象へ変換する。交差発生
器302は一連の識別された中間線交差を一連の中間線
交差へ変換する。交差の正確な場所が指定される。SA
DG303は、交差発生器302により送られた中間線
交差と場所指定を、CScanタイル・データ構造を形
成する一連のメモリ・アクセスへ変換する。CScan
タイル・データ構造はCScan2充填プロセスにより
続いて処理されて、キャラクタを形成するビットマップ
を生ずる。
【0148】線発生器301 線発生器301はベジエおよびスタック・マシン22
(図2)から線についての記述を受ける。各入来線は、
それの相対的な端点(入力端子304におけるXLin
eDataと、入力端子305におけるYLineDa
ta)により単に正規化および記述される。XLine
DataとYLineDataは、ベジエおよびスタッ
ク・マシン22から送られた点P3 のX座標とY座標で
ある。また、ベジエおよびスタック・マシン22は、線
を黒(PenState=DOWN)または白(Pen
State=UP)のいずれで描画すべきかを指定する
信号を線306を介して送る。白い線は、黒い線の閉じ
られた経路で構成されたボデーを接続するために用いら
れる。PenState情報は線発生器301により用
いられず、交差発生器302へ送られるだけである。
【0149】(XLineData,YLineDat
a)座標は、精度が[16.8]の24ビット符号つき
数のフォームで提供される(座標の範囲を−32768
〜32767にでき、装置座標の8小数ビットである1
/256まで分解された小数部を有する15ビットの符
号付き整数を意味する)。記法[i,ff]は、数が、
iが整数ビット、ffが小数ビットである、iビットの
符号付き数であることを示す。線発生器301は、周知
のDDASを用いて、下記の2ステップ法でそのデータ
を処理する。
【0150】i) 各ループ(各クロック・サイクル)中
に移動させられる増分、Dp、の大きさが装置スペース
座標の1/2と1の間であるように、データとループ・
カウントをスケーリングする。このステップは線ごとに
1回だけ起る。 ii)増分、Dp、を線発生DDA(後で説明する)で処
理し、必要があれば、DxDp,DyDp,XCros
s,YCross,XFract,YFractを交差
発生器302へ供給する。このステップは、発生されて
いる線の大きさに応じて、多数行われる。
【0151】典型的な従来方法は線を一定数の線分へ分
ける。そうすると、線が多数の画素と交差するか、1個
の画素のほんの一部と交差するかとは無関係に、同数の
分割および計算を必要とする。本発明の換算方法は、線
分内の交差の有無が、線発生器301の最大2回の反復
以内で識別され、その結果として処理がより速くなる。
【0152】線発生DDA 直線または曲線のための微分方程式を増分ユニット、た
とえばビットマップ、へ変換するためにデジタル微分解
析器(DDA)が長年にわたって用いられてきた。これ
については、前掲書、「対話型コンピュータ・グラフィ
ックスの原理」第2版の22〜28ページを参照された
い。次に図18を参照する。線発生器301は、X成分
とY成分のためのそれぞれの線発生DDAs310,3
11と、累積誤差項を累積し、保持するためのXFra
ctレジスタ314と、YFractレジスタ315と
を含む。この構成においては、XLineDataは微
分変数DxDpになる。ここに、「p」はDDAが線を
処理するにつれて増加させられるパラメトリック変数で
ある。同様に、YLineDataはDyDpになる。
変数DxDpとDyDpの重みづけは[16.8]で、
登録された小数値XFractとYFractの重みづ
けは[1.23]であるから、215のループ・カウン
トが線全体を処理する。ループの各繰り返しが1クロッ
ク・サイクルで処理される。各繰り返しの後で、小数値
XFractとYFractはその繰り返しの終わりの
サブ画素場所を表し、変数XCrossとYCross
が、X方向とY方向の少なくとも1つの方向における中
間線交差の発生と符号を表す。この情報と、DxDp,
DyDp,PenStateは交差発生器302へ送ら
れる。
【0153】スケーリング回路 最少数のクロック・サイクルで全ての線を処理すること
が望ましいから、線発生器301はデータおよびループ
・カウント・スケーリング回路を実現する。好適な実現
においては、最大値は215にセットされる。これによ
って16ビットの符号付き整数部が許される。設計上の
選択により、32767ビット長さまでの線を取り扱う
ことができる。その線は約1417点/cm(3600d
pi)の解像度において約23cm(約9.1インチ)の
長さの線に相当する。図18を参照する。DxDpレジ
スタ312とDyDpレジスタ313へXLineDa
taとYLineDataをそれぞれロードする前に、
桁送り回路(図示せず)が、重要なデータを失うことな
しに、15ビットより多くなく、しかしできるだけ多
く、XLineDataとYLineDataを一緒に
左へ桁送りして、ループ・カウントを同じ量だけ右へ桁
送りする。いいかえると、上位の零はXLineDat
aとYLineDataから除去される。これにより、
DDA310,311により処理された各繰り返しが、
装置スペース座標単位で1/2と1の間のどこかの線分
を評価する。これは性能の面からは最適である。という
のは、各繰り返しが1つをこえないXCrossと、1
つをこえないYCrossを生じ、しかも交差が最大2
回の繰り返し以内で識別されることを保障するからであ
る。
【0154】ベジエおよびスタック・マシン22(図
2)からのほとんどの線分は画素の長さの約1/2より
長い。というのは、平坦性試験が画素の寸法を基にして
いるからである。しかし、たとえば、図7における縁部
131と132の部分に構成されているセリフのような
細部のまっすぐな特徴、または曲がった特徴を元のキャ
ラクタが含む場合には、ある線分が非常に短いことがあ
る。ある線分がどのような交差も含まないとすると、ス
ケーリング装置は線分を全く細分割せず、線発生器30
1(図17)は交差がないことを1回の繰り返しで決定
する。その場合には、値XFractとYFractが
更新されて最後の線分の現在の位置を反映し、交差は交
差発生器302(図17)へ送られない。
【0155】交差発生器302 図13を参照する。ほぼ各繰り返しおよび各寸法に対し
て、線発生器301が、中間線交差が起きたことを示す
信号を、交差の向き(正または負)を示す信号とともに
交差発生器302へ送る。そうすると、線のDnDp値
が発生され、繰り返しに関連する線分の端のNFrac
t小数画素値が発生される。ここに、n=xまたはy、
N=XまたはYである。画素はある数のサブユニットへ
細分割される。正確な数は、より高い解像度と記憶装置
とに対応する要求を考慮して行われる設計上の選択の問
題である。この実現は、xディメンションとyディメン
ションのおのおのにおいて8回の細分割を利用する。交
差発生器302は、独特の細分割法を用いて(各ディメ
ンションにおける)交差の正確な場所を決定する。
【0156】次に図19を参照する。短い線ベクトル3
21が、線発生器301(図17)から送られた典型的
な情報を表す。DDA310と311(図18)からD
xDp,DyDp,XFract,YFractが与え
られると、交差発生器302(図17)は、そこで交差
点322が実際に生ずるような領域(Z−N0〜Z−N
7)を決定する。これは下記の疑似プログラムで記述さ
れている細分割法を用いて行われる。
【0157】 (表11) Current XFract = XFract Current YFract = YFract Current DxDp = DxDp Current DyDp = DyDp Loop until desired resolution is obtained NewDxDp = CurrentDxDp /2 NewDyDp = CurrentDyDp/2 NewXFract = CurrentXFract−NewDxDp NewYFract = CurrentYFract−NewDyDp CurrentDxDp = NewDxDp CurrentDyDp = NewDyDp if(NewY(or X)Fract crosses back over Y(or X)midline) CurrentYFract = CurrentYFract CurrentXFract = CurrentXFract else CurrentYFract = NewYFract CurrentXFract = NewXFract zone = CurrentXFract(or CurrentYFract)truncated to desired resolution
【0158】線分321は322.1において半分に分
割される。それはX軸と交差しているから、下側の部分
は322.2において分割される。これは交差に続くか
ら、介在する部分は322.3において細分割される。
これは交差を生じなかったから、以後の分割された線分
は322.4で更に分割される。これによって交差が生
じ、解像度は満足できるから、それ以上の細分割は求め
られない。この線分にはXCrossはないが、XFr
actとYFractとの値は、次に処理すべき線分に
対する始点として維持する。
【0159】次に図20を参照する。この図は図19に
示されているのと同じ領域を含む。図において、線ベク
トル325は交差点327におけるXCrossと、交
差点326におけるYCrossとの発生を示す。「X
Cross」はX方向に移動中の垂直Y軸の交差を示
す。YCrossはY方向に移動中の水平X軸の交差を
示す。交差発生器302は、特定の中間線の交差が最初
に起る領域を調べ、直交方向の中間線がまだ交差させら
れているかどうかを調べることにより、どの中間線の交
差が最初に起きたかの評価も行う。領域Z−Y5内の交
差点327におけるXCrossは線ベクトル325の
始点により近いから、交差点326におけるYCros
sがはまだ起きておらず、したがってXCrossが最
初に起きたことになる。これとは逆に、領域Z−X3内
の交差点326におけるYCrossを調べると、XC
rossは既に起きているから、YCrossはXCr
ossの後で生じたにちがいない。交差の順序は記憶さ
れる。
【0160】構造アドレスおよびデータ発生器(SAD
G)303 SADG303(図17)は交差および場所データを受
けて、メモリアレイ内に二次元データ構造を構築する。
その構造は、オブジェクトのビットマップを発生するた
めに、後でCScan2プロセスにより使用できる。S
ADG303は、Xディメンションと、Yディメンショ
ンと、Zディメイションとを有し、タイル構造と呼ばれ
るデータ構造を構成する。SADG303は、xディメ
ンションとyディメイションに対して、交差があったか
どうかを記憶する。記憶効率を最高にするために、与え
られた画素の近くに交差があるとすると、xディメイシ
ョンまたはyディメイション極性、可変深さ構造内の各
交差の領域が実効的にZディメイションにある。このタ
イル構造は希望する任意の寸法にできるが、典型的には
FRCのバッファ容量に等しくできる。図19と図22
に示すように、各タイルは領域に分割される。
【0161】代表的な交差の組み合わせ(領域とは無関
係)が図21に示されている。各種の交差に対して、S
ADG303(図17)は、各交差の向きと順序を含め
て、Zディメイションに記憶するのに適切なX領域の値
とY領域の値を決定する。このタイルセルA1内の線分
321が正のYCrossを含み、他の交差は含まな
い。タイルB1内の線分は負のYCrossを含む。線
分54が、Xの後にYが続く順序で、正のXYCros
sを含む。タイルB2内の線分は正のYXCrossを
含み、YCrossはXCrossに先行する。タイル
A3内の線分325は負のXYCrossを含む。
【0162】図22は画素332を含んでいるタイルを
示すものであって、中心333と334を有する隣接す
る2つの画素を示す。図19に示すように、各画素は領
域Z−Y1等として識別されている領域に分割される。
図22において、図示のタイル内のそれらの領域は領域
337(Z−X4)〜335(Z−X3)と領域340
(Z−Y4)〜338(Z−Y3)である。タイル構造
へのアドレッシングはTOX(タイル・オフセットX)
とTOY(タイル・オフセットY)の2つのポインタに
より管理される。それらのポインタは小数画素値を参照
できる。それらのポインタは新しい各キャラクタのスタ
ートで初期化される。
【0163】図22を参照すると、画素331に対する
記憶されている領域は、それの画素中心332を参考に
して計算される。それらの領域は多くの解像度で考える
ことができる。低解像度モードでは、交差は、Y交差
(画素中心332と333の間の中間線に沿う任意の場
所)と、X交差(画素332と324の間の中間線に沿
う任意の場所)との少なくとも一方として、単に生ずる
ものとして記録される。高解像度モードでは、Y交差は
領域335(Z−X3)、336(Z−X2)、・・・
337(Z−X4)で記録され、X交差は対応する領域
338(Z−Y3)、339(Z−Y2)、・・・34
0(Z−Y4)で記録される。それらの領域には、他の
計算を用意にするために、図示のように番号が付けられ
る。交差が記録された後で、ポインタTOXとTOYは
更新されて、処理したばかりの線ベクトルの端点を反映
する。
【0164】オーバートレーシング SADG303(図17)の大きな特徴は、同じ領域内
でそれ自身の上に描かれる曲線を取り扱うことができる
ことである。たとえば、図27を参照して、アウトライ
ンの1つの部分が2つの画素中心の間で1つの向きに交
差でき、アウトラインの別の部分が同じ画素中心の間で
別の向きに交差できる。交差は異なる画素細分割で行う
ことができ、たとえば交差360と361または交差3
64と365、または同じ細分割とすることができる、
たとえば交差362と363。通常は、画を充たす必要
はない。というのは、そのように重なり合う2つの交差
の間には中心点は存在できないからである。しかし、C
Scan2プロセスにおいてドロップアウトと衝突修正
を行うために、CScanユニット23(図2)は特定
の領域における交差事象を記憶するばかりでなく、その
領域における交差のパリティと、その領域内の最後の交
差の向き(正または負)も記憶する。
【0165】CScan2充填プロセス CScan2充填プロセスは、タイル構造がCScan
ユニット23により発生された後でそれを読み出し、希
望のキャラクタまたはオブジェクトのビットマップ表現
へそれを変える。CScan2充填プロセスの結果とし
てキャラクタの希望のビットマップが得られる。このビ
ットマップはメモリ13Bに記憶でき、(レーザプリン
タのような)ラスタ印刷装置にキャラクタを印刷するた
めに使用できる。
【0166】CScan2充填プロセスは下記の疑似プ
ログラムにより最も良く記述される。
【0167】 (表12) For Y = minimumTOY to maximumTOY For X = minimumTOX to maximumTOX read Tile Structure (X,Y) mapBit (X,Y)= evenOddFill (TileStructure(X,Y)) if (dropOutCollisionFlag) gosub dropOutCollisionFixup Next X Next Y
【0168】evenOddFillが真であればビッ
ト(X,Y)はマップされる。機能evenOddFi
llはキャラクタのための従来の中心点充填をほぼ許
す。行走査(X=minimumTOX〜maximu
mTOXに対して)においては、TileStruct
ure(X,Y)が1つのX交差を含むまではeven
OddFillは偽である。1つのX交差をそれが含ん
だ場合は、evenOddFillは真へセットされ
て、TileStructure(X,Y)が第2の1
つのX交差を含むまで、現在の画素と、次の画素を表示
することにより「色」を変える。それが第2のX交差を
含んだ時にevenOddFillは偽にセットされ
る。アウトラインが逆時計回りに形成されている図の場
合の典型的な走査においては、行で最初に遭遇するX交
差を「下向き」極性のものにすべきである。次の交差は
簡単なキャラクタに対して別の極性にすべきである。機
能evenOddFillは、1つのX交差に遭遇する
たびに状態を変える。機能evenOddFillは、
ドロップアウトまたは衝突(衝突は白い画素のドロップ
アウトにほかならない)を識別したときにdropOu
tCollisionFlagをセットする。ドロップ
アウトまたは衝突は、2つの画素中心の間の交差データ
のパリティが偶数で、非零の時に、検出される。各行の
終わりまでにevenOddFillを偽にするため
に、各行は偶数個の交差を含むべきである。2個の画素
中心の間に2個以上の交差がありパリティがバランスさ
せられたとすると、ドロップアウトフラッグがセットさ
れる。1つの向きの方が他の向きよりも交差が多い、た
とえば下向きが2つで、上向きが1つだとすると、最も
簡単な処理は、1つの交差に対するように画素表示状態
を変えることである。ただし、必要があればドロップア
ウトフラッグをセットする。
【0169】図28に示す回路を用いてevenOdd
Fill機能を実現できる。交差が起きるかどうかを示
す各画素に対するフラッグを含む線を一緒に排他的論理
和操作を施すことにより、フラッグ・セットの数が画素
の色を直接与え、かつドロップアウト条件が存在するか
どうかも指示する。データ[31:0]入力は線[0]
〜[7]上の8つの領域に対するXCross情報と、
線[8]〜[15]線上のYCross情報と、線[1
6]〜[23]上のXCrossSign情報と、線
[24]〜[31]上のYCrossSign情報とを
含む。バス380がデータを回路全体へ分配する。線8
〜15はゲート382,383,384を介して直列に
排他的論理操作されて交差の試験を行う。YCross
データおよびYCrossSignデータはゲート38
7により否定論理和操作され、それからゲート388に
より否定論理積操作される。XCross情報とXCr
ossSign情報はゲート392〜397を介して組
み合わされて、ドロップアウト試験を行う。
【0170】evenOddFillが同じ極性の順次
交差を検出したとすると、充填された内部に対する状態
を変えるため、または空き内部に対して状態を不変のま
まとするため、それをセットできる。機能evenOd
dFillは交差の極性を見失わないようにするために
ワインディング数(winding number)を
追従できる。ワインディング数およびそれの応用につい
ては前記米国特許出願第388,336号を参照された
い。
【0171】ルーチンdropOutCollisio
nFixup中心点充填は、中心が外形アウトライン内
にある画素だけを黒にセットし、外形アウトラインの外
に中心を有する画素を白にセットするから、ドロップア
ウト条件と衝突条件が起る。dropOutColli
sionFlagがセットされると、下記の規則が用い
られる。
【0172】まず、どのディメンションがドロップアウ
トを経験しているかどうかを判定する。画素中心と、そ
れの下の画素との間の交差のパリティが偶数で、非零で
あるとすると、XDropoutが起きたのである。画
素中心と、それの左側の画素との間の交差のパリティが
偶数で、非零であるとすると、YDropoutが起き
たことになる。ある場合には、XとYの両方のドロップ
アウトが起きる。
【0173】ドロップアウト条件を固定するために、2
つの画のうちの一方(2つの画素の間にドロップアウト
条件がある2つの画素中心に対応する)を黒にセットす
る。どの画素を黒にセットするかを下記の規則を用いて
判定する。各規則を前記したようにXDropoutに
適用し、それから同様にYDropoutへ適用する。
これを判定を行うことができるまで行う。
【0174】1)二重ドロップアウト規則−−二重ドロ
ップアウトがあったとすると、ドロップアウト画素の選
択を適切な位相関係にせねばならない。図25、図26
を参照して、これは実際のドロップアウト交差の下(ま
たは、特定の規則の適用は重要ではないから、規約に従
って上)にある画素を選択することにより行われる。同
じ画素と、それの下の画素との間にXDropoutが
ない時に、YDropout手配が採用されるだけであ
る。これは、図26に示されている画素の「集まり」が
生じないようにする。
【0175】2)特徴規則の制定−−XDropout
条件が起きると、正常な中心点充填規則を用いてセット
された画素について左右を見る。1つの画素が見つかっ
たとすると、たとえば、特徴341(図24)の次の画
素342、その画素がどの画素行に含まれるかを判定
し、XDropout固定画素に対してその行を用い
る。
【0176】3)多数カバー規則−−制定特徴がみつか
らないか、ドロップアウト行の上と下の両方に制定特徴
があるものとすると、どの行が大多数のアウトラインに
よりカバーされるかを調べる。特徴350(図23)に
対しては、それはドロップアウトの下の画素行である。 4)上の規則のいずれも適用されないとすると、どの画
素をセットするかを任意に選択する。選択は一貫せねば
ならない。たとえば常に1番上の画素を選択する。
【0177】衝突を固定するために、どの画素を白にセ
ットするかを決定する二重衝突規則から始まって類似の
規則を適用する。
【図面の簡単な説明】
【図1】本発明の装置が図形処理装置その他の構成部品
へどのようにして接続されるかを全体的に示す。
【図2】本発明のコプロセッサの主な機能ブロックを示
す。
【図3】マイクロマシンの主な機能ブロックを示す。
【図4】座標の変換とマッピングを示す。
【図5】座標の変換とマッピングを示す。
【図6】本発明の方法の主なステップを示す流れ図であ
る。
【図7】装置スペースとヒントを与えられた装置スペー
スへのキャラクタのマッピングを示す。
【図8】装置スペースとヒントを与えられた装置スペー
スへのキャラクタのマッピングを示す。
【図9】装置スペースとヒントを与えられた装置スペー
スへのキャラクタのマッピングを示す。
【図10】代表的なベジエ曲線および制御点を示す。
【図11】代表的なベジエ曲線および制御点を示す。
【図12】ベジエ曲線の細分割を示す。
【図13】ベジエおよび状態マシンの主な機能ブロック
を示す。
【図14】ベジエ曲線を細分割し、平坦性を計算する方
法の主なステップを示す。
【図15】ベジエ曲線を細分割し、平坦性を計算する方
法の主なステップを示す。
【図16】平坦性を決定する方法の主なステップを示
す。
【図17】Cscanユニットの主な機能ブロックを示
す。
【図18】DDAsを発生する線を示す。
【図19】交差と細分割された画素を示す。
【図20】交差と細分割された画素を示す。
【図21】画素のタイル構造を示す。
【図22】図21のタイル構造のクローズアップを示
す。
【図23】ドロップアウト状態の詳細を示す。
【図24】ドロップアウト状態の詳細を示す。
【図25】ドロップアウト状態の詳細を示す。
【図26】ドロップアウト状態の詳細を示す。
【図27】過トレーシングを示す。
【図28】ハードウェア充填およびドロップアウト検出
回路を示す。
【符号の説明】
10 コプロセッサ 11 メモリ 12 制御マイクロプロセッサ 13 システムメモリ 14 プリンタ・インターフェイス 15 表示制御器 21 マイクロマシン 22 ベジエおよび状態マシン 23 Cscanユニット 24 前方チャネル・インターフェイス 25 後方チャネル・インターフェイス 101 シーケンサ 223 ベジエユニットおよびベジエ減少状態マシン 224 ベジエ・スタック・マシン 301 線発生器 302 交差発生器 303 構造Cscan1アドレスおよびデータ発生器
───────────────────────────────────────────────────── フロントページの続き (72)発明者 ハリイ・ジェイ・コリンズ アメリカ合衆国 95014 カリフォルニア 州・カッパチーノ・ヘンリイ クリーク プレイス・10374 (72)発明者 ジョン・ダブリュ・ノーグラディ アメリカ合衆国 95051 カリフォルニア 州・サンタ クララ・ギャズダー コー ト・1394

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 第1の座標空間内のオブジェクトを表す
    アウトライン・データをコンピュータ・メモリすなわち
    記憶媒体からアクセスする過程と、 第1の座標空間内のオブジェクトを表す前記アウトライ
    ン・データから、第2の座標空間内の前記オブジェクト
    を表す対応するデータを得る過程と、を備え、前記第1
    の座標空間内の前記アウトライン・データは前記第2の
    座標空間内に維持することを希望される領域関係を有
    し、それらの関係は前記アウトライン・データの部分で
    ある領域関係情報に含まれ、前記対応するデータを得る
    前記過程は、 (a)直線変換を用いて前記領域関係情報を前記第2の
    座標空間へ変換する過程と、 (b)領域関係情報を用いて、複数の直線変換マトリッ
    クスとして表された非直線変換マトリックスを得る過程
    と、 (c)前記第2の座標空間内に前記オブジェクトの第2
    の表現を得るために前記第1の座標空間内の前記オブジ
    ェクトを表す前記アウトライン・データへ前記非線形変
    換マトリックスを加える過程と、 (d)前記オブジェクトの前記第2の表現を、表示のた
    めに適当な態様で前記オブジェクトを記述するラスタデ
    ータへ変換する過程と、 (e)前記オブジェクトの前記第2の表現を後でラスタ
    印刷装置またはラスタ表示装置で表示するために、前記
    オブジェクトの前記第2の表現をコンピュータ・メモリ
    に記憶する過程と、を含むラスタ化されたオブジェクト
    を表示する方法。
  2. 【請求項2】 領域関係情報を含み、第1の座標空間内
    のオブジェクトを表すアウトライン・データにより定め
    られる前記オブジェクトをラスタ化する方法において、 コンピュータ・メモリすなわち記憶媒体から前記アウト
    ライン・データをアクセスする過程と、 第2の座標空間内のスケーリングされた領域関係情報を
    得るために前記第1の座標空間内の領域関係情報をスケ
    ーリングする過程と、 前記スケーリングされた領域関係情報の一対の座標であ
    って、そのうちの1つの座標が前記第2の座標空間内の
    所定の座標の上にないような前記一対の座標により定め
    られた点を識別する過程と、 前記点の前記1つの座標と前記所定の座標の間の距離を
    前記第2の座標空間内で測定する過程と、 複数の不連続な直線変換マトリックスにより近似される
    非直線変換マトリックスを前記距離から得る過程と、 前記非直線変換マトリックスを前記第1の座標空間内の
    前記アウトライン・データへ加えて、前記アウトライン
    ・データを前記第2の座標空間へ変換する過程と、 変換されたアウトライン・データをラスタ化してラスタ
    装置で表示するために適当なある態様のオブジェクトを
    得る過程と、 前記ラスタ化された態様のオブジェクトをラスタ表示装
    置またはラスタ印刷装置で後で表示するために、前記ラ
    スタ化された態様のオブジェクトを記憶する過程と、を
    備える、領域関係情報を含み、第1の座標空間内の物体
    を表すアウトライン・データにより定められるオブジェ
    クトをラスタ化する方法。
  3. 【請求項3】 座標を持つ端の点である2個の制御点と
    座標を持つ内側の2個の制御点との4個の制御点の第1
    のセットを有する第1の立方ベジエ曲線をラスタ表示装
    置で表示するための用意に、その立方ベジエ曲線の平坦
    性を決定する方法において、 前記第1の立方ベジエ曲線を直線線分により近似できる
    かどうかを判定する過程と、 第2の立方ベジエ曲線と第3の立方ベジエ曲線を直線線
    分により近似できるかどうかを判定する過程と、 近似された直線線分を前記ラスタ表示装置で表示する過
    程と、を備え、前記第1の立方ベジエ曲線の直線線分に
    よる近似は、前記内側の制御点の内の選択された1個の
    制御点と選択された端の制御点の間の距離が前記2個の
    端の点の間の距離の1/3プラス平坦性係数以内である
    ならば可能であり、 前記第1の立方ベジエ曲線を直線線分により近似できる
    ならば、前記直線線分を出力し、 前記第1の立方ベジエ曲線を直線線分により近似できな
    いならば、前記第1の立方ベジエ曲線のほぼ中間点にお
    いて前記第2の立方ベジエ曲線と前記第3の立方ベジエ
    曲線へ分割し、各前記第2の立方ベジエ曲線と各前記第
    3の立方ベジエ曲線に対して制御点の第2のセットおよ
    び第3のセットを計算し、制御点の各前記第2のセット
    および第3のセットの少なくとも1つの制御点は前記第
    1の立方ベジエ曲線の1つの制御点にほぼ等しく、 前記第2の立方ベジエ曲線と前記第3の立方ベジエ曲線
    を直線線分により近似できなければ、分割過程を繰り返
    し、そのように近似できない前記第2の立方ベジエ曲線
    と前記第3の立方ベジエ曲線のいずれかに対して分割過
    程と判定過程を繰り返し、直線線分により全ての立方ベ
    ジエ曲線を近似できるまで繰り返し継続する、立方ベジ
    エ曲線の平坦性を決定する方法。
  4. 【請求項4】 第1の座標空間内のオブジェクトを表す
    アウトライン・データをコンピュータ・メモリすなわち
    記憶媒体からアクセスする過程と、 第1の座標空間内のオブジェクトを表す前記アウトライ
    ン・データから、第2の座標空間内の前記オブジェクト
    を表す対応するデータを得る過程と、 前記第2の座標空間内の前記オブジェクトを表す前記ア
    ウトライン・データの湾曲させられている任意の部分を
    複数の直線線分へ平坦にする過程と、 前記直線線分から複数の線分を発生する過程と、 前記複数の線分のどれが画素の中間線と交差するかを判
    定する過程と、 それの中間線が前記複数の線分の1つに交差したことを
    判定された画素の一致を用いて、前記オブジェクトを表
    示するために用いる画素を選択する過程と、 前記画素をラスタ印刷装置またはラスタ表示装置で後で
    表示するために、前記オブジェクトを表示するために用
    いられる選択された画素をコンピュータ・メモリに記憶
    する過程と、を備えるラスタ化されたオブジェクトを表
    示する方法。
  5. 【請求項5】 第1の座標空間内のオブジェクトを表す
    アウトライン・データをコンピュータ・メモリすなわち
    記憶媒体からアクセスする手段と、 第1の座標空間内のオブジェクトを表す前記アウトライ
    ン・データから、第2の座標空間内の前記オブジェクト
    を表す対応するデータを得る手段と、を備え、前記第1
    の座標空間内の前記アウトライン・データは前記第2の
    座標空間内に維持することを希望される領域関係を有
    し、それらの関係は前記アウトライン・データの部分で
    ある領域関係情報に含まれ、前記対応するデータを得る
    前記手段は、 (a)直線変換を用いて前記領域関係情報を前記第2の
    座標空間へ変換する手段と、 (b)領域関係情報を用いて、複数の直線変換マトリッ
    クスとして表された非直線変換マトリックスを得る手段
    と、 (c)前記第2の座標空間内に前記オブジェクトの第2
    の表現を得るために前記第2の座標空間内の前記オブジ
    ェクトを表す前記アウトライン・データへ前記非線形変
    換マトリックスを加える手段と、 (d)前記オブジェクトの前記第2の表現を、表示のた
    めに適当な態様で前記オブジェクトを記述するラスタデ
    ータへ変換する手段と、 (e)前記オブジェクトの前記第2の表現を後でラスタ
    印刷装置またはラスタ表示装置で表示するために、前記
    オブジェクトの前記第2の表現をコンピュータ・メモリ
    に記憶する手段と、を含むラスタ化されたオブジェクト
    を表示する装置。
  6. 【請求項6】 領域関係情報を含み、第1の座標空間内
    のオブジェクトを表すアウトライン・データにより定め
    られる前記オブジェクトをラスタ化する装置において、 コンピュータ・メモリすなわち記憶媒体から前記アウト
    ライン・データをアクセスする手段と、 第2の座標空間内のスケーリングされた領域関係情報を
    得るために前記第1の座標空間内の領域関係情報をスケ
    ーリングする手段と、 前記スケーリングされた領域関係情報の一対の座標であ
    って、そのうちの1つの座標が前記第2の座標空間内の
    所定の座標の上にないような前記一対の座標により定め
    られた点を識別する手段と、 前記点の前記1つの座標と前記所定の座標の間の距離を
    前記第2の座標空間内で測定する手段と、 複数の不連続な直線変換マトリックスにより近似される
    非直線変換マトリックスを前記距離から得る手段と、 前記非直線変換マトリックスを前記第1の座標空間内の
    前記アウトライン・データへ加えて、前記アウトライン
    ・データを前記第2の座標空間へ変換する手段と、 変換されたアウトライン・データをラスタ化してラスタ
    装置で表示するために適当なある態様の前記オブジェク
    トを得る手段と、 前記ラスタ化された態様の前記オブジェクトをラスタ表
    示装置またはラスタ印刷装置で後で表示するために、前
    記ラスタ化された態様の前記オブジェクトを記憶する手
    段と、を備える領域関係情報を含み、第1の座標空間内
    の物体を表すアウトライン・データにより定められる前
    記オブジェクトをラスタ化する装置。
  7. 【請求項7】 座標を持つ端の点である2個の制御点と
    座標を持つ内側の2個の制御点との4個の制御点の第1
    のセットを有する第1の立方ベジエ曲線をラスタ表示装
    置で表示するための用意に、その立方ベジエ曲線の平坦
    性を決定する装置において、 前記第1の立方ベジエ曲線を直線線分により近似できる
    かどうかを判定する手段と、 第2の立方ベジエ曲線と第3の立方ベジエ曲線を直線線
    分により近似できるかどうかを判定する手段と、 近似された直線線分を前記ラスタ表示装置で表示する手
    段と、 を備え、前記第1の立方ベジエ曲線の直線線分による近
    似は、前記内側の制御点の内の選択された1個の制御点
    と選択された端の制御点の間の距離が前記2個の端の点
    の間の距離の1/3プラス平坦性係数以内であるならば
    可能であり、 前記第1の立方ベジエ曲線を直線線分により近似できる
    ならば、前記直線線分を出力し、 前記第1の立方ベジエ曲線を直線線分により近似できな
    いならば、前記第1の立方ベジエ曲線のほぼ中間点にお
    いて前記第2の立方ベジエ曲線と前記第3の立方ベジエ
    曲線へ分割し、各前記第2の立方ベジエ曲線と各前記第
    3の立方ベジエ曲線に対して制御点の第2のセットおよ
    び第3のセットを計算し、制御点の各前記第2のセット
    および第3のセットの少なくとも1つの制御点は前記第
    1の立方ベジエ曲線の1つの制御点にほぼ等しく、 前記第2の立方ベジエ曲線と前記第3の立方ベジエ曲線
    を直線線分により近似できなければ、分割する操作を繰
    り返し、そのように近似できない前記第2の立方ベジエ
    曲線と前記第3の立方ベジエ曲線のいずれかに対して分
    割操作と判定操作を繰り返し、直線線分により全ての立
    方ベジエ曲線を近似できるまで繰り返し継続する、立方
    ベジエ曲線の平坦性を決定する装置。
  8. 【請求項8】 第1の座標空間内のオブジェクトを表す
    アウトライン・データをコンピュータ・メモリすなわち
    記憶媒体からアクセスする手段と、 第1の座標空間内の物体を表す前記アウトライン・デー
    タから、第2の座標空間内の前記オブジェクトを表す対
    応するデータを得る手段と、 前記第2の座標空間内の前記物体を表す前記アウトライ
    ン・データの湾曲させられている任意の部分を複数の直
    線線分へ平坦にする手段と、 前記直線線分から複数の線分を発生する手段と、 前記複数の線分のどれが画素の中線と交差するかを判定
    する手段と、 それの中線が前記複数の線分の1つに交差したことを判
    定された画素の一致を用いて、前記オブジェクトを表示
    するために用いる画素を選択する手段と、 前記画素をラスタ印刷装置またはラスタ表示装置で後で
    表示するために、前記オブジェクトを表示するために用
    いられる選択された画素をコンピュータ・メモリに記憶
    する手段と、を備えるラスタ化されたオブジェクトを表
    示する装置。
JP4281108A 1991-09-27 1992-09-28 ラスタ化されたオブジェクトを表示する方法および装置 Withdrawn JPH06266847A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US767259 1991-09-27
US07/767,259 US5301267A (en) 1991-09-27 1991-09-27 Intelligent font rendering co-processor

Publications (1)

Publication Number Publication Date
JPH06266847A true JPH06266847A (ja) 1994-09-22

Family

ID=25078957

Family Applications (1)

Application Number Title Priority Date Filing Date
JP4281108A Withdrawn JPH06266847A (ja) 1991-09-27 1992-09-28 ラスタ化されたオブジェクトを表示する方法および装置

Country Status (5)

Country Link
US (2) US5301267A (ja)
EP (1) EP0534622B1 (ja)
JP (1) JPH06266847A (ja)
CA (1) CA2079201A1 (ja)
DE (1) DE69221414T2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005326756A (ja) * 2004-05-17 2005-11-24 Fujitsu Ltd 文字画像生成装置,文字画像生成方法,表示制御装置,文字画像生成プログラムおよび表示制御プログラム
JP2006106705A (ja) * 2004-08-27 2006-04-20 Microsoft Corp アウトラインフォントのレンダリング

Families Citing this family (89)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3164617B2 (ja) * 1991-11-07 2001-05-08 株式会社日立製作所 文字図形変形処理装置および方法
JPH05183765A (ja) * 1991-12-27 1993-07-23 Canon Inc データ処理システム及び該システムに用いることが可能な装置
JP3315464B2 (ja) * 1992-04-29 2002-08-19 キヤノン株式会社 画像描写方法及び装置
JP3145509B2 (ja) * 1992-11-09 2001-03-12 富士通株式会社 文字生成方法及びその装置
US5796409A (en) * 1993-04-06 1998-08-18 Ecole Polytechnique Federale De Lausanne Method for producing contrast-controlled grayscale characters
EP0702818B1 (en) * 1993-06-10 1998-09-02 Apple Computer, Inc. Anti-aliasing apparatus and method with automatic snap fit of horizontal and vertical edges to target grid
JP3021278B2 (ja) * 1993-08-30 2000-03-15 シャープ株式会社 均一幅線の生成装置及び均一幅線の生成方法
US5590247A (en) * 1993-08-31 1996-12-31 Casio Computer Co., Ltd. Character string outputting method and apparatus capable of varying sizes of characters
US5533174A (en) * 1993-10-26 1996-07-02 Digital Equipment Corporation Network font server
US5959634A (en) * 1993-12-09 1999-09-28 Canon Kabushiki Kaisha Character generating system employing thickening or narrowing of characters
US5577170A (en) * 1993-12-23 1996-11-19 Adobe Systems, Incorporated Generation of typefaces on high resolution output devices
US5592594A (en) * 1994-04-26 1997-01-07 Hewlett-Packard Company Method and apparatus for allocating cache memory space for font data
US5583978A (en) * 1994-05-27 1996-12-10 Bitstream Inc. Apparatuses and methods for creating and using portable fonted texts with embedded automatically-created font descriptions
US5781714A (en) * 1994-05-27 1998-07-14 Bitstream Inc. Apparatus and methods for creating and using portable fonts
JPH0816144A (ja) * 1994-06-29 1996-01-19 Fujitsu Ltd アウトラインフォント展開方法およびアウトラインフォント展開装置
JPH0816801A (ja) * 1994-06-30 1996-01-19 Canon Inc 画像処理方法及び装置
US5638503A (en) 1994-07-07 1997-06-10 Adobe Systems, Inc. Method and apparatus for generating bitmaps from outlines containing bezier curves
US5684510A (en) * 1994-07-19 1997-11-04 Microsoft Corporation Method of font rendering employing grayscale processing of grid fitted fonts
EP0701242A3 (en) * 1994-08-16 1996-12-27 Adobe Systems Inc Improved procedure for generating multi-master fonts
US5598520A (en) * 1994-09-26 1997-01-28 Microsoft Corporation Methods and apparatus for hinting a font for controlling stem width as font size and resolution of output device vary
US5517601A (en) * 1994-09-30 1996-05-14 Hewlett-Packard Company High speed apparatus and method for rasterization of font glyphs
US5710880A (en) * 1994-11-03 1998-01-20 Microsoft Corporation Method and system for creating a graphic image with geometric descriptors
US5790126A (en) 1995-01-03 1998-08-04 Microsoft Corporation Method for rendering a spline for scan conversion of a glyph
JPH08194459A (ja) * 1995-01-19 1996-07-30 Fujitsu Ltd アウトライン文字描画装置
US5732198A (en) * 1995-02-09 1998-03-24 Oki America, Inc. Host based printing system for printing a document having at least one page
AU5556496A (en) * 1995-05-09 1996-11-29 Apple Computer, Inc. Method and apparatus for compressing image data
US5719595A (en) * 1995-05-09 1998-02-17 Apple Computer, Inc. Method and apparauts for generating a text image on a display with anti-aliasing effect
US5929866A (en) * 1996-01-25 1999-07-27 Adobe Systems, Inc Adjusting contrast in anti-aliasing
KR0172581B1 (ko) 1996-04-02 1999-03-30 이진기 단계적 표현 가능형 폰트 그 변환 방법 및 렌더링 방법
US5630028A (en) * 1996-05-28 1997-05-13 Bowne & Co., Inc. Method of representing graphic data using text
US5852448A (en) * 1996-09-20 1998-12-22 Dynalab Inc. Stroke-based font generation independent of resolution
US5803629A (en) * 1997-03-14 1998-09-08 Paul H. Neville Method and apparatus for automatic, shape-based character spacing
US6313840B1 (en) * 1997-04-18 2001-11-06 Adobe Systems Incorporated Smooth shading of objects on display devices
JPH11154240A (ja) 1997-11-20 1999-06-08 Nintendo Co Ltd 取込み画像を用いて画像を作成するための画像作成装置
US6952210B1 (en) 1997-12-05 2005-10-04 Adobe Systems Incorporated Method of generating multiple master typefaces containing kanji characters
JP3654616B2 (ja) * 1997-12-19 2005-06-02 富士通株式会社 階層化ポリゴンデータ生成装置及び方法及び当該階層化ポリゴンデータを用いる三次元リアルタイム映像生成装置及び方法
US6195737B1 (en) * 1998-03-23 2001-02-27 Ati Technologies Inc. Method and apparatus for relative addressing of tiled data
JPH11282829A (ja) 1998-03-31 1999-10-15 Fuji Photo Film Co Ltd フォント共有システムおよび方法ならびにフォント共有方法を実行するためのプログラムを格納した記録媒体
US6674435B1 (en) * 1998-09-16 2004-01-06 Texas Instruments Incorporated Fast, symmetric, integer bezier curve to polygon conversion
US6597360B1 (en) * 1998-10-07 2003-07-22 Microsoft Corporation Automatic optimization of the position of stems of text characters
US6304275B1 (en) * 1998-10-31 2001-10-16 Hewlett-Packard Company Memory efficient surface normal decompression
US6435969B1 (en) 1998-11-03 2002-08-20 Nintendo Co., Ltd. Portable game machine having image capture, manipulation and incorporation
DE19901934C2 (de) 1999-01-19 2001-07-19 Heidelberger Druckmasch Ag Verfahren zur Erzeugung eines Rahmens für grafische Objekte, die durch Bezier-Kurven beschrieben sind
US6282327B1 (en) * 1999-07-30 2001-08-28 Microsoft Corporation Maintaining advance widths of existing characters that have been resolution enhanced
US6563502B1 (en) 1999-08-19 2003-05-13 Adobe Systems Incorporated Device dependent rendering
US7184046B1 (en) * 1999-09-28 2007-02-27 Monotype Imaging Inc. Method and apparatus for font storage reduction
JP3791259B2 (ja) * 1999-10-07 2006-06-28 セイコーエプソン株式会社 アウトラインスムージング処理方法
US6501475B1 (en) * 1999-10-22 2002-12-31 Dynalab Inc. Glyph-based outline font generation independent of resolution
US6911980B1 (en) * 1999-12-10 2005-06-28 Adobe Systems Incorporated Manipulation of curves and surfaces
US6717580B1 (en) * 2000-02-02 2004-04-06 America Online, Inc. Method and apparatus using a list of <minimum, size, gap, offset > quadruple to encode unicode characters in an upper/lowercase mapping
US7305617B2 (en) * 2000-02-12 2007-12-04 Adobe Systems Incorporated Method for aligning text to baseline grids and to CJK character grids
US6906823B1 (en) 2000-05-15 2005-06-14 International Business Machines Corporation Input interface for a raster object memory in a method, system and program
US6651116B1 (en) 2000-05-15 2003-11-18 International Business Machines Corporation Output interface for a raster object memory in a method, system and program
US6894686B2 (en) 2000-05-16 2005-05-17 Nintendo Co., Ltd. System and method for automatically editing captured images for inclusion into 3D video game play
US7152211B1 (en) * 2001-01-30 2006-12-19 Microsoft Corporation Resolution independent theming
US6633680B2 (en) * 2001-03-09 2003-10-14 Morisawa & Co., Ltd. System, method and computer program product for small-font compression
US20030210834A1 (en) * 2002-05-13 2003-11-13 Gregory Hitchcock Displaying static images using spatially displaced sampling with semantic data
US7385612B1 (en) 2002-05-30 2008-06-10 Adobe Systems Incorporated Distortion of raster and vector artwork
US7006107B2 (en) * 2003-05-16 2006-02-28 Adobe Systems Incorporated Anisotropic anti-aliasing
US7002597B2 (en) * 2003-05-16 2006-02-21 Adobe Systems Incorporated Dynamic selection of anti-aliasing procedures
US20040246510A1 (en) * 2003-06-06 2004-12-09 Jacobsen Dana A. Methods and systems for use of a gradient operator
US7142211B2 (en) 2003-07-07 2006-11-28 Arcsoft, Inc. Graphic engine for fill style transferring in a resource-constrained device
US20050007369A1 (en) * 2003-07-07 2005-01-13 Jiangen Cao Graphic engine for approximating a quadratic Bezier curve in a resource-constrained device
US7764287B2 (en) * 2003-07-07 2010-07-27 Arcsoft, Inc. Graphic engine for approximating a quadratic bezier curve in a resource-constrained device
US7187382B2 (en) * 2004-01-26 2007-03-06 Microsoft Corporation Iteratively solving constraints in a font-hinting language
US7639258B1 (en) * 2004-03-31 2009-12-29 Adobe Systems Incorporated Winding order test for digital fonts
US7580039B2 (en) * 2004-03-31 2009-08-25 Adobe Systems Incorporated Glyph outline adjustment while rendering
US7602390B2 (en) * 2004-03-31 2009-10-13 Adobe Systems Incorporated Edge detection based stroke adjustment
US7719536B2 (en) * 2004-03-31 2010-05-18 Adobe Systems Incorporated Glyph adjustment in high resolution raster while rendering
US7333110B2 (en) 2004-03-31 2008-02-19 Adobe Systems Incorporated Adjusted stroke rendering
US8253742B2 (en) 2004-05-28 2012-08-28 Microsoft Corporation Rendering stroke pairs for graphical objects
US7256786B2 (en) * 2004-05-28 2007-08-14 Microsoft Corporation Appropriately rendering a graphical object when a corresponding outline has exact or inexact control points
JP4866013B2 (ja) 2005-03-31 2012-02-01 富士通株式会社 文字画像生成プログラム、そのシステム、及びその方法
US7868888B2 (en) * 2006-02-10 2011-01-11 Adobe Systems Incorporated Course grid aligned counters
US20080068383A1 (en) * 2006-09-20 2008-03-20 Adobe Systems Incorporated Rendering and encoding glyphs
US20090237406A1 (en) * 2008-03-21 2009-09-24 Chun-Chia Chen Character rendering system
GB0913170D0 (en) * 2009-07-28 2009-09-02 Advanced Risc Mach Ltd Graphics processing systems
US9483167B2 (en) 2010-09-29 2016-11-01 Adobe Systems Incorporated User interface for a touch enabled device
US9229636B2 (en) 2010-10-22 2016-01-05 Adobe Systems Incorporated Drawing support tool
US8842120B2 (en) 2011-03-02 2014-09-23 Adobe Systems Incorporated Physics rules based animation engine
US20130132907A1 (en) * 2011-03-02 2013-05-23 Adobe Systems Incorporated Shape pixel rendering
AU2011202072B2 (en) * 2011-04-21 2014-02-20 Canon Kabushiki Kaisha Curve vectorisation with preserved tangents at endpoints
US10031641B2 (en) 2011-09-27 2018-07-24 Adobe Systems Incorporated Ordering of objects displayed by a computing device
US8983182B1 (en) * 2013-09-18 2015-03-17 Xerox Corporation System and method for estimating continuous tone values from rendered binary input
US9437020B2 (en) * 2013-12-23 2016-09-06 Red Hat, Inc. System and method to check the correct rendering of a font
US10713547B2 (en) * 2017-10-17 2020-07-14 Kyocera Document Solutions Inc. Systems, processes, interfaces, and computer program products for verification of image content in software development systems
CN110570494B (zh) * 2018-06-05 2024-12-10 艾司科软件有限公司 用于各向异性地修改文本属性以符合分辨率极限的方法和设备
CN114782241B (zh) * 2022-03-22 2024-11-08 广东三维家信息科技有限公司 空间拓扑结构确定方法、装置、电子设备及存储介质
CN116587737B (zh) * 2023-05-25 2023-10-20 苏州戎图科技有限公司 一种基于内容预测的喷墨打印机打印提速方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4675830A (en) * 1984-07-06 1987-06-23 Compugraphic Corporation Method for producing a scaleable typeface data
US4949281A (en) * 1987-04-23 1990-08-14 H. Berthold Ag Method and apparatus for generating and producing two-dimensional graphic object by polynominal parametric curves
US5241654A (en) * 1988-12-28 1993-08-31 Kabushiki Kaisha Toshiba Apparatus for generating an arbitrary parameter curve represented as an n-th order Bezier curve
JP2747002B2 (ja) * 1989-04-20 1998-05-06 株式会社東芝 直線ショートベクトル列によって表された形状の直線部と曲線部の切り分け方法
US5050103A (en) * 1989-05-12 1991-09-17 Adobe Systems Incorporated Method for displaying kanji characters
JPH0378795A (ja) * 1989-08-22 1991-04-03 Toshiba Corp 文書作成装置
JP2734711B2 (ja) * 1990-01-12 1998-04-02 日本電気株式会社 曲線発生装置
JPH0458378A (ja) * 1990-06-28 1992-02-25 Mitsubishi Heavy Ind Ltd ベジエ曲線を分割して展開する方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005326756A (ja) * 2004-05-17 2005-11-24 Fujitsu Ltd 文字画像生成装置,文字画像生成方法,表示制御装置,文字画像生成プログラムおよび表示制御プログラム
JP2006106705A (ja) * 2004-08-27 2006-04-20 Microsoft Corp アウトラインフォントのレンダリング

Also Published As

Publication number Publication date
DE69221414D1 (de) 1997-09-11
CA2079201A1 (en) 1993-03-28
EP0534622A3 (ja) 1995-01-25
US5857067A (en) 1999-01-05
US5301267A (en) 1994-04-05
EP0534622B1 (en) 1997-08-06
DE69221414T2 (de) 1997-12-11
EP0534622A2 (en) 1993-03-31

Similar Documents

Publication Publication Date Title
US5301267A (en) Intelligent font rendering co-processor
US5325479A (en) Method and apparatus for moving control points in displaying digital typeface on raster output devices
US5159668A (en) Method and apparatus for manipulating outlines in improving digital typeface on raster output devices
US5241653A (en) Apparatus and method for adjusting and displaying scaled, rasterized characters
US5715473A (en) Method and apparatus to vary control points of an outline font to provide a set of variations for the outline font
KR950011807B1 (ko) 문자처리방법 및 장치
US5719595A (en) Method and apparauts for generating a text image on a display with anti-aliasing effect
JPS62123573A (ja) コンピユ−タ・グラフイツク装置およびその操作方法
EP0684583A2 (en) Method for construction of a scaleable font database
EP0417224A1 (en) Method and apparatus for conversion of outline characters to bitmap characters
EP0667018A1 (en) WEAVING POLYGONES.
KR970008546B1 (ko) 문자 또는 도형의 처리방법
CN101819641B (zh) 将字符与图像的采样网格对齐的方法
JP3037854B2 (ja) 文字生成方法及びその装置
EP0603820A2 (en) Character generating method and apparatus
US7012605B1 (en) Method for generating fonts from very small data sets
JPH02270019A (ja) 高品質文字パターン発生方式
US5506942A (en) Apparatus of outputting a train of characters
JPH04348388A (ja) 文字出力方式
JP3082933B2 (ja) 文字処理方法および装置
JP3268160B2 (ja) 文字パターン発生装置
KR940007818B1 (ko) 그레이 스케일 폰트의 생성방법
JP3084817B2 (ja) 文字出力装置
JPH05257450A (ja) 文字発生装置
JPH09127925A (ja) 文字列出力装置

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 19991130