(57)【要約】【課題】  コンパクトにフォント情報をエンコードするための方法、システム、及び装置であって、コンピュータプログラムプロダクトを包含している。【解決手段】  一つの側面においては、複数の要素からなるライブラリを識別することを包含する方法が提供され、該複数の要素からなるライブラリ内の各要素は一つのアウトライン及び一つ又はそれ以上のパラメータと関連している。該複数の要素からなるライブラリにおける夫々の要素に対する一つ又はそれ以上の参照を持っているグリフが識別される。各参照は該夫々の要素と関連する該パラメータの内の一つ又はそれ以上に対する値を特定する。該グリフは、該グリフによって参照される各夫々の要素に基づいてレンダリングされる。各参照によって特定される該一つ又はそれ以上のパラメータの値がレンダリングされる要素の外観に影響を与える。【選択図】  図６
2010504559.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータにより実現される方法において、
各要素がアウトライン及び一つ又はそれ以上のパラメータと関連している複数の要素からなるライブラリを識別し、
該複数の要素からなるライブラリにおける夫々の要素に対する一つ又はそれ以上の参照であって、各々が該夫々の要素と関連する該パラメータの内の一つ又はそれ以上に対する値を特定する参照を持っているグリフを識別し、
該グリフによって参照される各夫々の要素に基づいて該グリフをレンダリングし、各参照によって特定される該一つ又はそれ以上のパラメータの値がレンダリングされるグリフの外観に影響を与える方法。
【請求項２】
請求項１において、該複数の要素からなるライブラリにおける各要素が該複数の要素からなるライブラリ内の全てのその他の要素とは別である方法。
【請求項３】
請求項１において、該グリフをレンダリングする場合に、更に、
該関連する一つ又はそれ以上のパラメータの値に基づいて該グリフによって参照される各夫々の要素と関連する各アウトラインをレンダリングし、一つ又はそれ以上のパラメータの各々の値が該アウトラインの形状に影響を与える方法。
【請求項４】
請求項１において、一つの要素と関連する該一つ又はそれ以上のパラメータの各々が該関連するアウトラインの変換を記述し、各変換が、レンダリングされた場合に該アウトラインの形状に影響を与えるものであり、該アウトラインの高さ、幅、回転、厚さ、テーパ、エクステンション、半径、及び曲率の内の一つ又はそれ以上を包含している方法。
【請求項５】
請求項４において、各変換が該アウトラインの一部の形状に影響を与える方法。
【請求項６】
コンピュータにより実現される方法において、
各々がアウトライン及び一つ又はそれ以上のパラメータと関連しており、各々がその他の全てとは別である複数の要素からなるライブラリをエンコーディングし、
該複数の要素からなるライブラリにおける夫々の要素に対する複数の参照であって、各参照が該関連する一つ又はそれ以上のパラメータの内の一つ又はそれ以上に対する値を持っている該複数の参照に基づいてグリフをエンコーディングする、
ことを包含している方法。
【請求項７】
請求項６において、一つ又はそれ以上のパラメータの各々が該要素の関連するアウトラインの変換と関連している方法。
【請求項８】
請求項７において、変換が該アウトラインの形状に影響を与え且つ高さ、幅、回転、厚さ、テーパ、エクステンション、半径、及び曲率の内の一つ又はそれ以上を包含している方法。
【請求項９】
請求項８において、各変換が該アウトラインの一部の形状に影響を与える方法。
【請求項１０】
請求項６において、該参照におけるパラメータの値を前にエンコードした参照の値と相対的なオフセットを使用してエンコードする方法。
【請求項１１】
請求項６において、該グリフをエンコーディングする場合に、各パラメータの最小絶対値を決定することを包含している方法。
【請求項１２】
請求項６において、グリフをエンコーディングする場合に、該複数の参照の各々に対して特定の要素のパラメータに対する値を特定し且つ該特定の要素を一度のみ識別することによって該特定の要素を参照する複数の参照をエンコーディングすることを包含している方法。
【請求項１３】
請求項６において、グリフをエンコーディングする場合に、可変バイトエンコーディングを使用して値をエンコーディングすることを包含している方法。
【請求項１４】
グリフを格納するデータ構造を有するコンピュータにより読み取り可能な媒体において、該データ構造が、
各々が一つのアウトラインと関連している複数の要素からなるライブラリにおける一つの要素に対する一つ又はそれ以上の参照、
該一つ又はそれ以上の参照の各々に対する複数の値であって、該一つ又はそれ以上の値が該一つ又はそれ以上の参照の夫々の要素と関連するアウトラインの形状を記述する複数の値、
を有している媒体。
【請求項１５】
データ処理装置をして動作を実施させるべく動作可能なコンピュータにより読み取り可能な媒体上にエンコードされているコンピュータプログラムプロダクトにおいて、
複数の要素からなるライブラリを識別し、該複数の要素からなるライブラリ内の各要素は一つのアウトライン及び一つ又はそれ以上のパラメータと関連しており、
該複数の要素からなるライブラリ内の夫々の要素に対する一つ又はそれ以上の参照を持っているグリフを識別し、各参照は該夫々の要素と関連する該パラメータの一つ又はそれ以上に対する値を特定し、
該グリフにより参照される各夫々の要素に基づいて該グリフをレンダリングし、各参照により特定される該一つ又はそれ以上のパラメータの値がレンダリングされる要素の外観に影響を与える、方法。
【請求項１６】
請求項１５において、該グリフをレンダリングする場合に、更に、
該関連する一つ又はそれ以上のパラメータの値に基づいて該グリフにより参照される各夫々の要素と関連する各アウトラインをレンダリングし、一つ又はそれ以上のパラメータの各々の値が該アウトラインの形状に影響を与える方法。
【請求項１７】
データ処理装置をして動作を実施させるべく動作可能なコンピュータにより読み取り可能な媒体上にエンコードされているコンピュータプログラムプロダクトにおいて、
複数の要素からなるライブラリをエンコードし、該複数の要素からなるライブラリにおける各要素は一つのアウトラインと関連しており且つ一つ又はそれ以上のパラメータと関連しており、該複数の要素からなるライブラリ内の各要素は該ライブラリ内のその他の全ての要素とは別であり、
該複数の要素からなるライブラリ内の夫々の要素に対する複数の参照に基づいて１個のグリフをエンコードし、各参照は該関連する一つ又はそれ以上のパラメータの内の一つ又はそれ以上に対する値を持っている、
ことを包含している方法。
【請求項１８】
請求項１７において、該グリフをレンダリングする場合に、更に、
該関連する一つ又はそれ以上のパラメータの値に基づいて該グリフによって参照される各夫々の要素と関連する各アウトラインをレンダリングし、一つ又はそれ以上のパラメータの各々の値が該アウトラインの形状に影響を与える方法。
【請求項１９】
システムにおいて、
各々が一つのアウトライン及び一つ又はそれ以上のパラメータと関連している複数の要素からなるライブラリを識別する手段、
該複数の要素からなるライブラリにおける夫々の要素に対する一つ又はそれ以上の参照であって、各参照が該夫々の要素と関連する該パラメータの内の一つ又はそれ以上に対する値を特定する該一つ又はそれ以上の参照を持っているグリフを識別する手段、
該グリフによって参照される各夫々の要素に基づいて該グリフをレンダリングする手段、
を有しており、各参照により特定される該一つ又はそれ以上のパラメータの値がレンダリングされる要素の外観に影響を与えるシステム。
【請求項２０】
システムにおいて、
複数の要素からなるライブラリであって、該複数の要素からなるライブラリ内の各要素が一つのアウトラインと及び一つ又はそれ以上のパラメータと関連しており、該複数の要素からなるライブラリ内の各要素が該ライブラリ内のその他の全ての要素とは別である該複数の要素からなるライブラリをエンコードする手段、
該複数の要素からなるライブラリにおける夫々の要素に対する複数の参照であって、各参照が該関連する一つ又はそれ以上のパラメータの内の一つ又はそれ以上に対する値を持っている該複数の参照に基づいてグリフをエンコードする手段、
を有しているシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は情報エンコーディングに関するものであって、更に詳細には、フォントのコンパクトな表現に関するものである。
【背景技術】
【０００２】
フォントは、典型的に特定の一つのスタイル又はタイプフェースを持った複数のグリフからなる一つのファミリーを記述するものである。フォントにおける各個別的なグリフは、通常、一つの言語における個別的なキャラクタを表し、且つフォントは、潜在的に、多数の言語に対するグリフを包含することが可能である。各グリフは、一つのキャラクタがどのように見えるかを記述する。コンピュータフォントは、典型的に、一つのファイル内に包含されている一つのフォントのデジタルエンコーディングであり、それは、通常、キャラクタがどのようにしてディスプレイ装置上でレンダリングされるか、プリンタによって印刷されるか、又はその両方を特定するために使用される。
【０００３】
アウトラインフォントは、各グリフが典型的にアウトラインを記述する一連の点として特定されるコンピュータフォントである。例えば、図１Ａは、アウトラインフォントにおいて特定されることがあるような、一連のライン（line）（例えば、ライン１１０）とカーブ（curve）（例えば、カーブ１２０）として表されているグリフ１００を例示している。グリフ１００における各ラインまたはカーブは、各ライン又はカーブの端部の水平及び垂直位置を特定する少なくとも１個の点１３０を包含している。グリフ１００のレンダリング１９５を図１Ｂに例示してある。
【０００４】
各グリフは、多数の非隣接成分から構成することが可能である。例えば、グリフ１００は成分１４０，１５０，１６０を包含しており、それらの各々は互いに離れている。各成分のアウトラインは、典型的に、一連のライン及びカーブとして特定される一つ又はそれ以上の輪郭によって記述される。例えば、フォント成分１５０は３個の輪郭１５５Ａ，Ｂ，Ｃを包含している。特にアジアにおける言語などの多数の言語からのキャラクタをサポートするフォントは、数万個ではないとしても数千個のグリフ及びグリフの構成要素であるアウトラインをエンコードする場合がある。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一般的に、本明細書において記載する要素の一つの側面は、複数の要素からなるライブラリを識別するアクションを包含する方法で実現することが可能であり、その場合に該複数の要素からなるライブラリにおける各要素は一つのアウトライン及び一つ又はそれ以上のパラメータと関連している。
【課題を解決するための手段】
【０００６】
該複数の要素からなるライブラリにおける夫々の要素に対する一つ又はそれ以上の参照を有している一つのグリフが識別される。各参照は夫々の要素と関連するパラメータの内の一つ又はそれ以上のものに対する値を特定する。そのグリフは、該グリフによって参照される各夫々の要素に基づいてレンダリングされる。各参照によって特定される該一つ又はそれ以上のパラメータの値は、レンダリングされる要素の外観に影響を与える。この側面のその他の実施例は、対応するシステム、装置、及びコンピュータプログラムプロダクトを包含している。
【０００７】
これら及びその他の実施例は、オプションとして、以下の特徴の内の一つ又はそれ以上を包含することが可能である。該複数の要素からなるライブラリ内の各要素は、該複数の要素からなるライブラリ内のその他の全ての要素から別のものとすることが可能である。該グリフをレンダリングすることは、該関連する一つ又はそれ以上のパラメータの値に基づいて該グリフによって参照される各夫々の要素と関連する各アウトラインをレンダリングすることを包含することが可能であり、その場合に、一つ又はそれ以上のパラメータの各々の値は該アウトラインの形状に影響を与える。一つの要素に関連している該一つ又はそれ以上のパラメータの各々は該関連するアウトラインの変換を記述することが可能であり、その場合に、各変換は、レンダリングされた場合に、そのアウトラインの形状に影響を与える。該変換は、該アウトラインの高さ、幅、回転、厚さ、テーパ、エクステンション、半径、及び曲率の内の一つ又はそれ以上に影響を与える場合がある。各変換はアウトラインの一部の形状に影響を与える場合がある。
【０００８】
一般的に、本明細書に記載する内容の別の側面は、複数の要素からなるライブラリをエンコードするアクションを包含する方法に実現することが可能であり、その場合に、該複数の要素からなるライブラリの各要素はアウトライン及び一つ又はそれ以上のパラメータに関連している。該複数の要素からなるライブラリの各要素は該ライブラリ内のその他の全ての要素とは別個である。該複数の要素からなるライブラリ内の夫々の要素に対する複数の参照に基づいて一つのグリフがエンコードされる。各参照は、該関連する一つ又はそれ以上のパラメータの内の一つ又はそれ以上に対する値を包含している。この側面のその他の実施例は、対応するシステム、装置、及びコンピュータプログラムプロダクトを包含している。
【０００９】
これら及びその他の実施例は、オプションとして、以下の特徴の内の一つ又はそれ以上を包含することが可能である。一つ又はそれ以上のパラメータの各々は、該要素の関連するアウトラインの変換に関連付けることが可能である。変換はアウトラインの形状に影響を与える場合があり且つ以下のもの、即ち高さ、幅、回転、厚さ、テーパ、エクステンション、半径、及び曲率の内の一つ又はそれ以上を包含することが可能である。該参照におけるパラメータの値は、前にエンコードした参照の値と相対的なオフセットを使用してエンコードすることが可能である。各パラメータの最小絶対値を決定することが可能である。該グリフのエンコーディングは、該複数個の参照の内の各々に対する特定の要素のパラメータに対する値を特定し且つ特定の要素を一度だけ識別することによって、特定の要素を参照する複数個の参照のエンコーディングを包含する場合がある。該グリフのエンコーディングは、可変バイトエンコーディングを使用して値をエンコーディングすることを包含する場合がある。
【００１０】
一般的に、本明細書に記載する内容の一つの側面は、グリフを格納するデータ構造を包含しているコンピュータにより読み取り可能な媒体内に実施させることが可能である。該データ構造は、複数の要素からなるライブラリ内の一つの要素に対する一つ又はそれ以上の参照を包含しており、その場合に、該複数の要素からなるライブラリ内の各要素はアウトラインと関連している。該データ構造は、又、該一つ又はそれ以上の参照の各々に対する複数の値を包含しており、該一つ又はそれ以上の値は該一つ又はそれ以上の参照の夫々の要素と関連するアウトラインの形状を特定する。
【発明の効果】
【００１１】
本明細書に記載する内容の特定の実施例は、以下の利点の内の一つ又はそれ以上を実現するために実施することが可能である。各グリフの構成要素に対するアウトラインを特定することと比較して、非常に少ない格納空間を必要とする態様でフォントを特定し且つエンコードすることが可能である。一つ又はそれ以上の輪郭としてではなく、アウトライン要素の結合としてグリフを特定し且つエンコードすることが可能である。アウトライン要素の結合を使用してフォントのグリフをデザインすることは、デザイン労力を軽減させることが可能である。グリフ内の要素を再使用することは、グリフ内及びグリフ間の一貫性を改善し、そのことは、可読性及び品質の両方に対して重要である。グリフ内のアウトライン要素の精密な形状に影響を与えるパラメータの数値は、グリフエンコーディングの寸法を減少させるためにスタックさせることが可能である。グリフ内の数値は、エンコードされたグリフの寸法を更に減少させるために、相対的オフセットとしてエンコードされるか又は特定された可変バイトとすることが可能である。
【００１２】
本発明の一つ又はそれ以上の実施例の詳細は、添付の図面及び以下の説明中に記載する。本発明のその他の特徴、側面、及び利点は、該説明、図面、及び特許請求の範囲から明らかなものとなる。
【図面の簡単な説明】
【００１３】
【図１Ａ】アウトラインフォントで特定された場合のグリフの例示。
【図１Ｂ】図１Ａに例示されているグリフのレンダリングの例示。
【図２Ａ】その構成要素が種々の要素と関連する幾つかのアウトラインを包含しているグリフの例示。
【図２Ｂ】図２Ａに例示されているグリフのレンダリングの例示。
【図３】複数の要素のライブラリにおける要素を参照するフォントのグリフの幾つかを包含するフォントの例示。
【図４】グリフにおいて参照される要素と関連するパラメータの値がどのようにしてグリフにおけるアウトラインの外観に影響を与えるかの例示。
【図５】複数の要素からなるライブラリにおける要素への参照を包含するグリフをレンダリングするフローチャート。
【図６】複数の要素からなるライブラリからの要素を参照するグリフをレンダリングするシステムのブロック図。
【発明を実施するための形態】
【００１４】
図２Ａは、その構成要素２１０Ａ−Ｃが、各々が夫々の要素（例えば、要素２５０−２６０）と関連している幾つかのアウトライン（例えば、アウトライン２５０Ａ−Ｃ）を包含しているグリフ２００の例示である。各アウトラインは、該グリフ内の他のアウトラインから非接続である。例えば、アウトライン２５０Ａは、該グリフ内のその他の全てのアウトライン（例えば、アウトライン２６０Ａ−Ｃ）とは分離している。一つの要素と関連する各アウトラインは、一つ又はそれ以上の輪郭によって特定されるアウトラインであり、該輪郭は各々一連のライン及びカーブ（例えば、二次又は三次ベジェ曲線）によって特定される。
【００１５】
レンダリングされたグリフは、複数回特定の要素と関連するアウトラインを包含することが可能である。例えば、アウトライン２５０Ｂ及びアウトライン２５０Ｃは類似した外観を有しており、これらのアウトラインはそれらの相対的な垂直位置が異なるに過ぎない。該グリフは、同一の要素を複数回参照するものと言うことが可能である。アウトライン２５０Ａ及び２５０Ｂも類似しているが、異なる位置を有することに加えて、これらのアウトラインはそれらの相対的な垂直寸法も異なっている。
【００１６】
各要素は、一つのアウトライン及びアウトラインの長さ及び幅及びアウトラインの垂直及び水平位置等の該アウトラインの外観を特定する一つ又はそれ以上のパラメータと関連している。一つの要素が一つのグリフによって参照される場合に、レンダリングされたグリフは該参照される要素と関連するアウトラインを包含している。各要素参照は、該グリフにおけるアウトラインの外観を決定する該要素のパラメータの各々に対する値を包含している。従って、要素のパラメータの各々の値はグリフ特定的である。幾つかの実現例においては、該パラメータがデフォルト値と関連している場合には、該グリフのパラメータの各々に対する値を特定することは必要ではない。
【００１７】
幾つかの実現例において、幾つかのパラメータは全ての要素に対して適用することが可能なものではない場合がある。例えば、要素２８０は、該要素の厚さを指示するパラメータと、該要素の曲率を特定する別のパラメータとを包含することが可能である。前者のパラメータは、又、要素２５０Ａに対して適用可能なものであるが、後者のパラメータはそうではない。パラメータ及び１個の要素のアウトラインの外観にあたえるそれらの潜在的な影響は図４を参照して更に詳細に説明する。
【００１８】
グリフは、一つ又はそれ以上の予め定義した要素及び各要素のパラメータの特定された値を参照することによって特定することが可能である。例えば、グリフ２００を特定することは、三つの別個のインスタンスにおける要素２６０に対する参照を包含することが可能である。各参照は該要素のパラメータに対する値を包含しており、その場合に、該値は該グリフにおける該要素のアウトラインの位置及び形状を記述する。
【００１９】
一般的に、グリフは、又、要素と関連していないアウトラインを包含することが可能である。例えば、アウトライン２４０は要素ではない場合があり且つ関連するパラメータを有するものではなく、このアウトラインは形状に対する参照ではなく、一連のラインセグメントとして該グリフ中において特定することが可能である。幾つかの実現例においては、特定のフォントに対して、各要素は複数の要素からなるライブラリから識別することが可能である。
【００２０】
図２Ｂは、図２Ａに例示されているグリフ２００のレンダリング２９５を例示している。該特定されたグリフにおける各アウトラインは中実領域としてレンダリングされ、三つの別個のグリフ構成要素のみを包含すると思われるグリフをレンダリングする。例えば、グリフ２００における構成要素２０１Ｃは幾つかのアウトラインを包含しているが、レンダリングされたアウトラインは、理想的には、単一のアウトライン（例えば、図１Ｂにおけるレンダリング１９５と比較して）のみを使用して特定される対応する構成要素（例えば、構成要素１６０）のレンダリングと同一に現れる。一般的に、グリフのレンダリングは、ドロップシャドウ、アウトライン、三次元エクスツルージョン、グリフの画像へのラスター化、又は画像マスクとしての使用のためなどのビジュアル効果を適用して、該グリフをカラーで又はカラーのシェードでレンダリングすることを包含することが可能である。幾つかの実現例において、図１Ａに示したものと同様のアウトラインを図２Ａに示したアウトライン要素から派生させることが可能である。
【００２１】
グリフ２００を特定することが必要な情報は、グリフ１００を特定するために必要な情報と比較することが可能である。特に、構成要素１４０は各ライン及びカーブを特定するために少なくも４８個の点を必要とし、各点は二つの値（例えば、水平及び垂直位置）から構成されていることに注意すべきである。グリフは、実際に、４５個の点をはるかに越えるものを包含する場合がある。対照的に、構成要素２１０Ａにおける８個の要素参照の各々は、各アウトラインの位置を特定するために８個の点及び各要素のパラメータに対して少なくとも８個の付加的な値を必要とする。従って、グリフ２０の最大の構成要素を構成する８個の要素（例えば、２４個の値）の各々のパラメータに対する値を識別し且つ与えるために必要な情報と比較して、アウトライン１４０（例えば、９０個の値）を定義する点を特定するために一層多くの情報が必要である。
【００２２】
図３は、複数の要素からなるライブラリ３１０内の要素を参照するフォントのグリフ３５０Ａ−Ｃの幾つかを包含するフォント３００の例示である。複数の要素からなるライブラリ３１０は、幾つかの要素を包含しており、その各々はそれらの別個のアウトライン（例えば、アウトライン３２０，３３０，３４０）によって例示されている。一般的に、各要素のアウトライン（例えば、アウトライン３２０，３３０，３４０）は、ライブラリ内の二つのアウトラインが同じ外観を有する（又は、夫々のいずれの要素のパラメータに従って変換された結果として同じ外観を有する）ことがないようにその他の全ての要素のアウトラインとは別である。例えば、幾つかの実現例においては、アウトライン３３０及び３４０は類似しているように見えるが、アウトライン３３０の側部はラインであり、一方アウトライン３４０の側部はカーブである。その他の実現例において、アウトライン３３０及び３４０は両方共同じである場合があるが、各アウトラインの関連する要素のパラメータは異なる場合がある。例えば、アウトライン３４０と関連する要素は該アウトラインの曲率に影響を与えるパラメータを包含する場合があり、一方、アウトライン３３０と関連する要素はそのようなパラメータを有するものではない。この様な実現例においては、アウトライン３４０の湾曲した変形例を必要とするグリフが該アウトラインの対応する要素及び適宜の曲率パラメータを参照し、一方、直線のアウトライン３３０から構成されるグリフは該アウトラインの曲率に関連する一つ又はそれ以上のパラメータに対する何ら付加的な値を包含することの必要性無で対応する要素を参照する。
【００２３】
ライブラリ内の一つ又はそれ以上の要素は、フォント内のグリフの各々によって参照することが可能である。例えば、グリフ３５０Ａは要素３２０，３３０，３３３，３３７，３４０を参照することが可能である。別のグリフ３５０Ｂは要素３２０，３３３，３３７を参照することが可能である。ライブラリ内の要素を参照することにより、フォント内の各グリフは、そのグリフがラインとカーブとのみを使用して特定される場合に必要とされるよりも一層少ない情報を使用して特定することが可能である。各要素は、特に視覚的類似性を示す多数のグリフを包含する複数のフォント（例えば、日本語の漢字及び伝統的且つ簡単化した中国語スクリプトにおいて使用されるキャラクタを包含する複数のフォント）の間でのフォント全体にわたってのグリフによって繰り返し参照されることが可能である。
【００２４】
図４は、グリフ４００において参照される要素と関連するパラメータの値（例えば、値４１０，４１５，４２５，４３５，４４５，４５０，４５５，４６０，４６５，４７０）がどのようにして該グリフにおけるアウトライン４４８，４９０Ａ−Ｃ，４９７の外観に影響を与えるかを例示している。各要素は、該要素と関連するアウトラインがどのように該グリフ内において現れるかに影響を与える幾つかのパラメータと関連している。全ての要素は、該グリフ内のアウトラインの夫々の水平及び垂直位置を特定する２個の位置パラメータと関連している。例えば、アウトライン４９０Ｃの位置は、グリフ内に存在することのある原点４０７（例えば、該グリフのベースライン４０３上の最も左側の点）に対して又は前に特定した点に対してのｘ及びｙ座標（例えば、夫々、値４１０及び値４４５）として特定することが可能である。全ての要素は、又、該グリフ内の要素のアウトラインの位置ではなく形状に影響を与える少なくとも１個の変換パラメータと関連している（例えば、該アウトラインの幅、高さ又は曲率）。
【００２５】
一般的に、要素のパラメータの各々は該要素の関連するアウトラインに対して適用することが可能な多様な変換の内の一つに対応している。各変換は、該要素のアウトラインの外観を変更（例えば、スケーリング、回転、又は曲率）することが可能であるような態様を特定する。パラメータの値は、どの程度その変換が該要素のアウトラインに影響を与えるかに影響する。例えば、要素４９０は、該要素の関連するアウトラインを水平方向にスケーリング即ち拡縮するために使用される変換と関連しているパラメータを包含している。注意すべきことであるが、要素４９０の水平方向のスケーリングを特定する値４７０は、同一の要素がアウトライン４９０Ｃの水平方向のスケーリングを特定する値４７５で特定される場合よりも一層大きなアウトライン４９０Ａを記述する。この様に、各要素のアウトラインは、該要素がグリフによって参照される度に、カスタム化させることが可能である。
【００２６】
その他の変換を一つの点の周りのアウトラインの回転を決定するために使用することが可能である。例えば、要素４９７は、その値４６０が点４６３周りの該要素のアウトラインの回転に影響を与えるパラメータと関連している。その周りに回転が発生する点４６３は、全ての要素に対して予め決定することが可能であり、又は各要素に対して予め決定することが可能である。幾つかの実現例においては、パラメータの値は、別のパレメータと関連する変換の性質に影響を与えるために使用することが可能である。例えば、要素４９７は、その周りに該要素のアウトラインの回転が発生する点（例えば、点４６３）の位置を特定する第２パラメータと関連する場合がある。
【００２７】
要素は、グリフ内の要素のアウトラインの位置に影響を与える以下の位置パラメータの内の各々を包含している。
【００２８】
●  水平位置、それはグリフ内の要素のアウトライン（例えば、値４１０）の水平位置に影響を与える。
【００２９】
●  垂直位置、それはグリフ内の要素のアウトライン（例えば、値４４５）の垂直位置に影響を与える。
【００３０】
各要素と関連する特定の変換は以下の変換の内の一つ又はそれ以上を包含することが可能である。
【００３１】
●  水平スケール、それは要素のアウトラインの幅に影響を与える（例えば、値４７０）。
【００３２】
●  垂直スケール、それは要素のアウトラインの高さに影響を与える。
【００３３】
●  厚さ、それはその幅に影響を与えること無しに要素のアウトラインの厚さ（例えば、値４５５）に影響を与える。幾つかの実現例においては、要素は、各々が要素のアウトラインの異なるセグメントの暑さに影響を与える幾つかの厚さパラメータと関連することが可能である。例えば、３個の厚さパラメータは要素４９５の１個の水平及び２個の垂直バーの各々の相対的厚さに影響を与えることが可能である。
【００３４】
●  回転、それは点周りのアウトライン（例えば、値４６０）の回転に影響を与える。
【００３５】
●  曲率、それはアウトラインに適用可能な曲率の点に影響を与える。例えば、パラメータ４５０の値はアウトライン４４８が特定の方向に湾曲する範囲を識別する。
【００３６】
●  ストロークテーパ（stroke taper）、それはアウトラインにおけるライン又はカーブが該アウトラインの残部に関して歪曲又はテーパする範囲に影響を与える。例えば、パラメータ４６５の値はアウトライン４９３の端部がテーパする範囲を識別する。
【００３７】
●  特徴エクステンション（feature extension）、それはアウトラインの一部の長さ又は寸法に影響を与える。例えば、アウトラインの特徴４５５は該アウトラインの残部に影響を与えること無しに長くさせることが可能である。別の例においては、アウトライン４９５の垂直ストロークを長くさせるか又は短くさせることが可能である。付加的に、アウトライン４９５の各垂直ストローク間の空間も関連するパラメータの値に従って影響を与えることが可能である。
【００３８】
●  半径、それは円形形状を有する要素のアウトラインの寸法に影響を与える。幾つかの実現例においては、パラメータは楕円形状を有するアウトラインに対する長半径及び短半径を特定するために使用することが可能である。
【００３９】
上の一つ又はそれ以上を単一のパラメータに結合させることも可能である。例えば、一つのパラメータは各々が水平及び垂直スケールに対応する二つのパラメータと関連することが可能である。別の要素は、水平及び垂直スケールの両方に影響を与える単一のパラメータと関連することが可能である（例えば、アウトラインのプロポーショナルスケーリング）。結合された変換は、そのアウトラインが変化するがプロポーショナルな寸法である複数のグリフで現れる場合に有用である場合がある。
【００４０】
幾つかの実現例において、各エンコードした要素はその要素のアウトライン（例えば、一連のライン及びカーブで特定された）のエンコーディングを包含することが可能である。各要素は、又、該要素が幾つの変換パラメータを有するかを特定する情報を包含することが可能であり、その変換はこれらのパラメータと関連しており且つ該要素におけるその点は各変換と関連している。例えば、情報は、該アウトラインのどの点が曲率変換に露呈されるかを表すアウトライン４４８と関連している要素でエンコードさせることが可能である。
【００４１】
幾つかの実現例において、該グリフ内の要素のパラメータに対して特定された値は前に特定したグリフと相対的なものとすることが可能である。例えば、アウトライン４９０Ｂの位置は、該グリフの原点４０７と相対的に特定させるのではなく、その前に特定された要素（例えば、アウトライン４９０Ａ）と相対的に特定することが可能である。アウトライン４９０Ｂの垂直位置と関連する値４３５は、前のアウトライン４９０Ａの上方の該アウトラインの位置を表す。同様に、値４２５及び４１５は、アウトライン４９０Ｂの位置と相対的なアウトライン４９０Ａの相対的な水平及び垂直位置を表す。
【００４２】
幾つかの実現例においては、各個別的な値は、前に特定した値と比較して相対的オフセットとして特定することが可能である。例えば、要素参照は以下の６個の値、即ち６１０，５４８，４５７，５２８，４２７，４８１を包含する場合がある。これらの同一の値は以下のように、即ち６１０，−６２，−９１，７１，−１０１，５４の相対的オフセットを使用して特定することが可能である。特に、注意すべきことであるが、２番目の値である５４８は６１０と−６２とを加算することにより与えられ、一方３番目の値は５４８と−９１とを加算することにより与えられる。注意すべきことであるが、二進でエンコードされる場合には、前者の６個の値は各々１バイトを超えるものを必要とするが、後者の６個の値は容易に７バイトのみでエンコードすることが可能である。代替的に、一連の値を該一連における最初の値に関しての相対的オフセットとして特定することが可能である（例えば、上の値の各々は第１の値、即ち６１０、と相対的なオフセットとして与えることが可能である）。
【００４３】
各グリフは、要素に対する参照、及び各参照される要素の各パラメータに対する値を包含するエンコーディングによって特定される。一般的に、各グリフのエンコーディングはより大きなフォントエンコーディングの一部であり、且つ、典型的に、格納装置上のファイル内に格納される（例えば、リードオンリ又はリード・ライトメモリ内に格納され且つアクセス可能である）。幾つかの実現例においては、フォントエンコーディングは、複数の要素からなるライブラリ及び各要素のパラメータ及び関連する変換に関する情報を包含することが可能である。その他の実現例においては、該複数の要素からなるライブラリは、フォントとは別にエンコードさせることが可能である。代替的に、該複数の要素からなるライブラリは、該要素の幾つかはフォントと共にエンコードされ、且つ該要素の幾つかはフォントとは別にエンコードされるように（例えば、複数のフォントエンコーディングが参照することが可能な複数の要素からなるグローバルライブラリ）、エンコードさせることが可能である。
【００４４】
幾つかの実現例においては、グリフは、各々が一つ又はそれ以上のオペランドを有する一連の命令としてエンコードすることが可能である。例えば、一つの命令は、第２位置の水平及び垂直アスペクトを表す二つのオペレーションと共に「lineto」命令を特定することによって現在の位置から第２位置へラインを描画すべきことを表すことが可能である。一つの命令は、又、複数の要素からなるライブラリから一つの要素のアウトラインが描画されるべきことを表す要素を参照することが可能であり、この様な命令は、又、パラメータ値として解釈することが可能な可変数のオペランドを特定することが可能である。例えば、参照命令の場合に、第１オペランドは特定の要素を識別することが可能であり（例えば、複数の要素からなるライブラリにおけるその要素の位置に対する参照）、一方、爾後のオペランドは該要素のパラメータの各々の値を表す。
【００４５】
例えば、同一の要素を二度参照するグリフは以下の代表的なエンコーディングを有することが可能である。
【００４６】
【表１】
2010504559.tif 000003
【００４７】
上のエンコーディングにおいて、「compose」は特定の要素、この場合には複数の要素からなるライブラリ内に要素「９４」、を識別するために第１オペランドを使用する命令を特定する。残りの４個のオペランドはその特定される要素に対するパラメータ値である。レンダリングされたグリフは２個のアウトラインを包含することとなるが、それらは両方共同一の要素を参照するが、これらの特定されるパラメータに従って位置と形状とが異なる。
【００４８】
幾つかの実現例においては、該要素のパラメータを特定するオペランドは、以下のような代表的なエンコーディングとしてスタックさせることが可能である。
【００４９】
【表２】
2010504559.tif 000004
【００５０】
最初の８個の値は上に与えられた二つの参照の両方に対する同一の４個のパラメータを特定する。パラメータ値をスタックさせることにより、要素「９４」は該エンコーディングにおいて特定される４個のパラメータの各倍数に対して参照される。一般的に、１個の要素のパラメータはこの様な態様でスタックさせることが可能であり、従って、ｎ個のパラメータを有する或る与えられた要素に対して、ｍ×ｎ個のパラメータが与えられる場合には、ｍ個のアウトラインがｎ個のパラメータからなる各ｍ組に従って発生される。
【００５１】
要素に対する参照に加えて、グリフエンコーディングは、又、アウトラインを直接的に特定する情報を包含することが可能である（例えば、要素を参照すること無しでのライン及びカーブとして）。この様な情報は、グリフの必要な側面を該要素ライブラリにおいて使用可能な要素から、単独で構成するか又は効率的に構成することができない場合に、グリフと共にエンコードさせることが可能である。
【００５２】
幾つかの実現例において、各エンコードされた値又は数を可変バイトエンコーディングを使用してエンコードさせることが可能である。可変バイトエンコーディングは、その数の絶対値に比例して可変数のバイトでその数をエンコードする。幾つかの実現例においては、小さな数及びその数をデコードするために付加的なバイトが必要であるか否かを特定する情報の両方をエンコードするために単一バイトを使用することが可能である。例えば、νが第１バイトの値であると仮定すると、νが３２と２４６との間の値を有する場合に、そのエンコードされた数は、ν−１３９である。νが２４７と２５０（２５０を含む）との間の値を有している場合には、そのエンコードされた数は、（ν−２４７）×２５６＋ν´＋１０８であり、尚ν´はνに続くバイトの値である。同様に、νが２５１と２５４（２５４を含む）との間の値を有している場合には、そのエンコードされた数は、（ν−２５１）×（−２５６）−ν´−１０８である。νの値が２５５である場合には、その数はνに続く４バイトにおける４バイト符号付数としてエンコードされる。０と３２との間のνの値は、少なくとも３２個のユニークな命令又はオペレーションをエンコードするために使用することが可能である（例えば、複数の要素からなるライブラリ内の１個の要素を参照する命令、又は現在の位置とオペランドによって与えられる位置との間にラインを描画する命令のようなもの）。
【００５３】
幾つかの実現例においては、グリフはそのエンコーディングにおいて使用される各数の絶対値を最小化させるためにエンコードさせることが可能である。大きな値を必要とする寸法におけるアウトラインの値を特定する代わりに（例えば、３００×３００の正方形ボックス）、そのアウトラインの相対的な形状を保存しながらその値を最小とさせることが可能である（例えば、３０×３０の正方形ボックス）。グリフをエンコードするために使用される数の絶対値を最小とさせることは、フォントを格納するために必要とされるバイト数を最小とさせ、特に、可変バイトエンコーディング又は相対的オフセット等の上述した技術の内の一つと結合された場合にそうである。
【００５４】
図５は複数の要素からなるライブラリ内の要素に対する参照を包含しているグリフをレンダリングするプロセス５００のフローチャートである。プロセス５００は、複数の要素からなるライブラリを識別することを包含している（ステップ５１０）。幾つかの実現例においては、複数の要素からなるライブラリは、該ライブラリからの要素を参照するグリフを包含しているフォントと共に包含されている。その他の実現例においては、複数の要素からなるライブラリはフォントとは別に識別することが可能である。該複数の要素からなるライブラリは予め定義することが可能である（例えば、オペレーティングシステム、アプリケーション、又はユーザの好みによって）。例えば、複数の要素からなるライブラリを識別することが可能であり、それから複数の別個のフォント（例えば、各フォントは異なるスタイルを持っており又は異なる組のグリフを包含している）は、各々、複数の要素からなる同一のライブラリを参照することが可能である。
【００５５】
プロセス５００は、該複数の要素からなるライブラリ内の１個の要素の識別を受け取ることを包含している（ステップ５２０）。フォントにおけるグリフは、参照において、該複数の要素からなるライブラリ内の特定の要素を識別することが可能である。プロセス５００は、その識別された要素の一つ又はそれ以上のパラメータの値を受け取ることを包含している（ステップ５３０）。各パラメータに対する値は、該グリフにおける要素に対する各参照と関連しており、又はそれと共にエンコードされる。値を受け取ることは、その値を特定するために必要とされる空間を最小とするためにエンコードされた値をデコードすることを包含することが可能である。例えば、或る値は前の値からの相対的オフセットとして特定することが可能であり、又はその値はコンパクトな可変バイトエンコーディングでエンコードすることが可能であり、及び／又は同一の要素に対する複数参照のパラメータをスタックさせることが可能である。各変換パラメータの値は、そのアウトラインがレンダリングされる場合にその要素と関連するアウトラインの形状を決定するために使用される。
【００５６】
プロセス５００は、グリフの要素参照において特定される如く、各パラメータの値に基づいて識別された要素と関連するアウトラインを変換することを包含している（ステップ５４０）。各グリフの変換は、該複数の要素からなるライブラリにおいて特定される要素（例えば、該要素と関連しているパラメータ）、及び該要素と関連している特定のアウトラインに基づいている。一般的に、グリフは複数の参照において幾つかの要素を識別し、且つ、各参照に対して、各参照の各要素に対するパラメータ値を特定することが可能である。各参照に対して、参照された要素のアウトラインが変換される（例えば、ステップ５２０乃至５４０は該グリフにおける各参照に対して繰り返すことが可能である）。
【００５７】
プロセス５００は、オプションとして、該グリフと関連する付加的なアウトラインを受け取ることを包含することが可能である（ステップ５５０）。この様なアウトラインは該複数の要素からなるライブラリにおけるいずれの要素とも関連していない。グリフは、特に該グリフが該ライブラリ内の一つ又は複数の要素の結合として効率的に特定することが不可能な形状を描写する場合には、ライン及びカーブとして特定されるこの様なアウトラインを包含することが可能である。
【００５８】
プロセス５００は、変換されたアウトラインをレンダリングすることにより該グリフをレンダリングすることを包含している（ステップ５６０）。その変換されたアウトラインは、該グリフの一部としてあたかも特定されたかのようにアウトラインをレンダリングするように同様な態様でレンダリングされる。一般的に、このことは、該アウトラインをラスター化することが関与し且つアンチエイリアシング、サブピクセルレンダリングなどのその他の動作を包含する場合がある。幾つかの実現例においては、該グリフはディスプレイ装置に対して直接的にレンダリングさせることが可能である。その他の実現例においては、各グリフのレンダリング又は変換したアウトラインがメモリキャッシュ内に格納される（例えば、典型的に高速揮発性メモリであるメモリの一部）。ディスプレイ装置に対して該グリフをレンダリングする場合に、該グリフは該キャッシュからレンダリングさせるか又はコピーすることが可能である。キャッシュからディスプレイ装置に対しての該グリフのレンダリングは、しばしば、同一のグリフの複数回のレンダリングを包含する場合がある一連のグリフをレンダリングするのに必要なデコーディング、アウトライン変換、ラスター化を最小とさせる。
【００５９】
通常、変換されたアウトラインは、該グリフにおける各参照に対してレンダリングされる。一つ又はそれ以上のアウトラインも該グリフで特定される実現例の中で（例えば、ステップ５５０において受け取られたように）、該グリフに特定的なアウトラインもレンダリングされる。
【００６０】
図６は、複数の要素からなるライブラリにおける要素を参照するグリフをレンダリングするシステム６００を例示している。システム６００は、通常、モジュール（例えば、モジュール６５０−６９０）及びリソース（例えば、フォント情報６１０）を包含している。モジュールは、典型的に、他のモジュールへ情報を供給し且つ他のモジュールから情報を受け取ることが可能な個別的な機能性のユニットである。モジュールは入力又は出力装置（例えば、グリフレンダラー６８０）との通信を容易化させることが可能である。モジュールはリソースに関して動作することが可能である。通常、リソースは、モジュールによって動作することが可能な情報の集まりである。然しながら、幾つかの実現例においては、別のモジュールへ情報を供給することが可能なモジュールはリソースのように動作することが可能であり且つその逆もまた真である。例えば、グリフキャッシュ６９０は、幾つかの実現例においては、リソースであると考えることが可能である。
【００６１】
システム６００はフォント情報６１０を包含しており、それは一つ又はそれ以上のフォントに関連する情報を包含しており、各フォントは一つ又はそれ以上のグリフに対してグリフ情報６２０を包含している。各グリフに対するグリフ情報は、一つ又はそれ状のアウトライン６２３及び一つの要素に対する一つ又はそれ以上の参照６２７を包含することが可能である。該グリフにおける各参照は、該複数の要素からなるライブラリ６３０内の一つの要素を識別する。該複数の要素からなるライブラリ６３０は、各々がアウトライン６３３と、位置及び変換の両方のパラメータ６３７とを包含している一つ又はそれ以上の要素を包含している。
【００６２】
システム６００は、フォントレンダリングエンジン６４０を包含している。フォントレンダリングエンジン６３０は受け取ったグリフ情報６２０をデコーディングする要素デコーダ６４５を包含している。要素デコーダ６４５は、要素ライブラリ６３０内の要素を識別するグリフ要素参照６２７をデコーディングする要素識別器６５０を包含している。例えば、要素識別器６５０は要素参照命令、及び要素の夫々のパラメータに対する参照された要素及び値の両方を特定することが可能な該命令の夫々のオペランドを識別することが可能である。要素のパラメータの値に関係するグリフ情報は、パラメータプロセッサ６６０によってデコードすることが可能である。パラメータプロセッサ６６０は、幾つのパラメータを該参照された要素が必要とするかを決定することが可能である。幾つかの実現例においては、パラメータプロセッサ６６０は、何時パラメータがスタックされたかを決定することが可能である（例えば、参照された要素を明示的に再識別すること無しに複数組のパラメータとしてエンコードされている同一の要素に対する複数参照）。
【００６３】
要素デコーダ６４５は、又、アウトライン変換器６７０を包含することが可能であり、それは該グリフにより特定され且つパラメータプロセッサ６６０によって処理されたパラメータの値に基づいて或る要素と関連するアウトラインを変換する。アウトライン変換器６４５は、互いにアウトライン内の点を調節する動作を実施することが可能である。例えば、点は水平方向又は垂直方向に離して移動させることが可能である（例えば、水平及び垂直スケーリングパラメータに対応して）。
【００６４】
フォントレンダリングエンジン６４０は、又、グリフレンダラー６８０を包含することが可能である。グリフレンダラー６８０は、該グリフにおいて参照される要素の変換されたアウトライン、及び、存在する場合に、該グリフ自身で特定されるいずれかのアウトラインを使用して該グリフをレンダリングすることが可能である。該グリフレンダラーは、各グリフをディスプレイ装置６９５に対して直接的にレンダリングすることが可能である。ディスプレイ装置６９５は、ＣＲＴ又はＬＣＤモニタ、プロジェクションディスプレイ装置、又はハンドヘルド又はポータブル通信、エンターテイメント、又は制御装置上に見られるような内蔵ディスプレイ装置を包含することが可能である。
【００６５】
幾つかの実現例においては、グリフレンダラー６８０はグリフをグリフキャッシュ内にレンダリングすることが可能である。グリフはオンデマンドでグリフキャッシュ６９０内にレンダリングさせることが可能であり（例えば、必要に応じて）、又はグリフキャッシュ６９内に事前にレンダリングさせることが可能である（例えば、フォントがシステムによってロードされる場合）。この様な実現例においては、ディスプレイ装置６９５に対してレンダリングする場合に、グリフレンダラー６８０は、該グリフを最初からレンダリングするのではなく、グリフキャッシュ６９０内の事前にレンダリングされているグリフへアクセスすることによってグリフをレンダリングすることが可能である。
【００６６】
一般的に、システム６００内に例示されているモジュール及びリソースは結合させるか又は分割することが可能であり且つ一つ又はそれ以上のネットワークによって接続されている一つ又はそれ以上のコンピューティング装置上でのハードウエア又はソフトウエアの何等かの結合で実現することが可能である。
【００６７】
本内容の実施例及び本明細書に記載されている機能的動作は、デジタル電子回路において、又は本明細書に開示されている構造及びそれらの構造的均等物を包含するコンピュータソフトウエア、ファームウエア、又はハードウエアにおいて、これらの内の一つ又はそれ以上の結合において実現することが可能である。本明細書に記載されている内容の実施例は、一つ又はそれ以上のコンピュータプログラムプロダクト、即ちデータ処理装置による実行、又はその動作の制御のためにコンピュータにより読み取り可能な媒体上にエンコードされているコンピュータプログラム命令からなる一つ又はそれ以上のモジュール、として実現することが可能である。該コンピュータにより読み取り可能な媒体は、機械読み取り可能な格納装置、機械読み取り可能な格納基板、メモリ装置、機械読み取り可能伝搬信号を効果あらしめる物質の組成物、又はこれらの内の一つ又はそれ以上の結合とすることが可能である。「データ処理装置」という用語は、例示としてプログラマブルプロセッサ、コンピュータ、又はマルチプロセッサ又はコンピュータを包含するデータを処理するための全ての装置、デバイス、及びマシンを取り囲んでいる。該装置は、ハードウエアに加えて、問題のコンピュータプログラムに対する実行環境を形成するコード、例えばプロセッサファームウエア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはこれらの内の一つ又はそれ以上の結合を構成するコードを包含することが可能である。伝搬される信号は人工的に発生された信号であって、例えば、適宜の受信装置へ送信するために情報をエンコードするために発生されるマシンにより発生される電気的、光学的、又は電磁的な信号である。
【００６８】
コンピュータプログラム（プログラム、ソフトウエア、ソフトウエアアプリケーション、スクリプト、又はコードとしても知られている）は、コンパイル型又はインタプリタ型言語を含む任意の形態のプログラミング言語で書くことが可能であり、且つそれはスタンドアローンプログラムとして、又はモジュール、コンポーネント、サブルーチン、又はコンピューティング環境において使用するのに適したその他のユニットとしてを包含する任意の形態でデプロイさせることが可能である。コンピュータプログラムは必ずしもファイルシステム内のファイルに対応するものではない。プログラムは、他のプログラム又はデータを保持するファイルの一部の中に（例えば、マークアップ言語文書内に格納されている一つ又はそれ以上のスクリプト）、問題のプログラム専用の単一のファイル内に、又は複数の共同型ファイル内に（例えば、一つ又はそれ以上のモジュール、サブプログラム、又はコードの一部を格納するファイル）格納することが可能である。コンピュータプログラムは、一つのコンピュータ上で、又は一箇所に位置されているか又は複数の箇所にわたり分散されており且つ通信ネットワークによって相互接続されている複数のコンピュータ上で実行すべくデプロイさせることが可能である。
【００６９】
本明細書に記載しているプロセス及び論理フローは、入力データに関して動作を行い出力を発生することにより機能を実施するための一つ又はそれ以上のコンピュータプログラムを実行する一つ又はそれ以上のプログラマブルプロセッサによって実施することが可能である。該プロセス及び論理フローは、又、特別目的論理回路、例えば、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）又はＡＳＩＣ（応用特定集積回路）、によって実施することも可能であり且つそのようなものとして実現することも可能である。
【００７０】
コンピュータプログラムの実行に適したプロセッサは、例として、汎用及び特別目的マイクロプロセッサの両方、及び任意の種類のデジタルコンピュータの任意の一つ又はそれ以上のプロセッサを包含している。通常、プロセッサは、リードオンリメモリまたはランダムアクセスメモリ又はその両方から命令とデータとを受け取る。コンピュータの基本的な要素は、命令を実施するためのプロセッサ、及び命令とデータとを格納するための一つ又はそれ以上のメモリ装置である。通常、コンピュータは、又、データを格納するための一つ又はそれ以上の大量記憶装置、例えば、磁気的、磁気光学的ディスク、を包含しているか又は光学的ディスクからデータを受け取るか又はそれへデータを転送し、又はその両方を行うために動作結合されている。更に、コンピュータは別の装置、例えば、数例を挙げれば、携帯電話、パーソナルデジタルアシスタント（ＰＤＡ）、モバイルオーディオプレイヤー、全地球測位システム（ＧＰＳ）受信機、の中に埋蔵させることが可能である。コンピュータプログラム命令及びデータを格納するのに適したコンピュータにより読み取り可能な媒体は、全ての形態の非揮発性メモリ装置、媒体、及びメモリ装置、例として、例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭ、及びフラッシュメモリ装置等の半導体メモリ装置、例えば内部ハードディスク又は着脱自在ディスク等の磁気ディスク、磁気光学的ディスク、及びＣＤ−ＲＯＭ及びＤＶＤ−ＲＯＭディスクを包含している。該プロセッサ及び該メモリは特別目的論理回路によって補充されるか又はその中に組み込むことが可能である。
【００７１】
ユーザとの対話を与えるために、本明細書に記載されている内容の実施例は、ＣＲＴ（陰極線管）又はＬＣＤ（液晶ディスプレイ）モニタなどのユーザに対して情報を表示するためのディスプレイ装置、及びそれによりユーザがコンピュータへの入力を与えることが可能なマウス又はトラックボール等のポインティングデバイス及びキーボードを具備するコンピュータ上で実現することが可能である。その他の種類の装置もユーザとの対話を与えるために使用することが可能であり、例えば、ユーザへ与えられるフィードバックは任意の形態の知覚的フィードバック、例えば、視覚的フィードバック、聴覚的フィードバック、又は触覚的フィードバック、とすることが可能であり、且つユーザからの入力は聴覚的、会話的、又は触覚的な入力を包含する任意の形態で受け取ることが可能である。
【００７２】
本明細書に記載されている内容の実施例は、データサーバ等のバックエンドコンポーネントを包含するか、又はアプリケーションサーバ等のミドルウエアコンポーネントを包含するか、又はそれを介してユーザが本明細書に記載されている内容の実現例と対話することが可能なグラフィカルユーザインターフェース又はウエブブラウザを具備するクライエントコンピュータ等のフロンとエンドコンピュータを包含するか、又はこの様なバックエンド、ミドルウエア、又はフロントエンドコンポーネントの内の一つ又はそれ以上の任意の結合であるコンピューティングシステムにおいて実現することが可能である。本システムのコンポーネントは、例えば通信ネットワーク等の任意の形態又は媒体のデジタルデータ通信によって相互接続させることが可能である。通信ネットワークの例は、ローカルエリアネットワーク（ＬＡＮ）及びインターネット等のワイドエリアネットワーク（ＷＡＮ）を包含している。
【００７３】
本コンピューティングシステムは、クライエント及びサーバを包含することが可能である。クライエント及びサーバは、通常、互いに離隔しており且つ典型的に通信ネットワークを介して相互作用を行う。クライエントとサーバの関係は、夫々のコンピュータ上で稼動するコンピュータプログラムによって且つ互いにクライエント・サーバ関係を有することによって発生する。
【００７４】
本明細書は多数の詳細を包含するものであるが、これらはいずれかの発明の範囲又は特許請求の範囲に関する制限として解釈されるべきものではなく、特定の発明の特定の実施例に対して特定的なものである場合がある特徴の記載として解釈されるべきである。別々の実施例の文脈において本明細書に記載されている或る特徴は、又、単一の実施例において結合して実現させることも可能である。逆に、単一の実施例の文脈において記載されている種々の特徴は、又、複数の実施例において別々に又は任意の適宜の副結合において実現することが可能である。更に、特徴は上において或る結合で動作するものとして記載されており且つ初期的にはそのようなものとして特許請求の範囲において記載されている場合があるが、特許請求の範囲に記載されている結合からの一つ又はそれ以上の特徴は、幾つかの場合においては、該結合から削除することが可能であり、且つ特許請求の範囲に記載されている結合は副結合又は副結合の変形に向けられたものとすることが可能である。
【００７５】
同様に、動作は特定の順番で図面中に図示されているが、これはこの様な動作が、所望の結果を達成するために、図示されている特定の順番で又は逐次的な順番で実施されること、又は全ての例示されている動作が実施されることを必要とするものとして理解されるべきものではない。或る環境においては、マルチタスク及び並列処理が有益的である場合がある。更に、上述した実施例における種々のシステムコンポーネントの分離は、全てにの実施例においてこの様な分離が必要であるものとして理解されるべきものではなく、且つ記載したプログラムコンポーネント及びシステムは通常単一のソフトウエアプロダクト内に一緒に統合させるか又は複数のソフトウエアプロダクトにパッケージ化させることが可能であることを理解すべきである。
【００７６】
本明細書に記載されている内容の特定の実施例について説明した。その他の実施例は、以下の特許請求の範囲内のものである。例えば、特許請求の範囲において記載されている動作は異なる順番で実施することが可能であり、尚且つ所望の結果を達成することが可能である。
【図１Ａ】
2010504559.tif 000005
【図１Ｂ】
2010504559.tif 000006
【図２Ａ】
2010504559.tif 000007
【図２Ｂ】
2010504559.tif 000008
【図３】
2010504559.tif 000009
【図４】
2010504559.tif 000010
【図５】
2010504559.tif 000011
【図６】
2010504559.tif 000012
【国際調査報告】
2010504559.tif 000013
2010504559.tif 000014