説明

グリフのレンダリング及びエンコーディング

【課題】 コンパクトにフォント情報をエンコードするための方法、システム、及び装置であって、コンピュータプログラムプロダクトを包含している。
【解決手段】 一つの側面においては、複数の要素からなるライブラリを識別することを包含する方法が提供され、該複数の要素からなるライブラリ内の各要素は一つのアウトライン及び一つ又はそれ以上のパラメータと関連している。該複数の要素からなるライブラリにおける夫々の要素に対する一つ又はそれ以上の参照を持っているグリフが識別される。各参照は該夫々の要素と関連する該パラメータの内の一つ又はそれ以上に対する値を特定する。該グリフは、該グリフによって参照される各夫々の要素に基づいてレンダリングされる。各参照によって特定される該一つ又はそれ以上のパラメータの値がレンダリングされる要素の外観に影響を与える。

【発明の詳細な説明】
【技術分野】
【0001】
本開示は情報エンコーディングに関するものであって、更に詳細には、フォントのコンパクトな表現に関するものである。
【背景技術】
【0002】
フォントは、典型的に特定の一つのスタイル又はタイプフェースを持った複数のグリフからなる一つのファミリーを記述するものである。フォントにおける各個別的なグリフは、通常、一つの言語における個別的なキャラクタを表し、且つフォントは、潜在的に、多数の言語に対するグリフを包含することが可能である。各グリフは、一つのキャラクタがどのように見えるかを記述する。コンピュータフォントは、典型的に、一つのファイル内に包含されている一つのフォントのデジタルエンコーディングであり、それは、通常、キャラクタがどのようにしてディスプレイ装置上でレンダリングされるか、プリンタによって印刷されるか、又はその両方を特定するために使用される。
【0003】
アウトラインフォントは、各グリフが典型的にアウトラインを記述する一連の点として特定されるコンピュータフォントである。例えば、図1Aは、アウトラインフォントにおいて特定されることがあるような、一連のライン(line)(例えば、ライン110)とカーブ(curve)(例えば、カーブ120)として表されているグリフ100を例示している。グリフ100における各ラインまたはカーブは、各ライン又はカーブの端部の水平及び垂直位置を特定する少なくとも1個の点130を包含している。グリフ100のレンダリング195を図1Bに例示してある。
【0004】
各グリフは、多数の非隣接成分から構成することが可能である。例えば、グリフ100は成分140,150,160を包含しており、それらの各々は互いに離れている。各成分のアウトラインは、典型的に、一連のライン及びカーブとして特定される一つ又はそれ以上の輪郭によって記述される。例えば、フォント成分150は3個の輪郭155A,B,Cを包含している。特にアジアにおける言語などの多数の言語からのキャラクタをサポートするフォントは、数万個ではないとしても数千個のグリフ及びグリフの構成要素であるアウトラインをエンコードする場合がある。
【発明の概要】
【発明が解決しようとする課題】
【0005】
一般的に、本明細書において記載する要素の一つの側面は、複数の要素からなるライブラリを識別するアクションを包含する方法で実現することが可能であり、その場合に該複数の要素からなるライブラリにおける各要素は一つのアウトライン及び一つ又はそれ以上のパラメータと関連している。
【課題を解決するための手段】
【0006】
該複数の要素からなるライブラリにおける夫々の要素に対する一つ又はそれ以上の参照を有している一つのグリフが識別される。各参照は夫々の要素と関連するパラメータの内の一つ又はそれ以上のものに対する値を特定する。そのグリフは、該グリフによって参照される各夫々の要素に基づいてレンダリングされる。各参照によって特定される該一つ又はそれ以上のパラメータの値は、レンダリングされる要素の外観に影響を与える。この側面のその他の実施例は、対応するシステム、装置、及びコンピュータプログラムプロダクトを包含している。
【0007】
これら及びその他の実施例は、オプションとして、以下の特徴の内の一つ又はそれ以上を包含することが可能である。該複数の要素からなるライブラリ内の各要素は、該複数の要素からなるライブラリ内のその他の全ての要素から別のものとすることが可能である。該グリフをレンダリングすることは、該関連する一つ又はそれ以上のパラメータの値に基づいて該グリフによって参照される各夫々の要素と関連する各アウトラインをレンダリングすることを包含することが可能であり、その場合に、一つ又はそれ以上のパラメータの各々の値は該アウトラインの形状に影響を与える。一つの要素に関連している該一つ又はそれ以上のパラメータの各々は該関連するアウトラインの変換を記述することが可能であり、その場合に、各変換は、レンダリングされた場合に、そのアウトラインの形状に影響を与える。該変換は、該アウトラインの高さ、幅、回転、厚さ、テーパ、エクステンション、半径、及び曲率の内の一つ又はそれ以上に影響を与える場合がある。各変換はアウトラインの一部の形状に影響を与える場合がある。
【0008】
一般的に、本明細書に記載する内容の別の側面は、複数の要素からなるライブラリをエンコードするアクションを包含する方法に実現することが可能であり、その場合に、該複数の要素からなるライブラリの各要素はアウトライン及び一つ又はそれ以上のパラメータに関連している。該複数の要素からなるライブラリの各要素は該ライブラリ内のその他の全ての要素とは別個である。該複数の要素からなるライブラリ内の夫々の要素に対する複数の参照に基づいて一つのグリフがエンコードされる。各参照は、該関連する一つ又はそれ以上のパラメータの内の一つ又はそれ以上に対する値を包含している。この側面のその他の実施例は、対応するシステム、装置、及びコンピュータプログラムプロダクトを包含している。
【0009】
これら及びその他の実施例は、オプションとして、以下の特徴の内の一つ又はそれ以上を包含することが可能である。一つ又はそれ以上のパラメータの各々は、該要素の関連するアウトラインの変換に関連付けることが可能である。変換はアウトラインの形状に影響を与える場合があり且つ以下のもの、即ち高さ、幅、回転、厚さ、テーパ、エクステンション、半径、及び曲率の内の一つ又はそれ以上を包含することが可能である。該参照におけるパラメータの値は、前にエンコードした参照の値と相対的なオフセットを使用してエンコードすることが可能である。各パラメータの最小絶対値を決定することが可能である。該グリフのエンコーディングは、該複数個の参照の内の各々に対する特定の要素のパラメータに対する値を特定し且つ特定の要素を一度だけ識別することによって、特定の要素を参照する複数個の参照のエンコーディングを包含する場合がある。該グリフのエンコーディングは、可変バイトエンコーディングを使用して値をエンコーディングすることを包含する場合がある。
【0010】
一般的に、本明細書に記載する内容の一つの側面は、グリフを格納するデータ構造を包含しているコンピュータにより読み取り可能な媒体内に実施させることが可能である。該データ構造は、複数の要素からなるライブラリ内の一つの要素に対する一つ又はそれ以上の参照を包含しており、その場合に、該複数の要素からなるライブラリ内の各要素はアウトラインと関連している。該データ構造は、又、該一つ又はそれ以上の参照の各々に対する複数の値を包含しており、該一つ又はそれ以上の値は該一つ又はそれ以上の参照の夫々の要素と関連するアウトラインの形状を特定する。
【発明の効果】
【0011】
本明細書に記載する内容の特定の実施例は、以下の利点の内の一つ又はそれ以上を実現するために実施することが可能である。各グリフの構成要素に対するアウトラインを特定することと比較して、非常に少ない格納空間を必要とする態様でフォントを特定し且つエンコードすることが可能である。一つ又はそれ以上の輪郭としてではなく、アウトライン要素の結合としてグリフを特定し且つエンコードすることが可能である。アウトライン要素の結合を使用してフォントのグリフをデザインすることは、デザイン労力を軽減させることが可能である。グリフ内の要素を再使用することは、グリフ内及びグリフ間の一貫性を改善し、そのことは、可読性及び品質の両方に対して重要である。グリフ内のアウトライン要素の精密な形状に影響を与えるパラメータの数値は、グリフエンコーディングの寸法を減少させるためにスタックさせることが可能である。グリフ内の数値は、エンコードされたグリフの寸法を更に減少させるために、相対的オフセットとしてエンコードされるか又は特定された可変バイトとすることが可能である。
【0012】
本発明の一つ又はそれ以上の実施例の詳細は、添付の図面及び以下の説明中に記載する。本発明のその他の特徴、側面、及び利点は、該説明、図面、及び特許請求の範囲から明らかなものとなる。
【図面の簡単な説明】
【0013】
【図1A】アウトラインフォントで特定された場合のグリフの例示。
【図1B】図1Aに例示されているグリフのレンダリングの例示。
【図2A】その構成要素が種々の要素と関連する幾つかのアウトラインを包含しているグリフの例示。
【図2B】図2Aに例示されているグリフのレンダリングの例示。
【図3】複数の要素のライブラリにおける要素を参照するフォントのグリフの幾つかを包含するフォントの例示。
【図4】グリフにおいて参照される要素と関連するパラメータの値がどのようにしてグリフにおけるアウトラインの外観に影響を与えるかの例示。
【図5】複数の要素からなるライブラリにおける要素への参照を包含するグリフをレンダリングするフローチャート。
【図6】複数の要素からなるライブラリからの要素を参照するグリフをレンダリングするシステムのブロック図。
【発明を実施するための形態】
【0014】
図2Aは、その構成要素210A−Cが、各々が夫々の要素(例えば、要素250−260)と関連している幾つかのアウトライン(例えば、アウトライン250A−C)を包含しているグリフ200の例示である。各アウトラインは、該グリフ内の他のアウトラインから非接続である。例えば、アウトライン250Aは、該グリフ内のその他の全てのアウトライン(例えば、アウトライン260A−C)とは分離している。一つの要素と関連する各アウトラインは、一つ又はそれ以上の輪郭によって特定されるアウトラインであり、該輪郭は各々一連のライン及びカーブ(例えば、二次又は三次ベジェ曲線)によって特定される。
【0015】
レンダリングされたグリフは、複数回特定の要素と関連するアウトラインを包含することが可能である。例えば、アウトライン250B及びアウトライン250Cは類似した外観を有しており、これらのアウトラインはそれらの相対的な垂直位置が異なるに過ぎない。該グリフは、同一の要素を複数回参照するものと言うことが可能である。アウトライン250A及び250Bも類似しているが、異なる位置を有することに加えて、これらのアウトラインはそれらの相対的な垂直寸法も異なっている。
【0016】
各要素は、一つのアウトライン及びアウトラインの長さ及び幅及びアウトラインの垂直及び水平位置等の該アウトラインの外観を特定する一つ又はそれ以上のパラメータと関連している。一つの要素が一つのグリフによって参照される場合に、レンダリングされたグリフは該参照される要素と関連するアウトラインを包含している。各要素参照は、該グリフにおけるアウトラインの外観を決定する該要素のパラメータの各々に対する値を包含している。従って、要素のパラメータの各々の値はグリフ特定的である。幾つかの実現例においては、該パラメータがデフォルト値と関連している場合には、該グリフのパラメータの各々に対する値を特定することは必要ではない。
【0017】
幾つかの実現例において、幾つかのパラメータは全ての要素に対して適用することが可能なものではない場合がある。例えば、要素280は、該要素の厚さを指示するパラメータと、該要素の曲率を特定する別のパラメータとを包含することが可能である。前者のパラメータは、又、要素250Aに対して適用可能なものであるが、後者のパラメータはそうではない。パラメータ及び1個の要素のアウトラインの外観にあたえるそれらの潜在的な影響は図4を参照して更に詳細に説明する。
【0018】
グリフは、一つ又はそれ以上の予め定義した要素及び各要素のパラメータの特定された値を参照することによって特定することが可能である。例えば、グリフ200を特定することは、三つの別個のインスタンスにおける要素260に対する参照を包含することが可能である。各参照は該要素のパラメータに対する値を包含しており、その場合に、該値は該グリフにおける該要素のアウトラインの位置及び形状を記述する。
【0019】
一般的に、グリフは、又、要素と関連していないアウトラインを包含することが可能である。例えば、アウトライン240は要素ではない場合があり且つ関連するパラメータを有するものではなく、このアウトラインは形状に対する参照ではなく、一連のラインセグメントとして該グリフ中において特定することが可能である。幾つかの実現例においては、特定のフォントに対して、各要素は複数の要素からなるライブラリから識別することが可能である。
【0020】
図2Bは、図2Aに例示されているグリフ200のレンダリング295を例示している。該特定されたグリフにおける各アウトラインは中実領域としてレンダリングされ、三つの別個のグリフ構成要素のみを包含すると思われるグリフをレンダリングする。例えば、グリフ200における構成要素201Cは幾つかのアウトラインを包含しているが、レンダリングされたアウトラインは、理想的には、単一のアウトライン(例えば、図1Bにおけるレンダリング195と比較して)のみを使用して特定される対応する構成要素(例えば、構成要素160)のレンダリングと同一に現れる。一般的に、グリフのレンダリングは、ドロップシャドウ、アウトライン、三次元エクスツルージョン、グリフの画像へのラスター化、又は画像マスクとしての使用のためなどのビジュアル効果を適用して、該グリフをカラーで又はカラーのシェードでレンダリングすることを包含することが可能である。幾つかの実現例において、図1Aに示したものと同様のアウトラインを図2Aに示したアウトライン要素から派生させることが可能である。
【0021】
グリフ200を特定することが必要な情報は、グリフ100を特定するために必要な情報と比較することが可能である。特に、構成要素140は各ライン及びカーブを特定するために少なくも48個の点を必要とし、各点は二つの値(例えば、水平及び垂直位置)から構成されていることに注意すべきである。グリフは、実際に、45個の点をはるかに越えるものを包含する場合がある。対照的に、構成要素210Aにおける8個の要素参照の各々は、各アウトラインの位置を特定するために8個の点及び各要素のパラメータに対して少なくとも8個の付加的な値を必要とする。従って、グリフ20の最大の構成要素を構成する8個の要素(例えば、24個の値)の各々のパラメータに対する値を識別し且つ与えるために必要な情報と比較して、アウトライン140(例えば、90個の値)を定義する点を特定するために一層多くの情報が必要である。
【0022】
図3は、複数の要素からなるライブラリ310内の要素を参照するフォントのグリフ350A−Cの幾つかを包含するフォント300の例示である。複数の要素からなるライブラリ310は、幾つかの要素を包含しており、その各々はそれらの別個のアウトライン(例えば、アウトライン320,330,340)によって例示されている。一般的に、各要素のアウトライン(例えば、アウトライン320,330,340)は、ライブラリ内の二つのアウトラインが同じ外観を有する(又は、夫々のいずれの要素のパラメータに従って変換された結果として同じ外観を有する)ことがないようにその他の全ての要素のアウトラインとは別である。例えば、幾つかの実現例においては、アウトライン330及び340は類似しているように見えるが、アウトライン330の側部はラインであり、一方アウトライン340の側部はカーブである。その他の実現例において、アウトライン330及び340は両方共同じである場合があるが、各アウトラインの関連する要素のパラメータは異なる場合がある。例えば、アウトライン340と関連する要素は該アウトラインの曲率に影響を与えるパラメータを包含する場合があり、一方、アウトライン330と関連する要素はそのようなパラメータを有するものではない。この様な実現例においては、アウトライン340の湾曲した変形例を必要とするグリフが該アウトラインの対応する要素及び適宜の曲率パラメータを参照し、一方、直線のアウトライン330から構成されるグリフは該アウトラインの曲率に関連する一つ又はそれ以上のパラメータに対する何ら付加的な値を包含することの必要性無で対応する要素を参照する。
【0023】
ライブラリ内の一つ又はそれ以上の要素は、フォント内のグリフの各々によって参照することが可能である。例えば、グリフ350Aは要素320,330,333,337,340を参照することが可能である。別のグリフ350Bは要素320,333,337を参照することが可能である。ライブラリ内の要素を参照することにより、フォント内の各グリフは、そのグリフがラインとカーブとのみを使用して特定される場合に必要とされるよりも一層少ない情報を使用して特定することが可能である。各要素は、特に視覚的類似性を示す多数のグリフを包含する複数のフォント(例えば、日本語の漢字及び伝統的且つ簡単化した中国語スクリプトにおいて使用されるキャラクタを包含する複数のフォント)の間でのフォント全体にわたってのグリフによって繰り返し参照されることが可能である。
【0024】
図4は、グリフ400において参照される要素と関連するパラメータの値(例えば、値410,415,425,435,445,450,455,460,465,470)がどのようにして該グリフにおけるアウトライン448,490A−C,497の外観に影響を与えるかを例示している。各要素は、該要素と関連するアウトラインがどのように該グリフ内において現れるかに影響を与える幾つかのパラメータと関連している。全ての要素は、該グリフ内のアウトラインの夫々の水平及び垂直位置を特定する2個の位置パラメータと関連している。例えば、アウトライン490Cの位置は、グリフ内に存在することのある原点407(例えば、該グリフのベースライン403上の最も左側の点)に対して又は前に特定した点に対してのx及びy座標(例えば、夫々、値410及び値445)として特定することが可能である。全ての要素は、又、該グリフ内の要素のアウトラインの位置ではなく形状に影響を与える少なくとも1個の変換パラメータと関連している(例えば、該アウトラインの幅、高さ又は曲率)。
【0025】
一般的に、要素のパラメータの各々は該要素の関連するアウトラインに対して適用することが可能な多様な変換の内の一つに対応している。各変換は、該要素のアウトラインの外観を変更(例えば、スケーリング、回転、又は曲率)することが可能であるような態様を特定する。パラメータの値は、どの程度その変換が該要素のアウトラインに影響を与えるかに影響する。例えば、要素490は、該要素の関連するアウトラインを水平方向にスケーリング即ち拡縮するために使用される変換と関連しているパラメータを包含している。注意すべきことであるが、要素490の水平方向のスケーリングを特定する値470は、同一の要素がアウトライン490Cの水平方向のスケーリングを特定する値475で特定される場合よりも一層大きなアウトライン490Aを記述する。この様に、各要素のアウトラインは、該要素がグリフによって参照される度に、カスタム化させることが可能である。
【0026】
その他の変換を一つの点の周りのアウトラインの回転を決定するために使用することが可能である。例えば、要素497は、その値460が点463周りの該要素のアウトラインの回転に影響を与えるパラメータと関連している。その周りに回転が発生する点463は、全ての要素に対して予め決定することが可能であり、又は各要素に対して予め決定することが可能である。幾つかの実現例においては、パラメータの値は、別のパレメータと関連する変換の性質に影響を与えるために使用することが可能である。例えば、要素497は、その周りに該要素のアウトラインの回転が発生する点(例えば、点463)の位置を特定する第2パラメータと関連する場合がある。
【0027】
要素は、グリフ内の要素のアウトラインの位置に影響を与える以下の位置パラメータの内の各々を包含している。
【0028】
● 水平位置、それはグリフ内の要素のアウトライン(例えば、値410)の水平位置に影響を与える。
【0029】
● 垂直位置、それはグリフ内の要素のアウトライン(例えば、値445)の垂直位置に影響を与える。
【0030】
各要素と関連する特定の変換は以下の変換の内の一つ又はそれ以上を包含することが可能である。
【0031】
● 水平スケール、それは要素のアウトラインの幅に影響を与える(例えば、値470)。
【0032】
● 垂直スケール、それは要素のアウトラインの高さに影響を与える。
【0033】
● 厚さ、それはその幅に影響を与えること無しに要素のアウトラインの厚さ(例えば、値455)に影響を与える。幾つかの実現例においては、要素は、各々が要素のアウトラインの異なるセグメントの暑さに影響を与える幾つかの厚さパラメータと関連することが可能である。例えば、3個の厚さパラメータは要素495の1個の水平及び2個の垂直バーの各々の相対的厚さに影響を与えることが可能である。
【0034】
● 回転、それは点周りのアウトライン(例えば、値460)の回転に影響を与える。
【0035】
● 曲率、それはアウトラインに適用可能な曲率の点に影響を与える。例えば、パラメータ450の値はアウトライン448が特定の方向に湾曲する範囲を識別する。
【0036】
● ストロークテーパ(stroke taper)、それはアウトラインにおけるライン又はカーブが該アウトラインの残部に関して歪曲又はテーパする範囲に影響を与える。例えば、パラメータ465の値はアウトライン493の端部がテーパする範囲を識別する。
【0037】
● 特徴エクステンション(feature extension)、それはアウトラインの一部の長さ又は寸法に影響を与える。例えば、アウトラインの特徴455は該アウトラインの残部に影響を与えること無しに長くさせることが可能である。別の例においては、アウトライン495の垂直ストロークを長くさせるか又は短くさせることが可能である。付加的に、アウトライン495の各垂直ストローク間の空間も関連するパラメータの値に従って影響を与えることが可能である。
【0038】
● 半径、それは円形形状を有する要素のアウトラインの寸法に影響を与える。幾つかの実現例においては、パラメータは楕円形状を有するアウトラインに対する長半径及び短半径を特定するために使用することが可能である。
【0039】
上の一つ又はそれ以上を単一のパラメータに結合させることも可能である。例えば、一つのパラメータは各々が水平及び垂直スケールに対応する二つのパラメータと関連することが可能である。別の要素は、水平及び垂直スケールの両方に影響を与える単一のパラメータと関連することが可能である(例えば、アウトラインのプロポーショナルスケーリング)。結合された変換は、そのアウトラインが変化するがプロポーショナルな寸法である複数のグリフで現れる場合に有用である場合がある。
【0040】
幾つかの実現例において、各エンコードした要素はその要素のアウトライン(例えば、一連のライン及びカーブで特定された)のエンコーディングを包含することが可能である。各要素は、又、該要素が幾つの変換パラメータを有するかを特定する情報を包含することが可能であり、その変換はこれらのパラメータと関連しており且つ該要素におけるその点は各変換と関連している。例えば、情報は、該アウトラインのどの点が曲率変換に露呈されるかを表すアウトライン448と関連している要素でエンコードさせることが可能である。
【0041】
幾つかの実現例において、該グリフ内の要素のパラメータに対して特定された値は前に特定したグリフと相対的なものとすることが可能である。例えば、アウトライン490Bの位置は、該グリフの原点407と相対的に特定させるのではなく、その前に特定された要素(例えば、アウトライン490A)と相対的に特定することが可能である。アウトライン490Bの垂直位置と関連する値435は、前のアウトライン490Aの上方の該アウトラインの位置を表す。同様に、値425及び415は、アウトライン490Bの位置と相対的なアウトライン490Aの相対的な水平及び垂直位置を表す。
【0042】
幾つかの実現例においては、各個別的な値は、前に特定した値と比較して相対的オフセットとして特定することが可能である。例えば、要素参照は以下の6個の値、即ち610,548,457,528,427,481を包含する場合がある。これらの同一の値は以下のように、即ち610,−62,−91,71,−101,54の相対的オフセットを使用して特定することが可能である。特に、注意すべきことであるが、2番目の値である548は610と−62とを加算することにより与えられ、一方3番目の値は548と−91とを加算することにより与えられる。注意すべきことであるが、二進でエンコードされる場合には、前者の6個の値は各々1バイトを超えるものを必要とするが、後者の6個の値は容易に7バイトのみでエンコードすることが可能である。代替的に、一連の値を該一連における最初の値に関しての相対的オフセットとして特定することが可能である(例えば、上の値の各々は第1の値、即ち610、と相対的なオフセットとして与えることが可能である)。
【0043】
各グリフは、要素に対する参照、及び各参照される要素の各パラメータに対する値を包含するエンコーディングによって特定される。一般的に、各グリフのエンコーディングはより大きなフォントエンコーディングの一部であり、且つ、典型的に、格納装置上のファイル内に格納される(例えば、リードオンリ又はリード・ライトメモリ内に格納され且つアクセス可能である)。幾つかの実現例においては、フォントエンコーディングは、複数の要素からなるライブラリ及び各要素のパラメータ及び関連する変換に関する情報を包含することが可能である。その他の実現例においては、該複数の要素からなるライブラリは、フォントとは別にエンコードさせることが可能である。代替的に、該複数の要素からなるライブラリは、該要素の幾つかはフォントと共にエンコードされ、且つ該要素の幾つかはフォントとは別にエンコードされるように(例えば、複数のフォントエンコーディングが参照することが可能な複数の要素からなるグローバルライブラリ)、エンコードさせることが可能である。
【0044】
幾つかの実現例においては、グリフは、各々が一つ又はそれ以上のオペランドを有する一連の命令としてエンコードすることが可能である。例えば、一つの命令は、第2位置の水平及び垂直アスペクトを表す二つのオペレーションと共に「lineto」命令を特定することによって現在の位置から第2位置へラインを描画すべきことを表すことが可能である。一つの命令は、又、複数の要素からなるライブラリから一つの要素のアウトラインが描画されるべきことを表す要素を参照することが可能であり、この様な命令は、又、パラメータ値として解釈することが可能な可変数のオペランドを特定することが可能である。例えば、参照命令の場合に、第1オペランドは特定の要素を識別することが可能であり(例えば、複数の要素からなるライブラリにおけるその要素の位置に対する参照)、一方、爾後のオペランドは該要素のパラメータの各々の値を表す。
【0045】
例えば、同一の要素を二度参照するグリフは以下の代表的なエンコーディングを有することが可能である。
【0046】
【表1】

