(57)【要約】【課題】アウトラインフォントをレンダリングする方法を提供すること。【解決手段】アウトラインフォントの輪郭線をさらに画定するために、ベジェ制御点を追加し、ピクセルがアウトラインフォントの輪郭線内に入るかどうか判定するために、インアウトテストを適用することによってアウトラインフォントをレンダリングすること。【選択図】図２
2006106705.tif 000002
【特許請求の範囲】
【請求項１】
アウトラインフォントをレンダリングする方法であって、
アウトラインフォントの輪郭線をさらに画定するために、ベジエ制御点を追加するステップと、
ピクセルがアウトラインフォントの前記輪郭線内に入るかどうか判定するために、インアウトテストを適用するステップとを備えることを特徴とする方法。
【請求項２】
前記インアウトテストは、前記インアウトテストの適用により零以下の結果が作成されたときピクセルを使用可能にするステップを含むことを特徴とする請求項１に記載のアウトラインフォントをレンダリングする方法。
【請求項３】
前記追加されたベジエ制御点から三角形を形成するステップをさらに備えることを特徴とする請求項１に記載のアウトラインフォントをレンダリングする方法。
【請求項４】
暗黙のオンカーブ点を含むベジエ制御点を、既存のアウトラインフォントの既存の制御点集合に追加するステップと、
前記ベジエ制御点および前記既存の制御点集合から、第１の複数の三角形を形成するステップと、
前記既存の制御点集合によって画定された曲線のセグメントを含む、前記第１の複数の三角形からの第２の複数の三角形を見つけるステップと、
前記第２の複数の三角形内でピクセルラスタ化を決定するために、前記第２の複数の三角形にインアウトテストを適用するステップと、
タイプフェイスを形成するために、前記複数の三角形をラスタ化するステップとを備える命令の入ったコンピュータ可読媒体。
【請求項５】
Ｔｒｕｅ  Ｔｙｐｅ（商標）フォントのＧＰＵレンダリングのためのシステムであって、
ピクセルパイプライン内で、暗黙のオンカーブ点とインアウトテストによって制御されるフォントラスタ化とを含むベジエ曲線から、アウトラインフォントのレンダリングを生成するためのＧＰＵと、
前記ＧＰＵを制御し、処理を調整するために、前記ＧＰＵに結合されたＣＰＵと、
前記ＣＰＵおよびＧＰＵに結合されたメモリとを備えることを特徴とするシステム。
【請求項６】
暗黙のオンカーブ点を含み、インアウトテストによって制御されるフォントラスタ化を有するベジエ曲線から生成されたアウトラインフォントを表示することができる、グラフィックスパイプラインに結合されたディスプレイデバイスをさらに備えることを特徴とする請求項５に記載のＴｒｕｅ  Ｔｙｐｅ（商標）フォントのＧＰＵレンダリングのためのシステム。
【請求項７】
前記ＧＰＵは、インアウトテストを適用することによって、グラフィックスパイプライン内でアウトラインフォントの生成に貢献するようにプログラムされたピクセルシェーダを含むことを特徴とする請求項５に記載のＴｒｕｅ  Ｔｙｐｅ（商標）フォントのＧＰＵレンダリングのためのシステム。
【請求項８】
ベクトルフォントをレンダリングする方法であって、
ＧＰＵを備える汎用コンピュータＣＰＵを使用して、モデル空間内の曲線セグメント輪郭に対応する式
Ｂｉ（ｔ）＝ｐｉ−１（１−ｔ）２＋２ｐｉ（１−ｔ）ｔ＋ｐｉ＋１ｔ２
に従って、モデル空間内で複数の輪郭点を定義するステップと、
複数のテクスチャ座標を、前記曲線セグメント輪郭を近似するように形成された三角形の各頂点に関連付けるステップと、
前記三角形の第１の頂点に座標｛−１，１｝が割り当てられ、前記三角形の第２の頂点に座標｛０，−１｝が割り当てられ、前記三角形の第３の頂点に座標｛１，１｝が割り当てられるように、正準テクスチャ座標を三角形の頂点に割り当てるステップと、
形式
ｆ（ｘ，ｙ）＝ｘ２−ｙ
の正準曲線セグメントの陰形式を見つけるステップと、
ピクセルについてのインアウトテストとしてｆ（ｘ，ｙ）＝ｘ２−ｙの値を求めるステップとを備えることを特徴とする方法。
【請求項９】
ｆ（ｘ，ｙ）≦ｘ２−ｙ
である場合ピクセルが活性化されることを特徴とする請求項８に記載のベクトルフォントをレンダリングする方法。
【請求項１０】
ベクトルフォントをレンダリングする方法であって、
ＧＰＵを備える汎用コンピュータＣＰＵを使用して、モデル空間内の曲線セグメント輪郭に対応する式
Ｂｉ（ｔ）＝ｐｉ−１（１−ｔ）２＋２ｐｉ（１−ｔ）ｔ＋ｐｉ＋１ｔ２
に従って、モデル空間内で複数の輪郭点を定義するステップと、
射影変換を使用して、ピクセル座標内で、前記曲線セグメント輪郭が
【数１】
2006106705.tif 000005
の有理２次形式をとるように、前記複数の輪郭点を複数の画面空間点に変換するステップと、
前記２次方程式の前記陰形式を見つけるステップとを備えることを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、一般に、フォント、タイプフェイス、グラフィックスのコンピュータ生成に関する。
【背景技術】
【０００２】
テキストおよびグラフィックスのレンダリングは、グラフィカルユーザインターフェースの基本的な視覚的側面である。洗練されたピクセル処理が可能な強力グラフィックスハードウェアが、パーソナルコンピュータ、ゲーム用システム上などで標準的な機器になる傾向がみられる。グラフィックスハードウェアを使用し、テキストおよびグラフィックスの視覚的外観を改善することは、どちらかといえば、システム性能に対してプラスの視覚的影響をもつ。
【０００３】
さらに、マルチメディアウェブアプリケーション内でのテキストのアニメーションまたは変形（ｄｉｓｔｏｒｔｉｏｎ）は、現行のフォントキャッシュ機構を節約できなくしがちである。ピクセルプロセッサの使用は、アウトラインフォントおよびベクトルグラフィックスをレンダリングする際に、柔軟性を高性能と組み合わせる機会をもたらすのに役立つ。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
上記に鑑み、本発明は、アウトラインフォントをレンダリングする方法を提供する。
【課題を解決するための手段】
【０００５】
以下、読者に基本的な理解をもたらすように、本開示について簡単な要約を提示する。この要約は、本開示の広範な全体像ではなく、本発明の主な／クリティカルな要素を特定することも、本発明の範囲を線引きすることもしない。後から提示されるより詳しい説明の序文として、本明細書で開示されているいくつかの概念を簡単な形態で提示することを目的とするにすぎない。
【０００６】
本発明は、Ｏｐｅｎ  Ｔｙｐｅ（商標）およびＴｒｕｅ  Ｔｙｐｅ（商標）フォント輪郭を含むアウトラインフォントをレンダリングする、解像度から独立した方法（ｒｅｓｏｌｕｔｉｏｎ  ｉｎｄｅｐｅｎｄｅｎｔ  ｍｅｔｈｏｄ）を提供する。この手法は、ピクセルが、フォント輪郭の画面空間投影（ｓｃｒｅｅｎ  ｓｐａｃｅ  ｐｒｏｊｅｃｔｉｏｎ）の内部に属するか、それとも外部に属するか判定するためにインアウトテスト（ｉｎ−ｏｕｔ  ｔｅｓｔ）を使用する。このテストは、有理２次曲線のパラメトリック形式と陰形式（ｉｍｐｌｉｃｉｔ  ｆｏｒｍ）との間の関係に基づくものである。
【０００７】
本発明の付随する特徴の数々は、以下の詳細な説明を添付の図面と併せて参照することによってよりよく理解するほど、より容易に理解されることになる。
【０００８】
本発明のこれらの、また他の特徴および利点は、添付の図面に照らして以下の詳細な説明を読めばよりよく理解されよう。
【０００９】
添付の図面内で同様の部分を指定するために、同様の参照符号を使用する。
【発明を実施するための最良の形態】
【００１０】
添付の図面に関連して下記で提供される詳細な説明は、本発明の本実施形態の説明として意図されており、本発明を構成または使用することができる形態だけを提示することを意図するものではない。この説明は、本発明の機能と、図示された実施形態と関連して本発明を構築する、また動作させるためのブロックのシーケンスとについて述べるものである。しかし、やはり本発明の主旨および範囲内に包含されるものとする様々な実施形態によって、同じ、または均等な機能およびシーケンスを達成することができる。
【００１１】
本明細書では、本発明についてＴｒｕｅ  Ｔｙｐｅ（商標）システムにおいて実施されるものとして説明し例示するが、説明するシステムは、例として提供するものであり、これらに限定するものではない。当業者なら理解できるように、本発明は、様々な、異なるタイプのアウトラインフォント、またはベクトルベースのフォントシステムにおいて適用するのに適している。また、本発明は任意のタイプの、ベクトルベースのグラフィックスを生成することに適用することもできることを、当業者なら理解されよう。
【００１２】
本発明の例示的な実施形態は、アウトラインフォントをレンダリングする、解像度から独立した方法を対象とする。本発明は、Ｔｒｕｅ  Ｔｙｐｅ（商標）フォント、ＰｏｓｔＳｃｒｉｐｔ（商標）フォント、ベクトルフォント、ベクトルグラフィックスのレンダリングに適用することができる。本発明の例示的な実施形態は、グラフィックスプロセッシングユニット（ＧＰＵ）のプログラム可能なピクセルシェーダ機能を使用する。説明する技法の適用は、高性能中央処理装置（ＣＰＵ）、メインフレームコンピュータ、ＤＳＰ、同様の機能を提供する類似物を含めて、他の同等のプロセッサに適用することができることを、当業者なら理解されよう。
【００１３】
従来の方法で作成されたフォントイメージでは、フォントの湾曲した輪郭は、あらゆる閲覧距離と解像度で、湾曲して見えない場合がある。例えば、「Ｏ」という字は、いくつかの解像度で四角形であるように見える場合がある。本発明は、アウトラインフォントにおいて輪郭をレンダリングする、解像度から独立した方法を提供することに資する。この手法は、ピクセルが、フォント輪郭の画面空間投影の内部に属するか、それとも外部に属するか判定するためにインアウトテストを使用する。このテストは、有理２次曲線のパラメトリック形式と陰形式との関係に基づくものである。
【００１４】
図１は、ベクトル描画イメージとビットマップイメージの表示を示す。ビットマップオブジェクトは、記憶され表示されたピクセルの集まりで構成されることを、当業者なら理解されよう。これらのビットマップオブジェクトを拡大したとき、イメージは、ピクセル数が固定されているため粒子が粗く見える（１０１）。ビットマップイメージが、従来のモニタ１０３ではなく高ＤＰＩ（ｄｏｔ  ｐｅｒ  ｉｎｃｈ）モニタ１０２上で表示されたとき、得られるオブジェクト１０４は、見るには小さくなりすぎる場合がある。しかし、ビットマップイメージは、一般に表示するのが容易であり、どちらかといえば、それらを生成するために使用されるＣＰＵに対して要求が多くない傾向がある。
【００１５】
ベクトルベースのオブジェクトは、数学的記述から描画され、ビットマップイメージより良好にスケーリングするのに役立つ。ベクトルベースのイメージは、拡大されたとき（１０５）それに応じてピクセル数が増大されるため、元のイメージと同様に見える傾向がある。同様に、ベクトルベースのイメージが高ＤＰＩモニタ１０６上で表示されたとき、そのサイズと外観（１０８）は、従来のモニタ１０７上で表示されたときのものと同様に見える。しかし、ベクトルベースのオブジェクトは、ビットマップイメージより多くの処理がかかりがちである。
【００１６】
ベクトルベースのイメージは、数学的記述から生成することができる任意の形状とすることができる。例えば、アウトラインフォントは、ベクトルをベースとするものであり、生成されるタイプフェイスを構成する曲線の記述から生成される。アウトラインフォントの記述は、字を構成する輪郭線の数と、各輪郭線上の点の定義とを与える情報を含めることができる。また、実際に曲線上にある点と曲線上にない点の識別を含めて、追加情報を記述に追加することができる。
【００１７】
透視変換に従ってフォントのラスタイメージをゆがめるために、テクスチャマッピングが使用される。そのフォントが非常に近接して見られた場合、ピクシレーションアーチファクト（ｐｉｘｉｌａｔｉｏｎ  ａｒｔｉｆａｃｔｓ）が現れる。さらに、これらのテクスチャイメージのサイズは、これらのアーチファクトを回避しようと試みられた場合、大きいものとなる可能性がある。使用されている手法では、ピクセルシェーダを使用し形状境界を決定するので、これらの欠点はほとんど存在しない。
【００１８】
図２は、アウトラインフォントおよび他の同等のベクトルベースのオブジェクトをレンダリングするグラフィックスプロセッシングユニットに好適なコンピュータプロセッサシステムのブロック図である。コンピュータ、ゲームコンソール、コンピューティングシステムなどは、ＧＰＵ２０２と呼ばれる補助プロセッサを含むことができる。ＧＰＵは、「グラフィックスプロセッシングユニット」を表す。ＣＰＵ（中央処理装置）２０１と同様に、ＧＰＵはシングルチッププロセッサとすることができる。
【００１９】
例示的なコンピューティングシステムでは、ＣＰＵ２０１は、ベクトルベースのフォント、またはオブジェクト２０７をレンダリングする機能を備えるＧＰＵ２０２と結合される。このコンピューティングシステムでは、ベクトルベースのフォント、またはオブジェクト２０７のレンダリングを有するＧＰＵ２０２は、ＣＰＵ２０１からデータおよびコマンドを受け入れるようにプログラムすることができる。メモリ２０３は、ＣＰＵ２０１と、ベクトルベースのフォント、またはオブジェクト２０７のレンダリングを備えるＧＰＵ２０２とに結合される。メモリ２０３は、必要に応じて、ＣＰＵ２０１、およびベクトルベースのフォント、またはオブジェクト２０７のレンダリングを備えるＧＰＵ２０２に対して記憶およびバッファを提供する。ベクトルベースのフォント、またはオブジェクト２０７のレンダリングを備えるＧＰＵは、通常グラフィック情報をディスプレイデバイス２０８に送信するために使用される外部の従来型グラフィックスパイプライン２０１を介して結合される内部グラフィックスパイプラインを含む。
【００２０】
ＧＰＵは、照明効果、オブジェクト変換、３Ｄモーションを含み、主に３次元関数（３Ｄ  ｆｕｎｃｔｉｏｎ）を計算するために使用される。これらのタイプの計算は、ＣＰＵに対してかなり負担をかけうるので、ＧＰＵは、コンピュータがより効率的に動作するのを助けることができる。中央処理装置（ＣＰＵ）と共にＧＰＵを使用することにより、全体的なコンピューティングシステム性能を改善することができる。
【００２１】
具体的には、オブジェクトは、ビットマップオブジェクトまたはベクトルベースのオブジェクトとして表示することができる。典型的なコンピュータシステムでは、プロセッサの限界により、従来、ビットマップオブジェクトが使用されている。ＧＰＵの処理能力の登場で、ベクトルベースのオブジェクトを用いて、より良好な表示が生成されるようになってきている。
【００２２】
本発明の一実施形態では、ベクトルベースのフォントのＧＰＵレンダリングを、コンピュータオペレーティングシステム（ＯＳ）のグラフィックスレイヤで使用して、ベクトルベースの形状をレンダリングすることができる。コンピュータシステムでは、そのようなオペレーティングシステムは、従来ビットマップオブジェクトとして表示されていたアイコンなどオブジェクトの表示を改善するのに役立つことになる。高解像度ディスプレイまたは同等物を有するそのようなコンピュータシステムは、ディスプレイデバイス上でのオブジェクトの表示に対して、より視覚的に魅力的で、また柔軟な手法を提供することに資することになる。従来の解像度を有するディスプレイデバイスを備えるそのようなコンピュータシステムは、アウトラインフォント、ベクトル描画アイコンなど、ベクトルベースのオブジェクトのそのようなＧＰＵレンダリングから利益を得ることに資することになることを、当業者なら理解されよう。
【００２３】
諸実施形態は、グラフィックスプロセッシングユニット（ＧＰＵ）のプログラム可能なピクセルシェーダ機能を使用して、ベクトルベースのフォントまたはオブジェクトの輪郭をレンダリングする、解像度から独立した方法を提供することに資する。諸実施形態は、「インアウト（ｉｎ  ｏｒ  ｏｕｔ）」テストを使用し、ピクセルが特定のフォント内の文字の輪郭の内部に属するか、それとも外部に属するか判定する。あるいは、当業者に周知であるように、ピクセルがフォント輪郭の画面空間投影の輪郭の内部に属するか、それとも外部に属するか判定する。インアウトテストは、有理２次曲線のパラメトリック形式と陰形式との関係に基づくものである。ピクセルがフォント輪郭に属するかどうか判定するためにピクセルシェーダを使用することは、解像度から独立したものとするのに役立ち、幾何学的表現がコンパクトである。
【００２４】
したがって、フォントのレンダリングは、ＧＰＵを使用し、下記で述べるように領域の塗り潰しのために陰関数の値を求めることによって達成することができる。フォントをレンダリングするために、積分２次方程式（ｉｎｔｅｇｒａｌ  ｑｕａｄｒａｔｉｃｓ）を使用することができる。しかし、円および楕円を含む、他の形状をレンダリングするために、有理２次方程式（ｒａｔｉｏｎａｌ  ｑｕａｄｒａｔｉｃｓ）を使用することができる。
【００２５】
解像度から独立とは、フォントの湾曲した輪郭が任意の閲覧距離で湾曲して見えること、つまり、既存の技法より優れた質的改善を意味する。レンダリングする前に、フォント輪郭は、そのレンダリング後のイメージではなく輪郭形状（ｏｕｔｌｉｎｅ  ｇｅｏｍｅｔｒｙ）の設計だけによって決まる三角形の、小さな固定された集合に三角分割（ｔｒｉａｎｇｕｌａｔｅ）される。インアウトテストは、いくつかのピクセル処理ユニットにわたって独立して、並列で実行することができる少数の浮動小数点演算を必要とするにすぎない。
【００２６】
ＣＰＵ２０１に対するコンピュータ入力２０５は、キーボードなどを含む、従来の方法によって提供される。ＣＰＵ２０１は、データおよび命令をロードしおよび／または記憶するために、（メモリ２０３に加えて）ストレージを含む１つまたは複数の周辺デバイス２０６を使用することができる。ストレージとしては、磁気ディスク、ＣＤ、テープなどを挙げることができる。
【００２７】
プログラム命令を記憶するために使用される記憶デバイスもまた、ネットワークを跨いで分散させることができることを、当業者なら理解されよう。例えば、遠隔コンピュータは、適応型計器実行時監視／分析ソフトウェア（ａｄａｐｔｉｖｅ  ｉｎｓｔｒｕｍｅｎｔａｔｉｏｎ  ｒｕｎｔｉｍｅ  ｍｏｎｉｔｏｒｉｎｇ  ａｎｄ  ａｎａｌｙｓｉｓ  ｓｏｆｔｗａｒｅ）などのツールを記憶することができる。ローカルまたは端末コンピュータは、遠隔コンピュータにアクセスし、ソフトウェアの一部または全部をダウンロードして、そのプログラムを実行することができる。別法として、ローカルコンピュータは、必要に応じていくつかのソフトウェアをダウンロードすることも、いくつかのソフトウェア命令をローカル端末部で、またいくつかを遠隔コンピュータ部（またはコンピュータネットワーク）で実行することにより、分散して処理することもできる。また、当業者に周知の従来の技法を使用することにより、ソフトウェア命令の全部または一部分を、ＤＳＰ、プログラマブルロジックアレイなどの専用回路によって実行することができることを、当業者なら理解されよう。
【００２８】
図３は、グラフィックスプロセッシングユニットまたはジオメトリプロセッシングユニット（ＧＰＵ）２０２、およびＧＰＵレンダリング２０７によって与えられる、グラフィックスパイプラインに対する入力を含む、グラフィックスパイプライン２０１の流れ図である。典型的には、コンピュータグラフィックスは、所望のイメージを形成するための三角形を含む多角形を組み立てることによって生成される。アウトラインフォントをレンダリングするためのグラフィックスハードウェアは、多角形から組み立てられた自然な形状をレンダリングするのを速めるのに役立つプログラム可能なパイプラインを含むことができる。グラフィックスをレンダリングする際に、このプログラム可能なパイプラインは、従来の方法で構築された頂点シェーダ（図示せず）と、グラフィックスおよびフォントのＧＰＵレンダリング２０７を含むピクセルシェーダ３０５とからの出力を使用する。当業者なら理解できるように、従来の頂点シェーダプログラムは、従来のグラフィックスプリミティブの各頂点に対して実行し、一方、ピクセルシェーダプログラムは、どちらかというと、ラスタ化された三角形のあらゆるピクセルに対して実行する。すなわち、ピクセルシェーダ機能は、個々のピクセルのレンダリングを制御するためにＧＰＵレンダリングプロセス２０７を適用することができる、フォント／グラフィックスレンダリングプロセスにおける環境を提供する。
【００２９】
従来の動作では、頂点内にカプセル化されたデータは、「Ｃ」データ構造に非常によく似た、ユーザによって定義された浮動小数点数の集まりとすることができる。頂点シェーダプログラムまたはプロセスは、これを修正し、または新しいデータを生み出し、その結果をピクセルシェーダに渡すことができる。ピクセルシェーダに対する入力は、三角形の頂点に対する頂点データの補間とすることができる。頂点データのこの補間は、コンピュータ内のモデルからの三角形を、画面または同等のディスプレイデバイス上で表示されるイメージにマップする射影変換を含めて、非線形となる傾向がある。
【００３０】
したがって、ブロック３０３で、トライアングルセットアップおよびラスタ化の従来のプロセスが、典型的には当業者に周知の従来の技法を使用して実行されている。ブロック３０４で、典型的には、ＧＰＵレンダリングプロセス２０７からの寄与を含むレンダリングテクスチャのブレンディングおよびフィルタリングが実行される。ＧＰＵプロセス２０２は、ピクセルシェーディング３０５および頂点シェーディング（図示せず）のサブプロセスからの寄与を含む。
【００３１】
ピクセルシェーダユニット３０５では、最終的な表示イメージを生成するための計算が行うことができる。ピクセルシェーダユニットは、表示されるイメージを処理する際に活動状態とすることができ、個々のピクセルに対する制御を行うことができる。例えば、ＧＰＵ２０２では、ピクセルシェーダ３０５は、ピクセルごとの照明を計算するためにピクセルシェーダで順に使用することができる光源配向情報（ｌｉｇｈｔ  ｓｏｕｒｃｅ  ｏｒｉｅｎｔａｔｉｏｎ  ｉｎｆｏｒｍａｔｉｏｎ）を計算し提供することができる頂点シェーダが、先行するように構成することができる。
【００３２】
ピクセルシェーディングサブプロセス３０５は、従来のピクセルシェーディングプロセス３０６と、ベクトルベースのフォントのＧＰＵレンダリングの実施形態からの寄与（ＧＰＵレンダリング）２０７とを含む。代替の実施形態のＧＰＵレンダリングは、アウトラインフォントのＧＰＵレンダリング、またはベクトルベースの定義に適した他のオブジェクトのＧＰＵレンダリングを含むことができる。ブロック３０４に戻ると、このブロックの出力は、表示される信号３０８である。ブロック３０８に対する入力は、典型的には、ピクセルのアレイである。
【００３３】
図４は、２つの輪郭線のアウトラインフォント４００の図である。フォント輪郭は、１組の順序付けられた輪郭線４０１、４０２からなり、各輪郭線は、文字の循環成分（ｃｙｃｌｉｃ  ｃｏｍｐｏｎｅｎｔ）を表す。時計回りの順序付けにより、輪郭の内部すべては、輪郭線経路の右側である。ここで経路は任意で内側領域と外側領域に分割されており、輪郭線の右側が内側と見なされることを、当業者なら理解されよう。経路は、モデル空間内の２Ｄ点の集まりによって符号化することができ、各点はオンカーブ（ｏｎ−ｃｕｒｖｅ）４０３またはオフカーブ（ｏｆｆ−ｃｕｒｖｅ）４０４である。オンカーブ点は、鋭い不連続を生み出し、オフカーブ点は、２次のＢ−スプライン制御点として処理され、輪郭の滑らかに湾曲した部分を可能にする。
【００３４】
図５は、暗黙の（ｉｍｐｌｉｅｄ）オンカーブ点５００と共に三角分割された２つの輪郭線のアウトラインフォントの図である。隣接するオフカーブ点５０２、５０３間の中点５０１には、下にある２次曲線のベジエ（Ｂｅｚｉｅｒ）表現の端点に対応する暗黙のオンカーブ点５０１がある。暗黙のオンカーブ点と共にフォント輪郭は、各オフカーブ点５０２と、隣接するオンカーブ点５０１、５０４の対とが三角形を形成する制約を受けて、三角分割される。この制約は、各２次ベジエ曲線セグメント５０９が、そのベジエ制御点５０２、５０１、５０４によって形成される三角形内に完全にあり、端点５０１、５０４を有することを保証する。三角形は、完全にフォント輪郭５０７の内部５０５上にあるか、または曲線セグメント５０６を含む。曲線セグメント５０６、５０８を含む三角形は、インアウトテストを実施するピクセルシェーダプログラムを使用してレンダリングされる。
【００３５】
インアウトテスト
インアウトテストが、パラメトリック形式、すなわち、
【００３６】
Ｂｉ（ｔ）＝ｂｉ−１（１−ｔ）２＋２ｂｉ（１−ｔ）ｔ＋ｂｉ＋１ｔ２
（０．１）
【００３７】
を有する、制御点群（例えば、５０１、５０２、５０４）内にある２次ベジエ曲線セグメント（例えば、５０８）に適用される。上式で、ｔ∈［０，１］であり、ｂｉは、オフカーブ点（例えば、５０２、また図６のｂｉ）に対応し、ｂｉ−１およびｂｉ＋１は、隣接するオンカーブ点（例えば、５０１および５０４、また図６のｂ０およびｂ２）に対応する。Ｂｉ（ｔ）は、ｂｉがオフカーブ点であって、暗黙のオンカーブが輪郭に属することが仮定されるとき定義されるにすぎないことに留意されたい。
【００３８】
輪郭点ｂｉは、射影変換Ｐを介して、数学的モデルからディスプレイまたは画面空間に変換される。射影変換Ｐは、３×３行列によって表すことができる。Ｐは、もしかしたら、４×４行列を含むいくつかの標準的なグラフィック変換の合成物であるかもしれない。しかし、最終的に、モデルから画面空間へのマッピングは、２つの次元空間間の射影マッピングとすることができる。
【００３９】
画面空間点またはディスプレイ点ｑｉ＝ｐｉ・Ｐもまた見つけられる。ただし、輪郭点ｐｉ＝｛ｐｉ，ｘ，ｐｉ，ｙ，１｝であり、ディスプレイ点ｑｉ＝｛ｑｉ，ｘ，ｑｉ，ｙ，ｑｉ，ｗ｝である。座標曲線｛ｑｘ（ｔ），ｑｙ（ｔ），ｑｗ（ｔ）｝が、式（０．１）に従って見つけられ、次いで、曲線セグメント輪郭は、ピクセル座標内で、有理２次形式、すなわち、
【００４０】
【数１】
2006106705.tif 000003
【００４１】
をとる。インアウトテストは、ｑｉ（ｔ）の陰形式の値を求めることを必要とする。ｘおよびｙに関する陰的方程式（ｉｍｐｌｉｃｉｔ  ｅｑｕａｔｉｏｎ）は、値がｘｙ平面内の所与の曲線上に入るものと見なすことができることを、当業者なら理解されよう。
【００４２】
有理２次曲線の陰形式を見つけることは、１対の多項式の終結式（ｒｅｓｕｌｔａｎｔ）を必要とする。
【００４３】
ａ（ｔ）＝ａ０＋ａ１ｔ＋ａ２ｔ２                          （０．３）
【００４４】
および
【００４５】
ｂ（ｔ）＝ｂ０＋ｂ１ｔ＋ｂ２ｔ２                          （０．４）
【００４６】
をｔに関する１対の多項式とする。これらの多項式は、ベズー（Ｂｅｚｏｕｔ）の終結式｜Ａ｜＝０の場合、共通の根ｔを有することになる。ただし、
【００４７】
【数２】
2006106705.tif 000004
【００４８】
２次曲線の陰形式は、２つの新しい多項式、すなわち
【００４９】
ａ（ｔ）＝ｘｑｗ（ｔ）−ｑｘ（ｔ）                        （０．６）
【００５０】
ｂ（ｔ）＝ｙｑｗ（ｔ）−ｑｙ（ｔ）                        （０．７）
【００５１】
を形成し、それらの終結式をとることによって見つけられる。ｘおよびｙに関する、得られる式の零集合（ｚｅｒｏ  ｓｅｔ）が、ｑ（ｔ）の陰形式である。
【００５２】
画面空間内の各フォント輪郭曲線セグメントについて、そのような陰形式を見つけるために、行列Ａが形成され、その行列式（ｄｅｔｅｒｍｉｎａｎｔ）がとられる。この結果は、６つの係数によって表される、２つの変数ｘおよびｙに関する２次多項式となる。この多項式の計算には、各ピクセルについて６つの乗算と５つの加算が含まれる可能性がある。これは、不合理な作業量と見なされない可能性がある。しかし、現行のピクセルシェーダの実装は、トライアングルセットアップ時間で状態を設定する機会を提供しない傾向がある。これは、２次曲線の陰形式を各ピクセルごとに計算することが必要とされることを意味し、これは可能ではあるが、計算にコストがかかる傾向があることになる。
【００５３】
図６は、テクスチャ空間６０２から画面空間６０３への正準曲線要素６０１のマッピングの図である。画面空間６０４内の各曲線セグメントの陰的方程式を見つけるのではなく、テクスチャ座標が各三角形頂点ｂ１、ｂ２、ｂ３に関連付けられ、テクスチャ空間６０１内の曲線の陰的方程式の値が求められる。テクスチャ座標は、一般に、三角形上にテクスチャをマップする際に使用されることを、当業者なら理解されよう。テクスチャ座標により、テクスチャ空間から、三角形の点によって画定される平面へのマッピングが作成される。以下の正準テクスチャ座標、すなわちｂ０←｛−１，１｝、ｂ１←｛０，−１｝、ｂ２←｛１，１｝が、図のように割り当てられる。代替の実施形態において、他のテクスチャ座標を選択することができることを、当業者なら理解されよう。正準座標は、導出時にテンプレートとして働く傾向がある。
【００５４】
テクスチャ空間では、正準曲線セグメントは、
【００５５】
｛ｘ，ｙ｝＝｛２ｔ−１，（１−２ｔ）２｝                  （０．８）
【００５６】
の形式を有し、ｔ∈［０，１］である。検証によって、
【００５７】
ｙ＝ｘ２                                                  （０．９）
であることに留意されたい。
【００５８】
この式の両側からｙを減算することによって、正準曲線セグメントの陰形式が得られる。
【００５９】
ｆ（ｘ，ｙ）＝ｘ２−ｙ                                    （０．１０）
【００６０】
ｆ（２ｔ−１，（１−２ｔ）２）＝０                        （０．１１）
【００６１】
であることは容易に検証される。
【００６２】
これは所望の結果である。代替の実施形態において、式（０．１０）の代わりに他の式を使用することができることを、当業者なら理解されよう。曲線セグメントを含む三角形すべてが同じテクスチャ座標を有するため、そのピクセルについてインアウトテストとして働く陰的方程式が１つしかない。陰的曲線（ｉｍｐｌｉｃｉｔ  ｃｕｒｖｅ）に関して、ｆ（ｘ，ｙ）＝０であるピクセルは曲線上にあり、ｆ（ｘ，ｙ）＜０であるピクセルは曲線の内側にあり、ｆ（ｘ，ｙ）＞０であるピクセルは曲線の外側にあることを、当業者なら理解されよう。
【００６３】
曲線セグメントを含む三角形の頂点に対する正準テクスチャ座標が割り当てられる。このようにして、三角形ラスタライザは、画面空間ピクセルからテクスチャ空間点への逆マッピングを計算することになる。このテクスチャ空間領域（ｄｏｍａｉｎ）は、曲線セグメントを含む各三角形について同一であるため、１つの陰的方程式（０．１０）を考察することが必要とされるにすぎない。この式は、そのピクセルがフォント輪郭内にあるか、それともその外にあるか判定するために、各補間テクスチャ座標について値が求められる。
【００６４】
三角形の向き、すなわちモデル空間内の（ｖ０−ｖ１）×（ｖ２−ｖ１）の符号に対応して、曲線セグメントを含む２つのタイプの三角形が存在する。これは、曲線セグメントが局所的に凸か、それとも凹かを教える。この結果は、頂点データ内での追加のフィールドとして符号化される。曲線輪郭の内側にあるピクセルは、インアウトテストを三角形の向き（凸または凹）と組み合わせることによってシェーディングされる。このテストに不合格となるピクセルは、輪郭の外側にあり、イメージバッファまたは深度バッファにデータを書き込まない。
【００６５】
曲線セグメント三角形（ｃｕｒｖｅ  ｓｅｇｍｅｎｔ  ｔｒｉａｎｇｌｅｓ）が、三角分割されたフォント輪郭に属していなければならない制約は、三角形のオーバーラップによりアーチファクトを生じる可能性がある。三角形のオーバーラップアーチファクトを除去するために、そのようなオーバーラップが存在しなくなるまで、曲線セグメントを再分割し再三角分割することができる。ピクセルスーパーサンプリングの方法を使用して、アンチエイリアシングを提供することができる。しかし、本発明の変形形態を使用して、より効率的な技法を実施することができる。
【００６６】
図７は、アウトラインフォントのレンダリングの前処理プロセスを示すプロセス流れ図である。ブロック７０１で、フォント輪郭がロードされる。ブロック７０２で、ベジエ制御点がフォント輪郭に追加される。ブロック７０３で、先に追加された制御点を使用して、フォントの輪郭が三角形に形成される。ブロック７０４で、三角形が、凸、凹または内部として分類される。ブロック７０５で、結果がレンダリングプロセスに転送される。
【００６７】
図８は、アウトラインフォントのレンダリングのレンダリングプロセスを示すプロセス流れ図である。図７のブロック７０５からの結果が、フォントレンダリングプロセス８００に入力される。ブロック８０１で、特定の三角形が内部にあるかどうか判定するために照会が行われる。ブロック８０２で、内部三角形は、そのピクセルが塗り潰される。三角形が内部三角形でない場合には、ブロック８０３で、三角形のピクセルにインアウトテストが適用される。ブロック８０４で、ピクセルが内側にあるかどうか判定するために照会が行われる。ブロック８０５で、内部ピクセルが塗り潰される。ピクセルが内（ｉｎ）にない場合、プロセスはブロック８０５を迂回し、ブロック８０６に進む。
【００６８】
ブロック８０６で、プロセスは、それ以上ピクセルがあるかどうか判定する。ある場合には、プロセスはブロック８０３に戻る。それ以上ピクセルがない場合、その特定の三角形のレンダリングは終了される。レンダリングプロセス８００は、特定のフォント輪郭を構成する三角形すべてがレンダリングされるまで繰り返され、フォントが表示される。
【図面の簡単な説明】
【００６９】
【図１】ベクトル描画イメージとビットマップイメージの表示を示す図である。
【図２】アウトラインフォントおよび他の同等のベクトルベースのオブジェクトをレンダリングするグラフィックスプロセッシングユニットに好適なコンピュータプロセッサシステムのブロック図である。
【図３】グラフィックスプロセッシングユニットまたはジオメトリプロセッシングユニットによって与えられる入力を含む、グラフィックスパイプライン２０１の流れ図である。
【図４】２輪郭線アウトラインフォントの図である。
【図５】暗黙のオンカーブ（ｏｎ−ｃｕｒｖｅ）点と共に三角分割された２つの輪郭線のアウトラインフォントの図である。
【図６】テクスチャ空間から画面空間への正準曲線要素のマッピングの図である。
【図７】アウトラインフォントのレンダリングの前処理プロセスを示すプロセス流れ図である。
【図８】アウトラインフォントのレンダリングのレンダリングプロセスを示すプロセス流れ図である。
【符号の説明】
【００７０】
２０３  メモリ
２０５  コンピュータ入力
２０６  ストレージを含む周辺デバイス
２０７  ＧＰＵレンダリング
２０８  ディスプレイデバイ
【図１】
2006106705.tif 000006
【図２】
2006106705.tif 000007
【図３】
2006106705.tif 000008
【図４】
2006106705.tif 000009
【図５】
2006106705.tif 000010
【図６】
2006106705.tif 000011
【図７】
2006106705.tif 000012
【図８】
2006106705.tif 000013
【外国語明細書】
2006106705000001.pdf