添付の図面は、実寸通りに描かれるよう意図されない。図面において、様々な図において表される夫々の同じか又はほぼ同じ構成要素は同じ符号によって参照される。明瞭さのために、全ての構成要素が全ての図面において符号を付されているわけではない。
出願人は、ユーザインターフェースにおけるテキストの表示のために必要とされる処理ステップが、アニメーションを含むか又はユーザがインターフェースの要素を動画化することを可能にするインターフェースにとって特別なインターフェースの動きを鈍くすることに気付いた。しかし、出願人は更に、処理ステップの適切な順序づけがテキストに関する情報のキャッシングを可能にすることができ且つこのような情報のキャッシングがテキストのレンダリングを促進することができることに気付いた。加えて、出願人は、ピクセルの色値及びカバレッジ値を記憶する従来の技術が単一のデータ構造においてまとめて関連付けてピクセルの値を記憶したが、テキストのレンダリングは、サブピクセル色値及びサブピクセル・カバレッジ値がグラフィクス処理ユニットよって処理されるよう異なるデータ構造に分割された場合に迅速に処理され得ることに気付いた。
特に、出願人は、ユーザインターフェースが従前のインターフェースよりもインタラクティブであり且つ動画化されるようになっており、これにより、アニメーションの量に応じてユーザインターフェースにおけるテキストのレンダリングに特定の困難さが加わることに気付いた。見る者にとって好ましいようにテキストをレンダリングすることは、テキストのカバレッジ値の計算、テキストの色情報及びカバレッジ値と重なり合うグラフィクスの色情報との結合、並びに結果として得られるコンポジット色値のガンマ補正を含む多くの処理ステップを必要とする。それらの処理ステップは、実行するのに比較的長い時間を要し、これにより、アニメーションがユーザインターフェースに組み込まれる場合に、時間遅延の問題が引き起こされ得る。例えば、ユーザインターフェースは、テキストに対するズームイン又は背景グラフィクスに対するテキストのスクロール若しくは移動といったインタラクティブなアニメーションを可能にする。従来のレンダリング技術によれば、テキストがアニメーションに続いて再レンダリングされる度に、同じ処理ステップが、テキスト及びグラフィクスの新たな重なり合いのためのコンポジット色値を決定するために再び実行される必要がある。従って、処理ステップは、不規則に変化するか又は遅い態様において、インターフェースをユーザに応答させ得る。
出願人は更に、そのような動画化インターフェースが使用される装置のタイプが変化していることに気付いた。動画化インターフェースは、携帯電話機及びタブレット型コンピュータのような、タッチスクリーン・インターフェースを備える携帯型コンピュータにおいてよく使われている。しかし、そのような携帯型コンピュータは、デスクトップ又はラップトップ型パーソナルコンピュータと比べて、限られたリソース及び比較的遅いプロセッサを有する。そのような限られたリソースによりアニメーションに続いてテキストのための処理ステップを実行することは、それらの動画化インターフェースを更に遅くならしめる。
出願人はまた、重なり合う表示要素に対するテキストの位置が変化する場合に、コンポジット色値は変化し、従来のレンダリング処理はガンマ補正が新しいコンポジット値に対して実行される必要があるので、それらの処理ステップは繰り返される必要があることに気付いた。しかし、出願人は、テキスト情報及び他の表示要素に関する情報がガンマ補正を実行せずに結合され得る場合に、アニメーションに続いて実行されるべき処理ステップが能率化され得ると気付いた。特に、ガンマ補正が削除され得る場合は、テキスト及び他の重なり合う表示要素のための色情報はアニメーションに続いて線形に結合され得る。そのような線形結合は高速に実行され得る。更に、サブピクセル・カバレッジ値を含むテキスト情報は前もってキャッシュされ、アニメーションに続いて、単に取り出されて、重なり合う表示要素に関する情報と結合され得る。単に結合を実行することは、インターフェースのレンダリングを迅速に処理し、インターフェースをユーザが見て操作するのに好ましいものとすることができる。
加えて、出願人は、幾つかの従来のグラフィクス処理ユニット(GPU)が、色情報の線形結合を含む幾つかのレンダリング動作を実行するよう特に構成され、それらの動作を高速に実行することができることに気付いた。GPUがテキスト及び他の重なり合う表示要素の色情報の結合のための動作を実行するよう構成され得る場合に、アニメーションに続くレンダリング動作は更に迅速に処理され得る。例えば、GPUがキャッシュされたサブピクセル・カバレッジ値のデータ構造に作用し、キャッシュされたサブピクセル・カバレッジ値をテキスト及び他の重なり合う表示要素のサブピクセル色情報と結合して、サブピクセルのコンポジット色値を決定するようプログラミングされる場合に、レンダリング動作は迅速に処理され且つインターフェースは改善され得る。
然るに、本願では、カバレッジ情報のキャッシングを可能にするために、レンダリングされるテキストに関するカバレッジ情報を計算する技術が記載される。幾つかの実施形態において、サブピクセル・アンチエイリアシング技術による使用のための処理されたカバレッジ値は、計算されてキャッシュされる。サブピクセル・カバレッジ値が処理後に後の使用のためにキャッシュされる場合に、サブピクセル・カバレッジ値は、処理された値がサブピクセルの色情報と結合又は関連づけされることなしに、コンピュータ装置のメインメモリ(例えば、システムメモリ又はビデオメモリ)に置かれてよい。処理されたカバレッジ値は、幾つかの実施形態において、ディスプレイの制御において使用されるコンポジット色値を計算するようテキストの色情報と1又はそれ以上の他の重なり合う表示要素の色情報との線形結合を可能にしてよい。ディスプレイのサブピクセルの制御において使用されるそのようなコンポジット色値は、幾つかの実施形態において、ガンマ補正処理を実行せずに計算され得る。
また本願では、キャッシュされたサブピクセル・カバレッジ値を取り出し、サブピクセル・カバレッジ値をテキスト及び他の重なり合う表示要素の色情報と結合して、サブピクセルのコンポジット色値を計算する技術が記載される。幾つかの実施形態において、少なくとも1つのグラフィクス処理ユニット(GPU)は、サブピクセル・カバレッジ情報を用いて動作を実行するよう及びサブピクセルのコンポジット色値を計算するよう構成されてよい。幾つかの場合に、GPUは、別個に記憶されているテキストのサブピクセル色値及びテキストのサブピクセル・カバレッジ値に基づきサブピクセルのコンポジット色値を計算するよう構成されてよい。例えば、サブピクセル色値(ピクセルの赤、緑及び青色チャネルのための制御値であってよい。)は、サブピクセル・カバレッジ値とは異なるデータ構造において記憶されてよい。これは、GPUが、ピクセルの4つのフィールド/値、すなわち、ピクセルの3つの色値(赤、緑及び青)及び1つのカバレッジ値を有して単一のデータ構造において配置される単一のピクセルに関する入力情報を処理するよう元々から適合される場合であってよい。幾つかの実施形態において、サブピクセル・カバレッジ値によれば、GPUは、ピクセルの6つの値、すなわち、3つのサブピクセル色値(赤、緑及び青)及び3つのサブピクセル・カバレッジ値を処理する。GPUは、4値フォーマットにおいて配置される場合に効率的且つ高速に入力情報を処理することができる。効率的な処理のために4値フォーマットにデータを置くよう、幾つかの実施形態において、ピクセルの色値は、ピクセルのカバレッジ値から分離され、異なるデータ構造に置かれる。幾つかの場合に、3つの色値は、1つの4値データ構造に置かれてよく、3つのサブピクセル・カバレッジ値は、異なる4値データ構造に置かれてよい。GPUは次いで、2つのデータ構造を用いて単一のピクセルについての情報を処理するよう構成されてよく、このとき、従来通りにGPUは単一のデータ構造を用いて単一のピクセルについての全ての情報(色値及びカバレッジ値)を処理する。
これらの技術の様々な例となる実施は以下で記載される。なお、当然のことながら、実施形態は、如何なる適切な態様においても実施されてよいので、論じられているそれらの例となる技術のいずれかを実施することに制限されない。
上述されたように、本願で記載される技術は、テキストが表示される場合にディスプレイのピクセル及びサブピクセルを制御するコンポジット色値の決定において使用されてよい。幾つかの場合に、テキストは単独で表示されてよく、サブピクセル・カバレッジ値は、コンポジット色値を計算する場合にテキストの色情報のみを変更する際に使用されてよい。しかし、他の場合に、テキストは、1又はそれ以上の他の表示要素と重なり合って表示されてよく、サブピクセル・カバレッジ値は、テキスト及び他の表示要素の夫々の色情報に基づきコンポジット色値を計算する場合に使用されてよい。実施形態は、何らかの特定の表示要素又はタイプの表示要素と重なり合うテキストについてコンポジット色値を計算することに制限されない。様々な実施形態において、重なり合う表示要素は、テキストの上又はテキストの後ろに表示されるべき1又はそれ以上のグラフィクスであってよく、あるいは、他のテキストであってよい。記載の簡単のために、以下の例では、サブピクセル・カバレッジ値は、テキストが他の表示要素と重なり合う場合にコンポジット色値を計算する際に使用されるよう記載され、他の重なり合う表示要素は、背景グラフィクスとして記載される。なお、当然のことながら、別なふうに示されない限り、これらの例となる技術のいずれも、重なり合う表示要素の他のタイプ、又はテキストが何れの他の表示要素とも重なり合わない場合とともに使用されてよい。
本願で記載される技術は、テキストと重なり合う表示要素との間の関係が変化する場合にテキストを効率的且つ高速に表示するのに有用であり得る。そのような関係は、テキストがユーザインターフェースにおいて動く場合を含め、テキスト又は重なり合う表示要素が互いに対して動く場合に変化し得る。例えば、本願で使用される技術は、テキストが背景グラフィクス上をスクロールされる場合に有用であり得る。それらの技術はまた、背景グラフィクスがテキストに対して動かされる場合、又はテキストが重なり合う画像が変化する場合に使用されてよい。記載の簡単のために、以下の例は、テキストが背景グラフィクスに対して動く場合にテキストをレンダリングすることに関連して与えられる。なお、当然のことながら、それらの技術は、テキストに対する如何なる変化にも関連しないテキストの表示要求に応答すること、又はいずれかの相対変化に応答することを含め、何らかの理由によりテキストをレンダリングするのに有用であり得る。
幾つかの実施形態は、MICROSOFT(登録商標)CLEARTYPE(登録商標)サブピクセル・アンチエイリアシング技術のようなサブピクセル・アンチエイリアシング技術とともに動作してよい。サブピクセル・アンチエイリアシング技術は、ディスプレイのピクセルが複数のサブピクセル発光部品を含むディスプレイとともに動作してよい。本願で記載されるテキストレンダリング技術は、当該技術で知られているような技術を含む何れかのサブピクセル・アンチエイリアシングとともに使用されてよい。
図1Aは、幾つかのサブピクセル・アンチエイリアシング技術が動作することができるディスプレイの例をブロック図形式で表す。図1Aのディスプレイ100は、ピクセル102を含む5×7のピクセルのアレイを含む。ディスプレイ100のピクセルの夫々は3つのサブピクセルを含み、サブピクセルの夫々は特定の色の光を生成するよう配置される。ディスプレイ100の第1の行は、図1Aにおいて、各サブピクセルが生成するよう構成される光の色、すなわち、赤(R)、緑(G)又は青(B)により標識されている。ピクセル102は例えば、赤色サブピクセル102A、緑色サブピクセル102B及び青色サブピクセル102Cを含む。
ディスプレイのサブピクセルは、ピクセルが全体として特定の色又は強さの光を放射するように制限され得る。例えば、夫々特定の量の光を放射するよう赤、緑及び青色サブピクセルを制御することによって、紫色の光がピクセルから全体として放射され得る。グレースケール・アンチエイリアシング及び他のカバレッジ技術によれば、単一のカバレッジ値がピクセルに対して全体として設定され、サブピクセルの夫々についての色値を調整するために使用される。しかし、サブピクセル・アンチエイリアシング技術によれば、サブピクセルの夫々は、代わりに、個々のカバレッジ値を割り当てられ、それにより、各サブピクセルによって出力される光は、各サブピクセルによる効果を作り出すよう制御され得る。特に、サブピクセルは夫々、重なり合う背景グラフィクスと溶け合うグリフの外観を作り出すよう平滑効果を与えるのに使用されるカバレッジ値を割り当てられてよい。ピクセルが全体として、サブピクセル・カバレッジ値を用いて調整される色値により制御される場合に、サブピクセルは所望の融合効果を作り出す。
図1Bは、カバレッジ値を個々のサブピクセルへ割り当てることによって融合効果を生み出す例を示す。図1Bは、図1Aのディスプレイ100のサブピクセルに夫々対応するカバレッジ値のマッピング110を示す。マッピング110は、‘A’グリフが表示される場合に如何にしてカバレッジ値が割り当てられ得るかを示す。グリフが表示される場合に、マッピング110は、ディスプレイ100での表示のためにグリフをレンダリングするよう他の情報と結合されてよい。
マッピング110において、ディスプレイのサブピクセルは、異なるカバレッジ値を割り当てられる。ピクセル112の例において示されるように、1つのピクセルのサブピクセルの夫々は、異なるカバレッジ値を割り当てられてよい。各サブピクセルに割り当てられるカバレッジ値は、背景グラフィクスとの融合効果を生み出すように、サブピクセルを用いて表示されるテキスト色の透明度を制御するために使用されてよい。上述されたように、テキストのためのカバレッジ値は、コンポジット色の計算においてテキスト色を重み付けすることによってテキスト色及び背景グラフィクスの色に基づきコンポジット色を決定する場合に、使用されてよい。サブピクセルが特定の色の光(例えば、赤、緑又は青色の光)を放射するところのサブピクセル・カバレッジ値の場合に、サブピクセル・カバレッジ値は、各サブピクセルから放射される光の量又は光の強さを決定するためにテキスト色及び背景グラフィクス色とともに使用されてよい。
サブピクセル・カバレッジ値により光の量/強さを設定することにより、融合効果がディスプレイで表示されるテキストのために与えられ得る。この融合効果は、上述されたように、テキストのエッジを和らげ且つテキストをヒトが見るのにより好ましいものとならしめる。
当然のことながら、図1A及び1Bの例で与えられているサブピクセルの数、色及び順序付けは単に例示にすぎない。実施形態はそれらの点において制限されないので、実施形態は、他の色のサブピクセル(例えば、黄色のサブピクセル)とともに、ピクセル毎のより多い若しくはより少ないサブピクセル(例えば、4つのサブピクセル)とともに、及び/又は何らかの他の方法において配置されたピクセル(例えば、赤−緑−青ではなく青−赤−緑の順)とともに、動作してよい。
更に、実施形態はまた、何らかの特定のタイプのグラフィカルインターフェース、ディスプレイ又はコンピュータ装置とともに動作することに制限されない。本願で記載される技術は、何らかの適切なディスプレイにおいて示される何らかのグラフィカルインターフェースのためのテキストのレンダリングの部分として使用され得る。更に、グラフィカルインターフェース及びディスプレイは何らかの適切なコンピュータ装置とともに実施され得る。実施形態が動作することができるコンピュータ装置の例には、ラップトップ若しくはデスクトップ型パーソナルコンピュータ、携帯電話機、スマートフォン及びパーソナルデジタルアシスタント(PDA)を含む携帯型コンピュータ、タブレット型コンピュータ、並びにサーバがある。
幾つかの実施形態が動作することができるコンピュータ装置の例が図2において表されている。図2のブロック図は、例となるコンピュータ装置200の幾つかの構成要素を示す。示されるように、コンピュータ装置200は1又はそれ以上の実行処理202(本願では、より簡単に“処理”200とも呼ばれる。)を含み、処理の夫々は、内容がディスプレイで表示されることを要求するようグラフィクスエンジン204と相互作用してよい。表示されるコンテンツは、アンチエイリアシング技術を用いてグラフィクスエンジン204によってレンダリングされ得るテキストを含んでよい。ディスプレイでの表示のための、テキストを含むコンテンツのレンダリングの部分として、グラフィクスエンジン204は、レンダリングに関連する幾つかの動作を実行するよう少なくとも1つのグラフィクス処理ユニット(GPU)206と相互作用してよく、加えて、幾つかの情報をメモリ308に記憶してよい。
処理202は、実施形態がこれに関連して制限されないので、如何なるタイプの処理又は機能も実行する如何なる適切な処理であってもよい。処理の例には、アプリケーションソフトウェア、システムソフトウェア、及び/又は他のタイプのソフトウェアに関連する処理がある。各処理の機能は、処理202の他の機能を操作又はプロンプトするようユーザによって用いられ得るグラフィカルユーザインターフェース(GUI)の少なくとも一部を制御及び/又は表示するための機能を含んでよい。GUIはテキストを含んでよく、その場合に、GUIを表示することは、GUIにおいてテキストを表示することを含んでよい。実施形態は、何らかの適切なフォーマットにおいてテキストを表示するGUIに制限されず、且つ、何らかの適切なフォーマットにおいて存在するテキストに制限されない。テキストが英語のテキストである場合に、テキストは文字及び句読点の組み合わせを含んでよい。テキストが他の言語である場合に、他の形態の他の文字が使用されてよい。
GUIがテキストを含む場合に、GUIは、幾つかの場合にまた、テキストのアニメーションを可能にしてよい。そのようなアニメーションに応答して、テキストはディスプレイにおいて調整されてよい。そのような調整は、背景グラフィクスに対してテキストを動かすこと、テキストに対して背景グラフィクスを動かすこと、若しくは背景を変化させること、又は上述された何らかの他の適切な調整のような、インターフェースの他の表示要素に対してテキストの位置又はサイズを変化させることを含む。従って、GUIを表示することは、例えば、他の表示要素に対して新しい位置にあるテキストにより、GUIの表示を更新することを含んでよい。
GUIの表示を表示又は更新するよう、処理202はグラフィクスエンジン204と相互作用してよい。グラフィクスエンジン204は、表示のためにグラフィクスをレンダリングするようコンピュータ装置200によって実行される機能の少なくとも一部を実施してよい。幾つかの実施形態において、グラフィクスエンジン204は、表示のためにレンダリングされるテキストに関するサブピクセル・カバレッジ値を決定するようアンチエイリアシング機関として動作してよい。幾つかの実施形態において、グラフィクスエンジン204は更に、グラフィカルインターフェースにおける表示のためにテキストを準備するようテキストのラスタ画像を生成する機能を有してよい。そのようなラスタ画像は、ビットマップを含む如何なる適切なフォーマットであってもよい。更に、幾つかの実施形態において、グラフィクスエンジン204は、表示されるテキストに関する情報を背景グラフィクスのような他の表示要素に関する情報と結合し、例えば、ディスプレイを制御する際に使用されるコンポジット色情報を決定することによって、ディスプレイでの表示のための結合を準備してよい。幾つかの実施形態において、グラフィクスエンジン204は、MICROSOFT(登録商標)Direct2d及び/又はDIRECTX(登録商標)グラフィクスライブラリの一部を実施してよく、それらグラフィクスライブラリの夫々は、ワシントン州レドモンドのマイクロソフト・コーポレーションから市販されている。グラフィクスエンジン204の機能は如何なる適切な態様においても実行されてよい。幾つかの実施形態において、グラフィクスエンジン204の機能は全体として、コンピュータ装置200の少なくとも1つの中央演算処理装置(CPU)によって実行される命令を介して実行されてよい。他の実施形態においては、その機能の少なくとも一部は、1又はそれ以上のGPU206によって実行される命令を介して実行されてよい。少なくとも幾つかの機能がGPU206により実行される場合に、GPU206は、機能を実行するようグラフィクスエンジン204によって構成され、及び/又は特定の命令を実行するよう構成されてよい。
然るに、ユーザと相互作用するためのGUIを表示し更新するよう、処理202はグラフィクスエンジン204と相互作用してよい。グラフィクスエンジン204との相互作用により、処理202は、処理202がディスプレイで表示したいと望むGUIのコンテンツをグラフィクスエンジン204に知らせてよい。GUIのコンテンツに関する情報は、表示要素の形状、サイズ、位置及び色を含め、GUIに含まれる表示要素の如何なる適切な特性も含んでよい。例えばユーザ入力に応答してGUIが更新される場合に、それらの特性のいずれか又は全ては処理202とグラフィクスエンジン204との間で再び通信されてよい。表示要素に関する情報は、如何なる適切な態様においても処理202とグラフィクスエンジン204との間で通信されてよい。例えば、幾つかの実施形態は、処理202とグラフィクスエンジン204との間でデータを交換するために1又はそれ以上のアプリケーション・プログラミング・インターフェース(API)関数呼び出しを用いてよい。
上述されたように、本願で記載される技術は、ディスプレイで示されるインターフェースにテキストをレンダリング及び表示する際に使用されてよい。然るに、幾つかの実施形態において、処理202は、テキストがGUIにおいて表示されること及び/又はテキストの表示が更新されることを要求するようグラフィクスエンジン204と相互作用してよい。如何なる適切なテキストも、実施形態がこの点において制限されないので、如何なる適切な様式においてもインターフェースにおいて表示されてよい。
本願で記載される技術に従って、テキストがディスプレイに表示される要求を処理202がグラフィクスエンジン204へ送る場合に、グラフィクスエンジン204は、如何にしてテキストがインターフェースにおいて表示されるのかを決定してよい。如何にしてテキストを表示すべきかを決定するためにグラフィクスエンジン204によって実行され得る例となる動作は、図3乃至7に関連して以下で詳細に論じられる。しかし、手短に述べると、グラフィクスエンジン204は、グリフ記述のデータ記憶204Aに基づき、ディスプレイに表示されるテキストに対応する形状を特定してよい。上述されたように、テキストは文字の如何なる適切な組み合わせも有してよく、グリフは文字の全て又は一部であってよい。コンピュータ装置は、文字を描く際に使用されるグリフの線又は点のような、如何にしてグリフの形状を描画すべきかを指示するグリフ記述のデータ記憶204Aを含んでよい。グリフの形状は、実施形態がこの点において制限されないので、グリフの画像又はグリフの形状の数学的記述を含む何らかの適切な記述に基づき特定されてよい。
データ記憶204Aの記述から、グラフィクスエンジン204は、ディスプレイにテキストを表示するために使用されるディスプレイのピクセル及びサブピクセルへのグリフ形状のマッピングを決定してよい。そのようなマッピングの例は、図1Bにおいて例示されて上述された。次いで、グラフィクスエンジン204は、テキストの表示において使用されるサブピクセル・カバレッジ値を、サブピクセル・アンチエイリアシング技術を用いて計算してよい。
幾つかの実施形態において、グラフィクスエンジン204がテキストのサブピクセル・カバレッジ値を計算する場合に、サブピクセル・カバレッジ値は、それらの値がキャッシュされ、その後に、テキストがGUIで表示又は更新される場合にキャッシュから取り出され得るように、計算されてよい。例えば、幾つかの実施形態において、サブピクセル・アンチエイリアシング技術を用いてテキストについて計算されたサブピクセル・カバレッジ値は、処理されたカバレッジ値を得るよう、キャッシュされる前に処理されてよい。処理は、アンチエイリアシング技術を用いて計算された初期カバレッジ値に補正値を適用することによって補正値を変更することを含んでよい。補正値は、カバレッジ値のキャッシングとキャッシュされたカバレッジ値の使用とを可能にするように、如何なる適切な方法においても初期カバレッジ値を補正してよい。幾つかの実施形態において、補正値は、テキストと重なり合うグラフィクスとの合成に対して、該合成がインターフェースで表示される前に実行され得るガンマ補正処理をその後に実行する効果を再現するように、初期カバレッジ値を変更してよい。カバレッジ値をキャッシュする前にガンマ補正処理の効果を再現することによって、キャッシュされたカバレッジ値は、テキストが表示されるディスプレイの非線形性を補償するよう調整され得る。ディスプレイのそのような非線形性は、上述されたように、テキスト及び重なり合うグラフィクスの色値が線形に結合されることを妨げる。カバレッジ値をキャッシュする前にそのような非線形性を補償することによって、サブピクセル・カバレッジ値がキャッシュから取り出される場合に、値は、ガンマ補正処理を実行せずにテキスト及び背景グラフィクスに関する色情報と結合され得る。従って、グラフィクスエンジン204は、たとえテキストの色値が補正を知らせるために使用され得るとしても、カバレッジ値がサブピクセルのテキスト色値と組み合わされていない状態で、直接にサブピクセル・カバレッジ値に対してカバレッジ補正処理を実行してよい。カバレッジ補正処理を実行する部分として、グラフィクスエンジン204は、カバレッジ補正値のデータ記憶204Bから補正値を取り出してよい。カバレッジ値を補正するためにグラフィクスエンジン204によって使用され得る技術は、図5に関連して以下で詳細に論じられる。
グラフィクスエンジン204が、何らかの適切な処理を通じて、処理されたカバレッジ値を計算した場合に、処理されたカバレッジ値はグラフィクスエンジン204によってデータ構造210へ書き込まれてよい。如何なる適切なデータ構造も使用されてよい。幾つかの実施形態において、データ構造210は、表示要素に関する色情報を記憶するよう構成され且つGPUが元々から処理するよう適合される4値グラフィクス構造であってよい。4値データ構造は、サブピクセル毎に1つである3つの色値と、ピクセル全体のためのカバレッジ値とを記憶してよい。そのような構造の例は、青−緑−赤−アルファフォーマットにおいて3つの色値(青、緑及び赤)及びカバレッジ(“アルファ”)値を記憶するBGRAデータ構造である。BGRA構造は、4つの異なる値の夫々について8ビットを使用してよい。
GPUは、情報がそのような4チャネルフォーマットにあり、色値のための3つのチャネル及びカバレッジ値のための第4のチャネルを有する場合に、有効にグラフィクスに関する情報を処理するよう適合される。GPUは、GPUの動作及びGPUのハードウェアレジスタがこのフォーマットにおいて値を記憶し且つこのフォーマットにおいて値を操作するよう予め構成されるので、このフォーマットにおける情報を有効に処理することができる。従って、サブピクセルのためのカバレッジ情報をキャッシュするために本願で記載される技術に従って4値構造が使用されるならば、4値フォーマットにおけるデータは、他のフォーマットにおけるデータよりも容易にGPUによって処理され得る。
然るに、幾つかの実施形態において、BGRA構造は、サブピクセル・カバレッジ値を記憶するために使用されてよい。なお、上述されたように、本願で記載される技術を用いてピクセルの色情報を決定するよう、6つの値がピクセルについて使用され得る。すなわち、ピクセルのサブピクセルのための3つの色値(赤、緑及び青)及びピクセルのサブピクセルのための3つのカバレッジ値である。4値構造がサブピクセル・カバレッジ値を記憶するために使用される実施形態において、6つの値は1つのデータ構造において記憶され得ない。然るに、幾つかの実施形態において、色制御情報は、例えば、異なる4つ構造において別個に記憶されてよく、それにより、各ピクセルは2つの異なる4値構造に関連付けられてよい。そのような場合に、1つの4値構造は、カバレッジ値を記憶するために使用され得、第2の4値構造は、色値を記憶するために使用され得る。
GPUが高速且つ効率的に4値構造において値を処理するよう適合される場合に、GPUは、4値構造の対応する位置にある値が互いに関連付けられる場合にそうするよう適合されてよい。例えば、GPUは、各4値構造の第1の値が青色サブピクセルに関する場合にデータを高速に処理するよう適合されてよい。然るに、幾つかの実施形態において、6つの値は2つの異なる4値データ構造において記憶されてよく、一方、それらの値は1つの構造における4つの値と他の構造における2つの値とに分割され得ない。値がこのようにして分割されるならば、それらの値の1つは、関連する値の位置に対応しない4値構造における位置に置かれる。例えば、3つの色値(青、緑及び赤)及び1つのカバレッジ値(青)が4値データ構造において配置されるならば、データ構造における青の色値の位置は青のカバレッジ値の位置に対応しないこととなる。幾つかのGPUは、GPUが元々は、異なる位置に記憶された青の色値及びカバレッジ値を処理するよう構成されないので、このようにして記憶された色値及びカバレッジ値を高速且つ効率的に処理することができない。然るに、ピクセルについての3つの色値及び3つのカバレッジ値が分けられる場合に、色値は1つのデータ構造に記憶されてよく、カバレッジ値は異なる構造に記憶されてよい。幾つかのそのような場合に、4値データ構造の夫々における1つの値は空のままであってよい。
なお、当然のことながら、他のデータ構造フォーマットが使用されてよい。例えば、RGBA構造のような、異なるフォーマットにおいてデータを体系化する他の4値フォーマットが使用されてよい。他の例として、異なる数のチャネルを有するデータ構造が使用されてよい。幾つかの実施形態において、3チャネルデータ構造(例えば、BGR構造)がカバレッジ値を記憶するために使用されてよい。他の実施形態においては、6チャネルデータ構造が使用されてよく、このデータ構造は、3つの異なるサブピクセルの夫々についてサブピクセル・カバレッジ値及び色値の両方を記憶することができる(例えば、赤、緑及び青のサブピクセル毎に2つの値)。
構造210のフォーマットにかかわらず、処理されたカバレッジ値がグラフィクスエンジン204によって生成される場合に、処理されたカバレッジ値はデータ構造210へ出力されてよい。出力され得るカバレッジ値は、ピクセルの各サブピクセルのカバレッジ値を含む。例えば、青のカバレッジ値、緑のカバレッジ値、及び赤のカバレッジ値が生成されて記憶されてよい。データ構造が色に特有のチャネルを含む場合、サブピクセル・カバレッジ値は対応するチャネルに記憶されてよい。例えば、BGRA構造によれば、通常は青色チャネルのための色制御情報を記憶するBチャネルは、青のサブピクセル・カバレッジ値を記憶するために使用されてよい。
次いで、データ構造210は、如何なる適切な方法においても使用されてよい。カバレッジ値をキャッシュするよう、データ構造210はメモリ208において、例えば、テキストのためのカバレッジ値のキャッシュ208Aにおいて、記憶されてよい。メモリ208は、ランダムアクセスメモリ(RAM)又は記憶ドライブを含め、情報がキャッシュされ得る如何なる適切なメモリであってもよい。RAMの例には、システムメモリ及びビデオメモリがある。記憶ドライブの例には、ハードディスクドライブ及びソリッドステートドライブ(SSD)がある。データ構造210はまた、グラフィクスに関連する動作における使用のためにGPU206へ送られてよい。例えば、データ構造210は、レンダリング処理の部分としてGPU206へ送信されてよい。レンダリング処理の部分として、GPU206は、各ピクセルにより表示される表示要素に基づきディスプレイのサブピクセル毎のコンポジット色情報を決定してよい。テキストを表示するピクセルに関し、構造210に記憶されるサブピクセル・カバレッジ値は、コンポジット色値を決定するためにGPU206によって使用されてよい。
幾つかの実施形態において、グラフィクスエンジン204は、構造210に記憶されるカバレッジ値を処理することができるようGPU206を設定してよい。上述されたように、GPU206は元々は、BGRA構造のような4チャネルデータ構造を処理するよう適合されてよいが、GPU206は、カバレッジ値ではなく、そのようなフォーマットにおける色値を処理するよう適合されてよい。幾つかの実施形態において、従って、GPU206がカバレッジ値を処理するよう、GPU206は特定の方法において構造210を使用する構成されてよい。GPU206は、テキストのための変更された色値と背景グラフィクスのための色値との間を補間する前にテキストのための色値を変更するために構造210を使用するよう構成されてよい。例えば、GPU206は、幾つかの場合に、BGRA構造の青色、緑色及び赤色チャネルの夫々からサブピクセル・カバレッジ値を取り出して、アルファ値からはデータを取り出さないよう構成されてよい。GPU206は更に、テキストのための変更された色を得るために、それらのサブピクセル・カバレッジ値に別個のBGRA構造内の青色、緑色及び赤色チャネルにおける色値を乗じるよう構成されてよい。GPU206はまた、上述されたように、ディスプレイのサブピクセルを制御するためのコンポジット色値を得るために、変更された色値を背景グラフィクスの色情報と結合するよう構成されてよい。カバレッジ値及び色値の両方を記憶する6チャネルフォーマットのような、4チャネル構造を使用せず代わりに他のフォーマットを使用する他の実施形態においては、GPU206は、如何なる適切な方法においても、そのようなフォーマットにおけるデータを使用するよう構成されてよい。
グラフィクスエンジン204は、ディスプレイにおけるコンテンツの表示に関する処理202からの何らかの適切な入力に応答して何らかの適切な動作を取ってよい。幾つかの実施形態において、グラフィクスエンジン204は、表示されるテキストのコンテンツ及びテキストが表示される色を処理202から受信したことに応答して、テキストのためのカバレッジ値を計算しキャッシュしてよい。グラフィクスエンジン204は、幾つかの場合に、テキスト及びフォント色の受信に応答してテキストをレンダリング又は表示しなくてよい。代わりに、グラフィクスエンジン204は、サブピクセル・カバレッジ値を計算し、次いで、データ構造210を生成し、例えば、メモリ208のキャッシュ208Aにデータ構造210を記憶することによって、カバレッジ値を記憶してよい。幾つかの実施形態において、グラフィクスエンジン204はまた、この時点でフォント色情報をキャッシュしてよい。後に、グラフィクスエンジン204は、例えば、テキストが背景グラフィクスに対してユーザインターフェースにおいて動かされる場合に、ディスプレイの特定の位置でテキストをレンダリングする要求を処理202から受け取ってよい。グラフィクスエンジン204がフォント色をキャッシュしない場合、テキストをレンダリングする要求がまたテキストのフォント色を含んでよい。グラフィクスエンジン204が処理202から位置情報を受信する場合に、グラフィクスエンジン204は、キャッシュ208A内のデータ構造210においてキャッシュされているテキストのサブピクセル・カバレッジ値を取り出し、キャッシュされたカバレッジ値を用いてその位置に対応するディスプレイのピクセル及びサブピクセルについてコンポジット色値を計算するようGPU206を操作してよい。
モデムユーザインターフェースは、上述されたように、ユーザがユーザインターフェース要素の多くのアニメーションを実行することを可能にしてよい。本願で記載される技術は、サブピクセル・カバレッジ値のキャッシングを可能にすることによって、そのようなアニメーションに続いてディスプレイへのテキストのより速いレンダリングを可能にしてよい。以前は、テキストがアニメーションに続いて再レンダリングされる度に、カバレッジ値がテキストの新たな位置について決定される必要があり、その後に、カバレッジ値はテキスト及び重なり合うグラフィクスのコンポジット色値を決定するのに使用され、その後に、コンポジット色値はディスプレイの非線形性を補償するようガンマ補正された。この処理は集中的であり、アニメーションに対するインターフェースの反応を減速させる。幾つかの実施形態において、代わりに、テキストのためのサブピクセル・カバレッジ値は、非線形性を補償するために予め変更されており、記憶され、取り出しのために利用可能である。テキストが再レンダリングされる場合に、サブピクセル・カバレッジ値は単に取り出され、再レンダリングされるテキスト及び背景グラフィクスのための色情報と結合される。そのような処理はより効率的であり、GPUが元々処理するよう適合されるデータ構造に対して線形動作を用いて行われてよく、動作をGPUにおいて高速に実行可能とする。然るに、再レンダリング処理は、なおさら効率的にされ得る。
上述されたように、グラフィクスエンジン204は、テキストが最初にレンダリングされる場合に、サブピクセル・カバレッジ値を計算してサブピクセル・カバレッジ値をキャッシュするよう、及びテキストが再レンダリングされる場合に、キャッシュされたサブピクセル・カバレッジ値を用いてピクセルのコンポジット色値を決定するよう、如何なる適切な動作も実行してよい。幾つかの実施形態において、グラフィクスエンジン204は、それらの動作の少なくとも一部を実行するよう、少なくともキャッシュされたカバレッジ値及び命令をGPU206へ送ることによりGPU206を操作してよい。
図3は、カバレッジ値を計算しキャッシュするためにグラフィクスエンジンが(幾つかの実施形態において、GPUを従うよう構成することによって)実行してよい処理の一例を表す。図3の処理300の開始の前に、コンピュータ装置の少なくとも1つのプロセッサで実行している実行処理は、コンピュータ装置に付随するディスプレイで表示されるテキストに関する情報をグラフィクスエンジンへ送信していてよい。テキストに関する情報は、表示されるテキストのコンテンツを含んでよい。コンテンツは、文字の例として表されるか又は何らかの他の適切な形をとるテキスト自体であってよい。テキストに関する情報はまた、幾つかの場合に、テキストの色、テキストの位置、又は如何にしてテキストが表示されるのかに関する何らかの他のパラメータのような、テキストの表示特性を含んでよい。なお、他の実施形態においては、テキストの幾つかのパラメータは処理300の前に受信されなくてよく、例えば、テキストが表示されるディスプレイでの位置がある。どのような情報が受信されるかにかかわらず、テキストに関する情報がグラフィクスエンジンによって受信されると、処理300が開始する。
図3のフローチャートの最初の3つのブロック、すなわち、ブロック302、304及び306の動作は、既知の技術を用いて実行されてよい。然るに、それらの動作の詳細な議論は本願では不要である。しかし、実施形態が実施され得る方法の例示のために、それらの動作の簡潔な説明が与えられる。
ブロック302で、グラフィクスエンジンは、テキストのコンテンツに関して、表示されるグリフの形状を特定する。表示されるグリフの形状を特定することは、テキストを表示するために使用されるフォントのフォントライブラリから形状の記述を取り出すことを含んでよい。
グリフを表示するために使用される形状が取り出される場合に、ブロック304で、グラフィクスエンジンは、テキストを表示するために使用されるディスプレイのピクセルへの形状のマップを作成してよい。このマップは、各グリフの相対位置を定義し、従って、テキストがレンダリングされる場合に影響を及ぼされるディスプレイのピクセルの位置を定義する。このマップは、ブロック306で、サブピクセルのカバレッジ値を設定するために使用される。既知の技術を含む何らかの適切な技術によれば、形状のマップは、夫々のピクセルに関する情報と、各ピクセルがグリフの夫々の形状を描くために使用されるかどうかとにより、作成されてよい。幾つかの場合に、夫々のピクセルに関する情報は、そのピクセルがグリフの形状を表すために使用されるかどうかを示すyes又はnoの2値であってよい。そのような2進値を用いる幾つかの場合に、マップは、ディスプレイのピクセル毎に1ビットを用いてそのピクセルがマップを描くのに使用されるかどうかを示すワンビット・パー・ピクセル(one-bit-per-pixel)マップであってよい。2進値を用いる他の場合に、マップは、テキストの2つの次元のうちの一方又は両方においてオーバーサンプリングされてよい。例えば、既知のCLEARTYPE(登録商標)技術を用いると、オーバーサンプリングされたマップは、グリフ形状の少なくとも一部を表すために使用されるピクセル毎にグリフ形状から複数の“サンプル”を取ることによって、作成されてよい。CLEARTYPE(登録商標)は、オーバーサンプリングの量に対応する同等の領域、すなわち、6×1個の領域(すなわち、垂直方向における単一の行において、水平方向に6つの領域)又は6×5個の領域(すなわち、垂直方向における5つの行において、水平方向に6つの領域)に分割されるピクセルを考えることによって、サンプルを取る。グリフの形状がピクセル及びピクセル毎に特定される同等の領域と比較される場合に、2進値は、形状が特定の領域と重なり合うかどうかを示すために使用され得る。
グラフィクスエンジンは、グリフ毎に個々のマップを作成して、それらの個々のマップを、テキストのためのマップを作成するようマージすることによって、又はグリフをマージし、テキスト全体のマップを作成することによって、ブロック304のマップを作成することができる。なお、実施形態はこの点において制限されない。
マップがブロック304で作成されると、マップはブロック306で、テキストをレンダリングするために使用されるディスプレイのサブピクセルについてカバレッジ値を設定するために使用される。マップは、サブピクセル・アンチエイリアシングのための既知の技術を用いることを含め、カバレッジ値を設定するために如何なる適切な方法においても使用されてよい。例えば、既知の技術を用いると、カバレッジ値は、オーバーサンプリングされたマップの2進値に基づくことを含め、マップの2進値に基づき設定されてよい。オーバーサンプリングされたマップに関し、例えば、カバレッジ値は、サンプリングに従ってグリフの形状を表すために使用される領域の数に比例して、設定されてよい。オーバーサンプリングされたマップに基づきカバレッジ値を設定することは、既知の技術を用いることを含め、如何なる適切な方法においても行われてよい。なお、実施形態はこの態様において制限されない。例えば、サブピクセル・アンチエイリアシングに関し、カバレッジ値は、ピクセルのサブピクセルの夫々についてCLEARTYPE(登録商標)技術を用いて決定されてよい。オーバーサンプリングが使用される場合、ピクセルの領域の幾つかはそのピクセルのサブピクセルの夫々に対応する。サブピクセルのためのカバレッジ値は、そのサブピクセルに対応する幾つのサンプルがグリフの形状に対応するのかに比例して設定され得る。サブピクセルがグリフの形状に対応するよりも多いサンプルに対応する場合、サブピクセルのためのカバレッジ値は、そのサブピクセルを用いてテキストのより暗いシェーディング/色を示すように設定され得る。反対に、サブピクセルがより少ないサンプルに対応する場合、カバレッジ値は、より明るいシェーディング/色を示すように設定され得る。
然るに、ピクセルが3つの水平方向に配置されたサブピクセルから成る場合、3つの異なるカバレッジ値が決定され得る。すなわち、サブピクセル毎に1つのカバレッジ値が決定され得る。幾つかの実施形態において、サブピクセル毎のカバレッジ値は、予備的なカバレッジ値に基づき計算されてよい。例えば、サンプルの複数の縦列がブロック304においてピクセル毎に取られ(例えば、上記の6×5サンプリングにおいて)、ピクセルが3つの水平方向に配置されたサブピクセルから成る場合に、複数のカバレッジ値が最初にサブピクセル毎に求められ得る。これは、先の6×1の例において見られるように、サンプルの列ごとに各サブピクセルのカバレッジ値を決定することによって行われてよく、これにより、サブピクセル毎に、サンプルの列ごとに1つである5つの予備的なカバレッジ値が得られる。次いで、それらの予備的なカバレッジ値は、サブピクセルのための予備的なカバレッジ値を平均化することを含め、サブピクセルについて単一のカバレッジ値を得るよう如何なる適切な方法においても結合されてよい。
ブロック302、304及び306の動作により、グラフィクスエンジンは、処理300の開始の前に実行処理によって要求されたテキストを表示するために使用されるサブピクセルのためのサブピクセル・カバレッジ値の組を決定することができる。ブロック306で計算されたサブピクセル・カバレッジ値は、幾つかの実施形態においてそれらのカバレッジ値が、サブピクセルのための処理されたカバレッジ値を得るよう更に何らかの方法で処理され得るので、“初期”カバレッジ値であると考えられてよい。例えば、ブロック306で適用されるサブピクセル・アンチエイリアシング処理によって得られる初期カバレッジ値は、処理されたカバレッジ値を得るようユーザの好みに基づき調整されてよい。実施形態はこの点において制限されないので、如何なる他の処理も実行されてよい。然るに、ブロック308で、グラフィクスエンジンは、処理されたカバレッジ値を得るよう何らかの方法において初期カバレッジ値を処理する。
幾つかの実施形態において、ブロック308の処理により、カバレッジ値は、テキストに関する色情報(サブピクセル・カバレッジ値を含む。)が、更なる変更を必要とせずに、テキストとともに表示される背景グラフィクスのような他の表示要素に関する色情報と直接且つ線形に結合することを可能にするために、調整されてよい。従来の技術を用いると、カバレッジ値が、テキストを示すようディスプレイのサブピクセルを制御するためのコンポジット色値を決定するために、テキストに関する色情報及び背景画像に関する色情報とともに使用される場合に、余分の処理が結合を補正するために実行されなければならない。そのような余分の処理はガンマ補正を含んでよい。これは、上述されたように、テキスト及びグラフィクスの色情報が線形補間により結合される場合に、ヒトが結果として得られるコンポジット色値を正確であると認識しないためである。従って、補間の結果は、従来の技術を用いて、補正されたコンポジット色値を得るようガンマ補正処理の間に変更される。しかし、ブロック308の処理の間、グラフィクスエンジンは、ディスプレイの非線形性を補償して、限られたその後の処理によりテキストに関する色情報が背景グラフィクスに関する情報と結合されることを可能にするために、初期カバレッジ値を処理してよい。例えば、初期カバレッジ値は、色情報の線形結合がテキストを背景グラフィクスとともに表示するためのコンポジット色値を生じることを可能にするように変更されてよい。他の例として、初期カバレッジ値は、補間に続くガンマ補正処理の実行を削除するように変更されてよい。
グラフィクスエンジンは、ブロック308で如何なる適切な方法においてもカバレッジ値の如何なる適切な処理も実行してよい。実行され得る処理の例は、図5及び6に関連して以下で詳細に論じられる。
グラフィクスエンジンがカバレッジ値を処理して処理されたカバレッジ値を生じると、ブロック312で、グラフィクスエンジンは、処理されたカバレッジ値をキャッシュする。グラフィクスエンジンは、如何なる適切な方法においても、処理されたカバレッジ値をキャッシュしてよい。幾つかの実施形態において、グラフィクスエンジンは、処理されたカバレッジ値を、グラフィクス処理ユニット(GPU)のハードウェア及び固有の動作の編成に整合するサイズ及び機構を備えたデータ構造においてキャッシュしてよい。例えば、グラフィクスエンジンは、3つの色値及び1つのカバレッジ値のためのフィールドを有する4値データ構造において、ディスプレイでテキストを表示するために使用されるピクセル毎の処理されたサブピクセル・カバレッジ値をキャッシュしてよい。4値データ構造において配置されると、カバレッジ値はコンピュータ装置のメモリに記憶されてよい。カバレッジ値は、コンピュータ装置のシステムメモリ、ビデオメモリ又は記憶ドライブを含むコンピュータ装置のメモリにおいて、レンダリングの間の後の使用のために、記憶されてよい。
ブロック308で処理されたサブピクセル・カバレッジ値がブロック312で記憶されると、処理300は終了する。処理300の後に、グラフィクスエンジンは、サブピクセル・カバレッジ値に関する何らかの適切な動作を取ってよい。幾つかの実施形態において、グラフィクスエンジンは、キャッシュされたサブピクセル・カバレッジ値の識別子を、そもそもテキストを供給した実行処理へ供給してよい。実行処理へ供給される識別子は、メモリにおけるキャッシュされたカバレッジ値のアドレス、又はグラフィクスエンジンによって使用され、グラフィクスエンジンがその後にキャッシュされたカバレッジ値を取り出すために使用することができる識別子を含む如何なる適切な識別子であってもよい。
グラフィクスエンジンはその後に、如何なる適切な方法においても、如何なる適切な時点でも、キャッシュされたカバレッジ値を使用することができる。グラフィクスエンジンはその後に、ディスプレイにテキストをレンダリング及び表示する要求を実行処理から受信してよい。実行処理は、何らかの適切な動作に続いて、又は何らかの適切な条件に応答して、要求を生成してよい。なお、実施形態はこの点において制限されない。幾つかの実施形態において、実行処理は、インターフェースを見るためのユーザ要求に応答して、又はインターフェースとのユーザインタラクションに応答して、テキストが表示されるよう要求してよい。ユーザインタラクションは、例えば、ユーザがテキストを動画化する場合のように、インタラクションがテキストへの変更をもたらす場合に、テキストの再表示又は表示の更新をプロンプトしてよい。例えば、テキストが背景グラフィクスに対してインターフェースにおいて動かされるか又は別なふうに動画化される場合に、テキストは再表示されてよい。ユーザとのインタラクションから生じないユーザインターフェースの他のアニメーションがテキストの再レンダリングをプロンプトしてよい。例えば、ユーザインターフェースが、ディスプレイをスクロールするテキストを示すよう構成される場合、テキストは、そのスクロールの間繰り返し再レンダリングされてよい。
実行処理からの要求の受信に応答して、グラフィクスエンジンは、カバレッジ値がキャッシュされているテキストを表示するよう様々な動作を実行してよい。図4の処理400は、カバレッジ値がキャッシュされているテキストを表示するためにグラフィクスエンジンによって実施され得る技術の一例である。
処理400の開始の前に、サブピクセル・カバレッジ値は、図3の処理300によることを含む如何なる適切な方法においても作成され、処理され、キャッシュされていてよい。処理400はブロック402で開始し、グラフィクスエンジンは、テキストをレンダリングするよう実行処理から少なくとも1つの命令を受信する。実行処理からの命令は、テキストのための何らかの適切な表示特性を含んでよい。幾つかの実施形態において、テキストに関する情報は、テキストが表示されるフォント色と、テキストが表示される位置とを含んでよい。命令はまた、予め決定されてキャッシュされたサブピクセル・カバレッジ値のための何らかの適切な識別子を含んでよい。幾つかの実施形態において、命令は、メモリにおけるキャッシュされたサブピクセル・カバレッジ値のアドレス、又はエンジンが値を取り出すために使用することができるキャッシュされたカバレッジ値のためのグラフィクスエンジンにより保持される識別子を含んでよい。
GPUがテキストを再レンダリングするためのコンポジット色値を決定することを可能にするよう、グラフィクスエンジンは、ブロック404で、テキストのためのキャッシュされたサブピクセル・カバレッジ値をグラフィクス処理ユニット(GPU)に利用可能とする。幾つかの場合に、グラフィクスエンジンは、ブロック402の命令に応答してメモリからキャッシュされたカバレッジ値を取り出し、キャッシュされたカバレッジ値をGPUがアクセス可能なメモリ位置に記憶してよい。他の場合に、グラフィクスエンジンは、GPUがアクセス可能なメモリ位置に、キャッシュされたカバレッジ値を予め置いておいてよい。キャッシュされたカバレッジ値がGPUに利用可能とされた場合、グラフィクスエンジンは、幾つかの場合に、キャッシュされたカバレッジ値が依然としてGPUに利用可能であることを確かにしてよい。テキストのためのカバレッジ値が利用可能にされると、ブロック406で、グラフィクスエンジンは、テキストと重なり合って表示されるインターフェースの1又はそれ以上の他の表示要素のための情報を、同様にしてGPUに利用可能とする。1又はそれ以上の表示要素は、テキストとともに表示されてディスプレイの特定の位置でテキストと重なり合う背景グラフィクスを含んでよい。他の表示要素に関する情報は、他の表示要素を表示するディスプレイのピクセル又はサブピクセルのための色値を含んでよい。
上述されたように、2又はそれ以上の表示要素がグラフィカルインターフェースにおいて重なり合って表示される場合に、ディスプレイのピクセル毎の色値は、重なり効果を生み出すように表示要素の夫々の色に基づき計算される。コンピュータ装置のGPUは、グラフィクスを即座にレンダリングすることに関連する様々な動作を実行するよう構成される。それらの動作に共通して、表示要素の夫々の色に基づきピクセルのコンポジット色を決定することがある。
GPUは通常、上記のBGRAデータ構造のような4値データ構造においてそのような動作を実行するよう構成されてよい。そのようなデータ構造は、3つのサブピクセルの夫々についての色値と、ピクセル全体についてのカバレッジ値とを有する。なお、GPUは通常、複数のサブピクセルの夫々についてのカバレッジ値を処理するよう構成されておらず、4値構造の色チャネル(すなわち、BGRチャネル)がサブピクセル・カバレッジ値を記憶するBGRAデータ構造を処理するよう適合されていない。代わりに、GPUは通常、それらのチャネルに記憶された色値を用いるよう構成される。しかし、幾つかの実施形態において、ブロック410で取り出されるサブピクセル・カバレッジ値は、テキストの色情報と背景グラフィクスの色情報とに基づきサブピクセルのコンポジット色値を決定する部分として、GPUによって処理されてよい。然るに、ブロック408で、GPUは、少なくとも3つのチャネルにおいてサブピクセル・カバレッジ情報を記憶する4値データ構造を処理するよう設定されてよい。ブロック408の設定は、如何なる適切な方法においても実行されてよい。幾つかの場合に、ブロック408の設定は、サブピクセル・カバレッジ値として4値データ構造において記憶されるデータを使用する、実行されるべき命令を、GPUに供給することを含んでよい。GPUは、サブピクセル・カバレッジ値をテキストの色情報と結合することを含め、如何なる適切な方法においてもそのような構造からのサブピクセル・カバレッジ値を使用してよい。
GPUがブロック408において設定されると、ブロック410で、GPUは、GPUが設定された命令を実行することができる。特に、ブロック410で、GPUは、テキスト及び背景グラフィクスを重なり合って表示するディスプレイのサブピクセルについてコンポジット色値を決定する。GPUは、サブピクセル毎に、そのサブピクセルのコンポジット色値を得るようテキストのカバレッジ値及び色値を背景グラフィクスの色値と結合してよい。幾つかの実施形態において、GPUは、テキストの色値とグラフィクスの色値との間の線形補間を実行してよい。そのような線形補間を実行するよう、GPUは、コンポジット色値を決定するようテキストの色値をグラフィクスの色値に加えてよく、テキストのサブピクセル・カバレッジ値は加算を重み付けするために使用される。例えば、ピクセルの色チャネル毎のサブピクセル・カバレッジ値は、背景グラフィクスの色値に加えられる前に、テキストの対応する色チャネル及びピクセルについての色値を乗じられてよい。加えて、又は代替的に、サブピクセル・カバレッジ値の補数が、テキストの色値に加えられる前に背景の色値を乗じられてよい。特に、幾つかの実施形態において、サブピクセルのためのコンポジット色値は、テキストの色値(C)にサブピクセル・カバレッジ値(α)を乗じ、背景の色値(B)にサブピクセル・カバレッジ値の補数(1−α)を乗じ、それらの積を足し合わせる(C×α+(1−α)×B)ことによって、決定されてよい。
上述されたように、キャッシュされてブロック404においてキャッシュから取り出されるサブピクセル・カバレッジ値は、このようにしてテキストの色値と背景の色値との線形結合を可能にするように処理されていてよい。サブピクセル・カバレッジ値は、線形結合に続くコンポジット色値の更なる処理を制限又は削除するように処理されていてよい。例えば、サブピクセル・カバレッジ値は、線形補間の後のガンマ補正処理を不要とするように処理されていてよい。むしろ、サブピクセル毎のコンポジット色値が線形補間を通じて決定されると、それらのコンポジット色値は、テキスト及び背景グラフィクスを表示するのに使用されてよい。例えば、コンポジット色値は、ディスプレイを制御するよう直接に、又はコンポジット色値を他の表示要素に関する色情報と結合して更なるコンポジット色値を得るよう更なる動作において、使用されてよい。
然るに、コンポジット色値が、テキスト及び背景グラフィクスを表示するために使用されるディスプレイのサブピクセル毎に計算されると、ブロック412で、コンポジット色値は、ディスプレイにコンテンツを表示するために使用されてよい。コンテンツが表示されると、処理400は終了する。
処理400に続いて、ユーザは先と同じくインターフェースと相互作用してよく、インターフェースにおいてテキストを動画化してよい。テキストが先と同じく動画化される場合に、処理400は、テキストのキャッシュされたサブピクセル・カバレッジ値に基づき、ディスプレイのサブピクセルの夫々についての新しいコンポジット値を決定するために、繰り返されてよい。
サブピクセル・カバレッジ値のキャッシングにより、重なり合うグラフィクスとともにテキストをレンダリングすることは、より効率的にされ且つより高速に動作してよい。レンダリングを実行するためのハードウェアにおける動作と、レンダリングするコマンドとは、同様により効率的にされ得る。例えば、幾つかの実施形態において、単一のAPI呼び出しが、キャッシュされたサブピクセル・カバレッジ値を下にあるグラフィクスと結合するよう行われてよい。例えば、単一のAPI呼び出しは、サブピクセル・カバレッジ値を目的の面と融合するよう行われてよい。なお、目的の面は、背景グラフィクスに関する色情報を用いて予め定義されている。更に、グラフィクス処理ユニットが4チャネルデータ構造において記憶されるサブピクセル・カバレッジ値を認識するよう設定されると、APU呼び出しによってトリガされる融合は、各サブピクセルに対する繰り返し動作によらずに、ディスプレイのサブピクセルに対する一回のパスによりGPUによって実行されてよい。
図3に関連して上述されたように、初期サブピクセル・カバレッジ値がサブピクセル・アンチエイリアシング処理を用いてテキストについて決定される場合に、それらの初期カバレッジ値は、処理されたカバレッジ値をもたらすよう何らかの方法において処理されてよい。処理は、ユーザ好みに関連する処理、後に実行されるガンマ補正処理の必要性を削除若しくは低減することに関連する処理、又は何らかの他の処理を含んでよい。実施形態はこの点において制限されない。
図5及び6は、サブピクセル・カバレッジ値がキャッシュされる前に、サブピクセル・アンチエイリアシング技術を用いて決定される初期カバレッジ値を処理するために使用され得る処理の2つの例を示す。
図5の処理500の開始の前に、グラフィクスエンジンは、表示されるテキストのコンテンツとテキストのフォント色とを受け取り、テキストのサブピクセル・カバレッジ値を計算する。処理500により、それらのカバレッジ値は変更されてよい。
処理500はブロック502で開始し、グラフィクスエンジンは、アンチエイリアシング技術に関するユーザ好みに基づき初期サブピクセル・カバレッジ値を調整する。異なるユーザは、テキストに関して異なる快適度を有してよく、従って、幾つかのコンピュータ装置は、アンチエイリアシングがグレースケール・アンチエイリアシングよりむしろサブピクセル・アンチエイリアシングとして認識されるべき程度をユーザが特定することを可能にしてよい。例えば、ユーザ好みの値がある方法で設定される(例えば、ゼロに)場合に、グラフィクスエンジンは、ピクセルについての全てのサブピクセル・カバレッジ値を同じに保つことによって、サブピクセル・アンチエイリアシング処理よりむしろグレースケール・アンチエイリアシング処理を実行してよい。そのようなユーザ好み及びそれらの設定の方法は当該技術において知られており、実施形態は、既知の技術を含む、そのような好みを適用するための如何なる適切な技術も実施してよい。
ブロック502で、最初に決定されたサブピクセル・カバレッジ値は、ユーザ好みの設定に基づき調整されてよい。ブロック502の調整は、既知の技術を用いることを含め、如何なる適切な方法においても実行されてよい。MICROSOFT(登録商標)CLEARTYPE(登録商標)テキストレンダリングソフトウェアは、幾つかの実施形態において使用され得る、ユーザ好みに基づきカバレッジ値を調整するための既知の技術を含む。従って、カバレッジ値を調整することの詳細な説明は本願では不要である。手短に述べれば、ブロック502で、グラフィクスエンジンは、各サブピクセルのカバレッジ値を、ユーザ好みに基づき、ピクセルの隣接サブピクセルについて設定されるカバレッジ値と釣り合わせてよい。例えば、赤、緑、及び青の順序で配置される3つのサブピクセルを含むディスプレイにおいて(例えば、図1Aを参照)、赤及び緑のサブピクセルのカバレッジ値は互いに対して釣り合わされてよく、緑及び青のサブピクセルのカバレッジ値は互いに対して釣り合わされてよい。グラフィクスエンジンは、バランシングを実行するために線形補間を使用してよい。例えば、赤色サブピクセル・カバレッジ値は、ユーザ好みの値(β)に初期の赤色サブピクセル・カバレッジ値(αr)を乗じ、ユーザ好みの値の補数(1−β)に初期の緑色サブピクセル・カバレッジ値(αg)を乗じ、それらの積を加算することによって調整されてよく、それにより、式(1)が実行される:
αr’=αr×β+αg×(1−β) (1)
式(2):
αb’=αb×β+αg×(1−β) (2)
を適用することにより、同様の式が青色サブピクセル・カバレッジ値について実行されてよい。
ユーザ好みに基づき初期カバレッジ値を調整した後、グラフィクスエンジンは更に、テキストが良好なコントラストを有して表示され、従って可視的であることを確かにするように、テキストの色の輝度に基づきカバレッジ値を調整してよい。第1のステップとして、ブロック504で、グラフィクスエンジンは、テキストが表示されることを要求する実行処理からの入力として受信されたフォント色の輝度を計算する。輝度値Lは、3つの加法的な色成分である赤、緑及び青についてフォント色の色値を重み付けし加算することにより求められる。特に、輝度(L)は、式(3):
L=0.30×R+0.59×G+0.11×B (3)
を適用することにより設定されてよい。ここで、R、G及びBは、フォント色の色値である。
ブロック506で、グラフィクスエンジンは、背景とのテキストの良好なコントラストを確かにするように、輝度に基づき行われるコントラスト調整を特定してよい。これは、MICROSOFT(登録商標)CLEARTYPE(登録商標)テキストレンダリングソフトウェアによって用いられるような既知の技術を含め、如何なる適切な方法においても実行されてよい。幾つかの実施形態において、コンピュータ装置は、グラフィクスエンジンがテキストの輝度に基づき調整し得るベースコントラスト値を有してよい。このベースコントラスト値は、ユーザ好みに基づき設定されてよく、又は固定であってよく、あるいは、実施形態はこの点において制限されないので、如何なる他の方法においても設定されてよい。ベースコントラスト値(k)の調整の量は、ブロック504で計算された輝度値に依存してよい。例えば、輝度値が0.5以下として計算される場合に、調整変数(c)は、ベースコントラスト値を調整しないように、1に設定されてよい。輝度値が0.5より大きく且つ0.75より小さいと計算される場合は、調整値は、例えば、式(4):
c=4×(0.75−L) (4)
を適用することにより、輝度値(L)に基づき設定されてよい。輝度値が0.75以上であると計算される場合は、調整値は、コントラストに基づきカバレッジ値の調整を無効にするように、0に設定されてよい。調整値(c)が設定されると、ベースコントラスト値は、式(5):
k’=k×c (5)
を適用することにより、ベースコントラスト値に調整値を乗じることによって調整されてよい。
ブロック508で、グラフィクスエンジンは次いで、先と同じくブロック506で決定されたコントラスト値(k’)に基づき、ブロック502で変更されたサブピクセル・カバレッジ値を変更してよい。特に、変更されたサブピクセル・カバレッジ値(α’)の夫々は、式(6):
α”=(α’×(k’+1))/(α’×k’+1) (6)
を適用することによって、更なる変更されたサブピクセル・カバレッジ値をもたらすようコントラスト値(k’)に基づき変更されてよい。
テキストのためのサブピクセル・カバレッジ値の夫々が式(6)により変更されると、処理500は終了する。
処理600は、初期カバレッジ値を処理するために使用され得る処理の他の例を表す。幾つかの実施形態において、実施形態はこの点において制限されないので、処理600は処理500とともに使用されてよく、処理500の後にグラフィクスエンジンによって実行されてよい。
図6の処理600の開始の前に、グラフィクスエンジンは、表示されるテキストのコンテンツとテキストのフォント色とを受け取り、テキストのサブピクセル・カバレッジ値を計算する。処理600により、それらのカバレッジ値は変更されてよい。
処理600はブロック602で開始し、グラフィクスエンジンは、テキストを表示するために使用されるディスプレイに関連するガンマ値(γ)を特定する。ディスプレイのガンマ値は、既知の方法において求められる値であり、ディスプレイの製造者によって設定されてよく且つユーザによって調整されてよい。グラフィクスエンジンは、ディスプレイのためのドライバに付随するデータ記憶のような、コンピュータ装置のデータ記憶からガンマ値を取り出すことを含め、如何なる適切な方法においてもブロック602でガンマ値を特定してよい。
ブロック604で、グラフィクスエンジンは、夫々のサブピクセル・カバレッジ値について、そのサブピクセル・カバレッジ値を補正するのに使用する少なくとも1つのアルファ補正値を決定するために、ガンマ値(γ)を使用してよい。アルファ補正値は、ガンマ補正処理の効果を再現するようにサブピクセル・カバレッジ値を変更する如何なる値であってもよい。サブピクセル・カバレッジ値が、ガンマ補正処理の効果を再現するように調整される場合に、サブピクセル・カバレッジ値を使用するテキストの色情報は、ガンマ補正処理の必要なしに、背景グラフィクスの色情報と線形に結合されてよい。結果として、ガンマ補正処理は、テキストをレンダリングするための処理から削除されてよく、レンダリング処理は迅速に処理され得る。
ガンマ補正処理を再現するようにサブピクセル・カバレッジ値を変更する処理は知られており、そのような処理のいずれかがブロック604及び606で使用されてよい。アルファ補正値を決定するための1つのそのような処理は、アルファ補正処理として知られており、2002年12月3日付けで出願された、“Alpha correction to compensate for lack of gamma correction”と題された米国特許第6933947号(“’947特許”)において詳細に記載されている。手短に述べると、’947特許において記載されているアルファ補正処理は、ガンマ値によってインデックスを付されたアルファ補正値の表を作成する。それらのアルファ補正値は、ガンマ値の範囲の夫々並びにフォント及び背景色の範囲の夫々について、フォント及び背景色の結合から得られるコンポジット色に対するガンマ補正処理の影響の観測に基づき決定される。ガンマ補正の影響の繰り返し観測により、フォント色に対するガンマ補正の影響はガンマ値毎に特定され得る。例えば、条件付き最適化が、夫々のガンマ値について、繰り返し観測から決定される影響値の夫々について実行されてよい。この条件付き最適化から、アルファ補正値がガンマ値毎に特定され、ガンマインデックス付き表に格納され得る。ブロック604で、従って、ガンマインデックス付き表は、ブロック602で特定されたガンマ値に基づきクエリを行われてよく、ガンマ値に対応するアルファ補正値が取り出され得る。
ブロック606で、アルファ補正値は、補正されたサブピクセル・カバレッジ値を得るようサブピクセル・カバレッジ値と結合され得る。’947特許は、繰り返し観測により、ガンマ値毎に4つのアルファ補正値を特定することを記載するが、如何なる適切な個数のアルファ補正値が使用において決定されてよい。’947特許は、4つのアルファ補正値に基づき、及びフォント色に基づきサブピクセル・カバレッジ値を変更することを記載する。特に、’947特許は、最初に上記の輝度の式(3)を用いてフォント色について輝度値(F)を決定することを記載する。次いで、フォント色の輝度値は、式(7):
f=F(1/γ) (7)
により、ガンマ補正されたフォント輝度(f)を得るようガンマ値(γ)により変更され得る。ガンマ補正されたフォント輝度及び4つのアルファ補正値(c1、c2、c3及びc4)は次いで、式(8):
αcorrected=α+α×(1−α)×(c1×α+c2×α+c3×f+c4) (8)
により、補正されたカバレッジ値(αcorrected)を得るよう夫々のサブピクセル・カバレッジ値(α)を変更するために使用されてよい。
幾つかの実施形態において、グラフィクスエンジンは、ブロック604及び606でサブピクセル・カバレッジ値の夫々について式(7)及び(8)の夫々を実行するのではなく、アルファ補正値のガンマインデックス付き表へのアクセスを有する他のグラフィクス機関から、補正されたサブピクセル・カバレッジ値を取り出してよい。そのような実施形態では、グラフィクスエンジンは、サブピクセル・カバレッジ値と、ディスプレイのガンマ値と、サブピクセル・カバレッジ値が対応するサブピクセルの色値とを他のグラフィクス機関へ供給してよい。他のグラフィクス機関は次いで、ガンマインデックス付き表を試験し且つ式(7)及び(8)を実行することにより、補正されたサブピクセル・カバレッジ値をグラフィクスエンジンへ返してよい。
如何にしてカバレッジ値が補正されるのかにかかわらず、グラフィクスエンジンがブロック606でアルファ補正値によってサブピクセル・カバレッジ値の夫々を調整すると、処理600は終了する。
図5及び6の処理500及び600は、処理されたカバレッジ値を得るように初期カバレッジ値を処理するために使用され得る。図3に関連して上述されたように、グラフィクスエンジンがカバレッジ値を処理すると、サブピクセル・カバレッジ値は、例えば4チャネルデータ構造において、キャッシュされてよい。然るに、処理500、600の一方又は両方に続いて、処理されたカバレッジ値は、データ構造において配置されて、キャッシュに置かれてよい。
同じく図3に関連して上述されたように、実施形態は、如何なる特定のデータ構造又はデータフォーマットも用いてサブピクセル・カバレッジ値をキャッシュすることに制限されない。むしろ、実施形態は、如何なる適切なデータ構造においてもサブピクセル・カバレッジ値を配置してよい。幾つかの実施形態において、テキストの色値は更に、別個のデータ構造においてキャッシュされてよい。如何なる構造も使用され得るが、GPUが元々は処理するよう適合される上記の4値構造のように、幾つかの構造は有利であってよく且つ幾つかの実施形態において使用されてよい。
幾つかの実施形態において、サブピクセル・カバレッジ値は、上述されたように、複数の4値データ構造において配置されてよく、それらの複数の構造は、テクスチャアトラスのようなコンテナ構造において一緒に配置されてよい。コンテナ構造は、テキストが、テキストの第1の部分のための1つの色及びテキストの第2の部分のための他の色といったように複数の色によりディスプレイで表示される幾つかの実施形態において、使用されてよい。上記の説明から明らかなように、サブピクセル・カバレッジ値は、テキストに使用されるフォント色に少なくとも部分的に基づき設定されてよい。然るに、異なるフォント色が使用される場合に、異なるカバレッジ値が起こってよい。幾つかの実施形態において、そのような異なるカバレッジ値は1つのマップにおいて一緒に格納されてよい。なお、他の実施形態においては、異なるマップが生成されて、テクスチャアトラスにおいて一緒に配置されてよい。
図7は、複数のマップをテクスチャアトラスにおいて一緒に配置するために実行され得る処理の一例を表す。処理700はブロック702で開始し、グラフィクスエンジンは、テキストを表示するために使用される各色について、処理されたサブピクセル・カバレッジ値を決定する。処理されたサブピクセル・カバレッジ値は、上記の技術に従うことを含め、如何なる適切な方法においても決定されてよい。
ブロック704で、指定される色の夫々について、グラフィクスエンジンは、その色のテキストを表示するために使用されるサブピクセルについてのカバレッジ値を含むマップを生成する。夫々のマップの内容は、従って、そのマップに関連する色を用いて表示されるテキストの部分に対応するディスプレイのサブピクセル及びピクセルに対応する。マップの夫々は、BGRAデータ構造を含む如何なる適切なデータ構造においても配置されてよい。
グラフィクスエンジンは次いでブロック706で、ブロック704からの複数のマップをコンテンツ構造において一緒に配置する。コンテナ構造は、幾つかの実施形態において、テクスチャアトラスであってよい。データ構造が一緒に配置されると、コンテナ構造は如何なる適切な方法においてもキャッシュされてよい。コンテナ構造がキャッシュされた後に、処理700は終了する。
本願で記載される原理に従って動作する技術は、如何なる適切な方法においても実施されてよい。上記の説明には、サブピクセル・カバレッジ値を計算及びキャッシュし、キャッシュされたサブピクセル・カバレッジ値を、ディスプレイでの表示のためにテキストをレンダリングするのに使用する様々な処理のステップ及び動作を示す一連のフローチャートが含まれる。上記のフローチャートの処理及び決定ブロックは、そのような様々な処理を実行するアルゴリズムに含まれ得るステップ及び動作を表す。それらの処理から得られるアルゴリズムは、1又はそれ以上の単一又は多目的のプロセッサの動作と一体化され且つそのような動作を示すソフトウェアとして実施されてよく、デジタル信号処理(DSP)回路又は特定用途向け集積回路(ASIC)のような機能的に同等の回路として実施されてよく、あるいは、何らかの他の適切な方法において実施されてよい。当然のことながら、本願に含まれるフローチャートは、何らかの特定の回路の、又は何らかの特定のプログラミング言語若しくはタイプのプログラミング言語の、シンタックス又は動作を表さない。むしろ、フローチャートは、当業者が本願で記載されるような技術を実行する特定の装置の処理を実行するよう回路を組み立てるか又はコンピュータソフトウェアアルゴリズムを実施するために使用し得る機能情報を例示する。また当然のことながら、本願で別なふうに示されない限り、各フローチャートにおいて記載されるステップ及び/又は動作の特定のシーケンスは、実施され得るアルゴリズムの例示にすぎず、本願で記載される原理の実施及び実施形態において様々であり得る。
然るに、幾つかの実施形態において、本願で記載される技術は、アプリケーションソフトウェア、システムソフトウェア、ファームウェア、ミドルウェア、埋込コード、又は何らかの他の適切なタイプのソフトウェアを含むソフトウェアとして実施される、コンピュータにより実行可能な命令において具現されてよい。そのようなコンピュータにより実行可能な命令は、多数の適切なプログラミング言語及び/又はプログラミング若しくはスクリプトツールのいずれかにより書かれてよく、また、フレームワーク又は仮想マシンで実行される実行可能なマシン言語コード又は中間コードとしてコンパイルされてよい。
本願で記載される技術がコンピュータにより実行可能な命令として具現される場合に、それらのコンピュータにより実行可能な命令は、それらの技術に従って動作するアルゴリズムの実行を完了するよう1又はそれ以上の動作を夫々提供する多数の機能設備としての実施を含め、如何なる適切な方法においても実施されてよい。なお実例を示すと、“機能設備”は、1又はそれ以上のコンピュータと一体化されてそれらによって実行される場合に、1又はそれ以上のコンピュータに特定の動作役割を実行させるコンピュータシステムの構造部品である。機能設備は、ソフトウェア要素の一部又はソフトウェア要素全体であってよい。例えば、機能設備は、処理の機能として、又は別個の処理として、又は何らかの他の適切な処理ユニットとして実施されてよい。本願で記載される技術が複数の機能設備として実施される場合に、夫々の機能設備はその設備なりに実施されてよく、全てが同じように実施される必要はない。加えて、それらの機能設備は、必要に応じて、並行して及び/又は直列に実行されてよく、それらが実行しているコンピュータでの共有メモリを用いて、メッセージ処理プロトコルを用いて、又は何らかの他の適切な方法において、互いに情報をやり取りしてよい。
概して、機能設備は、特定の抽象データ型を実施するか又は特定のタスクを実行するルーチン、プログラム、オブジェクト、コンポーネント、データ構造等を含む。通常、機能設備の機能は、それらが動作するシステムにおいて望まれるように結合又は分配されてよい。幾つかの実施において、本願における技術を実行する1又はそれ以上の機能設備はともに、完全なソフトウェアパッケージを形成してよい。それらの機能設備は、代替の実施形態では、ソフトウェアプログラムアプリケーション又はソフトウェアシステムを実施するために、他の関係のない機能設備及び/又は処理と相互作用するよう適合されてよい。例えば、幾つかの実施形態において、それらの技術を実施する機能設備は、ソフトウェアアプリケーションのグラフィクス機能の部分としてソフトウェアアプリケーションに、及び/又はワシントン州レドモンドのマイクロソフト・コーポレーションから市販されているDirect2d又はDIRECTX(登録商標)のようなグラフィクスレンダリングシステムに、組み込まれてよい。他の実施形態においては、機能設備は、ワシントン州レドモンドのマイクロソフト・コーポレーションから市販されているWINDOWS(登録商標)オペレーティングシステムを含むオペレーティングシステムのような他の機能設備と相互作用するよう適合されてよい。つまり、幾つかの実施形態において、機能設備は、代替的に、オペレーティングシステムの一部として又はその外で実施されてよい。
幾つかの例となる機能設備は、上記のグラフィクスエンジンを含む1又はそれ以上のタスクを実行するために本願で記載されてきた。なお、当然のことながら、記載される機能設備及びタスクの分割は単に、本願で記載される例となる技術を実施し得る機能設備のタイプの実例にすぎず、実施形態は、何らかの具体的な数、分割、又はタイプの機能設備において実施されることに制限されない。幾つかの実施において、全ての機能は単一の機能設備において実施されてよい。また当然のことながら、幾つかの実施において、本願で記載される機能設備の幾つかは、他と一緒に又は他とは別個に実施されてよく(すなわち、単一のユニット又は別個のユニットとして)、あるいは、それらの機能設備の幾つかは実施されなくてよい。
本願で記載される技術を実施するコンピュータにより実行可能な命令は(1又はそれ以上の機能設備として又は何らかの他の方法において実施される場合に)、幾つかの実施において、1又はそれ以上のコンピュータ可読媒体において、媒体へ機能を提供するよう符号化されてよい。コンピュータ可読媒体には、ハードディスクドライブのような磁気媒体、コンパクトディスク(CD)若しくはデジタルバーサタイルディスク(DVD)のような光学媒体、永続型若しくは非永続型ソリッドステートメモリ(例えば、フラッシュメモリ、磁気RAM等)、又は何らかの他の適切な記憶媒体がある。そのようなコンピュータ可読媒体は、以下で記載される図8のコンピュータ可読記憶媒体806として(すなわち、コンピュータ装置800の一部として)又はスタンドアローンの別個の記憶媒体としてを含め、如何なる適切な方法においても実施されてよい。本願で使用されるように、“コンピュータ可読媒体”(“コンピュータ可読記憶媒体”とも呼ばれる。)は、有形な記憶媒体を指す。有形な記憶媒体は非一時的であり、少なくとも1つの物理的な構造部品を有する。本願で使用される“コンピュータ可読媒体”において、少なくとも1つの物理的な構造部品は、情報を埋め込んで媒体を作成する処理、媒体上に情報を記録する処理、又は媒体を情報により符号化する何らかの他の処理の間に何らかの方法で変更され得る少なくとも1つの物理的特性を有する。例えば、コンピュータ可読媒体の物理的構造の一部の磁化状態は、記録処理の間に変更されることがある。
更に、上記の幾つかの技術は、それらの技術による使用のために特定の方法において情報(例えば、データ及び/又は命令)を記憶する動作を有する。技術がコンピュータにより実行可能な命令として実施される実施のような、それらの技術の幾つかの実施において、情報はコンピュータ可読記憶媒体において符号化されてよい。具体的な構造が、この情報を記憶する有利なフォーマットとして本願で記載される場合に、そのような構造は、記憶媒体において符号化される場合に情報の物理的な編成を伝えるために使用されてよい。次いで、そのような有利な構造は、情報と相互作用する1又はそれ以上の処理の動作に作用することによって、例えば、プロセッサによって実行されるコンピュータ動作の効率を高めることによって、記憶媒体へ機能を提供してよい。
技術がコンピュータにより実行可能な命令として具現され得る幾つの(しかし、全てではない)実施において、それらの命令は、図2の例となるコンピュータシステムを含む如何なる適切なコンピュータシステムにおいても動作する1又はそれ以上の適切なコンピュータ装置において実行されてよく、あるいは、1又はそれ以上のコンピュータ装置(あるいは、1又はそれ以上のコンピュータ装置の1又はそれ以上のプロセッサ)は、コンピュータにより実行可能な命令を実行するようプログラミングされてよい。コンピュータ装置又はプロセッサは、命令が、コンピュータ装置/プロセッサがアクセス可能なように、例えばローカルメモリ(例えば、オンチップのキャッシュ又は命令レジスタ、バスを介してアクセス可能なコンピュータ可読記憶媒体、1又はそれ以上のネットワークを介してアクセス可能であり且つ装置/プロセッサによってアクセス可能なコンピュータ可読記憶媒体、等)において記憶される場合に、命令を実行するようプログラミングされてよい。そのようなコンピュータにより実行可能な命令を有する機能設備は、単一の多目的プログラム可能デジタルコンピュータ、処理能力を共有し且つ本願で記載される技術をともに実行する2又はそれ以上の多目的コンピュータ(同じ場所に配置されるか又は地域分散型である。)の協調的なシステム、本願で記載される技術を実行するのに専用の単一のコンピュータ又はコンピュータ(同じ場所に配置されるか又は地域分散型である。)の協調的なシステム、本願で記載される技術を実行するための1又はそれ以上のフィールドプログラマブルゲートアレイ(FPGA)、あるいは、何らかの他の適切な装置を含むコンピュータ装置の動作と一体化され且つそのような動作を示してよい。
図8は、本願で記載される技術を実施するシステムにおいて使用され得るコンピュータ装置800の形をとるコンピュータ装置の一実施例を表すが、他も可能である。当然のことながら、図8は、本願で記載される原理に従って動作するためにコンピュータ装置に必要な構成要素の描写でも、又は包括的な描写でもない。
コンピュータ装置800は、少なくとも1つのプロセッサ802と、ネットワークアダプタ804と、コンピュータ可読記憶媒体806とを有してよい。コンピュータ装置800は、例えば、デスクトップ若しくはラップトップ型パーソナルコンピュータ、パーソナルデジタルアシスタント(PDA)、スマートモバイルフォン、タブレット型コンピュータ、サーバ、又は何らかの他の適切なコンピュータ装置であってよい。プロセッサ802は、中央演算処理装置(CPU)及び/又はグラフィクス処理ユニット(GPU)を含む如何なる適切なプロセッサも有してよい。ネットワークアダプタ804は、コンピュータ装置800が有線及び/又は無線により何らかの適切なコンピュータネットワークを介して何れかの適切なコンピュータ装置と通信すること可能にするための如何なる適切なハードウェア及び/又はソフトウェアであってもよい。コンピュータネットワークは、無線アクセスポイント、スイッチ、ルータ、ゲートウェイ、及び/又は他のネットワーク設備、並びにインターネットを含む、2以上のコンピュータ間でデータを交換するための何らかの適切な有線及び/又は無線の通信媒体を含んでよい。コンピュータ可読記憶媒体806は、プロセッサ802によって実行される命令及び/又は処理されるデータを記憶するよう適合された1又はそれ以上の媒体であってよい。プロセッサ802は、データ処理及び命令の実行を可能にする。データ及び命令は、コンピュータ可読記憶媒体806に記憶されてよく、例えば、コンピュータ装置800の構成要素間の通信を可能にしてよい。
コンピュータ可読記憶媒体806に記憶されるデータ及び命令は、本願で記載される原理に従って動作する技術を実施するコンピュータにより実行可能な命令を有してよい。図8の例では、コンピュータ可読記憶媒体806は、上述されたように様々な設備を実施し且つ様々な情報を記憶するコンピュータにより実行可能な命令を記憶する。コンピュータ可読記憶媒体806は、コンピュータ装置800に付随するディスプレイでテキストをレンダリング及び表示するためのグラフィクスエンジン808を記憶してよい。グラフィクスエンジン808は、サブピクセル・カバレッジ値を決定し、処理し、キャッシュするためにグラフィクスエンジン808の部分として実施され得るカバレッジ機関810を含んでよい。コンピュータ可読記憶媒体806はまた、ディスプレイに表示されるテキストのカバレッジ値をキャッシュするためのデータ記憶812を有してよい。コンピュータ可読記憶媒体806はまた、アルファ補正値の表814を記憶してよく、表814は、サブピクセル・カバレッジ値を決定し処理するためにグラフィクスエンジン808及び/又はカバレッジ機関810によって使用されてよい。
図8に表されていないが、コンピュータ装置800は、入出力装置を含む1以上の構成要素及び周辺機器を更に有してよい。それらの装置は、とりわけ、ユーザインターフェースを提示するために使用され得る。ユーザインターフェースを提供するために使用され得る出力装置の例には、出力の視覚的提示のためのプリンタ又はディスプレイと、出力の聴覚的提示のためのスピーカ又は他の音響生成装置とがある。ユーザインターフェースのために使用され得る入力装置の例には、キーボード、及びマウスのような指示装置、タッチパッド、並びに離散化タブレットがある。他の例として、コンピュータ装置800は、音声認識により、又は他の音声フォーマットにおいて、入力情報を受け取ってよい。
回路及び/又はコンピュータにより実行可能な命令において技術が実施されるところの実施形態が記載されてきた。当然のことながら、幾つかの実施形態は方法の形をとってよく、その少なくとも1つの例が与えられている。方法の部分として実行される動作は如何なる適切な方法においても順序づけられてよい。然るに、動作が表されているのとは異なる順序で実行される実施形態が考えられ、かかる実施形態は、実施例において連続した動作として示されるとしても、幾つかの動作を同時に実行することを含んでよい。
上記の実施形態の様々な態様は、単独で、組み合わされて、又は先に記載された実施形態において具体的に論じられていない様々な配置において、使用されてよく、従って、その適用において、上記の説明で述べられるか又は図面において表される構成要素の配置及び詳細に制限されない。例えば、一実施形態において記載される態様は、他の実施形態において記載される態様と何らかの方法において組み合わされてよい。
請求要素を修飾するための特許請求の範囲における“第1”、“第2”、“第3”等のような序数詞の使用はそれに自体によって、他の請求要素に対する他の請求要素の何らかの優先順位、優位性、若しくは順序、又は方法の動作が実行される時間的順序も暗示せず、単に、特定の名称を有する1つの請求要素を(序数詞の使用を除き)同じ名称を有する他の要素と区別するラベルとしてそれらの請求要素を区別するために使用される。
また、本願で使用される表現及び用語は記載のためであり、限定と見なされるべきではない。本願における“含む(including)”、“有する(comprising)”、“持つ(having)”、“包含する(containing)”、“伴う(involving)”及びそれらの相当語句は、それらの前に挙げられている項目及びその同等物並びに追加の項目を網羅するよう意図される。
語“例となる(exemplary)”は、本願では、例、事例又は実例の役割を果たすことを意味するために使用される。例として本願で記載される如何なる実施形態、実施、処理、特徴、等も、従って、説明に役立つ実例であると理解されるべきであり、別なふうに示されない限りは、好ましい又は有利な例であると理解されるべきではない。
少なくとも1つの実施形態の幾つかの態様がこのようにして記載されてきたが、当然のことながら、様々な代替、変更、及び改良が当業者には容易に想到可能であろう。そのような代替、変更及び改良は、本開示の部分であるよう意図され、本願で記載される原理の精神及び適用範囲内にあるよう意図される。然るに、上記の説明及び図面は単なる一例に過ぎない。