【0047】
上のエンコーディングにおいて、「compose」は特定の要素、この場合には複数の要素からなるライブラリ内に要素「94」、を識別するために第1オペランドを使用する命令を特定する。残りの4個のオペランドはその特定される要素に対するパラメータ値である。レンダリングされたグリフは2個のアウトラインを包含することとなるが、それらは両方共同一の要素を参照するが、これらの特定されるパラメータに従って位置と形状とが異なる。
【0048】
幾つかの実現例においては、該要素のパラメータを特定するオペランドは、以下のような代表的なエンコーディングとしてスタックさせることが可能である。
【0049】
【表2】

【0050】
最初の8個の値は上に与えられた二つの参照の両方に対する同一の4個のパラメータを特定する。パラメータ値をスタックさせることにより、要素「94」は該エンコーディングにおいて特定される4個のパラメータの各倍数に対して参照される。一般的に、1個の要素のパラメータはこの様な態様でスタックさせることが可能であり、従って、n個のパラメータを有する或る与えられた要素に対して、m×n個のパラメータが与えられる場合には、m個のアウトラインがn個のパラメータからなる各m組に従って発生される。
【0051】
要素に対する参照に加えて、グリフエンコーディングは、又、アウトラインを直接的に特定する情報を包含することが可能である(例えば、要素を参照すること無しでのライン及びカーブとして)。この様な情報は、グリフの必要な側面を該要素ライブラリにおいて使用可能な要素から、単独で構成するか又は効率的に構成することができない場合に、グリフと共にエンコードさせることが可能である。
【0052】
幾つかの実現例において、各エンコードされた値又は数を可変バイトエンコーディングを使用してエンコードさせることが可能である。可変バイトエンコーディングは、その数の絶対値に比例して可変数のバイトでその数をエンコードする。幾つかの実現例においては、小さな数及びその数をデコードするために付加的なバイトが必要であるか否かを特定する情報の両方をエンコードするために単一バイトを使用することが可能である。例えば、νが第1バイトの値であると仮定すると、νが32と246との間の値を有する場合に、そのエンコードされた数は、ν−139である。νが247と250(250を含む)との間の値を有している場合には、そのエンコードされた数は、(ν−247)×256+ν´+108であり、尚ν´はνに続くバイトの値である。同様に、νが251と254(254を含む)との間の値を有している場合には、そのエンコードされた数は、(ν−251)×(−256)−ν´−108である。νの値が255である場合には、その数はνに続く4バイトにおける4バイト符号付数としてエンコードされる。0と32との間のνの値は、少なくとも32個のユニークな命令又はオペレーションをエンコードするために使用することが可能である(例えば、複数の要素からなるライブラリ内の1個の要素を参照する命令、又は現在の位置とオペランドによって与えられる位置との間にラインを描画する命令のようなもの)。
【0053】
幾つかの実現例においては、グリフはそのエンコーディングにおいて使用される各数の絶対値を最小化させるためにエンコードさせることが可能である。大きな値を必要とする寸法におけるアウトラインの値を特定する代わりに(例えば、300×300の正方形ボックス)、そのアウトラインの相対的な形状を保存しながらその値を最小とさせることが可能である(例えば、30×30の正方形ボックス)。グリフをエンコードするために使用される数の絶対値を最小とさせることは、フォントを格納するために必要とされるバイト数を最小とさせ、特に、可変バイトエンコーディング又は相対的オフセット等の上述した技術の内の一つと結合された場合にそうである。
【0054】
図5は複数の要素からなるライブラリ内の要素に対する参照を包含しているグリフをレンダリングするプロセス500のフローチャートである。プロセス500は、複数の要素からなるライブラリを識別することを包含している(ステップ510)。幾つかの実現例においては、複数の要素からなるライブラリは、該ライブラリからの要素を参照するグリフを包含しているフォントと共に包含されている。その他の実現例においては、複数の要素からなるライブラリはフォントとは別に識別することが可能である。該複数の要素からなるライブラリは予め定義することが可能である(例えば、オペレーティングシステム、アプリケーション、又はユーザの好みによって)。例えば、複数の要素からなるライブラリを識別することが可能であり、それから複数の別個のフォント(例えば、各フォントは異なるスタイルを持っており又は異なる組のグリフを包含している)は、各々、複数の要素からなる同一のライブラリを参照することが可能である。
【0055】
プロセス500は、該複数の要素からなるライブラリ内の1個の要素の識別を受け取ることを包含している(ステップ520)。フォントにおけるグリフは、参照において、該複数の要素からなるライブラリ内の特定の要素を識別することが可能である。プロセス500は、その識別された要素の一つ又はそれ以上のパラメータの値を受け取ることを包含している(ステップ530)。各パラメータに対する値は、該グリフにおける要素に対する各参照と関連しており、又はそれと共にエンコードされる。値を受け取ることは、その値を特定するために必要とされる空間を最小とするためにエンコードされた値をデコードすることを包含することが可能である。例えば、或る値は前の値からの相対的オフセットとして特定することが可能であり、又はその値はコンパクトな可変バイトエンコーディングでエンコードすることが可能であり、及び/又は同一の要素に対する複数参照のパラメータをスタックさせることが可能である。各変換パラメータの値は、そのアウトラインがレンダリングされる場合にその要素と関連するアウトラインの形状を決定するために使用される。
【0056】
プロセス500は、グリフの要素参照において特定される如く、各パラメータの値に基づいて識別された要素と関連するアウトラインを変換することを包含している(ステップ540)。各グリフの変換は、該複数の要素からなるライブラリにおいて特定される要素(例えば、該要素と関連しているパラメータ)、及び該要素と関連している特定のアウトラインに基づいている。一般的に、グリフは複数の参照において幾つかの要素を識別し、且つ、各参照に対して、各参照の各要素に対するパラメータ値を特定することが可能である。各参照に対して、参照された要素のアウトラインが変換される(例えば、ステップ520乃至540は該グリフにおける各参照に対して繰り返すことが可能である)。
【0057】
プロセス500は、オプションとして、該グリフと関連する付加的なアウトラインを受け取ることを包含することが可能である(ステップ550)。この様なアウトラインは該複数の要素からなるライブラリにおけるいずれの要素とも関連していない。グリフは、特に該グリフが該ライブラリ内の一つ又は複数の要素の結合として効率的に特定することが不可能な形状を描写する場合には、ライン及びカーブとして特定されるこの様なアウトラインを包含することが可能である。
【0058】
プロセス500は、変換されたアウトラインをレンダリングすることにより該グリフをレンダリングすることを包含している(ステップ560)。その変換されたアウトラインは、該グリフの一部としてあたかも特定されたかのようにアウトラインをレンダリングするように同様な態様でレンダリングされる。一般的に、このことは、該アウトラインをラスター化することが関与し且つアンチエイリアシング、サブピクセルレンダリングなどのその他の動作を包含する場合がある。幾つかの実現例においては、該グリフはディスプレイ装置に対して直接的にレンダリングさせることが可能である。その他の実現例においては、各グリフのレンダリング又は変換したアウトラインがメモリキャッシュ内に格納される(例えば、典型的に高速揮発性メモリであるメモリの一部)。ディスプレイ装置に対して該グリフをレンダリングする場合に、該グリフは該キャッシュからレンダリングさせるか又はコピーすることが可能である。キャッシュからディスプレイ装置に対しての該グリフのレンダリングは、しばしば、同一のグリフの複数回のレンダリングを包含する場合がある一連のグリフをレンダリングするのに必要なデコーディング、アウトライン変換、ラスター化を最小とさせる。
【0059】
通常、変換されたアウトラインは、該グリフにおける各参照に対してレンダリングされる。一つ又はそれ以上のアウトラインも該グリフで特定される実現例の中で(例えば、ステップ550において受け取られたように)、該グリフに特定的なアウトラインもレンダリングされる。
【0060】
図6は、複数の要素からなるライブラリにおける要素を参照するグリフをレンダリングするシステム600を例示している。システム600は、通常、モジュール(例えば、モジュール650−690)及びリソース(例えば、フォント情報610)を包含している。モジュールは、典型的に、他のモジュールへ情報を供給し且つ他のモジュールから情報を受け取ることが可能な個別的な機能性のユニットである。モジュールは入力又は出力装置(例えば、グリフレンダラー680)との通信を容易化させることが可能である。モジュールはリソースに関して動作することが可能である。通常、リソースは、モジュールによって動作することが可能な情報の集まりである。然しながら、幾つかの実現例においては、別のモジュールへ情報を供給することが可能なモジュールはリソースのように動作することが可能であり且つその逆もまた真である。例えば、グリフキャッシュ690は、幾つかの実現例においては、リソースであると考えることが可能である。
【0061】
システム600はフォント情報610を包含しており、それは一つ又はそれ以上のフォントに関連する情報を包含しており、各フォントは一つ又はそれ以上のグリフに対してグリフ情報620を包含している。各グリフに対するグリフ情報は、一つ又はそれ状のアウトライン623及び一つの要素に対する一つ又はそれ以上の参照627を包含することが可能である。該グリフにおける各参照は、該複数の要素からなるライブラリ630内の一つの要素を識別する。該複数の要素からなるライブラリ630は、各々がアウトライン633と、位置及び変換の両方のパラメータ637とを包含している一つ又はそれ以上の要素を包含している。
【0062】
システム600は、フォントレンダリングエンジン640を包含している。フォントレンダリングエンジン630は受け取ったグリフ情報620をデコーディングする要素デコーダ645を包含している。要素デコーダ645は、要素ライブラリ630内の要素を識別するグリフ要素参照627をデコーディングする要素識別器650を包含している。例えば、要素識別器650は要素参照命令、及び要素の夫々のパラメータに対する参照された要素及び値の両方を特定することが可能な該命令の夫々のオペランドを識別することが可能である。要素のパラメータの値に関係するグリフ情報は、パラメータプロセッサ660によってデコードすることが可能である。パラメータプロセッサ660は、幾つのパラメータを該参照された要素が必要とするかを決定することが可能である。幾つかの実現例においては、パラメータプロセッサ660は、何時パラメータがスタックされたかを決定することが可能である(例えば、参照された要素を明示的に再識別すること無しに複数組のパラメータとしてエンコードされている同一の要素に対する複数参照)。
【0063】
要素デコーダ645は、又、アウトライン変換器670を包含することが可能であり、それは該グリフにより特定され且つパラメータプロセッサ660によって処理されたパラメータの値に基づいて或る要素と関連するアウトラインを変換する。アウトライン変換器645は、互いにアウトライン内の点を調節する動作を実施することが可能である。例えば、点は水平方向又は垂直方向に離して移動させることが可能である(例えば、水平及び垂直スケーリングパラメータに対応して)。
【0064】
フォントレンダリングエンジン640は、又、グリフレンダラー680を包含することが可能である。グリフレンダラー680は、該グリフにおいて参照される要素の変換されたアウトライン、及び、存在する場合に、該グリフ自身で特定されるいずれかのアウトラインを使用して該グリフをレンダリングすることが可能である。該グリフレンダラーは、各グリフをディスプレイ装置695に対して直接的にレンダリングすることが可能である。ディスプレイ装置695は、CRT又はLCDモニタ、プロジェクションディスプレイ装置、又はハンドヘルド又はポータブル通信、エンターテイメント、又は制御装置上に見られるような内蔵ディスプレイ装置を包含することが可能である。
【0065】
幾つかの実現例においては、グリフレンダラー680はグリフをグリフキャッシュ内にレンダリングすることが可能である。グリフはオンデマンドでグリフキャッシュ690内にレンダリングさせることが可能であり(例えば、必要に応じて)、又はグリフキャッシュ69内に事前にレンダリングさせることが可能である(例えば、フォントがシステムによってロードされる場合)。この様な実現例においては、ディスプレイ装置695に対してレンダリングする場合に、グリフレンダラー680は、該グリフを最初からレンダリングするのではなく、グリフキャッシュ690内の事前にレンダリングされているグリフへアクセスすることによってグリフをレンダリングすることが可能である。
【0066】
一般的に、システム600内に例示されているモジュール及びリソースは結合させるか又は分割することが可能であり且つ一つ又はそれ以上のネットワークによって接続されている一つ又はそれ以上のコンピューティング装置上でのハードウエア又はソフトウエアの何等かの結合で実現することが可能である。
【0067】
本内容の実施例及び本明細書に記載されている機能的動作は、デジタル電子回路において、又は本明細書に開示されている構造及びそれらの構造的均等物を包含するコンピュータソフトウエア、ファームウエア、又はハードウエアにおいて、これらの内の一つ又はそれ以上の結合において実現することが可能である。本明細書に記載されている内容の実施例は、一つ又はそれ以上のコンピュータプログラムプロダクト、即ちデータ処理装置による実行、又はその動作の制御のためにコンピュータにより読み取り可能な媒体上にエンコードされているコンピュータプログラム命令からなる一つ又はそれ以上のモジュール、として実現することが可能である。該コンピュータにより読み取り可能な媒体は、機械読み取り可能な格納装置、機械読み取り可能な格納基板、メモリ装置、機械読み取り可能伝搬信号を効果あらしめる物質の組成物、又はこれらの内の一つ又はそれ以上の結合とすることが可能である。「データ処理装置」という用語は、例示としてプログラマブルプロセッサ、コンピュータ、又はマルチプロセッサ又はコンピュータを包含するデータを処理するための全ての装置、デバイス、及びマシンを取り囲んでいる。該装置は、ハードウエアに加えて、問題のコンピュータプログラムに対する実行環境を形成するコード、例えばプロセッサファームウエア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはこれらの内の一つ又はそれ以上の結合を構成するコードを包含することが可能である。伝搬される信号は人工的に発生された信号であって、例えば、適宜の受信装置へ送信するために情報をエンコードするために発生されるマシンにより発生される電気的、光学的、又は電磁的な信号である。
【0068】
コンピュータプログラム(プログラム、ソフトウエア、ソフトウエアアプリケーション、スクリプト、又はコードとしても知られている)は、コンパイル型又はインタプリタ型言語を含む任意の形態のプログラミング言語で書くことが可能であり、且つそれはスタンドアローンプログラムとして、又はモジュール、コンポーネント、サブルーチン、又はコンピューティング環境において使用するのに適したその他のユニットとしてを包含する任意の形態でデプロイさせることが可能である。コンピュータプログラムは必ずしもファイルシステム内のファイルに対応するものではない。プログラムは、他のプログラム又はデータを保持するファイルの一部の中に(例えば、マークアップ言語文書内に格納されている一つ又はそれ以上のスクリプト)、問題のプログラム専用の単一のファイル内に、又は複数の共同型ファイル内に(例えば、一つ又はそれ以上のモジュール、サブプログラム、又はコードの一部を格納するファイル)格納することが可能である。コンピュータプログラムは、一つのコンピュータ上で、又は一箇所に位置されているか又は複数の箇所にわたり分散されており且つ通信ネットワークによって相互接続されている複数のコンピュータ上で実行すべくデプロイさせることが可能である。
【0069】
本明細書に記載しているプロセス及び論理フローは、入力データに関して動作を行い出力を発生することにより機能を実施するための一つ又はそれ以上のコンピュータプログラムを実行する一つ又はそれ以上のプログラマブルプロセッサによって実施することが可能である。該プロセス及び論理フローは、又、特別目的論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)又はASIC(応用特定集積回路)、によって実施することも可能であり且つそのようなものとして実現することも可能である。
【0070】
コンピュータプログラムの実行に適したプロセッサは、例として、汎用及び特別目的マイクロプロセッサの両方、及び任意の種類のデジタルコンピュータの任意の一つ又はそれ以上のプロセッサを包含している。通常、プロセッサは、リードオンリメモリまたはランダムアクセスメモリ又はその両方から命令とデータとを受け取る。コンピュータの基本的な要素は、命令を実施するためのプロセッサ、及び命令とデータとを格納するための一つ又はそれ以上のメモリ装置である。通常、コンピュータは、又、データを格納するための一つ又はそれ以上の大量記憶装置、例えば、磁気的、磁気光学的ディスク、を包含しているか又は光学的ディスクからデータを受け取るか又はそれへデータを転送し、又はその両方を行うために動作結合されている。更に、コンピュータは別の装置、例えば、数例を挙げれば、携帯電話、パーソナルデジタルアシスタント(PDA)、モバイルオーディオプレイヤー、全地球測位システム(GPS)受信機、の中に埋蔵させることが可能である。コンピュータプログラム命令及びデータを格納するのに適したコンピュータにより読み取り可能な媒体は、全ての形態の非揮発性メモリ装置、媒体、及びメモリ装置、例として、例えば、EPROM、EEPROM、及びフラッシュメモリ装置等の半導体メモリ装置、例えば内部ハードディスク又は着脱自在ディスク等の磁気ディスク、磁気光学的ディスク、及びCD−ROM及びDVD−ROMディスクを包含している。該プロセッサ及び該メモリは特別目的論理回路によって補充されるか又はその中に組み込むことが可能である。
【0071】
ユーザとの対話を与えるために、本明細書に記載されている内容の実施例は、CRT(陰極線管)又はLCD(液晶ディスプレイ)モニタなどのユーザに対して情報を表示するためのディスプレイ装置、及びそれによりユーザがコンピュータへの入力を与えることが可能なマウス又はトラックボール等のポインティングデバイス及びキーボードを具備するコンピュータ上で実現することが可能である。その他の種類の装置もユーザとの対話を与えるために使用することが可能であり、例えば、ユーザへ与えられるフィードバックは任意の形態の知覚的フィードバック、例えば、視覚的フィードバック、聴覚的フィードバック、又は触覚的フィードバック、とすることが可能であり、且つユーザからの入力は聴覚的、会話的、又は触覚的な入力を包含する任意の形態で受け取ることが可能である。
【0072】
本明細書に記載されている内容の実施例は、データサーバ等のバックエンドコンポーネントを包含するか、又はアプリケーションサーバ等のミドルウエアコンポーネントを包含するか、又はそれを介してユーザが本明細書に記載されている内容の実現例と対話することが可能なグラフィカルユーザインターフェース又はウエブブラウザを具備するクライエントコンピュータ等のフロンとエンドコンピュータを包含するか、又はこの様なバックエンド、ミドルウエア、又はフロントエンドコンポーネントの内の一つ又はそれ以上の任意の結合であるコンピューティングシステムにおいて実現することが可能である。本システムのコンポーネントは、例えば通信ネットワーク等の任意の形態又は媒体のデジタルデータ通信によって相互接続させることが可能である。通信ネットワークの例は、ローカルエリアネットワーク(LAN)及びインターネット等のワイドエリアネットワーク(WAN)を包含している。
【0073】
本コンピューティングシステムは、クライエント及びサーバを包含することが可能である。クライエント及びサーバは、通常、互いに離隔しており且つ典型的に通信ネットワークを介して相互作用を行う。クライエントとサーバの関係は、夫々のコンピュータ上で稼動するコンピュータプログラムによって且つ互いにクライエント・サーバ関係を有することによって発生する。
【0074】
本明細書は多数の詳細を包含するものであるが、これらはいずれかの発明の範囲又は特許請求の範囲に関する制限として解釈されるべきものではなく、特定の発明の特定の実施例に対して特定的なものである場合がある特徴の記載として解釈されるべきである。別々の実施例の文脈において本明細書に記載されている或る特徴は、又、単一の実施例において結合して実現させることも可能である。逆に、単一の実施例の文脈において記載されている種々の特徴は、又、複数の実施例において別々に又は任意の適宜の副結合において実現することが可能である。更に、特徴は上において或る結合で動作するものとして記載されており且つ初期的にはそのようなものとして特許請求の範囲において記載されている場合があるが、特許請求の範囲に記載されている結合からの一つ又はそれ以上の特徴は、幾つかの場合においては、該結合から削除することが可能であり、且つ特許請求の範囲に記載されている結合は副結合又は副結合の変形に向けられたものとすることが可能である。
【0075】
同様に、動作は特定の順番で図面中に図示されているが、これはこの様な動作が、所望の結果を達成するために、図示されている特定の順番で又は逐次的な順番で実施されること、又は全ての例示されている動作が実施されることを必要とするものとして理解されるべきものではない。或る環境においては、マルチタスク及び並列処理が有益的である場合がある。更に、上述した実施例における種々のシステムコンポーネントの分離は、全てにの実施例においてこの様な分離が必要であるものとして理解されるべきものではなく、且つ記載したプログラムコンポーネント及びシステムは通常単一のソフトウエアプロダクト内に一緒に統合させるか又は複数のソフトウエアプロダクトにパッケージ化させることが可能であることを理解すべきである。
【0076】
本明細書に記載されている内容の特定の実施例について説明した。その他の実施例は、以下の特許請求の範囲内のものである。例えば、特許請求の範囲において記載されている動作は異なる順番で実施することが可能であり、尚且つ所望の結果を達成することが可能である。

