JPH10500233A - 移植可能なフォントを生成使用する装置および方法 - Google Patents
移植可能なフォントを生成使用する装置および方法Info
- Publication number
- JPH10500233A JPH10500233A JP8501187A JP50118796A JPH10500233A JP H10500233 A JPH10500233 A JP H10500233A JP 8501187 A JP8501187 A JP 8501187A JP 50118796 A JP50118796 A JP 50118796A JP H10500233 A JPH10500233 A JP H10500233A
- Authority
- JP
- Japan
- Prior art keywords
- font
- description
- shape
- outline
- character
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—Two-dimensional [2D] image generation
- G06T11/20—Drawing from basic elements
- G06T11/23—Drawing from basic elements using straight lines or curves
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/103—Formatting, i.e. changing of presentation of documents
- G06F40/109—Font handling; Temporal or kinetic typography
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/14—Tree-structured documents
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Artificial Intelligence (AREA)
- Health & Medical Sciences (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Controls And Circuits For Display Device (AREA)
- Record Information Processing For Printing (AREA)
- Document Processing Apparatus (AREA)
- Dot-Matrix Printers And Others (AREA)
Abstract
(57)【要約】
コンピュータ化されたシステムが、それぞれ関連するフォント(217)を有する文字(219)を受取る。受取られた文字−フォントの組合わせごとに、システムが前記組合わせ形状(453)の予め規定されたフォント記述(122における)をアクセスし、次いで当該形状の新たなフォント記述(126における)を生成する。望ましくは、文字が異なるフォントを持つ時、システムがその全てに対して新たなフォント記述を自動的に生成する。望ましくは、受取られた文字が入力テキスト(116)の一部であり、システムが対応する文字(219)のみならずこれら文字の形状を規定するのに必要な新たなフォント記述をも含む出力テキスト(104)を生成する。望ましくは、出力テキストは、記憶媒体(130)またはコンピュータ・ネットワーク(132)により、他のコンピュータへ転送することができる。望ましくは、新たなフォント記述は、予め規定されたフォント記述が文字−フォント形状を規定する方法とは独立的である。望ましくは、システムは、出力テキストのイメージ(110における)をこれを生成したコンピュータ(102A、102B)上か、あるいは別のコンピュータ(108A、108B)上に描写することができる。
Description
【発明の詳細な説明】
移植可能なフォントを生成使用する装置および方法
発明の分野
本発明は、コンピュータのフォント技術、即ち英数字およびテキストと共に用
いられる他のイメージの形状を表わし生成するコンピュータ技術に関する。
発明の背景
書かれた言葉の開始以来、文書の作成者は、その言葉が話されるとしたらどの
ように耳に聞こえるかということだけでなく、これが読まれる時どのように目に
見えるかということにも関心があった。印刷の出現前は、書法は主な表現形式で
あった。印刷によって、フォントを生成して使用する技術は、重要性において書
法に取って代わった。
フォントは、英数字の文字セットにおける各文字を表わす1セットの形状であ
る。通常、各フォントにおける異なる文字の形状は、所与のフォントの文字が全
体として適切に見えるように、幾つかの形状特徴の横と縦の位置、その縦横の筆
使いの一般的幅、およびそれらがセリフを付ける(serifed)か、ボール
ド(肉太)か、あるいはイタリックかのような幾つかの特性を共有する。
一般に、フォントは、サイズとは無関係の文字の全体的形状を識別する「クー
リエ(Courier)」、「エリアル(Arial)」、「ヘルベチカ(He
lvetica)」あるいは「タイムズ・ニュー・ローマン(Times Ne
w Roman)」の如き基本的なフォント名によって見分けられる。これらの
基本的フォント名は、しばしば、フォントの設計者により所有される商標権とな
る。基本的なフォント名は、しばしば、当該フォントのサイズを指定するポイン
ト・サイズ表示が後に付く。時に、基本フォント名とポイント・サイズとの間に
、筆使いが肉太であることを意味する「ボールド(bold)」、文字全体がよ
り細くされることを意味する「細(narrow)」、文字が斜体であることを
意味する「イタリック」、あるいはサンセリフ(sans serifed)文
字に対して用いられその文字が斜体であることを意味する「斜め(obliqu
e)
」のような他の単語が挿入される。
フォントを変えることができることは、多くの利点を有する。これは、必要な
時にテキストを更に密に詰めるため、またテキストを更に容易に読めるようにす
るためユーザに文字の大きさを変えさせる。異なるフォントの使用もまた、テキ
ストの異なる部分を視覚的に弁別することを可能にする。これは、テキストの調
査および利用を容易にする。更に、テキストが他のテキストよりも視覚的に更に
快いものとなり、一部は読むのが更に容易になる。異なるフォントは、異なる美
的センスに訴える。あるものは古典的に見え、あるものは近代的に、あるものは
アールヌボー(art nouveau)調、あるものはアールデコ(art
deco)調、あるものは手書き風、あるものはユーモラスに、あるものはショ
ッキングに見える。広いバラエティのフォントから選択できることは、文書の美
的メッセージの調子を整える能力を著しく増進する。
コンピュータ世代が始まった時、大半のコンピュータはテキストを1つのフォ
ントで表わすのみであった。しかし、この10年ほどは、コンピュータ・システ
ムの増加率が、テキストを幾つかの異なるフォントで表わして印刷する能力をも
たらしている。このようなコンピュータの大半は、このコンピュータが取扱える
各フォントの各文字の形状に対して予め規定されたフォント記述を含むフォント
資源を有する。予め規定されたフォント記述は、指定された形態あるいは言語に
おける文字の形状について記述する。
あるフォント言語は、ビデオ・ディスプレイあるいはレーザ・プリンタにおけ
るピクセルへ直接翻訳することができるビット・マップ・イメージとして形状を
表わす。これは、早いという利点を有するが、異なるサイズごとに異なるセット
のフォント記述を必要とするという短所を有する。
更に最近は、スケーラブル・フォント言語に対する傾向がある。これらの言語
は、形状を画定する1つ以上のアウトラインに関して文字形状を規定する。この
ような各アウトラインは、出発位置への移動(move)により、次いで一連の
アウトライン線分によって画定され、この線分の各々は、次の文字の開始のため
の標準的な位置への移動が続く、2次あるいは3次のベジェ曲線(Bezier
curve)または円弧のような曲線または線のいずれかである。ベジェ曲線
は、2つの曲線上の終点とそれらの間に置かれる1つまたは2つの曲線外の制御
点とにより画定される周知の種類の曲線である。2次ベジェ曲線は、唯一の曲線
外の制御点を持ち、この曲線は各終点でこの終点から前記制御点までの線に対し
て接しており、この曲線の角度が前記接線により形成される角度を反映する。3
次ベジェ曲線は、2つの曲線外の制御点への線と接しており、この曲線の終点付
近のこのような各接線の一般方向における広がりは前記終点から接線の関連する
制御点までの長さの関数である。前記線と線分とは、通常は、アウトライン分解
単位即ちORUと呼ばれる単位で1000×1000あるいは2048×204
8のいずれかの分解能で画定される。これらの4つの記述は線および曲線に関し
て形状を画定し、かつこの画定が高い分解能で行われるので、かかる記述は任意
の所望のサイズの視覚的なフォント・イメージを生成するために用いることがで
きる。
スケーラブル・フォント技術においては、文字セットにおける各文字のアウト
ライン形状を画定するフォント記述のセットは、基本的あるいは物理的なフォン
トと見なすことができる。このような物理的フォントから生成された種々のサイ
ズのフォントは、それらの文字と関連する個々の形状記述を持たないがこのよう
な形状をスケーラブルNA物理的フォント記述から指定されたサイズで生成する
ので、論理的フォントと見なされる。このような名称を用いて、例えば、基本的
なフォント名称「エリアル」と関連する物理的フォントが存在することになり、
かつ物理的フォントはこれと、「エリアル12」あるいは「エリアル24」のよ
うな名称「エリアル」の後にポイント・サイズ指定が続く任意の論理的フォント
を関連付けるものである。通常は、「ボールド」、「イタリック」あるいは「細
」を含むフォント名称として個々の物理的フォントが提供されるが、対応する物
理的フォントの形状を傾斜させることによりその名称に単語「斜め」を持つフォ
ントがしばしば生成され、もし対応するイタリックの物理的あるいは基本的なフ
ォントが提供されなければ、「イタリック」に対して必要な場合に同じことが行
われる。
現在では、幾つかの主要なスケーラブル・フォント言語がある。これらの言語
は、米国カルフォルニァ州94039、Mountain View、Char
leston Road 1585のAdobe Systems社により開発
された「ポストスクリプト(PostScript)」、米国カルフォルニァ州
95014、Cupertino、Mariani Avenue 20525
のApple Computer社により開発された「トルータイプ(True
Type)」、本願の譲受人であるBitstream社により開発された「ス
ピード(Speedo)」、米国マサチューセッツ州01887、Wilmin
gton、Industrial Way 90のMiles社のAGFA事業
部により開発された「インテリフォント(Intellifont)」を含む。
これら言語はそれぞれ、形状を記述するために異なるコードまたはフォーマット
を用い、異なる方法で形状を表わす。例えば、「トルータイプ」は曲線線分の形
状を画定するため2次ベジェ曲線を用いるが、「ポストスクリプト」および「ス
ピード」は3次ベジェ曲線を用い、「インテリフォント」は円弧を用いる。
コンピュータが、あるフォントを所与の文書において指名するためには、この
フォントの文字のビット・マップ化記述あるいはスケーラブル・フォント記述の
みならず、各フォント言語のフォント記述が書かれる特定のコードをどのように
解釈して、これらをビット・マップ・パターンあるいは一連の移動とアウトライ
ン線分へ変換するかを知るフォント・インタプリタと呼ばれるソフトウエアをも
要求する。
不都合なことに、全てのコンピュータが同じフォント記述あるいは同じフォン
ト言語を解釈する能力を持つわけではない。このことは、電子文書が1つ以上の
所与のフォントを用いる第1のコンピュータで生成され、次いでこれらのフォン
トを持たずあるいはこれを解釈できない第2のコンピュータへ転送されるならば
、問題を生じる。このような場合、文書が第2のコンピュータで提示されあるい
は印刷される時、このコンピュータは意図されるものと異なるフォントを持つ。
このことは、文書に非常に異なる、しばしば要求されない外観を生じ得、この文
書の余白およびページ付けを破壊し得る。欄を持つテキストのような高度にフォ
ーマット化されたテキストにおいては、このことはテキストをほとんど読めない
ものにし得る。更に、あるフォントは他のフォントには無い特殊な文字を持ち、
あるいは他のフォントで一般に使用されるものと異なる文字コードを用い、その
結
果このようなフォントの不一致が文書の外観および構成を破壊するのみならず、
情報の喪失あるいは混乱をも生じ得る。
フォントで表わされたテキストを移植可能にする問題に対する1つの解決法は
、全てのフォントのコピーと、文書と共にその文字を適切に解釈するのに必要な
フォントの解釈とを送出することである。不幸なことに、これは多くの問題があ
る。第一に、どのフォントと解釈がかかる各文書と共に送る必要があるかを見出
して、これらを視認マシン上に組込むことは、労働集約的なものとなる。更にま
た、これは、たとえフォントの実際の形状が長い間著作権を課されないままにな
っていたとしても、フォント記述に含まれるコードと一連のアウトライン線分の
両方が多くの点で著作権の対象となり得ると見なされており、このため、法的な
許可無しに新たなマシンに組込む得ないので、法的な諸問題を生じることになる
。
この問題を取扱う多くの従前の試みがなされてきた。
第1のこれまでの試みは、文書を再生するコンピュータが文書で要求されるフ
ォントをあるならば類似するフォントを用いて近似化する試みを可能にするソフ
トウエアを用いることである。このようなシステムが、1つのセリフを持つフォ
ントを別のものに、1つのイタリック・フォントを別のものに、どいうふうに置
換しようと試みる。不都合なことに、このような試みは、文書を再生するコンピ
ュータが置換すべきフォントを近似化するフォントを持つことをやはり必要とし
、この近似化はしばしば期待を裏切るものである。
別の従来技術は、使用される各フォントにおける各文字のサイズを説明する文
書と共に情報を送るソフトウエアを用いることによって、前記の第1の試みを拡
張するものである。これは、使用するコンピュータにおける対応ソフトウエアが
、同じスペーシングを持つフォントを生じるよう逸失するフォントを近似化する
ため使用するどんなフォントでも引伸すか圧縮することを可能にする。この技術
は、文書のフォーマッティングがスペーシングの相違のため混乱することを防止
するという貴重な利点を提供するが、まだ近似化に過ぎない。
別の従来技術は、フォントの記述を文書と共に埋込むかあるいは含めて、これ
により他の側の者がこれを使用できるようにすることであった。このような埋込
み可能なフォントの製造者は、これらフォントをこれらが含まれる文書において
のみ使用できるように設計し、これにより明白な許可を必要とすることなく作ら
れる製造者のフォント記述のコピーに対するライセンスを受けた。不都合なこと
に、知られる全てのこのようなシステムは、1つの言語のフォントでのみ稼働し
、これら文書が再現されるべきコンピュータがこの言語に対するインタプリタを
有することを前提とする。このため、生成された文書は、これらを再現するマシ
ンが適切なフォント・インタプリタを持たなければ適正に再生できず、また仮に
できても、前記インタプリタの1つの言語で書かれたフォントに対する保証され
た移植性を提供できるに過ぎない。
別のこれまでの試みは、文書を生成するコンピュータのフォント・インタプリ
タから文書に含まれる全ての文字−フォントの形状のビット・マップ・イメージ
を記録してこれらイメージを文書コピーに埋込む文書レコーダ・アプリケーショ
ンを備えることである。結果として得る移植可能な文書は、別のコンピュータに
おける再生アプリケーションから視認されあるいは印刷されるように設計される
。再生側は、文書における各文字の形状をその関連する埋込みフォントから解釈
する。このプログラムは、実際に、ビット・マップ化された物理的および論理的
フォントを生成する能力を有する。即ち、ユーザが異なるサイズの同じ形状のフ
ォントに対して個々のビット・マップ・イメージを格納する必要があることを欲
しなければ、システムがそれを1つのサイズで格納し、再生時にこれから異なる
サイズでビット・マップ・パターンを生成しようとする。
この試みは、フォントの形状が著作権化できず、コピーされたビット・マップ
・パターンが、フォント記述において用いられる実際のコードまたは移動のシー
ケンスおよびアウトライン線分からではなく、フォントの元の予め画定されたフ
ォント記述の形状によって主として判定されるので、著作権問題を回避するよう
に思われる。この試みはまた、文書を生成するコンピュータにより取扱われる任
意のフォントを再生することができるという前記利点を有する。この試みは、大
量のフォントを正確に生成するため大量のメモリを必要とするという短所を有す
る。
発明の概要
本発明は、文字形状の記録のためのコンピュータ化された装置および方法に関
するものである。本発明のシステムは、それぞれ識別される予め画定されたフォ
ントを持つ複数の文字を受取る。当該システムは、このように受取られる文字と
予め画定されたフォントごとに、文字の文字−フォント形状をその関連する予め
規定されたフォントで記述する予め規定されたフォント記述をアクセスする。次
いで、アクセスされた予め規定された各フォント記述により規定される文字−フ
ォント形状から新たなフォント記述を生成し、この新たなフォント記述が関連す
る文字を識別して、関連する文字−フォント形状を一連のアウトライン線分とし
て記述する。
望ましくは、本発明は、予め規定されるフォント記述により記述される実際の
文字−フォント形状にのみ依存し、予め規定されるフォント記述がこれら形状を
記述する特定の方法には依存しない新たなフォント記述を開発する。望ましい実
施例において、本発明は、予め規定されるフォント記述では明白であるかあるい
は明白でない形状の特徴を明白にするため、所与の予め規定されるフォント記述
によって提供される文字−フォント形状をモデル化する。例えば、望ましい実施
例において、このシステムは、予め規定される記述が規定する方法ではなく、前
記各文字−フォント形状自体の関数である当該形状のアウトラインにおける諸点
を見出すため、前記文字−フォント形状モデル化する。このような記述に依存す
る諸点は、湾曲点、接線点、XまたはY極値点、および折れ点を含み得る。3つ
の終端点の各々がかかる終端点の場所の記述におけるあり得る量子化エラー量だ
け変化することを許しながら所与のアウトライン上で前後の線分終端点間の所与
の終端点を通るように直線を引くことが不可能ならば、望ましくは、所与の文字
−フォント形状アウトラインを規定するため予め規定されるフォント記述により
用いられる一連のアウトライン線分における所与の線分終端点が、このような記
述に依存しない折れ点であると見なされる。
望ましくは、このシステムが予め規定されるフォント記述依存点間にこのよう
なフォント記述により規定される文字−フォント形状アウトラインを近似化する
。望ましくは、このシステムはまた、予め規定された記述におけるアウトライン
の順序、開始点あるいはアウトラインの順序とは無関係に、このような各アウト
ラインの記述に対する開始点、および標準的な規則に従う前記記述の方向を取上
げる。これにより、新たなフォント記述を予め規定された記述の形状を必要とし
な
い特質から解放させ、かつこのような記述を非常に均一にし、これにより再生を
容易にする。
システムが新たなフォント記述における各曲線線分の「深さ」を見出すことも
また望ましい。このことは、各再生において曲線がどんなに細かく細分割されね
ばならないかを示し、そのためこのような各細分をつなぐベクトルにより正確に
描画することができる。この深さは、曲線を細分へ繰返し細分割して、各細分を
ベクトルによって近似化し、最も悪い適合が受入れられるまで細分について回帰
することによって計算される。最も深さ回帰レベルが曲線の深さを示す。
望ましくは、このシステムが、複数のフォントと、アウトライン記述およびビ
ット・マップ記述を含むフォント記述言語との任意の1つで規定された形状から
新たなフォント記述を生成することができる。当システムがそれぞれ異なるフォ
ントで規定される複数の文字を受取ると、これらの各フォントにおける文字のそ
れぞれの形状に対する新たなフォント記述を自動的に生成する。当システムが複
数の異なるフォント記述言語で記述されたフォントを持つ複数の文字を受取ると
、1つのフォント記述言語で規定された文字に対する新たなフォント記述を生じ
る。このシステムは、異なる物理的および論理的フォントを含む異なるフォント
から予め規定されるフォント記述を受取るならば、予め規定されるフォント記述
のグループと対応するグループへ新たなフォント記述を分類する。
当システムが、1つ以上の個々の象形部(glyph)あるいはかかる形状中
に含まれるつながらない形態と関連させられる文字フォントの形状アウトライン
と共に分類することが望ましい。当システムは、どのアウトラインがこのような
各象形部の内側および外側のアウトラインであるかを判定し、象形部に対する内
側または外側のアウトラインであるかに従う標準規則に従って、その新たなフォ
ント記述におけるこのような各アウトラインを画定するために用いられる一連の
線分の開始点と縦座標とを選択する。
当システムが、同じあるいは異なるフォント記述言語のどちらで画定されるか
同じあるいは異なるフォントの異なる文字における形状を突合わせ、2つ以上の
新たなフォント記述で用いられる任意の形状の1つの記述を記録することにより
記憶スペースを保管することが望ましい。このような比較が、各文字−フォント
形状無いのこのような各形状のサイズと場所とは独立することが望ましい。この
ような比較は、このような形状についてのある特徴を記述する特徴点を生成し、
異なる形状の特徴点を比較し、それらの特徴点が一致するならば異なる形状の実
際のアウトラインのみを比較することによって早めることができる。このような
比較は、所与の特徴点が記憶される特徴点のどれかと一致するか否かを決定する
ため所与の特徴点と比較されねばならないこのような特徴点数を少なくするため
、それらの特徴点によりかかる形状を分類することによって更に早めることがで
きる。比較される形状が象形部でありかつ全ての象形部のアウトラインがこのよ
うな比較を早めるように均一な規則に従って並べられることが望ましい。
また、システムが、テキストと共に用いられ得るロゴその他のイメージの如き
非文字形状から新たなフォント記述を生成することも望ましい。
本発明の一部の実施例では、当システムは、フォント化された入力テキストを
移植可能(portable)な文書を含むフォント化された出力テキストへ変換する。こ
の出力テキストは、入力テキストにおける一連の文字と、これら文字に対する新
たなフォント記述と、新たなフォント記述のどれが出力テキストの各文字の形状
を表わすかの表示とを含んでいる。
当システムは、コンピュータのスクリーンまたはプリンタなどに移植可能な文
書のフォント化されたテキストのイメージを表現できることが望ましい。この能
力は、移植可能な文書を生成するコンピュータか、あるいは別のコンピュータに
置くことができる。この能力が別のコンピュータに置かれる場合は、取外し自在
な記憶媒体またはエレクトロニック・ネットワークなどによってコンピュータ間
に移植可能な文書を通信する能力が提供される。
本発明の一実施例は、大量記憶媒体に記録された先に述べた形式の移植可能文
書を含んでいる。
図面の簡単な説明
本発明の上記および他の特質については、添付図面に関して望ましい実施例の
以降の記述を読めば更に明らかになるであろう。
図1は、第1のコンピュータが複数の予め規定されたフォント記述を用いて書
かれた入力テキストを新たなフォント記述を有する移植可能文書へ変換し、第2
のコンピュータがこの移植可能文書を受取ってこれが含む新たなフォント記述を
用いてそのイメージを描写する本発明の一実施例の高レベルのブロック図、
図2は、取外し自在な大量記憶媒体上で移植可能文書が第1および第2のコン
ピュータ間に通信される図1に示された実施例の一変更例の高レベルのブロック
図、
図3は、電子データ・ネットワーク上で移植可能文書が第1および第2のコン
ピュータ間に通信される図1に示された実施例の一変更例の高レベルのブロック
図、
図4は、図1における第1のコンピュータの文字形状レコーダとしの使用を含
む複数の用途に対する本発明の一実施例により設計された文字形状レコーダ・ソ
フトウエア・モジュールの機能的インターフェースの図、
図5は、図1に示された第2のコンピュータの文字形状プレーヤとしての使用
を含む複数の用途に対する本発明の一実施例により設計された文字形状プレーヤ
・ソフトウエア・モジュールの機能的インターフェースの図、
図6は、文書ビルダーおよび文字形状プレーヤにより実施される主要機能ステ
ップを含む、図4の文字形状レコーダが使用される図1に示された第1のコンピ
ュータの機能的要素の更に詳細な概略図、
図7は、図4および図6における文字形状レコーダに示されたCsrSetF
ontSpecs()関数により実施される関数ステップの更に詳細なフローチ
ャート、
図8は、図4および図6の文字形状レコーダにより生成される物理的フォント
・レコードのリスト、論理的フォント・レコードのリスト、およびレコーダがこ
のような各物理的フォント・レコードと関連付けられ得る文字レコードの2進ツ
リー、およびこの文字レコードとこの文字の形状の新たな記述を含む象形部プロ
グラム・ストリング(GPS)との間に作るリンクの概略図、
図9は、図4および図6における文字形状レコーダの一部であるCsrDoC
har()関数により実施される関数ステップの更に詳細なフローチャート、
図10は、図4および図6の文字形状レコーダにより生成される後続のデータ
構造、輪郭がいったん閉じられて置かれる階層的輪郭ツリー、このツリーの輪郭
構造の象形部要素への分割、この各象形部要素と関連して生成される象形部レコ
ード、および各象形部要素の輪郭から得られる新たな形状記述を含む象形部プロ
グラム・ストリング(GPS)の概略図、
図11および図12は、それぞれ反曲点とX極値点における文字形状アレイに
より受取られる曲線線分を図9のステップ364がどのように分割するかの図形
的表示、
図13は、図9のステップ366において記述されるコーナー検出機能の更に
詳細な記述、
図14A−D、図15A−Cおよび図16A−Cは、図13のコーナー検出ス
テップを示すため用いられる図、
図17および図18は、図9のステップ422の曲線深さの分析を行うため用
いられるステップの更に詳細なフローチャート、
図19は、図4および図6の文字形状レコーダにより生成される図10に示さ
れたタイプで、かつ関連する象形部ストリング(GPS)により表わされる形状
が既にツリーにおける象形部レコードと関連する象形部プログラミング・ストリ
ングのそれと一致するかどうかを調べるため新たな各象形部レコードに対するレ
コーダにより行われる突合わせの象形部レコードの2進ツリーの概略図、
図20は、図1、図6および図21に示された移植可能なフォント資源に含ま
れるデータ要素の概略図、
図21は、ページ・ビルダーおよび文字形状レコーダにより行われる主要機能
ステップを含む、図5の文字形状プレーヤが用いられる図1に示された第2のコ
ンピュータの機能要素の更に詳細な概略図である。
望ましい実施例の詳細な記述
図1は、移植可能なフォント化された文書を生成して再生するためのシステム
100の概要を提示する。このシステムは、移植可能文書104を生成できる第
1のコンピュータ102と、その付随するビデオ・モニター106とを含む。当
システムはまた、移植可能文書を再生することができる第2のコンピュータ・シ
ステム108と、その付随するビデオ・モニター110と、プリンタ112とを
含む。
コンピュータ102および108は、プログラム命令と、データ構造と、前記
命令を実行して前記データ構造を操作するための1つ以上の処理要素を記憶する
ための記憶装置を含むパーソナル・コンピュータまたはコンピュータ・ワークス
テーションの如きコンピュータであることが望ましい。コンピュータの1つ以上
のプロセッサがかかる命令を実行する時、このプロセッサはこれらコンピュータ
の各々に対して記述される機能要素を形成する。
第1のコンピュータ102は、文書ビルダー114を含む。この文書ビルダー
は、フォント化入力テキスト116を受取るための手段を有する。このようなテ
キストは、ディスクまたはデータ・ネットワークのような外部ソースから受取る
ことができ、あるいはこのテキストは、ワード・プロセッサまたはデスクトップ
・パブリッシング・プログラムのような第1のコンピュータ上で実行するプログ
ラムにおいて生成することができる。この入力テキストは、一連のフォント・ネ
ームと、テキスト文字と、位置決めコードとからなっている。通常は、各テキス
ト文字は、逐次先にある第1のフォント・ネームと関連付けられ、この各フォン
ト・ネームは、当該フォントにおける各文字の形状を記述するコンピュータのフ
ォント資源122における1組のコード化された予め規定されるフォント記述と
関連付けらている。
文書ビルダーは、入力テキストの連続するフォント・ネーム、テキスト文字、
および移植可能文書104のテキスト118に対する位置コードの各々と対応す
るコードを置く。更に、入力テキストにおける文字およびフォント・ネームの一
義的な組合わせごとに、文書ビルダーが、対応する予め規定されたフォント記述
において記述された形状に対する新たなフォント記述を生成する。
前記文書ビルダーは、第1のコンピュータのインタプリタ120に、コンピュ
ータのフォント資源122における文字フォント形状の予め規定されたフォント
記述を解釈させることによりこれを行う。フォント・インタプリタは、コード化
され予め規定されたフォント記述を文字−フォント形状のアウトラインを規定す
る一連の移動、線および曲線へ変換する。このインタプリタは、これらを文書ビ
ルダーへ提供する。文書ビルダーは更に、この解釈された形状の記述を第1のコ
ンピュータの文字形状レコーダ(CSR)124へ渡す。このCSRは、解釈さ
れた記述に含まれる形状をモデル化し、これが表わす形状により要求されない解
釈されたフォント記述の何らかの特質と視覚的に無関係な新たなフォント記述を
生じる能力を含む。CSRは、この新たなフォント記述を文書ビルダーへ戻し、
このビルダーがこのフォント記述を移植可能な文書テキスト118においてその
関連するフォントおよび文字を表わすため用いられたコードにより指示された移
植可能な文書資源126に置く。
第1のコンピュータ102と第2のコンピュータ・システム108とは、それ
らの間に情報を通信するための装置を含んでいる。図2に示されるように、この
装置は、磁気ディスクまたは光ディスク、CDまたはテープのような取外し自在
の大量記憶媒体130において第1のコンピュータから第2のコンピュータへ移
植可能なフォント資源を通信するための装置128Aであり得る。取外し自在媒
体130は、単独生成コピーあるいは大量生成コピーを含み得る。図3に示され
るように、これはまたネットワーク132上で移植可能な文書を通信することが
可能なネットワーク・インターフェース128Bでもよい。このネットワーク1
32は、LAN、WAN、テレコム接続、オンライン・サービス、インターネッ
ト、および将来は、いわゆる情報ハイウエーを含み得る。
第2のコンピュータ・システム108もまた、ページ・ビルダー134と文字
形状プレイヤー(CSP)136とを含む。このページ・ビルダーは、移植可能
文書からページ・イメージあるいはスクリーン・イメージのような描写されたイ
メージを生成する。このビルダーは、連続フォント、文字及び位置コードを移植
可能文書104のテキスト118から読出す。これは、フォント・コードを用い
て各文字と関連するフォントを決定する。これは、この位置コードを用いて、文
字を描写されたイメージで置く。各文字コードに応答して、CSPを調べてその
関連フォント・コードが与えられるとその文字に対する形状を生成する。CSP
は、フォント移植可能な文書資源126における文字とフォントに基いて指示さ
れる新たなフォント記述からこの形状を生成する。これは、この形状をページ・
ビルダーへ送り、このビルダーがこれを描写されるイメージの適正位置に置き、
またこの描写されたイメージをビデオ・モニター110またはプリンタ112の
ような出力装置へも送出する。
このように、図1に示された本発明の実施例が、第1のコンピュータのディス
プレイ106に示される如き第1のコンピュータのフォント・インタプリタおよ
び予め規定されたフォント資源で生成されるフォント化された文書を、フォント
・インタプリタおよびフォント資源を持たない第2のコンピュータに対して通信
してこれにより実質的に正確に同じ外観で視覚的に描写することを可能にするこ
とが判る。また、この実施例は、第1のコンピュータの予め規定されたフォント
記述の著作権となり得る形状に依存しない特質をコピーすることなく行う。
第1のコンピュータの文字形状レコーダ124がこれに一連の移動、線、およ
び2次と3次のベジェ曲線として記述される形状に対する新たなフォント記述を
生成することができるので、第1のコンピュータのフォント・インタプリタがこ
のような一連の移動、線および曲線へ解釈できる任意のフォント記述言語から新
たなフォント記述を生成することができる。全ての主要なフォント記述言語がこ
のような出力、即ちこのような形態へ容易に変換できる出力を生じることができ
る関連するフォント・インタプリタを持つので、このことは、たとえ同じ文書中
に生じる場合でも、図1の実施例をこのような全てのフォント記述言語で使用で
きることを意味する。
本発明のある代替的な実施例においては、文書ビルダーは、移植可能な文書資
源126におけるビット・マップ・フォントの表示を行うための手段を含む。こ
れは、移植可能なフォント資源におけるこのようなイメージに対するフォント記
述として直接、小さなフォントに対するフォント・インタプリタ120から受取
るビット・マップ・パターンを記録するための手段を含む。このような実施例に
おける文書ビルダーはまた、ビット・マップ・パターン上の縁部検出を実施し、
このパターンにおける各縁部における第1の点とこの縁部における各連続点間の
距離と対応する線とに対して移動命令を生成し、一連の移動および線分を先に述
べた文字形状記録プロセスへ供給するために、より大きなビット・マップが受取
られる時に使用される手段をも含む。これらの特徴により、本発明が視覚的にど
んなフォントでも生成されるどんな文書でも、フォントが生成された元のフォン
ト記述を持たない別のコンピュータ上に正確に再生することを可能にすることが
判る。
図1に開示された基本的概念は多くの用途を有する。その一部では、文書ビル
ダー114および文字形状レコーダ124が直接、ワード・プロセッサ、描画プ
ログラム、あるいはデスクトップ・パブリッシャのようなユーザ・アプリケーシ
ョンへ組込まれる。他の用途では、オペレーティング・システムに組込まれる。
更に他の用途では、これはプリンタ・ドライバとしてインターフェースされるド
ライバ・モジュールに置かれて、関連するコンピュータ・プラトフォームで実行
するように設計された実質的にどんな主要アプリケーションに対してもインター
フェースすることができるようになる。
同様に、ある用途においては、ページ・ビルダー134および文字形状プレイ
ヤー136は、はるかに大きなユーザ・アプリケーションへ組込まれる。他の用
途では、これは特殊な移植可能な文書ビューワ・アプリケーションの一部である
。また更に他の用途においては、オペレーティング・システムへ組込まれる。
移植可能文書の性格は、文書ビルダー114、レコーダ124、ページ・ビル
ダー134、および文字形状プレイヤー136の使用と共に変化する。例えば、
これらのモジュールが全てはるかに大きなユーザ・アプリケーションに組込まれ
る多くのシステムにおいては、移植可能文書はこのアプリケーションに対しては
通常のファイルである。文書ビルダーおよびレコーダが印刷ドライバ・モジュー
ル内にあり、かつ文書ビルダーおよびプレイヤーが文書ビューワ・プログラムの
一部であるシステムにおいては、移植可能フォントの文書は、通常は最初にその
フォント化されたテキストを生成したアプリケーションによって読出すことがで
きない。文書ビルダー、レコーダ、ページ・ビルダーおよびプレイヤーがオペレ
ーティング・システムに組込まれるシステムにおいては、このオペレーティング
・システムと互換性のある任意のアプリケーションにより生成されるファイルは
、移植可能文書104であり得る。
一部の実施例においては、1つのコンピュータが、文書ビルダーとレコーダの
両方、ならびにページ・ビルダーとプレイヤーとを含み、その結果コンピュータ
は移植可能文書を送出と受取りの両方が可能である。
一部の実施例においては、移植可能文書は、ページ・ビルダーとプレイヤーの
コードを含み、従って移植可能文書を読むコンピュータが、前にページ・ビルダ
ーとレコーダのコピーを持つ必要なしに移植可能文書のテキストとフォントを見
ることができる。
図4および図5は、それぞれ文字形状レコーダ124と文字形状プレイヤー1
36の望ましい実施例を示している。この実施例においては、レコーダとプレイ
ヤー136の両方が別個のソフトウエア・モジュールとして設計された。これら
は、それらのコードを複数の異なるソフトウエア・アプリケーション、異なるコ
ンピュータおよび異なるオペレーティング・システムで使用できるように、モジ
ュール化された。これらは、ほとんど全ての主要なオペレーティング・システム
でサポートされる共通に使用されるCプログラミング言語で書かれた。これらは
、オペレーティング・システムに依存する任意の関数を含むものではない。また
、これらは、アプリケーション間で異なることが多い多くの機能性を含むことは
ない。
一部の実施例においては、例えば、レコーダおよびプレイヤーは、Unixコ
ンピュータ、IBM PC互換コンピュータおよびApple社のマキントッシ
ュ・コンピュータで走るソフトウエア・アプリケーションの一部である。このア
プリケーションの各マシン依存のバージョンにおいては、これらはオペレーティ
ング・システムとインターフェースして、文書とページ・ビルダーの機能を実行
し、他のタイプのコンピュータ上でアプリケーションの対応バージョンにより読
むことができる移植可能文書を生成するコードで囲まれている。これは、1つの
タイプのコンピュータ上で生成されるフォント化された移植可能文書を仮想的に
正確に同じ外観で別のタイプのコンピュータ上で再生することを可能にする。
レコーダおよびプレイヤーの機能性のモジュラー化もまた、これらを図1にお
いて述べたものと異なる目的のために使用することを可能にする。例えば、本発
明の一実施例においては、レコーダは、任意の入力テキストとは独立的に、予め
規定されたフォント記述のセットから新たなフォント記述のセットを生成するプ
ログラムの一部として使用される。いったん生成されると、このような新たなフ
ォントは、プレイヤー・モジュールを含むアプリケーションで使用することがで
きる。
図4および図5において、各モジュールを用いるホスト・ソフトウエアにより
行うことができるファンクション・コールが左側に示される。これらは、図4に
おける関数150〜158および図5の関数170〜178である。これらの図
面では、モジュールによりそのホスト・ソフトウエアへ逆に行われるファンクシ
ョン・コールが右側に示される。これらのいわゆる「コールバック」関数は、図
4においては番号160〜165が付され、図5においては番号190〜202
が付されている。各図の左側の関数コードは、レコーダまたはプレイヤーのモジ
ュールの一部である。右側のコールバック関数のコードは、このようなモジュー
ルを用いるホスト・ソフトウエアに含まれる。
図4において、関数CsrMoveTo()、CsrLineTo()、Cs
rQuadraticTo()、およびCsrCubicTo()は、これらの
関数が文字の形状をレコーダに対して規定する移動、線および曲線を送るExe
cChar()により呼出されるので、コールバック関数ExecChar()
からの線により指示される。
図6は、図1において第1のコンピュータ102に示される機能要素の更に詳
細な概略図を提示する。これは、予め規定されたフォント記述を用いる入力テキ
スト116を移植可能文書104へ変換するため文書ビルダー114がモジュラ
ー文字形状レコーダ124に対するホスト・プログラムとしてどのように対話す
るかを示している。
文書ビルダーは、主要プログラム204と図4の右側に示されるコールバック
関数160〜165とを含む。
文書ビルダーの主プログラムに対して示される最初のステップは、ステップ2
10である。これは、CSRのCsrOpen()関数150を呼出す。ステッ
プ212では、CsrOpen()が開いてプレイヤー・ソフトウエア・モジュ
ール124を初期化して、これに作業してその初期データ構造をセットアップす
るのに必要なメモリ・バッファと一時ファイルを与える。
この関数がいったん戻ると、文書ビルダーの次のステップ214は、これが入
力テキスト116における全てのコードを処理するまでループする。入力テキス
トから受取った連続的な各コードに対しては、このループはその下方で意図され
るべく示されるステップ216、218、220および222を実行する。
ステップ216は、受取られたコードが入力テキストに示されるコード217
の如きフォント・ネームであるか否かを調べるためテストする。もしそうであれ
ば、そのサブステップ224、226、228および230が実行される。ステ
ップ224は、受取られた完全フォント・ネームから基本的フォント・ネーム部
分を保管して、それに対してpFontIdを指示する。ステップ226は、そ
のサイズ、斜めであるか否か、および中ベタまたはアウトライン・フォントであ
るか否かの如きフォントの属性を受取った完全フォント・ネームから計算し、そ
れをFontAttributesと呼ばれるデータ構造に記憶する。次いで、
ステップ228が、pFontIdおよびFontAttributesにより
CSRのCsrSetFontSpecs()関数151を呼出す。
図7は、CsrSetFontSpecs()動作の更に詳細な記述を示す。
ステップ300において、CsrSetFontSpecs()が呼出されたp
FontIdと同じ物理的フォント・ネームを指示するpFontID値304
を持つ物理的フォント・レコードについて、図8の最上部に示され物理的フォン
ト・リストとして知られる物理的FNDレコード302のリンクされたリストを
探索する。CSRが指定された物理的フォントに対してレコードを持たないこと
を意味するこのような一致が見出されなければ、ステップ306が、ステップ3
08、310および312を実行することによりこのような物理的フォント・レ
コードを生成する。ステップ308は、実際に、指定されたpFontID値を
持つ新たな物理的フォント・レコードのデータ構造302を生成し、これを物理
的フォント・リストの終りに置く。ステップ310は、図6に示されたホスト文
書ビルダーのGetFontInfo()コールバック関数162を呼出して、
フォント・インタプリタから物理的フォントについての情報を取得し、この情報
を新たな物理的フォント・レコードに置く。これは、フォント・インタプリタが
この物理的フォント形状の移動、線および曲線を規定するORU解を含む。これ
はまた、物理的フォントのネームを含む。ステップ312は、「ヒント呈示(h
inting)」として知られるプロセスにおいて用いられる英数字の小さなサ
ブセットごとに文書ビルダーのGetCharID()およびExecChar
()関数を呼出す。このような文字ごとに、最初にGetCharID()を呼
出し、これが第1のコンピュータのフォント・インタプリタにおける当該文字を
識別するために用いられる文字コードを返し、次いでこれがこの文字に対する文
字コードのGetCharID()戻しでExecChar()を呼出して、こ
の文字の形状を得る。
これは、標準的な横と縦の位置と、物理的フォントにおけるある文字特徴と関
連する標準的な太さの測定値を得るために行われる。これらのヒント呈示値は、
物理的フォント・レコードに記録され、最後に移植可能文書における物理的フォ
ントと共に記憶される。これは、文字が描写される時文字のアウトラインの重要
な縁部の位置を変更するためこれらの値が文字形状プレイヤーにより使用できる
ように行われ、使用されたピクセル・パターンの凹凸(granularity
)が与えられると、更に魅力的なイメージを生じる。ヒント呈示は、コンピュー
タのフォント技術において周知である。ここで注意すべき重要なことは、移植可
能文書104に記録されたヒント呈示情報が第1のコンピュータのフォント資源
における予め規定されたフォント記述に含まれるヒント呈示情報からではなく、
むしろフォントにおける文字特徴の実際の位置とサイズから得られることである
。
ExecChar()164は、CsrSetFontSpecs()および
CsrDoChar()の両方により使用される重要なコールバック関数である
。これは、通常は入力テキストにおける当該文字に対するコードである所与の文
字に対してフォント・インタプリタが使用するネームを持つCSR関数により呼
出される。これは、pFontIDおよびFontAttributesにより
示されるその時のフォントにおける文字について第1のコンピュータのフォント
・インタプリタ120を呼出すことにより応答する。このフォントがスケーラブ
ル・フォントであるならば、ExecChar()が、CsrMoveTo()
、CsrLineTo()、CsrQuadraticTo()、あるいはCs
rCubicTo()をそれぞれ呼出すことにより、フォント・インタプリタか
ら受取られる各移動、線、2次ベジェ曲線、あるいは3次ベジェ曲線に対して応
答して前記移動またはアウトライン線分の規定をCSRへ送る。ある文書ビルダ
ーでは、フォント・インタプリタがビット・マップ・パターンを返すならば、ビ
ット・マップにおける縁部検出を行うことによりExecChar()が応答し
、次い
でそのポイントの1つへの初期移動で、その後この縁部について各連続点間の一
連の線が続いてCSRに対して検出された各縁部を記述する。
指定されたpFontIDと一致する物理的フォント・レコードが前に存在し
たかあるいはステップ308、310および312により生じたばかりの如何に
拘わらず、ステップ314がこの物理的フォントにその時アクティブな物理的フ
ォントを記録させる。
次いで、ステップ316が、CsrSetFontSpecs()が呼出され
たものと一致するFontAttributes値319を持つ論理的フォント
・レコードに対してその時アクティブな物理的フォント・レコード302と関連
する論理的フォント・レコード318のリンクされたリストを探索する。これら
の値は、文書の座標中に規定される文字形状を生じるため物理的フォントがどの
ようにスケールが付されて(必要に応じて)斜めにされるかを規定するfont
Matrixを含む。これはまた、文字形状が中ベタかアウトライン形態で描写
されるかされないかについての情報をも含み、アウトライン形態であるならば、
アウトラインがどのような太さであるか、またアウトラインがどんな角度で合流
するかについての情報を含んでいる。指定されたFontAttributes
を持つこのような前の論理的フォント・レコードが見出されなければ、ステップ
320がその時の物理的フォント・レコードに帰属する論理的フォント・リスト
の終りに新たな論理的フォント・レコードを生成し、それに指定されたFont
Attributes値319を記録する。次に、ステップ322が、一致する
FontAttributesを持つ前に存在するか新たに生成された論理的フ
ォントをCSRのその時アクティブな論理的フォントにし、ステップ324が、
pFonCodeにより指示されるその時アクティブな論理的フォントを一義的
に充分にするコードで文書ビルダーへ戻る。
CsrSetFontSpecs()が文書ビルダーへ戻った後、ステップ2
30がpFontCodeにより指示されたFontCode217Aを移植可
能文書のテキスト118における一連のコードへ置く。これがいったん行われる
と、プログラムはループ214の初めへ進み、入力テキストから受取る次のコー
ドを処理する。
入力テキストから受取ったコードが文字を表わすコード219であるならば、
ステップ218におけるテストは満足され、ステップ236および238が行わ
れる。
ステップ236は、当該文字に対するCSRのCsrDoChar()関数1
52を呼出す。図9に更に詳細に示されるこの関数はCSRの最も重要な部分の
1つであるが、これはこの関数が文字−フォント形状記録プロセスを実際に実行
するからである。その最初のステップであるステップ328は、図8に示された
文字レコード330の2進ツリーを探索し、このツリーはCsrDoChar(
)が呼出されたものと一致するcharCode332を持つ文字レコードに対
するその時アクティブな物理的フォント・レコード302から外される。このツ
リーは、その文字レコードの各々が1つはpNextUpポインタ340を介し
1つはpNextDownポインタ342を介する2つの子供の文字レコードを
指示することができるゆえに、周知のタイプのデータ構造である2進ツリーであ
る。所与のレコードより小さなcharCodeを持つ所与のレコードからの全
てのレコードが所与のpNextDownポインタからくるように、またより高
いcharCodeを持つものからの全てのレコードがpNextUpからくる
ように、レコードがこのツリーに付加される。これにより、指定されたchar
CodeがこのレコードにおけるcharCodeより小さいか大きければ、各
レコードにおけるpNextDownまたはpNextUpに追従することによ
り、ツリーが迅速に探索されることを可能にする。このプロセスは、指定された
charCodeと一致するレコードが見出されるか、あるいはこのような一致
する文字レコードがツリーに存在しないことを意味するゼロ・ポインタを持つp
NextDownまたはpNextUpが見出されるまで追従される。
このような一致するcharCodeがその時の物理的フォントが関連する文
字レコードの1つに見出されるならば、CsrDoChar()に対する前の呼
出しが既にその時のフォントにおけるその時の文字の形状を記録し、このため、
CsrDoChar()はこれ以上することがない。この場合、ステップ334
は文書ビルダーへ戻る。このような一致が見出されなければ、ステップ336は
図9に示されるステップの残りに文字形状記録を行わせる。
文字形状記録における最初のステップであるステップ338は、新たな文字レ
コード・データ構造330を生成し、charCodeが与えられればこれを適
切な位置で2進ツリーへ挿入する。pRootCharacterがゼロ値を持
つならば、ツリーは空でありこれがその時の物理的フォントに対して処理されつ
つある最初の文字であることを示す。この場合、新たな文字レコードがツリーの
基部として挿入され、pRootCharacterがそれに指示させられる。
ツリーが空でなければ、新たな文字レコードがツリーの上記探索がゼロのpNe
xtDownまたはpNextUpのポインタに遭遇した点に挿入され、このポ
インタは新たなレコードに指示させられる。システムは、ツリーが不均衡である
か否かを調べるため検査し、更に多くのレコードがそのレコードのあるものの片
側よりも他の側に依存する。もしそうであれば、ツリーができるだけ僅かなレベ
ルを持つように均衡させるため再構成され、これにより最も迅速に探索できる。
ステップ338が文字ツリーに処理される文字に対する文字レコードをいった
ん挿入すると、ステップ340が、図10に示された文字形状アレイ339の初
めを含む関連するその初期データ構造をセットアップすることにより、文字形状
処理を初期設定する。文字アレイ339は、ポイント・ストラクト(point
struct)341の連続に文書ビルダーのExecChar()関数16
4から受取るアウトライン線分を記述する点を記憶する。次に、ステップ342
が当該文字に対する文書ビルダーのExecChar()関数164を呼出し、
これが、第1のコンピュータのフォント・インタプリタからExecChar(
)へ供給される各移動、線、2次ベジェ曲線および3次ベジェ曲線の各々に対し
て図6に示されるCSRのCsrMoveTo()、CsrLineTo()、
CsrQuadraticTo()およびCsrCubicTo()関数153
、154、155および156をそれぞれ呼出すことにより応答する文字に対す
る文書ビルダーのExecChar()関数164を呼出す。ExecChar
()がいったん呼出されると、CsrDoChar()はExecChar()
が戻るのを待機し、この待機中、CSRが、ExecChar()が呼出すCs
r To()の動作による初期の文字形状記録を行う。簡単にするため、図9
および待機後のその説明では、Csr To()関数により行われるステッ
プ
は、あたかもそれがCsrDoChar()関数の一部であるかのように未然ル
ープ344とそれによるステップにより表わされる。
ExecChar()により呼出される関数がCsrMoveTo()である
と、ステップ346は、ステップ348および350を実行させる。ステップ3
48は、図9に示されるように開いた輪郭構造349Aが既に存在するか否かを
調べるためテストし、もしそうであれば、このステップはステップ352および
354を実行する。開いた輪郭構造349Aを用いて、CsrDoChar()
が呼出されたその時の文字−フォントの組合わせにおいて処理されるその時のア
ウトラインの形状から得られるアウトライン線分を含む情報を受取る。このよう
な前に開いた輪郭があるならば、CsrMoveTo()呼出しがこれが新たな
アウトラインの開始を表わすアウトラインからの離反を示す。この場合、ステッ
プ352は、前に開いた輪郭349Aにおける情報を終了してこれを閉じる。次
いで、ステップ352が前記の閉じた輪郭349を、これも図10に示される如
き閉じた輪郭構造の階層的ツリーである輪郭ツリー356に置く。ステップ35
0に達する時までにCsrMoveTo()に対する呼出しが行われた時前に閉
じた輪郭があったか否かに拘わらず、このステップはその最初の点がCsrMo
veTo()により示される変位により決定される新たな輪郭を開く。
ExecChar()がCsrLineTo()、CsrQuadratic
To()あるいはCsrCubicTo()を呼出すと、ステップ358が図9
において意図されたステップ360、362、364、366および368を実
行させる。
ステップ360は、輪郭が開いていなければエラーとして抜けるが、これはC
srLineTo()、CsrQuadraticTo()およびCsrCub
icTo()が全てその時の輪郭において前に規定された点に関して線分である
と規定されるゆえであり、このような開いた輪郭がなければ、システムはこれを
どのように解釈するか判らないことになる。
ステップ362は、Csr To()関数により連続する各アウトライン
線分と関連する点を記憶する。CsrLineTo()に対するExecCha
r()による各呼出しが、アレイに対する1つの点、このアレイにおける前の点
からの線のオン・アウトラインの終点を加える。CsrQuadraticTo
()に対する各呼出しが、アレイに対する2つの点、第1はアレイにおける前の
点で始まる2次ベジェ曲線のオン・アウトライン終点が後に続くオフ・アウトラ
イン制御点で前記曲線を加える。また、CsrCubicTo()に対する各呼
出しが、3つの点、即ち、アレイにおける前の点で始まる3次ベジェ曲線のオン
・アウトラインが後に続く前記曲線の2つのオフ・アウトライン制御点をアレイ
に加える。
ステップ364は、CsrQuadraticTo()またはCsrCubi
cTo()に対する呼出しにより受取られる各曲線線分を微分して、この曲線が
変曲点またはXY極値点(実際には、横または縦の接線を持つ点)を含むかどう
かを調べる。これが何らかのこのような点を見出すならば、これはこれらの点を
文字形状アレイにおけるものとしてマークし、あるいはこの点が文字形状アレイ
に既にある終点以外にあるならば、これは前記曲線をこのようなマークされた点
で細分割して、分割されない曲線を表わす1組の点を前記細分割の結果として得
る曲線の各々を表わす1組の点で置換する。
図11は、その中間に変曲点を持つ3次ベジェ曲線402を示す。この曲線は
、最初からCsrCubicTo()から受取られる3つの点、即ち、第1の制
御点404と第2の制御点406と終点408で表わされる。この曲線はまた、
文字形状あるにおける前の点410により規定される。ステップ364は、この
曲線が変曲点412を持つことを検出する。この点が曲線の2つの終点408ま
たは410の1つではないので、これは曲線を変曲点412でそれぞれ2つの制
御点415と416および417と418である2つの新たな曲線411と41
3に細分割する。曲線411は、その終点として変曲点412を有する。曲線4
13は、その終点として元の曲線の終点408を有する。点415、416、4
12、417および418は、元の曲線の2つの制御点404および406の代
わりに文字形状アレイに挿入される。図12は、横方向の接触点で2つの新たな
曲線に同様に分けられる3次ベジェ曲線402Aを示す。
ステップ366は、アレイにおける両側で規定される線または曲線の線分を持
つ文字形状アレイに何らかのオン・アウトライン点が存在するかどうかを調べる
ために検査し、もし存在すれば、このような点の各々に対して、この点がコーナ
ーまたは接触としてマークされるべきかを調べるために検査する。接触は、コー
ナーとして示されずかつ曲線線分と線の線分との間にある点を単に拾うことによ
り選択され、この場合線の線分は1つの3次ベジェ曲線がそれらの両方の形状を
近似化できそうにない充分な長さである。このような各点もまた、輪郭Cont
ourBBoxに記憶されるXとYの両座標に対する最大値および最小値と比較
され、かかる最大値か最小値よりもそれぞれ大きいか小さい座標を持つならば、
この最大値または最小値が座標と等しくなるように更新される。この点がXの最
大であるならば、図13のプロセスにより決定されるようにそれに形成される時
計方向または反時計方向のいずれかの角度方向が輪郭の実際の方向として記録さ
れる。
図13は、コーナーとしてマークされるべき点を拾って可能ならば方向をこの
ようなコーナーと相関させるため使用されるプロセスを示している。このプロセ
スは、CSRにより受取られる形状の記述におけるアウトライン分解ユニット(
ORU)の量子化の結果として得ることができる明瞭なコーナーはコーナー点と
して表示されないことを保証するため実行される。これは、ステップ370〜3
76を含む。
ステップ370は、方形384に対して文字形状アレイにおいてテストされる
点381に先行する点380から図14Bに示される最も左と最も右のベクトル
1Lおよび1Rを見出す。この方形は、1つの側面における2つのアウトライン
分解ユニット(ORU)であり、これがテストされた点381の中心にある。「
左」および「右」は、アウトライン線分が低調波形状アレイにおいて受取られた
方向に関して規定される。ステップ372は、文字形状アレイにおけるテスト点
に続く点382の周囲の中心となる2つの同様なORU方形386に対してテス
トされる点318から最も左と最も右のベクトル2Lおよび2Rをそれぞれ見出
す。
ベクトル1Lおよび1Rは、このような点の各々の場所におけるあり得る量子
化誤差が与えられれば、点380から点381へのベクトルに対して可能な方向
の範囲を表わす。同様に、ベクトル2Lおよび2Rは、点381、382におい
てあり得る誤差が与えられれば、点381から点382へのベクトルに対して可
能な方向の範囲を表わす。
テスト点381が曲線である前または後の線分が曲線である場合、点380ま
たは382はそれぞれ曲線外の制御点となる。しかし、2次または3次のベジェ
曲線の終点からその最も近い制御点の線がこの曲線の終点における接線であり、
このため、終点からこの制御点への線がこの終点における隣接するアウトライン
線分となす角度を反映するので、これは問題ではない。
ステップ370および372がいったんベクトル1L、1R、2Lおよび2R
を計算すると、テストされた点381がどのように表示されるべきかを調べるた
めステップ373、374、375および376が一連のテストを行う。ステッ
プ373は、ベクトル2Lおよび2Rがそれぞれ1Lおよび1Lの両方に対して
ゼロより大きくかつ180度より小さな左方角度をなすかどうかを調べるためテ
ストする。図14の事例においては、このことは、前記ステップが両ベクトル2
Lおよび2Rが図14Cに示される角度範囲377内に該当するかどうかを調べ
るためテストすることを意味する。このテストが満たされるならば、これは点3
81と382間のあり得る全てのベクトルが、あり得る量子化誤差が与えられる
ならば、このあり得る誤差が与えられるものとして、点380と381間のあり
得る全てのベクトルと左方角度をなすことを意味し、これによりステップ373
がテストされた点381を明確な左方コーナーとして表示する。
ステップ373のテストが満たされなければ、ベクトル2Lおよび2Rがそれ
ぞれ1Lおよび1Rの双方に対してゼロ度より大きく180度より小さい右方角
度をなすかどうかをステップ374がテストする。図14の事例において、この
ことは、ベクトル2Lおよび2Rの両方が図14Cに示される角度範囲378内
に該当するかどうかを調べるためテストすることを意味する。ステップ374の
テストが満たされるならば、点381と382間の全てのあり得るベクトルが、
あり得る量子化誤差が与えられるものとして点380と381間の全てのあり得
るベクトルと右方角度をなすことを意味し、このため、テストされた点を明確な
右方角度として表示する。
ステップ373および374におけるテストがいずれも満たされなければ、ス
テップ375は、2Lが1Rに対してゼロ度より大きくかつ180度より大きく
ない右方角度をなすかどうかを調べるためテストし、またこのステップは1Lに
対してゼロ度より大きくかつ180度より大きくない左方角度をなすかどうかを
調べるためテストする。図14の事例においては、このことは、このステップが
2Lと2R間のあり得る方向範囲のどの部分も図14Cに示されるように、1L
と1R間のあり得る方向381の範囲内に該当しないことを調べるためテストす
ることを意味する。ステップ375の条件が満たされるならば、点381と38
2間のあり得るベクトルが、あり得る量子化誤差が与えられものとして、点38
0と382間のあり得るどのベクトルで直線をなし得ないことを意味し、従って
ステップ375は、明確なコーナーとしてこの点を表示する。しかし、このステ
ップは、左方または右方のいずれかの角度のコーナーとして前記点をマークする
が、これはステップ373および374のテストがいずれも満たされなかったた
めである。
ステップ373、374および375におけるテストのいずれも満たされなか
ったならば、ステップ376は、この点をコーナーではないものとマークする。
これらのテストの図14Aおよび図14Bに示される点のセットに適用するこ
とが、図14Dに示されている。同図において、2Lおよび2R間のあり得るベ
クトル範囲が1Lおよび1R間のあり得るベクトル範囲の明らかに左方にある弧
の部分377に該当することが判る。このように、ステップ373のテストが満
たされ、テストされた点は明確な左の曲がりとして表示され、これはORU量子
化の結果として鋭すぎる角度を持つ曲がりである。これは、たとえ点380、3
81および382の各々のXおよびYの値が、これらの周囲の中心の1つのOR
U方形398により示されるように、2分の1のORUの最大ORU丸め誤差だ
けいずれも方向にも変化することが許容されたとしても、各図の点線で示される
ようにこれらの点を通る直線400を引くことは不可能であろうゆえに、図14
Aに示される。
図15A〜図15Cに示される場合においては、点380A、381Aおよび
382A間の明確な左方角度は、それらの間に距離があるものとして、3つ全て
の方形398Aと接触する線400Aを引くことができるほどに僅かであり、こ
れらの点間の明確な角度がORU丸め誤差で生成され得ることを示す。図15C
に示されるように、2Lおよび2R間のあり得るベクトル方向範囲が完全に左に
も右方にも存在せず、あるいは完全に1Lおよび1R間のあり得るベクトル方向
の範囲にあるゆえに、ステップ373、374および375のテストがいずれも
満たされない。この場合、ステップ376はテストされた点をコーナーでないも
のとして表示する。
図16A〜図16Cに示される場合は、明確な左方角度は明らかにコーナーで
あるほど充分に鋭いが、量子化誤差は左方の曲がりではなく角度のある点線で示
されるように右方の曲がりであり得るほど充分に大きい。この場合、図16Cに
示されるように、2Lおよび2R間のあり得るベクトル方向の範囲は、1Lおよ
び1Rにより示されるあり得る方向範囲の完全に左方でも完全に右方でもなく、
このため、ステップ373および374のテストは満たされないことになる。し
かし、2Lおよび2Rにより示されるあり得る方向の前記範囲は、1Lおよび1
Rにより示されるあり得る方向範囲の完全に外側にあり、このため、ステップ3
75のテストは満たされ、テストされた点は左方または右方のいずれかの方向の
コーナーとして表示される。この場合は、文字形状レコーダがこの点を図9のス
テップ368における区分目的のためマークされた点として用いることになるが
、このコーナーがX最大値であるならば、同図のステップ366における輪郭方
向の計算にはこれを用いない。その代わり、最後の明確な方向がもしあるならば
これを輪郭の実際の方向としてX最大値の処理時にコーナーと関連したままに残
すことになる。
ステップ364および366がいったん行われると、ステップ386は、ステ
ップ364および366により変曲点、XY極値点、コーナーあるいは接線とし
てマークされた点の連続的対間にある文字形状アレイにおけるアウトライン線分
の部分に対してステップ420、422、424および426を実行する。
ステップ420は、文字形状アレイにおける1つ以上の線分をカバーするアウ
トラインのこのような部分を線または3次ベジェ曲線で近似化する。この2つの
マークされた点間のアウトライン部分が単純な線または3次ベジェ曲線であるな
らば、この線またはベジェ曲線は近似化として用いられる。さもなければ、線ま
たは曲線適合手法を用いて近似を見出す。
アウトライン部分が曲線で近似化されるならば、ステップ422が、近似曲線
の「深さ」を計算する。即ち、このステップは、曲線の細分割間の最悪の誤りお
よびその終点間のベクトルが2分の1のORUより小さくなる前に、曲線が2つ
に細分割される回数を計算する。この値は、文字形状プレイヤーが、移植可能フ
ォント資源から文字形状を読出してベクトル近似化により正確に描写するため各
曲線をどれだけ細かく細分割しなければならないかを知るために、文字形状プレ
イヤーによって使用される。
図17は、この深さ分析を行う主プログラムの諸ステップを示し、図18は反
復的細分割を実際に行う反復的サブルーチンの諸ステップを示している。この主
プログラムは、4つの主要ステップ430、432、434および436を有す
る。
ステップ430は、曲線の終点にわたるベクトルと曲線の各制御点との間の距
離が2分の1ORUより小さいかどうかを調べる。もしそうであれば、曲線がそ
の終点間のベクトルにより丸め誤差の制限内で近似化されるように細分割される
必要が全くないので、このステップは0の深さを返す。ベジェ曲線の性格により
このようなベクトルが、この曲線の制御点の1つまでの最大距離よりも大きなそ
の関連する3次ベジェ曲線上のどの点までの距離を決して持ち得ないから、また
前記ベクトルから前記曲線までの最大距離を見出すことよりも、前記ベクトルか
ら2つの制御点までの最大距離を見出すことが数学的にはるかに簡単であるので
、ベクトルと曲線の制御点間の距離が用いられる。
ステップ430のテストが満たされなければ、ステップ432は、図18のR
esursiveSubdivisionサブルーチンを呼出す。図18に示さ
れるように、このサブルーチンは、これが細分割する3次ベジェ曲線の1stE
nd、1stControlPoint、2ndControlPointおよ
び2ndEndに対するポインタで呼出される。またこのサブルーチンは、反復
深さによっても呼出される。このサブルーチンは、ステップ440、442、4
44、446および448を含む。
ステップ440は、サブルーチンが呼出される深さの値が、全曲線における行
われる反復によりそれまでに達していた最大深さであるその時のmaxDept
h値よりも大きいかどうかを調べるためにテストする。もしそうであれば、この
ステップは、maxDepthの値を反復の深さに等しくセットする。次いで、
ステップ442は、反復が呼出されたベジェ曲線の中間点を見出して、この曲線
を前記中間点で2つの新たなベジェ曲線に分割する。次いで、ステップ444は
、新たな部分曲線のどれがその終点とその2つの制御点の1つとの間のベクトル
からの最大距離を持つかを見出す。これがいったんなされると、ステップ446
が、前記の最大距離がORUの2分の1より小さいかどうかを調べるためテスト
する。もしそうであれば、ステップ446はdeepestSubCurveと
呼ばれる構造に1stEndおよび2ndEndを格納し、従って図17に示さ
れたルーチンがどこでこの曲線が最も深い反復で終了するかを知ることができ、
このルーチンを返す。もしそうでなければ、ステップ448が、終点をつなぐベ
クトルとその2つの制御点の1つとの間の最大距離を持つ新たに形成される部分
曲線に対するRecursiveSubdivisionサブルーチンを呼出す
。
コンピュータ・プログラミングの当業者は知るように、このRecursiv
eSubroutineは所与のベジェ曲線を半分に分割し続け、最悪適合の半
分がORUの2分の1以内に適合させられるまで、最悪適合の半分を拾って更に
この半分を半分に分割する。この時、maxDepthは最も深い反復のレベル
を保持し、deepestSubCurveは最も深い部分曲線の終点を保持す
る。次いで、最も深い反復がこれを呼出した反復へ戻り、RecursiveS
ubroutineに対する最初の呼出しが図17のステップ432へ戻るまで
、この反復がそれを呼出した反復へ戻り、、、のように反復する。
この時、ステップ434が、deepestSubCurveに格納された最
も深い部分曲線の終点の1つが深さの計算が行われつつある全曲線の終点の1つ
であるかどうかを調べるためテストする。もしそうであれば、このステップは、
この時前の反復により見出された最も深い部分曲線を含むものと反対側の全曲線
の終りを含む全曲線の半分に対してRecursiveSubdivision
サブルーチンを再び呼出す。これは、所与の3次ベジェ曲線の細分割とこれらの
細分割のベクトル近似化との間の微分が、全曲線の2つの終点間のどこかに対す
る大域最大である1つの局所最大を持つか、あるいは一方が他方より深い反復を
要求する曲線の2つの終点の各々に見出される2つの局所最大を持つゆえに、行
われる。最初の場合、ステップ432におけるRecursiveSubrou
tineに対する最初の呼出しの反復は、全曲線に対する最大偏差を取得するよ
うに保証される。しかし第2の場合は、第1のレベルの反復における最大偏差を
持つ全曲線の半分は、最も深い局所最大を持つ終りを有するものではなく、この
ため、ステップ432の反復は、曲線の真の最大深さを見出し得ない。ステップ
434は、この第2の場合における全曲線の他の半分に対して反復を実行させて
、全曲線の両端部の深さが見出されることを保証し、従って前記maxDept
hが最も深い深さを含むことになる。
図17および図18に示された深さ発見アルゴリズムが、ベクトルとの適合が
最悪である各部分曲線の半分に対する反復を追跡するに過ぎないので、文字形状
レコーディングの動作を著しく早め、これにより深さ分析のため要求される計算
量が曲線の深さで指数的に増加することを防止する。
次に図9に戻って、ステップ422が完了した後、ステップ424がステップ
420により計算された近似化された線分を図10に示された開いた輪郭ストラ
クト349Aの点アレイ339Aへ挿入する。曲線上の点と輪郭の点アレイにお
ける制御点とにより表わされるアウトライン線分の区切りが、受取られたアウト
ライン線分の実際の区切りによるのではなく、横方向と縦方向の接線、変曲点、
フィルタされたコーナーおよび曲線とCSRに対するExecChar()呼出
しから受取られたアウトライン線分により規定される形状に見出された著しい線
との間の境界に依存することが判る。
新たに近似化されたアウトライン線分がいったん開いた輪郭349Aに置かれ
ると、ステップ426が、文字形状アレイからまだ近似化されかったかあるいは
このような近似化されない線分の処理のため必要ではない線分の部分ではない全
ての点を削除する。このステップは、このような点が更なる用途がないので、メ
モリを節減するためこのような削除を行う。
所与の文字−フォント形状の処理中に、ステップ346または358のいずれ
かと、そのそれぞれのサブステップが、CSRに対する各ExecChar()
呼出しごとに反復される。
CsrMoveTo()に対する呼出しがExecChar()から受取られ
る以後の時間ごとに、これは、ExecChar()により記述されつつある形
状における1つの輪郭あるいはアウトラインの記述の終りと、別のこのような輪
郭の初めか、あるいはこのような輪郭が更になければExecChar()によ
るこの形状の記述の完了をマークする次の文字に対する開始位置への移動かを表
示する。いずれの場合も、CsrMoveTo()に対するこのような以後の呼
出しが受取られると、ステップ352が、開いた輪郭349Aを完了してこれを
閉じ、ステップ354がその適正な場所において輪郭ツリーへ置く。
ステップ354は、これを下記のように階層的な輪郭ツリー356へ置く。
この輪郭ツリーが空であるならば、これは大域可変pContourRoot
を新たな輪郭へ指示する。輪郭ツリーが空でなければ、最上レベルにおける輪郭
のリストを走査する。走査された各輪郭に対して、新たなものがこれを包囲する
ならば、走査された輪郭をリストから除去して、これをpDaughter45
2により指示された新たな輪郭の娘(daughter)リストに加える。この
新たな輪郭が走査された輪郭により包囲されるならば、走査プロセスを走査され
た輪郭の子供で再開する。走査されつつあるリストの終りに達すると、新たな輪
郭をリストに加える。実際の輪郭挿入プロセスが類似(sibling)リスト
に対する一貫した順序を維持して、以下に述べる象形部が信頼できることを保証
する。この順序は、輪郭の境界ボックスであるContourBBoxにおける
xmin値に基く。つなぎ(tie)の場合は、相違が見出されるまで命令ym
in、xmax、あるいはymaxが用いられる。同じ境界ボックスを持つ異な
る類似輪郭の場合はない。
図10に示される事例では、登録された商標記号453における丸の外側のア
ウトラインと関連する輪郭349Bは、輪郭ツリーの最初の、即ち最も高いレベ
ルに最終的に置かれるが、これはこの全ての記号の他の輪郭を包囲するゆえであ
る。前記丸の内側アウトラインと関連する輪郭349Cは、第2レベルの輪郭と
なる。登録商標記号における「R」の外側アウトラインと関連する輪郭349D
は、第3レベルの輪郭となる。また、「R」の内側アウトラインと関連する輪郭
349Eは、第4レベルの輪郭となる。ある文字が1つのレベルの多くの輪郭を
有することを理解すべきである。例えば、形状「1/2」は全て第1のレベルの
3つの輪郭を持つが、形状「B」は第1のレベルの1つの輪郭と、前記第2のレ
ベルにおけるものと独立する2つの輪郭とを持つことになる。
ExecChar()が図9に示されるステップ460でCsrDoChar
()へいったん戻ると、文字−フォント形状の各アウトラインは閉じられた輪郭
構造349に記録されねばならず、これら構造の各々はどれがどれを包囲するか
を示す階層へ構成されねばならない。この時、ステップ350により、文字−フ
ォント形状のエスケープメント(escapement)と関連するExecC
har()によって呼出された最後のCsrMoveTo()で生成された開い
た輪郭が存在する。ステップ460は、記録されつつある形状に対するエスケー
プメントを計算するためこの開いた輪郭における初期点の場所を保管し、開いた
輪郭を閉じる。
次いで、ステップ462が、輪郭ツリー356を2つのレベルのサブツリーへ
分ける。即ち、このステップは、奇数レベルの各輪郭とそのゼロ以上の娘(da
ughter)の輪郭とをサブツリー355へ分類する。例えば、図10におい
前記丸の内側輪郭を表わす輪郭349Cとが1つのサブツリーへ分類され、前記
コード「R」の外側と内側のアウトラインを表わす輪郭349Dおよび349E
は別のサブツリーへ分類される。これらの2つのレベルのサブツリーがそれぞれ
象形部要素、即ち、連続しない中ベタの形状と対応することになる。
輪郭ツリーがいったん象形部要素と対応するサブツリーへ分けられると、ステ
ップ464がこのような各象形部要素に対してステップ466、468、470
、472、474、476および478を実行する。
ステップ466は、輪郭の方向を標準化する。即ち、このステップは、各象形
部要素における最上レベル即ち外側の輪郭における一連の外側の線分が反時計方
向を持つかどうか、またこれがこのような反時計方向を持つ線分の順序を逆にし
ないかどうかを知るため調べる。同様に、このステップは、象形部の第2レベル
即ち内側の輪郭の線分が時計方向を持つかどうか、またこれがこれら線分にこの
方向をとるように指令しないかどうかを知るため調べる。これは、全ての象形部
要素の内外の輪郭がCSRへ送られた方向の如何に拘わらず、これら輪郭がそれ
ぞれ同じ方向を持つという利点を有する。
ステップ468は、各輪郭に対する標準的な開始点を取上げる。各輪郭が閉じ
ているので、この開始点は任意である。しかし、象形部の一致を容易にしかつ再
生性能を最適化するために、各輪郭における開始点は少数の簡単な規則に基いて
拾われる。外側輪郭に対しては、開始点は輪郭における最も低い点となるように
選択される。幾つかの等しく低い点があるならば、最も右側の点が選択される。
内側の輪郭に対しては、開始点は輪郭において最も高い点となるように選択され
る。幾つかの等しく高い点があるならば、最も右側の点が選択される。あり得る
両方の開始点の指標は既に、文字の形状処理中に輪郭データ構造にセットされて
いる。従って、適切な点の取上げは、単に輪郭の所望の方向に基いて2つの指標
の1つを取上げる場合となる。
ステップ470は、縁部と筆使いのリストを構築する。縁部リストは、横方向
と縦方向の接戦を含む形状における任意の顕著性の全ての横方向と縦方向の縁部
のリストである。筆使いは、形状における所与の横方向および縦方向の特徴の対
向側を表わすこのような縁部の対である。これらの値は、ヒント呈示において用
いられる。
ステップ472は、図10に示されるように、象形部要素に対する象形部レコ
ード482と象形部プログラム・ストリンク(GPS)484とを生成する。象
形部プログラム・ストリングは、各象形部要素の関連する輪郭における一連の外
側線分を、これら一連の線分が象形部要素の関連するサブツリー355において
これら輪郭の順序でステップ466および468において標準化された後に表わ
す。形状の記述がこの形状自体により委託されない象形部の形状に対するExe
cChar()から受取られる一連のアウトライン線分の任意の特質とは無関係
であることが判る。このGPSは、GPSメモリに一連のGPSの終りへ加えら
れる。このメモリにおけるその場所およびサイズは、象形部レコードにおいてg
lyphProgramStringOffset454およびglyphPr
ogramStringSize452によってそれぞれ示される。この象形部
レコードもまた、象形部のシグネチャ(特徴点)456を計算する。このシグネ
チャは、象形部を一義的に識別する高い確率を有するコンパクトなバイト・スト
リングである。この識別は、位置およびスケール・ファクタとは独立的である。
これは、象形部の輪郭数、ステップ470において計算された横方向と縦方向の
縁部の数、計算された最も右側の筆使いの相対的サイズ、最も右側の筆使いの左
縁部の相対的位置、最上位の筆使いの相対的サイズ、最上位の筆使いの低い縁部
の相対的位置、外側輪郭における外側コーナーの数、外側輪郭における内側コー
ナーの数、内側輪郭における外側コーナーの数、および内側輪郭における内側コ
ーナーの数を含んでいる。このシグネチャにおいて、位置およびサイズは全て象
形部の境界ボックスと関連し、その結果同じ形状であるが異なるサイズの象形部
が同じシグネチャを持つことになる。
新たな象形部レコード482とその関連する新たなGPS484Aがいったん
生成されると、ステップ474が、図19に示されるように、前に記録された象
形部形状に対して作られた全ての象形部レコード482の2進ツリー481を探
索する。このステップは、同じシグネチャを持つ象形部レコードについてこのツ
リーを探索する。このツリーは、各象形部レコードのシグネチャにおける総合バ
イトからなる数値NIYORI2進ツリーへ構成される。これは、一致する象形
部形状についての迅速な探索を容易にするために行われる。ツリーにおける各象
形部レコードでは、ポインタpNextDown482が、その象形部レコード
がより低い値を持つシグネチャを持つツリーの下方向の分岐を指示する。ポイン
タpNextUp484が、対応する象形部値がより高いシグネチャ値を持つ下
方向分岐を指示する。また、ポインタpNextEqual486は、同じシグ
ネチャ値を持つものがあれば象形部レコードを指示する。等しいシグネチャ値を
持つ象形部レコード482Cのグループが、図19に示される。
図19に示されるように、探索が新たな象形部レコード482Aと同じシグネ
チャを持つ象形部レコード482Bを見出すならば、ステップ476がステップ
488および490を実行する。ステップ488は、新たな象形部レコード48
2Aと同じシグネチャを持つ象形部レコード482Bにより指示されるGPS4
84Bにおける一連の点を、新たな象形部レコードの関連するGPS484Aに
おける点と比較する。この突合わせが行われる前に、2つの象形部形状の境界ボ
ックスが同じサイズに正規化され、その結果この突合わせがスケール独立的にな
る。
を可能にし、「1/2」における「1」の形状を「1」における形状と一致する
ことを可能にする。図示された事例において、象形部レコード482Bと関連す
るGPS484Bにおける点が新たな象形部レコードGPS484Aの点と一致
しないものと仮定される。
新たな象形部レコード482Aのシグネチャとそのシグネチャが一致する象形
部ツリーにおけるグループの類似の象形部レコードが存在するならば、新たな象
形部レコードの関連するGPS484Aがこれら類似の象形部レコードの各々の
GPSに対して比較される。図19の事例においては、このことは、GPS48
4AもまたGPSレコード482Dと関連するGPS484Dに対して比較され
ることを意味する。この事例においては、これら2つのGPSが一致するものと
仮定される。
このような一致を迅速にする能力は、輪郭の順序、輪郭の方向、および各GP
Sにおける輪郭の開始点が前記象形部の形状がExecChar()によってC
SPへ送られた特定の方法とは独立的に標準化されるという事実によって非常に
容易にされる。このことは、異なる文字、異なるフォントあるいは更に異なるフ
ォント記述言語のどれから受取られたかに従って、同じ形状を持つ象形部がほと
んど常に正確に同じGPSを持つことを意味し、スケーリングおよび丸めの誤差
を可能にし、これにより迅速に突合わせることができる。
図19におけるGPS484Aおよび484Dの場合のように、丸め誤差を許
容する正確な一致が見出されるならば、ステップ490が新たな象形部レコード
のGPS484Aを通常削除し、新たな象形部レコード482Aにおけるgly
phProgramStringOffsetおよびglyphProgram
StringSizeの値を一致するGPS484Dに指示する。新たな象形部
レコードGPSが前に記録された一致GPSとは異なるサイズを持つならば、前
に記録された一致GPSに記述された象形部を適正なサイズへ変換するスケーリ
ング情報は、新たな象形部レコードと関連させられる。新たな象形部484Aに
記述されたサイズが前に記録された一致GPS484Dに記述されたものより充
分に大きければ、これらは一致しないものとして取扱われ、象形部形状の望まし
くないほど低い解像度記述が新たな象形部レコードに対して用いられることを阻
止する。
一致する象形部形状に対するテストがいったん完了すると、象形部のGPSが
ツリーにおける前の何物にも一致しなければ、ステップ478が、新たな象形部
レコード482Aを適切な場所に象形部レコードの2進ツリー481へ挿入する
。
象形部レコード・ツリーが、任意の形状が共通にGPSへの参照により規定さ
れ得るされるか否かを見出すためその時処理されつつある文字−フォント形状の
全ての象形部について探索された後、ステップ480が、文字のGPSに対して
処理されつつある文字−フォント形状に対する文字レコード330の図8に示さ
れるglyphProgramStringOffset490およびglyp
hProgramStringSize492を指示する。文字レコードの関連
する形状が1つ以上の他のGPSにより規定される象形部のスケーリング、変位
あるいは組合わせによって形成されるならば、文字レコードにより指示されるG
PSが図8に示されるGPS484Dの如き複合GPSとなる。このような各複
合GPSがこのような他のGPSに対する1つ以上のポインタを、文字レコード
の関連する形状におけるこのような他の各GPSの関連する象形部のサイズおよ
び場所を規定するのに必要なスケーリングおよび変位情報と共に含む。
これがいったん行われると、ステップ496は、処理されつつある文字−フォ
ント形状の境界ボックスのxまたはyの最大または最小がフォントにより前に処
理された文字−フォント形状のこのようなxまたはyの最大または最小より更に
極値であるならば、その時の物理的フォントの境界ボックスのxまたはyの最大
または最小を更新する。
この時、CsrDoChar()がその時呼出された文字−フォント形状の処
理が完了し、CsrDoChar()が戻る。
次に図6に戻り、ステップ236におけるCsrDoChar()152に対
する呼出しが完了すると、ステップ238が、移植可能文書のテキスト118に
おける文字に対するコード219Aを置き、プログラムはループ214の最上部
へ進んで入力テキストか受取る次のコードを処理する。
次にテキストから受取ったコードが位置コード221であるならば、ステップ
220におけるテストが満たされ、このステップが出力テキストにおける対応す
る位置決めコード221Aを置き、プログラムはループ214の最上部へ進む。
入力テストは、図1におけるビデオ・モニター106に示されたロゴ242の
如き文字でない形状の形を表わす記述即ちコード223を含み得る。図6に示さ
れる実施例においては、これらの記述はフォントばかりでなくページのレイアウ
トおよび文字でない形状も記述する言語であるポストスクリプト(PostSc
ript)ページ記述言語でコード化される。
文字でない形状コード223が入力テキストで受取られると、ステップ222
におけるテストが満たされ、このステップは、フォント・コードがフォントの「
形状」について受取られたかのように、またこれが前記コード223により記述
された文字でない形状に対する一義的な文字コードを割当てるかのように働く。
「形状」に対するpfontID指示ステップ222は、FontAttrib
utesで標準値を置き、CsrSetFontSpecs()を呼出し、移植
可能文書のテキストにおける「形状」フォントに対して返されたFontCod
eを置く。次いで、ステップ222が形状の一義的なcharCodeに対する
CsrDoChar()を呼出して、その形状のフォント記述を構成し、移植可
能文書のテキストにおける形状の一義的charCode219Aを置く。
pFontIDが「形状」を指示するステップ222の動作中、GetFon
tInfo()が、形状がCSRに対して記述されるアウトライン解像度でCs
rSetFontSpecs()を与え、GetCharID()がゼロを返し
てヒント呈示のため使用される文字が「形状」フォントには使用できないことを
表示し、CsrSetFontSpecs()にExecCharを呼出さない
ようにさせ、CsrDoChar()がExecCharを呼出す時、これがポ
ストスクリプトの形状記述により規定される移動、線および曲線を返す。
ループ214がいったん入力テキスト116における全てのコードを処理する
と、ステップ244がCSRのCsrWriteResource関数157を
呼出す。CsrwriteResourceは、このような書込みが使用される
オペレーティング・システムに依存するので、このデータを実際に書込むためW
riteResourceData()を呼出す。CsrWriteResou
rceは、物理的フォントレコードに含まれるデータ、およびこれらの関連する
論理的フォントと文字レコード、および象形部プログラム・ストリングに含まれ
るデータを圧縮させて、主要素が図20に示される移植可能な文書資源(PFR
)126へ記録させる。同図から判るように、PFRは、論理的フォント・ディ
レクトリ500、1つ以上の論理的フォント・レコード502、1つ以上の物理
的フォント・レコード504、1つ以上の簡単な象形部プログラム・ストリング
、およびゼロ以上の複合象形部プログラム・ストリング508、即ち、1つ以上
の他のGPSを参照して規定される図8に示されるGPS484Dの如きGPS
を含んでいる。論理的フォント・ディレクトリ500は、移植可能文書に含まれ
るfontCode271Aを、PRFにおける前記fontCodeの対応す
る論理的フォント・レコード502のアドレスおよびサイズへ変換されるように
変換する索引テーブルを含む。各論理的フォント・レコード502は、とりわけ
論理的フォント、およびPFRにおけるその関連する物理的フォント・レコード
504のアドレスおよびサイズを含む。このような各物理的フォント・レコード
は1つ以上の文字レコード510を含み、その各々が、その形状を一連の移動、
線および曲線として実際に記述する単純あるいは複合象形部プログラミング・ス
トリング506または508のアドレスおよびサイズを含む。
CsrWriteResourceに対する呼出しがいったんPFRを書込む
と、ステップ246がCsrCloseを呼出してCSRを閉じ、ルーチン20
4の実行が完了する。
図6に示された入力テキスト116の図は、図1におけるビデオ・モニター1
06上に示されるフォント化されたテキストの初期部分の概略図である。図6に
示された移植可能文書104の図は、同じフォント化テキストを表わすテキスト
118の概略図である。これら2つのテキストを比較することにより判るように
、入力テキストにおける各フォント・ネーム217、各文字コード219、およ
び各位置コード221は、それぞれ移植可能文書における対応するfontCo
de217A、charCode219A、あるいは位置コード221Aを有す
る。
更に、入力テキストへコード化された文字でない各形状223は、移植可能文書
におけるfontCode217AとcharCode219Aとを有する。
図21は、図1における第2のコンピュータ108に示された関数要素の更に
やや詳細な概略図を提示する。この図は、ページ・ビルダー134およびモジュ
ラー文字形状プレイヤー136がどのように相互に作用して移植可能文書104
に含まれるフォント化テキストの視覚的イメージを描写するかを示している。こ
れは、第2のコンピュータが第1のコンピュータに関して先に述べたフォント・
インタプリタ120とフォント資源122と関数において類似するフォント・イ
ンタプリタ120Aとフォント資源122Aを含む一実施例を示す。
ページ・ビルダーは、図5に示された主プログラム250とコールバック関数
190〜202とを含み、必要でない前記コールバック関数は図21には示され
ない。
ページ・ビルダーの主プログラムに対して示された最初のステップはステップ
252である。これは文字形状プレイヤ即ちCSP、CspOpen()関数1
71を呼出す。これは、CSPデータ構造を開いて初期設定する。
CspOpen()に対する呼出しがいったん戻ると、ステップ254が、文
書に関するイメージの場所およびそのサイズ、スケールおよび文書に関する場所
を含む、移植可能文書に対して生成されるべきイメージの関係を決定する。この
呼出しはこれらを用いて、イメージに対するoutputMatrixおよびo
utputBoxを計算する。outputMatrixは、移植可能文書から
計算された文書座標がどのようにオフセットされ、スケールされ、あるいは生成
されるイメージの座標に関して傾斜させられるかを記述する。outputBo
xは、文書の座標におけるどの場所が前記イメージに適合しないか、またこれに
よりCSPにより生成されることを必要とないかを規定する。
ステップ256は、ビット・マップ化出力あるいはアウトライン出力が要求さ
れるか否かを知るためにテストする。ビット・マップ化出力は、大半のビデオ・
ディスプレイおよびレーザ・プリンタに対して使用される。これは、ピクセルの
アレイからなるイメージで文字形状を表わす。アウトライン出力は、プロッタで
使用され、またフォントの生成に用いることができる。これは、イメージを一連
の移動、線あるいは曲線として表わす。
ステップ256がビット・マップ化出力が要求されると判定するならば、ステ
ップ258および260が実行される。ステップ258は、CSPのCspIn
itBitmapCache()関数170を呼出す。これは、CspDoCh
ar()に対する呼出しにより生成されたできるだけ多くの文字−フォント形状
のコピーを格納するビット・マップ・キャッシュを初期設定して、所与の文字−
フォントの組合わせに対する反復される呼出しがCspDoChar()に対し
て行われる時、この形状の実際のビット・マップが通常はこれら呼出しの最初の
ものに対してのみ生成されねばならないようにし、かつその後の呼出しと同時に
ビット・マップが単にビット・マップ・キャッシュから受取り得るようにする。
CspInitBitmapCache()に対する呼出しが返った後に、ステ
ップ260がCspSetOutputSpecs()関数175を呼出して、
ビット・マップ化されたイメージを描写するようにCSPをセットする。ステッ
プ256がアウトライン出力が用いられることを決定するならば、ステップ26
2がcspSetOutputSpecs()を呼出して、アウトラインを生成
するようにCSPをセットする。
いずれの場合も、CspSetOutputSpecs()の呼出しもまた、
ページ・ビルダーのそれを反映するようにCSPのoutputMatrixと
outputBoxデータ構造をセットする。CSPのoutputMatri
xが、CSPにより生成される形状の座標がこれら形状に対する新たなフォント
記述に含まれるものに関してどのようにスケールされて回転させられるべきかを
決定する。CSPのoutputBoxは、明らかにCSPに生成されるイメー
ジの外側にある形状情報を描写しないようにする。
ステップ260または262のいずれかのCspSetOutputSpec
s()に対する呼出しいったん返ると、生成されるイメージにおける情報と対応
する全てのこのようなコードが処理されるまで、ステップ264が移植可能文書
におけるテキスト18におけるコードを経て順序付けするループを実行する。こ
のループは、ステップ266、268および270からなっている。
テキスト118から処理されつつあるその時コードがfontCode217
Aであるならば、ステップ266はstp274、276および278を実行さ
せる。
ステップ274は、CSPのCspGetFontSpecs()関数173
を呼出して、その時のfontCodeにより表わされるフォントのフォント・
ネームを取得する。これがいったんなされると、ステップ276が、第2のコン
ピュータのフォント・インタプリタ120Aおよびフォント資源122Aがこの
フォントで文字のイメージを描写できるかどうかを知るため検査する。これは、
フォント・インタプリタ102Aが指名されたフォントに対して用いられるフォ
ント記述言語を解釈できることと、前記の指名されたフォントに対する予め規定
されたフォント記述がフォント資源122Aに駐在することの両方を要求する。
このテストが満たされるならば、またフォント・インタプリタによってフォント
が描写できるならば、ステップ276はOrigFontフラッグをセットして
、指名されたフォントの予め規定されたあるいは元のフォントが使用できること
を表示する。フォント・インタプリタが指名されたフォントを描写できなければ
、ステップ278は、OrigFontフラッグをクリヤし、fontCode
に対するCSPのCspSetFont()関数176を呼出す。これは、fo
ntCodeをCSPのその時アクティブな論理的フォントとしてセットし、こ
れによりその関連する物理的フォントをCSPのその時アクティブな物理的フォ
ントとしてセットする。
テキスト118から処理されるその時のコードが位置コード221Aであるな
らば、ステップ268が新しいその時の文書位置を計算して、描写される次の形
状がイメージ形成されつつあるその時の文書と関連して置かれるべき場所を表示
する。
テキスト118から処理されつつあるその時のコードがcharCode21
9Aであるならば、ステップ270は、サブセット280および282を実行さ
せる。サブセット280は、OrigFontフラッグがセットされるかどうか
を知るためテストし、もしそうであれば、このサブセットはコンピュータのフォ
ント・インタプリタを呼出してその時のcharCodeの形状を取得して、現
装置にこのテキスト、あるいはイメージ、座標を出力し、次いでこの文字のイメ
ージと関連するエスケープメント(通常は、幅)を反映するようにその時の文書
およびイメージ座標を更新する。しかし、OrigFontフラッグがセットさ
れなければ、サブセット282のテストが満たされ、このステップが文字コード
と現装置座標に対するCSPのCspDoChar()関数178を呼出す。C
spDoChar()は、現装置位置に文字のビット・マップ・イメージとアウ
トライン記述を生成し、ページ・ビルダーの現装置位置をこの文字のエスケープ
メントにより更新する。ビット・マップ出力が出力されるならば、これはこのイ
メージをページ・ビルダーのSetBitmap()コールバック関数193を
呼出すことにより生成する。CspDoChar()は、この関数を文字のビッ
ト・マップ・パターンに対するポインタ、このパターンのサイズおよび現装置の
座標と共に呼出す。SetBitmap()は、このパターンを取得し、実際に
これをイメージ・バッファに挿入する。アウトライン出力がセットされるならば
、CspDoChar()がページ・ビルダーのアウトライン出力コールバック
関数を呼出す。これらの関数はVstem()197およびHstem()19
8を含み、これらの関数が現在のフォントの標準的な縦方向および横方向の筆使
い幅についてのヒント呈示情報を受取る。これらはまた、移動、線曲線に対する
命令とCspDoChar()からのアウトラインで第1の点まで線を引く指令
とを受取り、かつ実際にこれら命令を用いてイメージ・バッファに形状を描画す
るMoveto()、LineTo()、CurveTo()およびClose
Path()関数をも含む。
ループ264がいったん生成されるイメージと関連させられるテキスト118
における全てのコードを処理すると、これはこのイメージを生成することになる
。この時、このループは、ステップ284におけるように、CSPのCspDo
Char()関数178を呼出すことにより、ページ・ビルダー・プログラムま
たはサブルーチンから抜けることができる。これは、全てのプレイヤーのデータ
およびメモリ構造を閉じることになる。しかし、ページ・ビルダーが文書を対話
的に見るために使用される実施例においては、プログラムは、ステップ254ま
で戻るようループし、提示されるべきイメージの場所、サイズ、スケールあるい
は回転を変更する新たな指令を待機し、これらのパラメータのどれかの変更を表
示
する入力がユーザから受取られると直ちに新たなイメージを生成する。
以上の記述および図面が単に説明し例示するために与えられること、および請
求の範囲の解釈が限定される場合を除いて、本発明がこれに限定されるものでな
いことを理解すべきである。本文の開示を知る当業者は、本発明の範囲から逸脱
することなくその修正および変更を行うことができよう。
例えば、移植可能文書を生成する本発明のある実施例では、文書形成プログラ
ムが新たなフォント記述を、移植可能文書に1つ以上の文字が置かれた任意のフ
ォントにおける全ての文字に対する移植可能なフォント資源に挿入する能力を有
することを理解すべきである。このプログラムは、CsrSetFontSpe
cs()に対する呼出しがGetFontInfo()およびGetFontI
d()を呼出して、CsrSetFontSpecs()が呼出されつつあるフ
ォントが新たな物理的フォントであることを示す時常にこれを文字セットにおけ
る各文字に対してCspDoChar()を呼出すことにより行うことができる
。これにより、移植可能文書を受取る者がその文書に含まれる全てのフォントで
文書を編集することを可能にする。
また、本発明を多くの異なるタイプのアプリケーションで使用できることも理
解すべきである。
例えば、本発明は、フォント化された文書を所与のプリンタにより適正に印刷
できることを保証する上でプリンタ・コントローラおよびプリンタ・ドライバで
非常に有効であり得る。プリンタのコントローラまたはこれを直接駆動するコン
ピュータが先に述べた汎用タイプのページ・ビルダーと文字形状プレイヤを持つ
場合、プリンタがこれに図1に示された文書104の如き移植可能文書の一部と
して送られる如何なるフォント・セットでも印刷が可能である。ネットワーク上
の全てのプリンタがこのような能力を持つ場合、任意のこのようなプリンタへ移
植可能文書を送ることができ、かつこれが全ての所望のフォント形状で正しく印
刷されることを保証することができる。
本発明は、プレゼンテーション・ソフトウエアでの使用に非常に有効であり得
る。ページ・ビルダー送って文字形状プレイヤを含むプレゼンテーション・ソフ
トウエアは、植込まれた移植可能フォント資源を用いて移植可能文書として生成
される任意のプレゼンテーションにおいてフォントを忠実に再現することができ
る。このため、フォントがコンピュータの関連フォント資源に存在するかしない
かについて心配することなく、このようなプレゼンテーションをこのようなプレ
ゼンテーション・ソフトウエアを備えるコンピュータにおいて使用に供する。
本発明は、Eメール、グループウエア、コンピュータ掲示板、オンライン・サ
ービス、およびいわゆる情報ハイウエーの如きネットワーク化されたアプリケー
ションにおいて非常に有効であり得る。図3に示された如きシステムを用いるこ
とにより、フォント化されたテキストおよび移植可能なフォント資源を含む媒体
をネットワーク上に送出して、コンピュータがどんなフォントをそのフォント資
源して有するかについて心配することなく、ページ・ビルダーおよび文字形状プ
レイヤを含む受信側コンピュータにより正確に描写することを可能にする。この
ことは、フォント化されたテキストがそれぞれフォント資源のあり得る異なる組
合わせによる数千あるいは数百万の異なるコンピュータから受取られた後視認さ
れる用途において特に重要である。
対話型ネットワーク化アプリケーションにおいては、移植可能文書を繰返し生
成することができる。即ち、連続的な線またはスクリーンが送信されるごとに、
その文字に対して要求されるどんな新たなフォント記述でも共に送ることができ
る。
本発明は、フォント資源が出版される情報に含まれる各フォントを含むかどう
か心配することなく、電子的に出版される文書において使用される任意の所要フ
ォントを任意のコンピュータ上に視覚的に正確に描写できることを保証するゆえ
に、CD−ROMの出版の如き電子出版において非常に有効であり得る。
ネットワーク化された電子出版その他の用途においては、送信を受取る各コン
ピュータが再生が可能であることを保証するため、ページ・ビルダーおよび文字
形状プレイヤに対する実際のコードを移植可能文書と共に送ることができる。
本発明は、フォント・セットを生成してこれを編集するための用途において有
効であり得る。例えば、ある実施例では、文字形状プレイヤが予め規定されたフ
ォント記述を予め規定されたフォント記述における形状情報からのみ得られる新
たなフォント記述に変換するアプリケーションの一部として使用される。このよ
う
な用途においては、文字形状プレイヤに類似するソフトウエアがコンピュータの
フォント・インタプリタの1つとして組込まれるように設計される。
本発明はまた、マルチメディア用途において非常に有効であり得る。これは、
このようなマルチメディアにおけるフォント化されたテキストを、英数字記号に
よりコンパクトに表わすこと、そして任意のコンピュータにより迅速かつ正確に
再現することを可能にする。このような用途において、また描画アプリケーショ
ンおよびデスクトップ・パブリッシング・アプリケーションにおいては、本発明
はカラー、3次元、透明その他の図形的効果を取扱うように修正することができ
る。
当業者には理解されるように、ソフトウエアで実施されるものとして先に述べ
た多くの機能をハードウエアで実施することも可能である。同様に、先に述べた
特定の機能およびモジュールへの機能性の特定の分割は全く任意であり、本発明
はこのような分割に限定されるものではない。例えば、本発明のある実施例では
、文書ビルダーおよび文字形状プレイヤは2つではなく1つのソフトウエア・モ
ジュールと見なすことができる。他の実施例においては、文書ビルダーは別個の
ソフトウエア・モジュールではなく、むしろワード・プロセッサ、デスクトップ
・パブリッシングあるいはプレゼンテーション・プログラムのようなより大きな
ホストのアプリケーションの一部となる。他の実施例においては、文字形状レコ
ーダおよびプレイヤーは、移植可能文書の生成、一覧および編集の全てを行うア
プリケーションにおいて使用されるように設計されたより大きな1つのモジュー
ルの一部であり得る。
本発明の文字形状レコーダの他の実施例においては、予め規定されたフォント
記述において規定された形状から新たなフォント記述を抽出するために用いられ
る規則が異なり得ることを理解すべきである。例えば、ある点では、1本の曲線
のみで得られる適合は要求されるほど正確でないならば、コーナー、接線、反曲
点、あるいはXまたはYの極値の如き記述が独立的な点としてマークされた点間
の文字形状アレイにおけるアウトライン線分の所与の部分が1本の曲線の代わり
に多数の曲線で近似化が可能である。他の場合、例えば異なる標準的な開始点ま
たは輪郭方向を新たなフォント記述として用いることが可能であり、あるいは異
なるタイプの記述を湾曲したアウトライン線分に対して用いることも可能である
。
先に詳細に述べた本発明の実施例は、ポストスクリプト、トルータイプおよび
スピード言語で書かれた予め規定されたフォント記述を受取ることが可能である
。本発明の他の実施例では、インテリフォントの如き他のフォント記述、あるい
は将来開発される新規なフォント記述言語で書かれた予め規定されたフォント記
述を受取るように文書ビルダーまたは文字形状レコーダも設計可能であることを
理解すべきである。
例えば、インテリフォント言語は、円弧として曲線を記述する。これは、文書
ビルダーのExecChar()関数に、これがインテリフォントのフォント・
インタプリタから受取る各円弧のアウトライン線分を対応するベジェ曲線へ変換
させることにより実施可能である。これは、CsrArcTo()関数にこのよ
うな円弧を受取らせて、これをベジェ曲線へ変換させるように文字形状レコーダ
自体を修正することにより可能である。将来においてアウトライン線分を他の方
法で規定する他のフォント記述言語が開発されるならば、文字形状レコーダまた
はその関連するホスト・ソフトウエアをこのような新規な記述技術を許容するよ
うに変更することが可能である。
先に述べたページ・ビルダーの実施例において、このページ・ビルダーは、そ
のコンピュータのプォント・インタプリタおよびフォント共振回路が所与のフォ
ントを描写できるかどうかを知るためテストし、またもしそうであれば、このペ
ージ・ビルダーはフォント・インタプリタによってフォントを描写させる。他の
実施例においては、ページ・ビルダーは、文字形状プレイヤを用いて移植可能文
書における全ての文字を描写する。
先に述べた本発明の実施例においては、フォント化されたテキストが対応する
出力テキストと移植可能なフォント資源からなる1つの移植可能文書へ変換され
た。しかし、ある実施例においては、出力テキストおよび移植可能フォント資源
は別のファイルに置くことができ、あるいはおそらくは別の記憶場所に格納する
こともできる。
これらの事例が示すように、本発明は、多くの可能な実施例を有し、その範囲
は本文に述べた詳細な記述に限定されるものはなく、むしろ請求の範囲によって
最善に規定される。
─────────────────────────────────────────────────────
フロントページの続き
(81)指定国 EP(AT,BE,CH,DE,
DK,ES,FR,GB,GR,IE,IT,LU,M
C,NL,PT,SE),OA(BF,BJ,CF,CG
,CI,CM,GA,GN,ML,MR,NE,SN,
TD,TG),AP(KE,MW,SD,SZ,UG),
AM,AT,AU,BB,BG,BR,BY,CA,C
H,CN,CZ,DE,DK,EE,ES,FI,GB
,GE,HU,IS,JP,KE,KG,KP,KR,
KZ,LK,LR,LT,LU,LV,MD,MG,M
N,MW,MX,NO,NZ,PL,PT,RO,RU
,SD,SE,SG,SI,SK,TJ,TM,TT,
UA,UG,UZ,VN
【要約の続き】
(102A、102B)上か、あるいは別のコンピュー
タ(108A、108B)上に描写することができる。
Claims (1)
- 【特許請求の範囲】 1.それぞれ識別された予め規定されたフォントを有する複数の文字を受取るス テップと、 このように受取られた文字と予め規定されたフォントとの各組合わせごとに、 前記文字の関連する予め規定されたフォントにおける文字−フォント形状を記述 する予め規定されたフォント記述をアクセスするステップと、 アクセスされた各々の予め規定されたフォント記述により規定される文字−フ ォント形状から、関連する文字を識別して関連する文字−フォント形状を一連の アウトライン線分として記述する新たなフォント記述を生成するステップと を含むコンピュータ化された方法。 2.複数の文字を受取る前記ステップが、それぞれ識別された予め規定されたフ ォントを有する一連の前記文字からなる入力テキストを受取り、 出力テキストを生成するステップを更に含み、前記出力テキストが 前記入力テキストのそれと対応する一連の文字と、 前記入力テキストと関連する各文字−フォント形状に対して生成される新た なフォント記述と、 どの新たなフォント記述が前記出力テキストにおける各文字の文字−フォン ト形状を表わすかの表示とを含む請求項1記載のコンピュータ化方法。 3.前記出力テキストを取外し自在な大容量記憶媒体に書込むステップを更に含 む請求項2記載のコンピュータ化方法。 4.前記出力テキストを遠隔ユーザに対してオンラインで利用可能にするステッ プを更に含む請求項2または3のいずれか1つに記載のコンピュータ化方法。 5.前記出力テキストの視覚的表示を描写するステップを更に含み、該ステップ が、 前記視覚的表示に含まれるべき前記出力テキストにおける各文字と関連する新 たなフォント記述を識別するステップと、 識別される新たな各フォント記述を対応する文字−フォント形状に解釈するス テップと、 前記出力テキストの一連の文字における前の文字と関連する場所に隣接する前 記視覚的表示における場所に解釈された各文字−フォント形状を描写するステッ プとを含む請求項2ないし4のいずれか1つに記載のコンピュータ化方法。 6.入力テキストを受取り、予め規定されたフォント記述をアクセスし、新たな フォント記述を生成し、出力テキストを生成する前記ステップが、第1のコンピ ュータにおいて実行され、 前記出力テキストの視覚的表示を描写する前記ステップが、第2のコンピュー タにおいて実行され、 前記第1のコンピュータにより生成された出力テキストを前記第2のコンピュ ータへ転送するステップを更に含む請求項5記載のコンピュータ化方法。 7.前記出力テキストを転送する前記ステップが、コンピュータ・ネットワーク に前記出力テキストを表わすデータ信号を転送することを含む請求項6記載のコ ンピュータ化方法。 8.前記描写ステップが、前記視覚的表示の印刷されたイメージを生成すること を含む請求項5ないし7のいずれか1つに記載のコンピュータ化方法。 9.前記受取られた複数の文字の異なる文字がこれら文字で識別される異なる予 め規定されたフォントを持つことができ、かつ 予め規定されたフォント記述をアクセスして、新たなフォント記述を生成する 前記ステップが、前記異なる予め規定されたフォントの前記文字を含む前記受取 られた全ての文字に対して自動的に動作する請求項1ないし8のいずれか1つに 記載のコンピュータ化方法。 10.前記異なる予め規定されたフォントが、異なるフォント記述言語で規定さ れた関連する予め規定されたフォント記述を持つことができ、 予め規定されたフォント記述をアクセスする前記ステップが、前記異なるフォ ント記述言語で規定された予め規定されたフォント記述をアクセスし、 新たなフォント記述を生成する前記ステップが、前記異なるフォント記述言語 から予め規定されたフォント記述を、1つのフォント記述言語で規定される前記 新たなフォント記述に解釈することを含む請求項9記載のコンピュータ化方法。 11.予め規定されたフォント記述が1つのフォント記述言語でよく、前記フォ ント記述が別のフォント記述言語でよい請求項1ないし10のいずれか1つに記 載のコンピュータ化方法。 12.前記アクセスされた予め規定されたフォント記述の少なくとも1つが文字 −フォント形状をビット・マップ・パターンとして記述する請求項1ないし11 のいずれか1つに記載のコンピュータ化方法。 13.前記アクセスされた予め規定されたフォント記述の少なくとも所与の1つ が文字−フォント形状を一連のアウトライン線分として記述する請求項1ないし 12のいずれか1つに記載のコンピュータ化方法。 14.前記の所与の予め規定されたフォント記述と対応する新たなフォント記述 におけるアウトライン線分の順序と区切りが、前記の所与の予め規定されたフォ ント記述により記述された実際の形状の関数ではない所与の予め規定されたフォ ント記述におけるアウトライン線分の順序と区切りに依存しない請求項13記載 のコンピュータ化方法。 15.複数の文字を受取る前記ステップが少なくとも1つの非文字形状を受取る ことも含み、 予め規定されたフォント記述をアクセスする前記ステップがかかる非文字形状 の予め規定されたフォント記述をアクセスすることを含み、 新たなフォント記述を生成する前記ステップがかかる非文字形状に対する新た なフォント記述を生成することを含む請求項1ないし14のいずれか1つに記載 のコンピュータ化方法。 16.予め規定されたフォント記述をアクセスする前記ステップが予め規定され たフォントに分類される予め規定されたフォント記述をアクセスすることを含み 、 各々が所与の予め規定されたフォントに対応し、かつ前記所与の予め規定され たフォントと関連する予め規定されたフォント記述と対応する新たなフォント記 述を有する、新たなフォントへ新たなフォント記述を分類することを含む請求項 1ないし15のいずれか1つに記載のコンピュータ化方法。 17.新たなフォント記述を生成しかつ新たなフォント記述を新たなフォントへ 分類する前記ステップが、 各々の新たな論理的フォントにおける各文字に対して形状が関連する新たな物 理的フォントにおける前記文字の形状から新たな論理的フォントと関連する1組 の変形によって取得できるように、各々が関連する新たな物理的フォントを有す る新たな論理的フォントのファミリへ新たなフォントを分類するステップと、 新たな物理的フォント記述が文字の形状を該形状を表わす1つ以上のアウトラ インの各々に対する一連のアウトライン線分で記述する、新たな各物理的フォン トにおける複数の文字の各々に対して新たな複数のフォント記述を生成するステ ップと、 論理的フォントが関連する物理的フォントと、前記論理的フォントにおける文 字の形状を前記物理的フォントから得るための1組の変形とを記述する各論理的 フォントに対する新たな論理的フォント記述を生成するステップと、 を含む請求項16記載のコンピュータ化方法。 18.アクセスされた予め規定された各フォント記述により規定される文字−フ ォント形状の幾何学的モデルを生成するモデリング・ステップを更に含み、該モ デルが前記文字−フォント形状の1つ以上のアウトラインを表わし、 新たなフォント記述を生成する前記ステップが、アクセスされた予め規定され た各フォント記述に対して生成されたモデルから新たなフォント記述を生成する ことを含み、前記新たなフォント記述が前記モデルにより表わされる形状を一連 のアウトライン線分として記述する請求項1ないし17のいずれか1つに記載の コンピュータ化方法。 19.前記モデリングステップが、前記形状の関連する予め規定されたフォント 記述に明確に表わされない文字−フォント形状における特徴を明確に表わし、 かかる文字−フォント形状モデルに対して生成される新たなフォント記述の一 連のアウトライン線分が部分的に前記明確に表わされた特徴によって決定される 請求項18記載のコンピュータ化方法。 20.前記モデリング・ステップが、かかる文字−フォント形状のアウトライン における記述に依存しない点を識別するステップを含み、該点が、前記文字−フ ォント形状が関連する予め規定されたフォント記述により規定された方法とは独 立的にかかる各アウトライン形状の関数であり、 新たなフォント記述を生成する前記ステップが前記モデリング・ステップによ り識別される前記記述に依存しない点を用いて、前記新たなフォント記述におけ るアウトライン線分の終点を決定する請求項18または19のいずれか1つに記 載のコンピュータ化方法。 21.記述に依存しない点を識別する前記ステップが、所与の文字−フォント形 状のアウトラインにおける複数の記述に依存しない点を識別することを含み、 前記モデリング・ステップが更に、前記所与のアウトラインにおける2つの隣 接する記述に依存しない点間の前記所与のアウトラインの形状を前記2つの隣接 点で囲まれた近似化された線分で近似化することを含み、 新たなフォント記述を生成する前記ステップが、一連のアウトライン線分が前 記近似化されたアウトライン線分を含む新たなフォント記述を生成することを含 む請求項20記載のコンピュータ化方法。 22.記述に依存しない点を識別する前記ステップが、各文字−フォント形状ア ウトラインが各々が隣接する1対の前記点間に位置される一連の1つ以上の前記 近似化線分により厳密に近似化されることを可能にするため、前記アウトライン における前記点を充分に識別することを含み、 前記近似化ステップが、前記文字−フォント形状アウトラインの各々における 前記の記述に依存しない点の対の各々の間の前記近似化線分の1つを生成し、 新たなフォント記述を生成する前記ステップが、完全に前記近似化されたアウ トライン線分からなる一連のアウトライン線分として所与の文字−フォント形状 を記述する新たなフォント記述を生成する 請求項21記載のコンピュータ化方法。 23.前記モデリング・ステップが、記述に依存しない点として、横方向および 縦方向における極値を表わす前記文字−フォント形状アウトラインにおける点を 識別することを含み、 新たなフォント記述を生成する前記ステップは、前記文字−フォント形状モデ ルのアウトラインにおける前記極値として識別された点と対応する点における終 点を有するアウトライン線分を有する新たなフォント記述を生成することを含む 請求項20ないし22のいずれか1つに記載のコンピュータ化方法。 24.前記モデリング・ステップが、記述に依存しない点として、前記文字−フ ォ ント形状アウトラインにおける変曲点を表わすかかるアウトラインにおける点を 識別することを含み、 新たなフォント記述を生成する前記ステップが、前記文字−フォント形状モデ ルのアウトラインにおける前記変曲点として識別される点と対応する点における 終点を有するアウトライン線分を有する新たなフォント記述を生成することを含 む請求項20ないし23のいずれか1つに記載のコンピュータ化方法。 25.前記予め規定されたフォント記述が、各々が開始点と終点とを有する一連 のアウトライン線分として文字−フォント形状を記述し、1つの線分の終点が次 の開始点であり、 記述に依存しない点を識別する前記ステップが、予め規定されたフォント記述 により記述されたアウトライン線分のどの終点が前記予め規定されたフォント記 述により規定された形状のアウトラインにおけるコーナー点を表わすかを識別す ることを含み、コーナー点を識別する前記ステップが、 テストされる各終点およびそのアウトラインにおける2つの隣接する終点に対 して、前記3つの終点の各々の位置があり得る量子化誤差と対応する量だけ調整 されられるならば、前記3つの終点を通って直線を描くことができるかどうかを 知るためテストするステップと、 前記線を描くことができないと前記テストが判定するならば、テストされた終 点を記述に依存しないコーナー点として識別するステップとを含む請求項20な いし24のいずれか1つに記載のコンピュータ化方法。 26.直線を3つの終点を通って描くことができるかどうかを知るためテストす る前記ステップが、テストされる終点により囲まれたアウトライン線分の1つが ベジェ曲線である時動作する、前記テストの目的のため湾曲した前記線分の隣接 する終点として前記曲線における最も近い制御点を処理するステップを含む請求 項25記載のコンピュータ化方法。 27.直線を3つの終点を通って描くことができるかどうかを知るためテストす る前記ステップが、3つの点の各々の位置が、角度を最大化しようとする方向に おける最大量子化誤差と対応する量だけかかる3つの点の各々の位置が移動され るならば、テストされる終点とその2つの隣接する終点とにより形成される凹面 形の角度があれば、該凹面形角度を180度と等しいかあるいはこれより大きい 角度へ変更することができるかどうかをテストすることを含む請求項25または 26のいずれか1つに記載のコンピュータ化方法。 28.前記モデリング・ステップが、全ての文字−フォント形状のモデルに対し て用いられる標準的な規則セットに従ってかかる各モデルのアウトラインを順序 付けることを含み、前記規則は前記予め規定されたフォント記述の形状に依存し ない特徴から独立的であり、 新たなフォント記述を生成する前記ステップが、前記モデリング・ステップに よる対応するアウトラインの順序付けに従って新たな各フォント記述の一連のア ウトライン線分を順序付けすることを含む請求項20ないし27のいずれか1つ に記載のコンピュータ化方法。 29.記述に依存しない点を識別する前記ステップが、各文字−フォント形状モ デルの各アウトラインの全てに課される標準的な規則セットに従って、前記各ア ウトラインに対する開始点として前記点の1つを識別することを含み、前記規則 が前記予め規定されたフォント記述の何らかの形状に依存しない特徴とは独立的 にかかる各アウトラインの形状の関数であり、 前記モデリング・ステップが、アウトラインに対して識別される開始点で始ま る、各文字の形状モデルの各アウトラインの記述に依存しない点が読出される方 向を割当てることを更に含み、前記方向が標準的な規則セットに従って割当てら れ、該規則は前記予め規定されたフォント記述の形状に依存しない特徴とは独立 的であり、 新たなフォント記述を生成する前記手段が、前記アウトラインに対して識別さ れた開始点で開始する前記モデリング・ステップにより前記アウトラインに対し て割当てされた前記方向における所与の文字形状を記述する各アウトラインに対 する一連のアウトライン線分を生成する請求項20ないし28のいずれか1つに 記載のコンピュータ化方法。 30.個々のアクセスされた予め規定されたフォント記述により記述された文字 −フォント形状が、各々が1つの外側のアウトラインとゼロ以上の内側のアウト ラインをを有する、1つ以上の個々の形状あるいは象形部からなり、 前記モデリング・ステップが、 所与の所定のフォント記述により規定されたどのアウトラインが同じ象形部 と関連させられるか、および同じ象形部と関連するどのアウトラインが外側ある いは内側のアウトラインであるかを判定するステップと、 それぞれ外側および内側のアウトラインに対する異なる標準化された規則に 従ってモデル化された各外側および内側のアウトラインにおける開始点をマーク するステップとを含み、前記規則が前記象形部の全てに対して用いられ、かつ前 記の予め規定されたフォント記述が記述する文字−フォント形状において固有で ない予め規定されたフォント記述の特質とは独立的であり、 アクセスされた予め規定された各フォント記述に対して生成された新たなフォ ント記述が、該予め規定されたフォント記述に対してモデル化された各アウトラ インの形状を、前記モデリング・ステップにより対応するモデル・アウトライン に対してマークされた開始点と対応する点で開始する一連のアウトライン線分と して記述する請求項20ないし29のいずれか1つに記載のコンピュータ化方法 。 31.前記モデリング・ステップが、 異なるモデルからのどのアウトラインが類似する形状を共有するかを判定する ため、異なるアクセスされた予め規定されたフォント記述に対して生成された文 字−フォント形状モデルのアウトラインを比較するステップと、 類似する形状を共有するようにアウトラインが前記比較ステップにより判定さ れる表示を格納するステップとを含み、 新たなフォント記述を生成する前記ステップが、 前記の共有される各形状を規定するかかる共有された形状に対する共通のFO Sを一連のアウトライン線分として生成するステップと、 共有される形状を含む文字−フォント形状に対する新たなフォント記述に、該 共有形状に対する共通フォント記述の照合によって共有形状を規定する前記一連 のアウトライン線分を記述させるステップとを含む請求項20ないし30のいず れか1つに記載のコンピュータ化方法。 32.アウトラインを比較する前記ステップが、異なる予め規定されたフォント と関連する予め規定されたフォント記述により規定された文字−フォント形状の モデルのアウトラインを比較することができ、 共有される形状に対する共通の記述を生成する前記ステップが、前記異なる予 め規定されたフォントと関連する前記予め規定されたフォント記述により規定さ れる文字−フォント形状のモデル間に共有される形状に対する前記共通の記述を 生成することができる請求項31記載のコンピュータ化方法。 33.アウトラインを比較する前記ステップが、異なるフォント記述言語で書か れた予め規定されたフォント記述により規定される文字−フォント形状のアウト ラインを比較することができ、 共有される形状に対する共通の記述を生成する前記ステップが、異なるフォン ト記述言語で書かれた前記予め規定されたフォント記述により規定される文字− フォント形状のモデル間に共有される形状に対する前記共通記述を生成すること ができる請求項31または32のいずれか1つに記載のコンピュータ化方法。 34.アウトラインを比較する前記ステップが、かかるアウトラインのサイズお よび位置とは独立的に前記比較を行い、その結果類似する形状を持つが異なるサ イズおよび位置を有する異なる文字−フォント・モデルにおけるアウトラインが 類似する形状を持つものとして取扱うことができる請求項31ないし33のいず れか1つに記載のコンピュータ化方法。 35.前記モデリング・ステップが更に、1つ以上の前記文字−フォント形状モ デルの各アウトラインの組合わせに対するシグネチャを生成することを含み、該 シグネチャは対応する予め規定されたフォント記述の形状に依存しない特徴とは 独立的であり、かつ該シグネチャが各々前記組合わせのアウトラインの形状につ いての抽象概念を表わす標準的な順序を持つ一連のデータ・ワードを含む前記文 字−フォント形状モデルの1つ以上のアウトラインの組合わせに対するシグネチ ャを生成することを含み、 アウトラインを比較する前記ステップが、異なるアウトラインの組合わせと関 連する前記シグネチャを比較すること、および前記組合わせに対するシグネチャ が一致するならば、アウトラインの異なる組合わせの実際の形状のみを比較する ことを含む請求項31ないし34のいずれか1つに記載のコンピュータ化方法。 36.シグネチャを比較する前記ステップが、 前記アウトラインの組合わせをそれらのシグネチャに基いて分類するステップ と、 所与のシグネチャが前記分類されたシグネチャのどれかと一致するかどうかを 判定するため、前記分類を用いて前記シグネチャの所与の1つに比較されるべき 前記シグネチャの数を減少するステップとを含む請求項35記載のコンピュータ 化方法。 37.前記モデリング・ステップが、前記モデルの1つ以上の接触しない中ベタ の形状の各々の境界を表わす文字−フォント形状の1つ以上のアウトラインを一 緒に象形部に分類し、 アウトラインを比較する前記ステップが、異なる象形部と関連するアウトライ ンのグループを比較して、その結果1つの象形部に分類された全てのアウトライ ンが別の象形部に分類された対応する全てのアウトラインと一致する場合にのみ 一致が見出され、 類似する形状を共有するアウトラインの表示を格納する前記ステップが、文字 −形状モデルが類似するアウトライン形状を共有すると判定され、これにより類 似する象形部であるかの表示を格納し、 共通のフォント記述を生成する前記ステップが、同じアウトライン形状の分類 を共有する類似象形部に対するかかる共通の記述を生成し、 新しいフォント記述に共通にフォント記述を照合して共有される形状を規定さ せる前記ステップが、類似する象形部を含む文字−フォント形状モデルに対する 新たなフォント記述に、類似する象形部に対して共通のフォント記述を照合して 類似する象形部を規定する一連のアウトライン線分を記述させる請求項31ない し36のいずれか1つに記載のコンピュータ化方法。 38.前記モデリング・ステップが、均一な規則に従って各象形部の1つ以上の アウトラインを順序付けすることを含み、その結果前記象形部のアウトラインの 形状の比較ステップを早めることができる請求項37記載のコンピュータ化方法 。 39.前記モデリング・ステップが、 各文字−フォント形状の各アウトラインを、各々が湾曲し得るかあるいは直線 であり得る1つ以上の一連のアウトライン線分としてモデル化するステップと、 前記湾曲したアウトライン線分の各々に対して、各湾曲アウトライン線分を部 分曲線の各終点間のベクトルから指定される最大距離より小さい全ての偏差であ る部分曲線へ分割するのに必要な反復的細分割の深さを表わす深さ係数を計算す るステップとを含み、該深さ計算ステップが、 前記個々の湾曲したアウトライン線分の各々において反復的細分割を実行す ることにより前記深さ係数を計算するステップを含み、細分割の所与の各反復に おいて 所与の反復が多数の部分曲線になるように実行される曲線の部分を分割し 、 所与の反復により生成される各部分曲線と、該部分曲線の終点間のベクト ル間の最大偏差が特定量より小さいかどうかを測定し、 所与の反復により生成される全ての部分曲線に対して最大偏差が前記特定 量より小さい時、前記反復プロセスのその時の分岐を停止し、 所与の反復により生成される任意の部分曲線に対する最大偏差が前記特定 量より大きい時、終点間のベクトルからの最大の偏差を持つ所与の反復により生 成される部分曲線におけるより深い反復を選択的に実行し、 前記所与の反復の反復深さのカウントを保持するステップを実行すること を含み、 当該アウトライン線分に対して実行された全ての反復的細分割の間カウント を保持するステップにより生成される反復的深さのより大きなカウントについて 前記湾曲アウトライン線分の各々に対する計算された深さ係数をバイアスするス テップを前記深さ計算ステップが含み、 新たなフォント記述を生成する前記ステップが、所与の文字−フォント形状モ デルにおける湾曲したアウトライン線分と対応するアウトライン線分が前記モデ リング・ステップにより計算された対応する深さ係数により表示される新たなフ ォント記述を生成する請求項18ないし38のいずれか1つに記載のコンピュー タ化方法。 40.請求項1ないし39のいずれか1つの方法を実行する装置。 41.請求項3の方法により生成される取外し自在の大容量記憶媒体。
Applications Claiming Priority (3)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US08/250,372 | 1994-05-27 | ||
| US08/250,372 US5583978A (en) | 1994-05-27 | 1994-05-27 | Apparatuses and methods for creating and using portable fonted texts with embedded automatically-created font descriptions |
| PCT/US1995/006923 WO1995033247A1 (en) | 1994-05-27 | 1995-05-24 | Apparatus and methods for creating and using portable fonts |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH10500233A true JPH10500233A (ja) | 1998-01-06 |
Family
ID=22947458
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP8501187A Pending JPH10500233A (ja) | 1994-05-27 | 1995-05-24 | 移植可能なフォントを生成使用する装置および方法 |
Country Status (6)
| Country | Link |
|---|---|
| US (2) | US5583978A (ja) |
| JP (1) | JPH10500233A (ja) |
| AU (1) | AU2659695A (ja) |
| CA (1) | CA2191332C (ja) |
| GB (1) | GB2302784B (ja) |
| WO (1) | WO1995033247A1 (ja) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR101367813B1 (ko) * | 2013-03-06 | 2014-02-27 | 한국과학기술원 | 스트링 검색을 이용한 세그먼트 테스트 기반의 코너 검출 가속기 |
Families Citing this family (58)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP3226734B2 (ja) * | 1994-10-19 | 2001-11-05 | キヤノン株式会社 | データ変換装置および方法 |
| US5771034A (en) * | 1995-01-23 | 1998-06-23 | Microsoft Corporation | Font format |
| JPH0916149A (ja) * | 1995-04-28 | 1997-01-17 | Canon Inc | 文字処理装置、文字処理方法、及び、メモリ |
| GB2300991B (en) * | 1995-05-15 | 1997-11-05 | Andrew Macgregor Ritchie | Serving signals to browsing clients |
| JP3535266B2 (ja) * | 1995-06-26 | 2004-06-07 | 富士通株式会社 | 外字拡張利用方式 |
| US5845282A (en) * | 1995-08-07 | 1998-12-01 | Apple Computer, Inc. | Method and apparatus for remotely accessing files from a desktop computer using a personal digital assistant |
| US5910805A (en) * | 1996-01-11 | 1999-06-08 | Oclc Online Computer Library Center | Method for displaying bitmap derived text at a display having limited pixel-to-pixel spacing resolution |
| US5893915A (en) * | 1996-04-18 | 1999-04-13 | Microsoft Corporation | Local font face selection for remote electronic document browsing |
| JP3487738B2 (ja) | 1996-08-26 | 2004-01-19 | 富士通株式会社 | ネットワーク環境におけるフォント処理装置および方法 |
| JP3754153B2 (ja) * | 1996-11-11 | 2006-03-08 | ヒューレット・パッカード・カンパニー | ネットワークにおける文書表示システム |
| WO1998036630A2 (en) * | 1997-02-10 | 1998-08-27 | Yissum Research Development Company Of The Hebrew University Of Jerusalem | Parametric font models based on features and constraints |
| US5940083A (en) * | 1997-04-01 | 1999-08-17 | Novell, Inc. | Multi-curve rendering modification apparatus and method |
| JP3683387B2 (ja) | 1997-08-01 | 2005-08-17 | シャープ株式会社 | ネットワークコンピュータ内蔵プリンタおよびこれを備えたコンピュータネットワークシステム |
| EP0902378A3 (en) * | 1997-09-15 | 2003-07-16 | Canon Kabushiki Kaisha | A font architecture and creation tool for producing richer text |
| IL122229A (en) * | 1997-11-17 | 2001-04-30 | Seal Systems Ltd | True-life electronic signatures |
| US7069453B1 (en) * | 1997-11-24 | 2006-06-27 | Xerox Corporation | Paper document satchels |
| EP0952554A3 (en) * | 1998-02-26 | 2003-01-08 | Canon Kabushiki Kaisha | Information processing apparatus and information processing method |
| US6012063A (en) * | 1998-03-04 | 2000-01-04 | Starfish Software, Inc. | Block file system for minimal incremental data transfer between computing devices |
| US6552727B2 (en) | 1998-03-27 | 2003-04-22 | Microsoft Corp. | Method for authoring hints for a font using a graphical user interface |
| AUPP265098A0 (en) * | 1998-03-27 | 1998-04-23 | Canon Kabushiki Kaisha | Opacity based colour interference texture |
| US6249908B1 (en) * | 1998-03-27 | 2001-06-19 | Microsoft Corporation | System and method for representing graphical font data and for converting the font data to font instructions |
| US6134567A (en) * | 1998-06-03 | 2000-10-17 | Hewlett-Packard Company | High resolution alphanumeric character generation |
| JP2000099501A (ja) * | 1998-09-17 | 2000-04-07 | Internatl Business Mach Corp <Ibm> | 文書データへの情報の埋め込み方法およびシステム |
| US6498608B1 (en) * | 1998-12-15 | 2002-12-24 | Microsoft Corporation | Method and apparatus for variable weight outline emboldening of scalable outline fonts |
| US6675357B1 (en) | 1999-01-29 | 2004-01-06 | International Business Machines Corporation | Method and apparatus for matching system and device fonts |
| US6678410B1 (en) * | 1999-02-17 | 2004-01-13 | Adobe Systems Incorporated | Generating a glyph |
| US6697080B2 (en) * | 1999-07-08 | 2004-02-24 | Intel Corporation | Scalable smoothing of generalized polygons |
| US6967728B1 (en) * | 1999-07-23 | 2005-11-22 | Electronics For Imaging, Inc. | Reusable and transferable printer driver preference system |
| JP3963614B2 (ja) * | 1999-08-20 | 2007-08-22 | 富士フイルム株式会社 | データ通信システムならびにデータ通信システムを構成するサーバおよびクライアント・コンピュータ |
| US6992671B1 (en) * | 1999-12-09 | 2006-01-31 | Monotype Imaging, Inc. | Method and apparatus for compressing Bezier descriptions of letterforms in outline fonts using vector quantization techniques |
| JP2001260498A (ja) * | 2000-03-17 | 2001-09-25 | Canon Inc | 印刷装置及びその制御方法 |
| US7197706B1 (en) | 2000-08-30 | 2007-03-27 | Celartem Inc. | Method and system for ensuring accurate font matching in documents |
| US8522127B2 (en) | 2001-07-16 | 2013-08-27 | Robert G. Adamson, III | Allowing operating system access to non-standard fonts in a network document |
| US10810355B1 (en) | 2001-07-16 | 2020-10-20 | Clantech, Inc. | Allowing operating system access to non-standard fonts in a network document |
| US7251365B2 (en) * | 2002-07-03 | 2007-07-31 | Vadim Fux | Scalable stroke font system and method |
| JP4065504B2 (ja) * | 2002-07-17 | 2008-03-26 | キヤノン株式会社 | 画像形成システム、画像配信装置、及び画像形成方法 |
| US7006095B2 (en) * | 2003-03-25 | 2006-02-28 | Mitsubishi Electric Research Laboratories, Inc. | Method for typesetting a set glyphs represented as a set of two dimensional distance fields |
| US8689101B2 (en) | 2004-02-27 | 2014-04-01 | Blackberry Limited | Font data processing system and method |
| US10509915B2 (en) * | 2004-04-01 | 2019-12-17 | Google Llc | Establishing an interactive environment for rendered documents |
| US20060017946A1 (en) * | 2004-07-26 | 2006-01-26 | Peiro Jose A | Font and text management in documents |
| JP2006107033A (ja) * | 2004-10-04 | 2006-04-20 | Canon Inc | フォント情報の埋め込み機能を備える情報処理装置及び情報処理方法及びプログラム並びに記憶媒体 |
| US7752543B2 (en) * | 2006-02-17 | 2010-07-06 | Microsoft Corporation | Applying effects to a merged text path |
| JP2007230027A (ja) * | 2006-02-28 | 2007-09-13 | Fuji Xerox Co Ltd | 画像形成装置 |
| GB0620238D0 (en) * | 2006-10-12 | 2006-11-22 | Ibm | A method and apparatus for converting a text-based email message to an email message comprising image-based fonts |
| US8612469B2 (en) * | 2008-02-21 | 2013-12-17 | Globalenglish Corporation | Network-accessible collaborative annotation tool |
| US8755604B1 (en) * | 2008-06-05 | 2014-06-17 | CVISION Technologies, Inc. | Using shape similarity methods to improve OCR speed and accuracy |
| JP2010111088A (ja) * | 2008-11-10 | 2010-05-20 | Seiko Epson Corp | 画像形成装置 |
| KR101035744B1 (ko) * | 2008-12-08 | 2011-05-20 | 삼성전자주식회사 | 카메라를 이용한 문자 인식 장치 및 방법 |
| US8381101B2 (en) * | 2009-11-16 | 2013-02-19 | Apple Inc. | Supporting platform-independent typesetting for documents |
| US8947438B2 (en) * | 2011-08-01 | 2015-02-03 | Microsoft Corporation | Reducing font instructions |
| US9245361B2 (en) | 2011-09-01 | 2016-01-26 | Microsoft Technology Licensing, Llc | Consolidating glyphs of a font |
| CN103186365B (zh) * | 2011-12-30 | 2015-08-12 | 北大方正集团有限公司 | 一种根据字形轮廓变化生成控制指令的方法及系统 |
| US9715484B1 (en) | 2013-03-04 | 2017-07-25 | Amazon Technologies, Inc. | Providing different font hints based on device, text and font context |
| US9536279B2 (en) | 2013-03-11 | 2017-01-03 | Google Technology Holdings LLC | Method and apparatus for creating a graphics data representation and scaling a graphic represented thereby |
| US9317489B2 (en) | 2013-06-27 | 2016-04-19 | Adobe Systems Incorporated | Vector graphic conversion into fonts |
| US9465776B2 (en) * | 2013-11-26 | 2016-10-11 | Adobe Systems Incorporated | Filtering fonts based on a selection of glyphs |
| US10657312B2 (en) | 2017-11-17 | 2020-05-19 | Adobe Inc. | Deploying new font technologies to legacy operating systems |
| US11520970B2 (en) | 2019-09-23 | 2022-12-06 | Snap Inc. | Personalized fonts |
Family Cites Families (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US4785391A (en) * | 1986-02-07 | 1988-11-15 | Bitstream Inc. | Automated bitmap character generation from outlines |
| US5099435A (en) * | 1989-03-31 | 1992-03-24 | Bitstream, Inc. | Method and apparatus for conversion of outline characters to bitmap characters |
| US5167016A (en) * | 1989-12-29 | 1992-11-24 | Xerox Corporation | Changing characters in an image |
| JP3189276B2 (ja) * | 1990-09-12 | 2001-07-16 | ブラザー工業株式会社 | データ変換装置 |
| JP3236015B2 (ja) * | 1990-10-09 | 2001-12-04 | キヤノン株式会社 | 情報処理装置及び方法 |
| US5301267A (en) * | 1991-09-27 | 1994-04-05 | Adobe Systems Incorporated | Intelligent font rendering co-processor |
| US5355449A (en) * | 1991-09-30 | 1994-10-11 | Destiny Technology Corporation | Method and apparatus for outline font character generation in dot matrix devices |
| EP0583548A1 (en) * | 1992-06-30 | 1994-02-23 | Hewlett-Packard Company | Method for automatic font matching when sharing applications |
| JP2964841B2 (ja) * | 1993-07-15 | 1999-10-18 | ブラザー工業株式会社 | データ変換装置 |
-
1994
- 1994-05-27 US US08/250,372 patent/US5583978A/en not_active Expired - Lifetime
-
1995
- 1995-05-24 US US08/448,792 patent/US5577177A/en not_active Expired - Lifetime
- 1995-05-24 AU AU26596/95A patent/AU2659695A/en not_active Abandoned
- 1995-05-24 WO PCT/US1995/006923 patent/WO1995033247A1/en not_active Ceased
- 1995-05-24 JP JP8501187A patent/JPH10500233A/ja active Pending
- 1995-05-24 GB GB9624785A patent/GB2302784B/en not_active Expired - Fee Related
- 1995-05-24 CA CA002191332A patent/CA2191332C/en not_active Expired - Fee Related
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| KR101367813B1 (ko) * | 2013-03-06 | 2014-02-27 | 한국과학기술원 | 스트링 검색을 이용한 세그먼트 테스트 기반의 코너 검출 가속기 |
Also Published As
| Publication number | Publication date |
|---|---|
| GB2302784A (en) | 1997-01-29 |
| US5577177A (en) | 1996-11-19 |
| US5583978A (en) | 1996-12-10 |
| AU2659695A (en) | 1995-12-21 |
| GB9624785D0 (en) | 1997-01-15 |
| GB2302784B (en) | 1998-06-24 |
| CA2191332C (en) | 2000-10-17 |
| WO1995033247A1 (en) | 1995-12-07 |
| CA2191332A1 (en) | 1995-12-07 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US5583978A (en) | Apparatuses and methods for creating and using portable fonted texts with embedded automatically-created font descriptions | |
| US5781714A (en) | Apparatus and methods for creating and using portable fonts | |
| Tosi | Matplotlib for Python developers | |
| Fry | Visualizing data: Exploring and explaining data with the processing environment | |
| Mitchell et al. | Digital design media | |
| US11423206B2 (en) | Text style and emphasis suggestions | |
| US5649193A (en) | Document detection system using detection result presentation for facilitating user's comprehension | |
| Horton | Beginning JavaTM 2 | |
| CN102016837B (zh) | 中文型文字及文字偏旁的分类及检索的系统与方法 | |
| US20120054601A1 (en) | Methods and systems for automated creation, recognition and display of icons | |
| Falck et al. | Freecad [How-To] | |
| KR20060049081A (ko) | 계층적 리스트 및 아웃라인을 파싱하기 위한 방법 및시스템 | |
| US8943431B2 (en) | Text operations in a bitmap-based document | |
| Westra | Python geospatial analysis essentials | |
| US20070204217A1 (en) | Exporting a document in multiple formats | |
| CN1154169A (zh) | 创建并使用可移植字体的设备与方法 | |
| US20260030286A1 (en) | Multimodal ai-based search for digital assets | |
| Fennir et al. | Using gans for domain adaptive high resolution synthetic document generation | |
| Bunn | Learn python visually: creative coding with processing. py | |
| Fruchterman | DAFS: A standard for document and image understanding | |
| CN118916028A (zh) | 前端代码生成方法、装置、存储介质及电子设备 | |
| CN1804870B (zh) | 上下文树中的分析替换 | |
| Bonnici et al. | Interactive Sketch-based Interfaces and Modelling for Design | |
| Phang | Mastering Front-End Web Development (HTML, Bootstrap, CSS, SEO, Cordova, SVG, ECMAScript, JavaScript, WebGL, Web Design and many more.): 14 Books in 1. Introducing 200+ Extensions. An Advanced Guide. | |
| US20250299511A1 (en) | Generating and applying a font genome to inform font selection |