【特許請求の範囲】
【請求項1】
コンピュータにより実現される方法において、
各要素がアウトライン及び一つ又はそれ以上のパラメータと関連している複数の要素からなるライブラリを識別し、
該複数の要素からなるライブラリにおける夫々の要素に対する一つ又はそれ以上の参照であって、各々が該夫々の要素と関連する該パラメータの内の一つ又はそれ以上に対する値を特定する参照を持っているグリフを識別し、
該グリフによって参照される各夫々の要素に基づいて該グリフをレンダリングし、各参照によって特定される該一つ又はそれ以上のパラメータの値がレンダリングされるグリフの外観に影響を与える方法。
【請求項2】
請求項1において、該複数の要素からなるライブラリにおける各要素が該複数の要素からなるライブラリ内の全てのその他の要素とは別である方法。
【請求項3】
請求項1において、該グリフをレンダリングする場合に、更に、
該関連する一つ又はそれ以上のパラメータの値に基づいて該グリフによって参照される各夫々の要素と関連する各アウトラインをレンダリングし、一つ又はそれ以上のパラメータの各々の値が該アウトラインの形状に影響を与える方法。
【請求項4】
請求項1において、一つの要素と関連する該一つ又はそれ以上のパラメータの各々が該関連するアウトラインの変換を記述し、各変換が、レンダリングされた場合に該アウトラインの形状に影響を与えるものであり、該アウトラインの高さ、幅、回転、厚さ、テーパ、エクステンション、半径、及び曲率の内の一つ又はそれ以上を包含している方法。
【請求項5】
請求項4において、各変換が該アウトラインの一部の形状に影響を与える方法。
【請求項6】
コンピュータにより実現される方法において、
各々がアウトライン及び一つ又はそれ以上のパラメータと関連しており、各々がその他の全てとは別である複数の要素からなるライブラリをエンコーディングし、
該複数の要素からなるライブラリにおける夫々の要素に対する複数の参照であって、各参照が該関連する一つ又はそれ以上のパラメータの内の一つ又はそれ以上に対する値を持っている該複数の参照に基づいてグリフをエンコーディングする、
ことを包含している方法。
【請求項7】
請求項6において、一つ又はそれ以上のパラメータの各々が該要素の関連するアウトラインの変換と関連している方法。
【請求項8】
請求項7において、変換が該アウトラインの形状に影響を与え且つ高さ、幅、回転、厚さ、テーパ、エクステンション、半径、及び曲率の内の一つ又はそれ以上を包含している方法。
【請求項9】
請求項8において、各変換が該アウトラインの一部の形状に影響を与える方法。
【請求項10】
請求項6において、該参照におけるパラメータの値を前にエンコードした参照の値と相対的なオフセットを使用してエンコードする方法。
【請求項11】
請求項6において、該グリフをエンコーディングする場合に、各パラメータの最小絶対値を決定することを包含している方法。
【請求項12】
請求項6において、グリフをエンコーディングする場合に、該複数の参照の各々に対して特定の要素のパラメータに対する値を特定し且つ該特定の要素を一度のみ識別することによって該特定の要素を参照する複数の参照をエンコーディングすることを包含している方法。
【請求項13】
請求項6において、グリフをエンコーディングする場合に、可変バイトエンコーディングを使用して値をエンコーディングすることを包含している方法。
【請求項14】
グリフを格納するデータ構造を有するコンピュータにより読み取り可能な媒体において、該データ構造が、
各々が一つのアウトラインと関連している複数の要素からなるライブラリにおける一つの要素に対する一つ又はそれ以上の参照、
該一つ又はそれ以上の参照の各々に対する複数の値であって、該一つ又はそれ以上の値が該一つ又はそれ以上の参照の夫々の要素と関連するアウトラインの形状を記述する複数の値、
を有している媒体。
【請求項15】
データ処理装置をして動作を実施させるべく動作可能なコンピュータにより読み取り可能な媒体上にエンコードされているコンピュータプログラムプロダクトにおいて、
複数の要素からなるライブラリを識別し、該複数の要素からなるライブラリ内の各要素は一つのアウトライン及び一つ又はそれ以上のパラメータと関連しており、
該複数の要素からなるライブラリ内の夫々の要素に対する一つ又はそれ以上の参照を持っているグリフを識別し、各参照は該夫々の要素と関連する該パラメータの一つ又はそれ以上に対する値を特定し、
該グリフにより参照される各夫々の要素に基づいて該グリフをレンダリングし、各参照により特定される該一つ又はそれ以上のパラメータの値がレンダリングされる要素の外観に影響を与える、方法。
【請求項16】
請求項15において、該グリフをレンダリングする場合に、更に、
該関連する一つ又はそれ以上のパラメータの値に基づいて該グリフにより参照される各夫々の要素と関連する各アウトラインをレンダリングし、一つ又はそれ以上のパラメータの各々の値が該アウトラインの形状に影響を与える方法。
【請求項17】
データ処理装置をして動作を実施させるべく動作可能なコンピュータにより読み取り可能な媒体上にエンコードされているコンピュータプログラムプロダクトにおいて、
複数の要素からなるライブラリをエンコードし、該複数の要素からなるライブラリにおける各要素は一つのアウトラインと関連しており且つ一つ又はそれ以上のパラメータと関連しており、該複数の要素からなるライブラリ内の各要素は該ライブラリ内のその他の全ての要素とは別であり、
該複数の要素からなるライブラリ内の夫々の要素に対する複数の参照に基づいて1個のグリフをエンコードし、各参照は該関連する一つ又はそれ以上のパラメータの内の一つ又はそれ以上に対する値を持っている、
ことを包含している方法。
【請求項18】
請求項17において、該グリフをレンダリングする場合に、更に、
該関連する一つ又はそれ以上のパラメータの値に基づいて該グリフによって参照される各夫々の要素と関連する各アウトラインをレンダリングし、一つ又はそれ以上のパラメータの各々の値が該アウトラインの形状に影響を与える方法。
【請求項19】
システムにおいて、
各々が一つのアウトライン及び一つ又はそれ以上のパラメータと関連している複数の要素からなるライブラリを識別する手段、
該複数の要素からなるライブラリにおける夫々の要素に対する一つ又はそれ以上の参照であって、各参照が該夫々の要素と関連する該パラメータの内の一つ又はそれ以上に対する値を特定する該一つ又はそれ以上の参照を持っているグリフを識別する手段、
該グリフによって参照される各夫々の要素に基づいて該グリフをレンダリングする手段、
を有しており、各参照により特定される該一つ又はそれ以上のパラメータの値がレンダリングされる要素の外観に影響を与えるシステム。
【請求項20】
システムにおいて、
複数の要素からなるライブラリであって、該複数の要素からなるライブラリ内の各要素が一つのアウトラインと及び一つ又はそれ以上のパラメータと関連しており、該複数の要素からなるライブラリ内の各要素が該ライブラリ内のその他の全ての要素とは別である該複数の要素からなるライブラリをエンコードする手段、
該複数の要素からなるライブラリにおける夫々の要素に対する複数の参照であって、各参照が該関連する一つ又はそれ以上のパラメータの内の一つ又はそれ以上に対する値を持っている該複数の参照に基づいてグリフをエンコードする手段、
を有しているシステム。

【図1A】
image rotate

【図1B】
image rotate

【図2A】
image rotate

【図2B】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公表番号】特表2010−504559(P2010−504559A)
【公表日】平成22年2月12日(2010.2.12)
【国際特許分類】
【出願番号】特願2009−529375(P2009−529375)
【出願日】平成19年9月19日(2007.9.19)
【国際出願番号】PCT/US2007/078943
【国際公開番号】WO2008/036771
【国際公開日】平成20年3月27日(2008.3.27)
【出願人】(595097771)アドビ システムズ, インコーポレイテッド (22)
【氏名又は名称原語表記】ADOBE SYSTEMS, INC.
【Fターム(参考)】