(57)【要約】      （修正有）【課題】非ゼロ巻数規則に従って定義された２次元入力パスを等価な出力パスに変換する。【解決手段】入力パスの縮退セグメント及び縮退輪郭が除去される。入力パスの交差が求められる。交差を含む入力パスの輪郭がマーク付けされる。マーク付けされていない内部輪郭が除去される。交差がリンク付けされる。マーク付けされた輪郭がウォーキングされ、新たな輪郭が形成される。マーク付けされた輪郭及び縮退輪郭が除去される。新たな輪郭及びマーク付けされていない輪郭が収集され、等価な出力パスが形成される。等価な出力パスは、非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれを用いてもレンダリングすることができる。【選択図】図１
2015022760.tif 000002
【特許請求の範囲】
【請求項１】
入力パスを変換する方法であって、該入力パスは２次元（２Ｄ）座標系における非ゼロ巻数規則に従って定義され、前記入力パスは１組の輪郭を含み、各輪郭は一連のセグメントを含み、該方法は、
前記入力パスの縮退セグメントを除去するステップと、
前記入力パスの縮退輪郭を除去するステップと、
前記入力パスの交差を求めるステップと、
前記交差を含む入力パスの前記輪郭をマーク付けするステップと、
マーク付けされていない内部輪郭を除去するステップと、
前記交差をリンク付けするステップと、
前記マーク付けされた輪郭をウォーキングすることにより新たな輪郭を形成するステップと、
前記マーク付けされた輪郭を除去するステップと、
縮退輪郭を除去するステップと、
前記新たな輪郭及びマーク付けされていない輪郭を収集することにより前記入力パスに等価な出力パスを得るステップと
を含み、各前記ステップはプロセッサが実行する、入力パスを変換する方法。
【請求項２】
前記入力パスはグリフを表す、請求項１に記載の方法。
【請求項３】
前記入力パスはイラストを表す、請求項１に記載の方法。
【請求項４】
前記入力パスは構造化ベクトルグラフィックを表す、請求項１に記載の方法。
【請求項５】
いかなるエイリアス又は内部エッジアーティファクトを生成することなく、前記非ゼロ巻数規則および奇数−偶数パリティ規則のいずれか一方によって前記出力パスをレンダリングすることを更に含む、請求項１に記載の方法。
【請求項６】
前記レンダリングは前記輪郭を塗りつぶす、請求項５に記載の方法。
【請求項７】
前記レンダリングは前記輪郭の外形を描く、請求項５に記載の方法。
【請求項８】
線形区画を用いて曲線セグメントを近似することにより交差を求めることを更に含む、請求項１に記載の方法。
【請求項９】
前記セグメントに単調性を強制することを更に含む、請求項１に記載の方法。
【請求項１０】
接続点を各交差と関連付けることを更に含み、前記接続点は前記交差のデカルトロケーションを特定し、前記交差から発する外部セグメントのリストを保持する、請求項１に記載の方法。
【請求項１１】
前記縮退セグメントは、
そのセグメントの始点が終点と一致する任意のセグメントと、
曲線から構成され、前記曲線の内部部分に前記始点及び前記終点を有する任意のセグメントと、
前記曲線の前記始点又は前記終点のいずれかと一致する前記曲線のオフカーブ制御点を有する任意のセグメントと
を含み、
前記縮退輪郭は、
非有界領域又は開領域である任意の輪郭、ゼロエリアを有する領域、又は、単一点によって定義される任意の輪郭を含む、
請求項１に記載の方法。
【請求項１２】
前記セグメントのうちのいくつかは一致する、請求項１に記載の方法。
【請求項１３】
前記輪郭のうちのいくつかは自己交差である、請求項１に記載の方法。
【請求項１４】
前記セグメントを定義する座標は整数を用いて指定される、請求項１に記載の方法。
【請求項１５】
前記セグメントを定義する座標は浮動小数点数を用いて指定される、請求項１に記載の方法。
【請求項１６】
前記セグメントを定義する座標は固定小数点数を用いて指定される、請求項１に記載の方法。
【請求項１７】
前記入力パスの前記交差を求めることは、整数グリッドにおいて行われる、請求項１に記載の方法。
【請求項１８】
前記入力パスの前記交差を求めることは、浮動小数点グリッドにおいて行われる、請求項１に記載の方法。
【請求項１９】
前記入力パスの前記交差を求めることは、固定小数点グリッドにおいて行われる、請求項１に記載の方法。
【請求項２０】
前記入力パスの前記交差を求めることは、更なる交差が見つからなくなるまで繰り返される、請求項１に記載の方法。
【請求項２１】
前記入力パスの前記交差を求めることは、目標レンダリングサイズにおいて曲線セグメントのオンデマンドテッセレーションを用いて性能を改善する、請求項１に記載の方法。
【請求項２２】
前記入力パスの前記交差を求めることは、加速データ構造を用いて性能を改善する、請求項１に記載の方法。
【請求項２３】
前記加速データ構造は境界ボックス、ツリー、又はグリッドを含む、請求項２２に記載の方法。
【請求項２４】
前記入力パスの前記セグメントは量子化され、整数グリッドに変形される、請求項１に記載の方法。
【請求項２５】
前記出力パスの前記セグメントは、前記収集することの前に変形され元の座標系に戻される、請求項２４に記載の方法。
【請求項２６】
入力パスのセグメントを内部又は外部としてラベル付けする方法であって、前記入力パスは２次元（２Ｄ）座標系において非ゼロ巻数規則に従って定義され、前記入力パスは１組の輪郭を含み、各輪郭は一連のセグメントを含み、該方法は、
巻数をゼロに初期化するステップと、
前記セグメントに交差する走査線を特定するステップと、
輪郭ごとに、巻値を前記走査線に交わる前記輪郭の任意のセグメントの前記巻数に累積するステップであって、前記セグメントと同じロケーションにおいて前記走査線に交わる前記輪郭の一致セグメントの前記累積は、全ての前記輪郭が処理されるまで延期され、前記一致セグメントはマーク付けされ、前記マーク付けされた一致セグメントはリスト内に保存される、ステップと、
前記リストが空であり、かつ前記巻数がゼロでなく、かつ前記巻数が前記セグメントを計上するように更新されたときにゼロでない場合、前記セグメントを内部としてラベル付けするステップと、
前記リストが空であり、かつ前記巻数がゼロであるか、又は前記巻数が前記セグメントを計上するように更新されたときにゼロである場合、前記セグメントを外部としてラベル付けするステップと、
前記リストが空でなく、かつ、互いに反対の向きを有する前記リストのセグメント対を相殺した後に前記リストが前記セグメントを含むように拡張され、前記リスト内の前記セグメントを除く任意の残りの相殺されていないセグメントについて前記巻値を前記巻数に累積した後に、前記巻数がゼロでなく、かつ、前記セグメントを計上するように更新されたときに前記巻数がゼロでない場合、前記セグメントを内部としてラベル付けするステップと、
前記リストが空でなく、かつ、互いに反対の向きを有する前記リストのセグメント対を相殺した後に前記リストが前記セグメントを含むように拡張され、前記リスト内の前記セグメントを除く前記残りの相殺されていないセグメントについて前記巻値を前記巻数に累積した後に、前記巻数がゼロであるか、又は、前記セグメントを計上するように更新されたときに前記巻数がゼロである場合、前記セグメントを外部としてラベル付けするステップと
を含み、各前記ステップはプロセッサが実行する、入力パスのセグメントを内部又は外部としてラベル付けする方法。
【請求項２７】
入力パスをレンダリングする方法であって、該入力パスは２次元（２Ｄ）座標系における非ゼロ巻数規則に従って定義され、前記入力パスは１組の輪郭を含み、各輪郭は一連のセグメントを含み、該方法は、
前記入力パスの縮退セグメントを除去するステップと、
前記入力パスの縮退輪郭を除去するステップと、
前記入力パスの交差を求めるステップと、
前記交差を含む入力パスの前記輪郭をマーク付けするステップと、
マーク付けされていない内部輪郭を除去するステップと、
前記交差をリンク付けするステップと、
前記マーク付けされた輪郭をウォーキングすることにより新たな輪郭を形成する、ステップと、
前記マーク付けされた輪郭を除去するステップと、
縮退輪郭を除去するステップと、
前記新たな輪郭及びマーク付けされていない輪郭を収集することにより、前記入力パスに等価な出力パスを得るステップと、
前記非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれか一方によって前記出力パスの前記輪郭を塗りつぶすステップと、
前記出力パスの前記セグメントをアンチエイリアシングすることにより、前記入力パスをレンダリングするステップと
を含み、各前記ステップはプロセッサが実行する、入力パスをレンダリングする方法。
【請求項２８】
入力パスの外形を描く方法であって、該入力パスは２次元（２Ｄ）座標系における非ゼロ巻数規則に従って定義され、前記入力パスは１組の輪郭を含み、各輪郭は一連のセグメントを含み、該方法は、
前記入力パスの縮退セグメントを除去するステップと、
前記入力パスの縮退輪郭を除去するステップと、
前記入力パスの交差を求めるステップと、
前記交差を含む入力パスの前記輪郭をマーク付けするステップと、
マーク付けされていない内部輪郭を除去するステップと、
前記交差をリンク付けするステップと、
前記マーク付けされた輪郭をウォーキングすることにより新たな輪郭を形成するステップと、
前記マーク付けされた輪郭を除去するステップと、
縮退輪郭を除去するステップと、
前記新たな輪郭及びマーク付けされていない輪郭を収集して、前記入力パスに等価な出力パスを得るステップと、
前記出力パスの前記セグメントの外形を描くことにより前記入力パスの外形を描くステップと
を含み、前記ステップはプロセッサが実行する、入力パスの外形を描く方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、包括的にはコンピューターグラフィックスに関し、より詳細には、非ゼロ巻数規則によって定義されたパスを、非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれによってもレンダリングすることができる等価なパスに変換することに関する。
【０００２】
本発明は、包括的にはコンピューターグラフィックスに関し、より詳細には、パスのセグメントを内部又は外部としてラベル付けすることに関する。
【背景技術】
【０００３】
パス、輪郭及びグリフ
コンピューターグラフィックスの分野において、物理デバイスにレンダリングする必要があるグラフィックオブジェクトの形状を表すのに、多くの場合に２次元パスが用いられる。そのようなオブジェクトの例には、グリフ、構造化ベクトルグラフィックス、イラスト、企業のロゴ、マップ等が含まれる。ここではデジタルタイプ、場合によっては最も一般的で重要な２次元オブジェクトに焦点を当てるが、以下の説明は全てのタイプの２次元オブジェクトに当てはまる。一貫した設計を有するグリフの集合体はフォントと呼ばれる。フォントは、コンピューターアプリケーションにおいて遍在している。フォントは、コンピューターモニター、電話、プリンター、カメラ、携帯情報端末（ＰＤＡ）、全地球測位デバイス、テレビ等の多くのタイプの物理デバイス上にレンダリングすることができる。
【０００４】
グリフはパスによって示される。形式上、パスは１組の輪郭及び塗りつぶし規則を含む。輪郭は、一連の区分的に連続した有向セグメントとして表される有界の閉領域である。セグメントは線形又は曲線形とすることができる。塗りつぶし規則は非ゼロ巻数規則（nonzero winding rule）及び奇数−偶数パリティ規則（even-odd parity rule）を含む。
【０００５】
奇数−偶数パリティ規則は、パスによって画定される形状に対する点の「内側性（insideness）」を判断し、当該判断は、任意の方向においてその点から無限遠への光線を描画し、この光線が交差する形状からのパスセグメントの数をカウントすることによって行われる。この数が奇数である場合は、その点は内側にあり、偶数である場合は、その点は外側にある。
【０００６】
非ゼロ巻数規則はより複雑である。所与のパスＣ及び所与の点Ｐについて、任意の方向においてＰから無限遠に向かう光線、すなわち直線を構築する。Ｃとこの光線との全ての交差を見つける。以下のように巻数のスコアを計上する。全ての時計回りの交差について、すなわちＰから見たときに左から右へ光線を通過するパスについて、１を減算し、全ての反時計回りの交差について、すなわち、Ｐから見たときに右から左へ通過するパスについて、１を加算する。総巻数がゼロである場合、ＰはＣの外側にあり、そうでない場合、ＰはＣの内側にある。
【０００７】
コンピューターアプリケーションのグリフは、非ゼロ巻数規則に従って設計されることが最も多い。グリフは、様々な視覚効果を達成するように、例えば無地一色で塗りつぶすことができる、あるいは、内部部分を塗りつぶすことなくそれらのパスの外形を描くことができる。
【０００８】
非ゼロ巻数規則
非ゼロ巻数規則に従って塗りつぶされるか又は外形を描かれることになるパスをレンダリングするとき、いくつかの問題が存在する。第１に、ほとんど全てのレンダリングシステムが奇数−偶数パリティ規則をサポートしているのに対し、多くのレンダリングシステムは、非ゼロ巻線規則が複雑であることに起因して非ゼロ巻線規則をサポートしていない。第２に、非ゼロ巻数規則は奇数−偶数パリティ規則よりも実行が低速である。これは、リソースが制限されたデバイスにおけるレンダリング時に問題となり得る。
【０００９】
第３に、部分グリフについて図６（ａ）、図６（ｂ）及び図６（ｃ）に示すように、非ゼロ巻数規則は、或る特定の方法で動作するレンダリングシステムの「内部エッジハロー（interior edge haloes）」６０１〜６０３を生成する可能性がある。このハローアーティファクトは、レンダリングが最初に形状を塗りつぶし、次に無条件に全てのエッジをアンチエイリアシングし、これによって塗りつぶしが損なわれることに起因して生じる。
【００１０】
他の内部アーティファクトが図６（ｄ）及び図６（ｅ）に示されている。図６（ｄ）は、従来技術において文字Ｑ６１２として正しく外形を描かれる２つの（有向）輪郭を有するパス６１１を示している。しかしながら、パス６２１が、図６（ｅ）に示すように３つの輪郭又は自然な「ストローク」によって画定される場合、内部（非境界）エッジはレンダリング中に除去されず、外形６２２は不正確である。
【００１１】
非ゼロ巻数規則を用いるとき、この規則をサポートするレンダリングシステムであっても、他の問題が存在する。パスは多くの場合に自己交差、一致セグメント、及びレンダリングシステムがパスを不正確に塗りつぶすか又はパスの外形を不正確に描くことに起因して不適切に処理する他の縮退事例を含む。
【００１２】
したがって、非ゼロ巻数規則によって定義されるパスを、奇数−偶数パリティ規則又は非ゼロ巻数規則のいずれを用いてもレンダリングすることができる等価なパスに変換することが望ましい。等価なパスがより単純であり、より小さく、レンダリングをより高速に行い、上記したような縮退事例に起因する不正確な領域又は厄介なレンダリングアーティファクトを一切示さないことが理想である。
【００１３】
さらに、パスが自己交差、一致セグメント、及び他の縮退事例を含む場合であっても、パスのセグメントを内部又は外部として正しく正確に判断可能とすることが望ましい。セグメントを正しく正確に判断することによって、パスが縮退事例を含むときに、パスレンダリングシステム、パス圧縮システム、パス単純化システム等が正しく機能することが可能になる。
【００１４】
特許文献１は、非ゼロ巻数規則によって画定される多角形を奇数−偶数パリティ規則によって画定される多角形に変換する方法を記載している。その方法は、線形のエッジを有する閉じた多角形に対し動作し、各多角形は１組のラベル付けされた輪郭を含む。その方法は、一致セグメント、一致点、自己交差等の縮退事例を、それらの全ての変形において正しく処理するわけではない。その方法は、非ゼロ巻数規則によって画定される単純化された多角形を出力としてレンダリングすることができない。
【００１５】
特許文献２は、２つ以上の任意のパスに対して集合演算を行い、単純な外形パスを生成する方法を記載している。特許文献１のように、その方法は全ての縮退事例を正しく処理するわけではない。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】米国特許第６，１１１，５８７号
【特許文献２】米国特許第７，３２１，３７３号
【発明の概要】
【００１７】
方法は、非ゼロ巻数規則に従って定義された２次元入力パスを等価な出力パスに変換する。入力パスの縮退セグメント及び縮退輪郭が除去される。入力パスの交差が求められる。交差を含む入力パスの輪郭がマーク付けされる。マーク付けされていない内部輪郭が除去される。交差がリンク付けされる。マーク付けされた輪郭がウォーキングされ、新たな輪郭が形成される。マーク付けされた輪郭及び縮退輪郭が除去される。新たな輪郭及びマーク付けされていない輪郭が収集され、等価な出力パスが形成される。等価な出力パスは、非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれを用いてもレンダリングすることができる。
【００１８】
非ゼロ巻数規則に従って定義された２次元入力パスのセグメントを内部又は外部としてラベル付けする方法が説明される。巻数が初期化される。セグメントに交差する走査線が特定される。入力パスの輪郭ごとに、巻値が、特定された走査線に交わる輪郭の任意のセグメントの巻数に累積される。ここで、セグメントと同じロケーションにおいて特定された走査線に交わる一致セグメントの累積は延期される。これらの一致セグメントはマーク付けされ、リスト内に保存される。内部又は外部としてのセグメントのラベル付けは、リスト及び巻数から判断される。
【００１９】
非ゼロ巻数規則に従って定義された２次元入力パスをレンダリングする方法が説明される。入力パスの縮退セグメント及び縮退輪郭が除去される。入力パスの交差が求められる。交差を含む入力パスの輪郭がマーク付けされる。マーク付けされていない内部輪郭が除去される。交差がリンク付けされる。マーク付けされた輪郭がウォーキングされ、新たな輪郭が形成される。マーク付けされた輪郭及び縮退輪郭が除去される。新たな輪郭及びマーク付けされていない輪郭が収集され、等価な出力パスが形成される。等価な出力パスの輪郭は、非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれかによって塗りつぶされる。等価な出力パスのセグメントはアンチエイリアシングされる。
【００２０】
非ゼロ巻数規則に従って定義された２次元入力パスの外形を描く方法が説明される。入力パスの縮退セグメント及び縮退輪郭が除去される。入力パスの交差が求められる。交差を含む入力パスの輪郭がマーク付けされる。マーク付けされていない内部輪郭が除去される。交差がリンク付けされる。マーク付けされた輪郭がウォーキングされ、新たな輪郭が形成される。マーク付けされた輪郭及び縮退輪郭が除去される。新たな輪郭及びマーク付けされていない輪郭が収集され、等価な出力パスが形成される。等価な出力パスのセグメントが外形を描かれる。
【００２１】
従来技術との違い
概して、従来技術による方法は、線形エッジを有する閉じた多角形に対し動作し、各多角形は１組の既知のラベル付けされた輪郭を含む。本発明による実施形態は、形状のより一般的な表現、すなわち、非線形エッジを有し、いずれの輪郭がいずれの形状に属するかの所定のラベル付けのない開いたパス及び閉じたパスに対し動作する。
【００２２】
従来技術による方法は、非ゼロ巻数規則によって塗りつぶされたパスを、奇数−偶数パリティ規則によって塗りつぶされたパスに変換する。本発明による実施形態は、奇数−偶数パリティ規則又は非ゼロ巻数規則のいずれによっても塗りつぶされることができるパスに変換する。本発明による実施形態における出力パスは、多くの場合に入力パスよりも必要とする形状が少なく、したがってレンダリング及び保存がより効果的である。
【００２３】
従来技術による方法は、全ての事例における一致エッジ及び一致点を正しく処理することができるわけではない。例えば、これらの方法は様々なステップを用いて「外側エッジ」を求めるが、全ての事例において「外側エッジ」を適切に求めるわけではない。この方法では、「外側エッジ」がどのように求められるかに起因して輪郭が様々な形で「切り替わる」。また、従来技術による方法は、必ずしも縮退セグメントを正しく処理せず、また、本発明による実施形態において説明されるような方式で輪郭に対する反復的交差テストを収束するまで実行せず、基礎をなす整数グリッド座標における算術丸め誤差に適切に対処しない。
【００２４】
従来技術による方法は、全ての縮退事例を正しく処理することができるわけではなく、本発明によって用いられるパスのように、非ゼロ巻数規則による入力パスを、より少ない形状を有するより単純な等価な出力パスに変換しない。この単純化を容易にするために、本発明による実施形態は様々なステップを実行して、マーク付けされていない内部輪郭、縮退セグメント、及び縮退輪郭を除去する。
【図面の簡単な説明】
【００２５】
【図１】本発明の実施形態によって用いられる、入力パス及び出力パスを含む例示的な輪郭及びパスの概略図である。
【図２】非ゼロ巻数規則によって定義される２次元入力パスを等価な２Ｄ出力パスに変換する方法の流れ図である。
【図３】本発明の実施形態によるセグメントをラベル付けする手順の流れ図である。
【図４】図２の方法の概略図である。
【図５】本発明の実施形態による入力パス及び出力パスの対の概略図である。
【図６Ａ】図６（ａ）〜（ｃ）は従来技術によるグリフのレンダリングの概略図である。
【図６Ｂ】図６（ｄ）〜（ｅ）は従来技術によるグリフのレンダリングの概略図である。
【図７】本発明の実施形態によるウォーキング手順の流れ図である。
【図８】本発明の実施形態による、一致エッジをラベル付けする手順の概略図である。
【発明を実施するための形態】
【００２６】
本発明のいくつかの実施形態は、非ゼロ巻数規則に従って定義された２次元入力パスを、非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれによってもレンダリングすることができる等価な２Ｄ出力パスに変換する方法を提供する。本発明による実施形態は、パスのセグメントを内部又は外部として正しくラベル付けする。本発明による実施形態は、エイリアシングも外形描画アーティファクトも伴わずにレンダリングを生成することができる。本発明による実施形態は以下の定義を用いて説明される。
【００２７】
定義
図１に示すように、入力パス２０１は１組の輪郭１０１及び１０２を含む。輪郭は一連の区分的に連続した有向セグメントとして表される。縮退輪郭は、非有界領域又は開領域１０４、又はゼロエリアを有する領域、又は単一点１０３によって定義される輪郭である。
【００２８】
整数グリッド上に定義される（ｘ，ｙ）座標を有する２つ以上の点を用いてセグメントが定義される。点は、始点１０４及び終点１０５を含む。オプションで、１つ又は複数の制御点１０６が存在することもできる。単純にするために、この説明は、２つ又は３つの点によって定義される線形セグメント及びベジェセグメントに限定されるが、任意の数の点及びＢスプライン等の他の曲線セグメントへの拡張は当業者に明らかであろう。セグメントは始点から発し、終点で終了する。二次ベジェセグメントは、オフセグメント制御点も含む。セグメントは、非ゼロ巻数規則に従って塗りつぶされた領域を画定する輪郭の一部であるとき、外部である。そうでない場合、セグメントは内部である。
【００２９】
処理中に縮退セグメントが変換され、非縮退セグメントが生成される。以下にいくつかの例を挙げる。セグメント始点はセグメント終点と一致してはならない。そのようなセグメントは破棄される。二次ベジェ曲線セグメントＢ（ｔ）（ただし、ｔは０〜１（０及び１を含む）の範囲をとる）の始点及び終点は、曲線セグメントの「内部」部分、すなわち０＜ｔ＜１であるような時間パラメーターｔを有する曲線セグメント部分に位置することができない。そのようなセグメントは、直線セグメントと置き換えられる。二次ベジェ曲線セグメントのオフカーブ制御点はその二次ベジェ曲線セグメントの始点とも終点とも一致してはならない。そのようなセグメントは直線セグメントと置き換えられる。
【００３０】
パスの各輪郭のセグメントを複数のセグメントに分割し、全てのセグメントがｘ方向及びｙ方向の双方において単調であることを強制する。セグメント内部において制御点を挿入することによってセグメントを２つのセグメントに分割することができる。例えばド・カステリョアルゴリズム（De Casteljau algorithm）に従って制御点を挿入することによって二次ベジェセグメントが分割される。これによって、自己交差輪郭を求めるときの性能が大幅に改善する。また、これによって、セグメントを内部又は外部としてラベル付けすることも単純かつ正確になる。
【００３１】
線形区画を用いてセグメントが近似される。１つの直線セグメントは単一の線形区画を用いて自明に近似される。１つの二次ベジェセグメントは１つ又は複数の線形区画を用いて近似される。二次ベジェセグメントを表すのに用いられる線形区画の制御点は、グリッド上の整数ロケーションに丸められる。目標レンダリングサイズを用いて、二次ベジェセグメントを表すのに必要な線形区画の数を制限し、それによって交差を計算する性能を改善する。線形区画は必要に応じて求められ、次に未来の処理のために保存される。線形区画の始点及び終点は一致してはならない。そのような区画は除去される。
【００３２】
接続点は特定の交差と関連付けられたデータを含む。接続点は、交差のデカルトロケーション（Cartesian location）を特定し、その交差から発する外部セグメントのリスト、すなわちアウトバウンド外部セグメントのリストを保持する。
【００３３】
非ゼロ巻数規則によって定義されるパスの変換
図２に示されるように、本発明のいくつかの実施形態は、非ゼロ巻数規則によって定義される入力パス２０１を、非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれによってもレンダリングすることができる等価な出力パス２０２に変換する方法を提供する。パスは２次元（２Ｄ）座標系において定義される。ステップは図４において概略的に示される。
【００３４】
量子化及び変形
第１に、本方法は必要な場合、オプションで入力パスの非整数制御点を整数に変換する、すなわち量子化及び変形する（２０５）。例えば、ＴｒｕｅＴｙｐｅ（登録商標）フォントは、ＥＭスクエアと呼ばれる十分な精度の整数座標系において定義され、したがって量子化も変形も必要としない。変換が必要なとき、浮動小数点又は固定小数点において指定される入力パスの制御点が変形され、例えば２５６を乗算され、次に丸められ、十分な精度の整数が求められる。
【００３５】
このステップをスキップすると、入力パスの制御点はそれらの元の座標系にとどまる。元の座標系は、いくつか例を挙げると、浮動小数点又は固定小数点グリッドにおいて定義することができる。量子化及び変形をスキップすることによって、より高い精度で算術演算を行うことができるが、これによって処理時間が増大し、出力パス２０２において欠陥が生じる場合がある。
【００３６】
縮退セグメントを置き換え又は除去し、オプションで単調性を強制
次に、整数変換後、縮退セグメントが除去される（２１０）。以下に縮退セグメントのいくつかの例を挙げる。セグメント始点はセグメント終点と一致してはならない。そのようなセグメントは破棄される。二次ベジェ曲線セグメントＢ（ｔ）（ただし、ｔは０〜１（０及び１を含む）の範囲をとる）の始点及び終点は、曲線セグメントの「内部」部分、すなわち０＜ｔ＜１であるような時間パラメーターｔを有する曲線セグメント部分に位置することができない。そのようなセグメントは、直線セグメントと置き換えられる。二次ベジェ曲線セグメントのオフカーブ制御点はその二次ベジェ曲線セグメントの始点とも終点とも一致してはならない。そのようなセグメントは直線セグメントと置き換えられる。
【００３７】
オプションで、ｘ方向及びｙ方向の双方におけるセグメントの単調性が強制される（２１５）。
【００３８】
縮退輪郭の除去
縮退輪郭が除去される（２２０）。縮退輪郭のいくつかの例は、単一の点、開輪郭、すなわち「水密（watertight）」でない輪郭、及び内部エリアを有しない輪郭で構成される輪郭を含む。
【００３９】
性能を加速するデータ構造の構築
方法の実行性能を改善するデータ構造がオプションで構築される（２２５）。データ構造はステップ２３０及び２４０中にオンデマンドで及び必要なときにのみ構築することもできる。例示的なデータ構造は、境界ボックスと、近接性クラスターツリーと、セグメント及び輪郭のグリッドとを含む。
【００４０】
交差を求める
自己交差輪郭が求められる（２３０）。自己交差輪郭は、Ｐにおいて、Ｐの前後の一連の連続セグメントに新たな制御点を挿入することによって、自己交差の各点Ｐにおいて分割され、分けられる。オプションの量子化及び変形ステップが実行された場合、グリッドの整数座標において交差が求められる。セグメントが交差に寄与し得ることが可能であるとき、ベジェセグメントが必要に応じて線形区画に分割される。線形区画に対し交差試験が行われ、性能及び正確性が改善される。セグメントの単調性及びデータ構造の加速を用いてセグメント間交差テストを最小限にする。自己交差を含む入力パスの各輪郭をマーク付けする（２３５）。これに続いて、輪郭間交差が求められ（２４０）、これらもマーク付される（２４５）。この説明の目的で、何らかの方法で明示的にマーク付けされていない輪郭が「未マーク」とみなされる。
【００４１】
以下は、交差を求めるときの追加の規則及び慣例である。冗長な交差を回避するために、ｔ＝０において生じる交差はカウントされないが、ｔ＝１において生じる交差はカウントされる。２つの一致する直線セグメントは最大で２つの交差を有する。共通の終点において輪郭内で連結されている一連の直線セグメントは、その共通の終点において交差しない。交差輪郭が処理された後、生成されたいずれの線形区画ももはや用いられない。交差は輪郭に挿入され、例えばベジェセグメントがそれらの交差において分割され、分けられ、以下で説明するようにパスの輪郭がウォーキングされる。
【００４２】
輪郭交差ステップは、更なる交差が生じなくなるまで繰り返される。この繰り返しは、前回求められた交差の結果として新たな交差が生じ得ることに起因して行われる。このステップは、出力パス２０２が正しく、後続のレンダリング及び処理にアーティファクトが一切ないことを確実にする。ほとんどの入力パスが単一の反復しか必要としないことに留意されたい。
【００４３】
マーク付けされていない内部輪郭の除去
入力パス２０１のマーク付けされていない内部輪郭が除去される（２５０）。任意のセグメントの巻数を求め、例えば通常、入力パス２０１の各マーク付けされていない輪郭の第１のセグメントを用いて、セグメントが内部輪郭であり、ウォーキングステップの前に除去される必要があるか否かを判断する。最初に隠されている入力パス２０１の輪郭は、ウォーキングステップの後に明らかにすることができ、したがってここで除去される。
【００４４】
接続点の連結及び生成
次に、各交差のデカルトロケーションと関連付けられた接続点を生成することによって交差がリンク付けされる（２５５）。接続点は特定の交差に関するデータを含み、交差のデカルトロケーションを指定し、そのロケーションにおいて開始するセグメントのリストを保持する。一意の交差ごとに、すなわち一意の（ｘ，ｙ）座標を有する交差ごとに、外部アウトバウンドセグメントのリストＬが求められる。交差へのインバウンドセグメントごとに、Ｌへのポインターが保持される。外部アウトバウンドセグメントは、交差において開始するセグメントであり、交差から外向きに発し、そのセグメントの巻数は、そのセグメントが入力パス２０１の外部エッジであることを示す。アウトバウンドセグメントを外部として適切にラベル付けすることは重要なステップである。リンク付け２５５の後、Ｌのセグメントは適切にラベル付けされる。
【００４５】
ウォーキング
交差がリンク付けされた（２５５）後、パスの各マーク付けされた輪郭をウォーキング（２６０）して、マージによって新たな輪郭を生成することができる。ウォーキングはマーク付けされた輪郭上の任意の接続点において開始することができる。マーク付けされた輪郭のセグメントは、新たな輪郭にコピーされるか、又はセグメントが内部であるときに除去される。図７に示すように、ウォーキングプロセスの詳細なステップは以下の通りである。
１．マーク付けされた輪郭の交点ＩＰごとに、すなわち接続点ごとに、以下のステップを実行する：
２．ＬをＩＰの外部アウトバウンドセグメントのリストに設定する（７１０）。
３．Ｌが空の場合、ステップ１に進み、次の交点に移る（７１５）。
４．Ｌが空でない場合、Ｌの開始セグメントを取得し、除去する。このセグメントにＳを設定する（７２０）。
５．新たな輪郭Ｃを生成する（７３０）。
６．Ｃの最後にセグメントＳを付加する（７４０）。
７．Ｓの終点がＩＰの場合、トラバースしてＩＰまで戻ったことになる。ステップ３に進む（７５０）。
８．Ｓの終点が別の交点でない場合、次のセグメントを取得し、このセグメントをＳに設定し、ステップ６に移る（７５０）。
９．Ｓの終点がＩＰ以外の別の交点Ｑである場合、輪郭を以下のように切り替える：Ｑの接続点Ｊを取得し、Ｊの外部アウトバウンドセグメントを取得及び除去し、この外部アウトバウンドセグメントをＳに設定し、ステップ６に移る（７５０）。
【００４６】
マーク付けされた輪郭の除去
次に、入力パス２０１のマーク付けされた輪郭が除去される（２６５）。出力パス２０２に寄与するマーク付けされた輪郭のセグメントは前のウォーキングステップにおいて新たな輪郭にコピーされている。
【００４７】
縮退輪郭の除去
次に、残りの輪郭の縮退輪郭が除去される（２６８）。縮退輪郭の例には、単一点を有する輪郭、開輪郭、及び内部エリアを有しない輪郭が含まれる。
【００４８】
出力パスの形成
最後に、新たな輪郭及びマーク付けされていない輪郭が出力パス２０２として収集される（２７０）。単純化された出力パスは、非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれによってもレンダリングすることができる。
【００４９】
量子化及び変形の反転
ステップ２０５において、入力パス２０１がオプションで量子化及び変形された場合、そのプロセスは出力パス２０２において反転され（２７５）、座標が元の座標系に復元される。
【００５０】
変換の効果
図５は、入力パス２０１を左に、出力パス２０２を右に、パス５０１〜５０６の例示的な対を示している。例は、出力パス２０２が非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれを用いても正しくレンダリングされることを示している。入力パス２０１における一致セグメント等の縮退事例の存在、及びそれらを適切に処理して正しい出力パス２０２が生成されることに留意されたい。
【００５１】
マージ輪郭手順はオブジェクトベースである。この手順は、更なる処理のための２Ｄ出力パス２０２を明示的に求める。従来技術による画像ベースの手法は、この動作をラスター化中に行うので、ピクセルのみが結果を示し、本明細書において説明されるような明示的な２Ｄ出力次元パスは形成されない。
【００５２】
マージ輪郭手順への入力は、グリフを表すパス等の単一の有向２Ｄパスである。パスの内部は非ゼロ巻数規則によって画定される。出力は、非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれによってもレンダリングすることができる等価で単純化された２Ｄパスである。単純化は、重複する輪郭、自己交差輪郭、縮退輪郭及び不要な輪郭の除去を含むことができる。
【００５３】
パス変換：例
図４は、入力パス２０１を変換する方法の動作を概略的に示している。入力パス２０１は、外部輪郭４０１と、内部輪郭４０２と、２つの交差する輪郭４０３及び４０４とを含む。輪郭４０３は自己交差もしている（４１１）。輪郭４０３及び４０４は２つの輪郭間交差４１２を有する。交差を有する輪郭４０３及び４０４がマーク付けされる（Ｍ）。マーク付けされていない内部輪郭４０２は除去される。次に、接続点が交差と関連付けられる。各接続点におけるアウトバウンドセグメント４２０は内部又は外部である。各接続点における外部アウトバウンドセグメントはラベル付けされて、「｜｜」によって示される。
【００５４】
ウォーキング中、輪郭をマージすることによって新たな輪郭４３０が生成される一方、マーク付けされた輪郭及び縮退輪郭が除去される。
【００５５】
上記の方法及び本明細書において説明する任意の他の手順又は方法のステップは、当該技術分野において既知のメモリ及び入出力インターフェース並びにデバイスに接続されたプロセッサにおいて実行することができる。
【００５６】
レンダリング：アーティファクトのないパスの塗りつぶし又は外形描画
上記で生成されるような出力パス２０２は、非ゼロ巻数規則又は奇数−偶数パリティ規則のいずれかによって塗りつぶすか又は外形を描くことによってレンダリングすることができる（２８０）。アンチエイリアシング２８５も適用することができる。従来技術と対照的に、塗りつぶされたパスは内部エイリアシングアーティファクトを一切含まない。同様に、外形を描かれたパスは内部エッジアーティファクトを一切含まない。
【００５７】
内部及び外部セグメントのラベル付け
図３は、セグメントＳが内部にあるか又は外部にあるかを判断する手順を示している。第１に、巻数Ｗがゼロに初期化される（３０５）。次に、セグメントに交差することが保証される走査線が特定される（３１０）。ｘ方向及びｙ方向の双方においてセグメントの単調性が強制される場合、走査線は、セグメントの中点を通過する水平走査線又は垂直走査線のいずれかであると迅速かつ正確に特定することができる。
【００５８】
輪郭Ｃごとに、セグメントＳに交わる前に特定された走査線に交わる輪郭Ｃの任意のセグメントについて巻値がＷに累積される（３１５）。セグメントＳと同じロケーションにおいて走査線に交わる輪郭Ｃの一致セグメントについて巻値をＷに累積することは、全ての輪郭が処理された後まで延期される。一致セグメントは、巻数に関する限りグループとして扱われなくてはならない。なぜならそれらは重複し、互いを相殺するためである。一致セグメントはマーク付けされ、リストＬ内に保存される（３２０）。一致セグメントについては図８も参照されたい。
【００５９】
一致セグメントが存在しない場合、以下のように進行する。Ｗが非ゼロであり、かつＷがＳを計上するように更新されたときに非ゼロである場合（３４５）、セグメントＳは内部であるとマーク付けされ、そうでない場合、セグメントＳは外部であるとマーク付けされる（３５０）。
【００６０】
一致セグメントが存在するとき、以下のように進行する。保存された一致セグメントのリストＬにセグメントＳを加える（３３５）。リストＬ内の互いに反対方向を有する一致セグメントの対は相殺し合い、それらの巻数の累積はゼロでありＷが変化しない。巻値はセグメントＳを除くリストＬ内の残りの相殺されていないセグメントについてＷに累積される（３４０）。Ｗが非ゼロであり、かつ、Ｓを計上するように更新されたときにＷが非ゼロである場合（３４５）、セグメントＳは内部であるとマーク付けされ、そうでない場合、セグメントＳは外部であるとマーク付けされる（３５０）。
【００６１】
従来技術による方法は上記で説明したような一致セグメントを処理せず、したがって内部アーティファクトを有する不正確な出力パスを生成する可能性があることに留意されたい。
【００６２】
図８は、出力パス２０２が正しくなるような入力パス２０１の輪郭８０１及び８０２のアウトバウンドセグメントのラベル付けを概略的に示している。輪郭は一致セグメント８０３を有する。外部アウトバウンドセグメントは「｜｜」によって示される。上記で概説したステップの特性に起因して、セグメント８０３は内部として正しく識別され、このためこれらのセグメントはウォーキング中に除去される。本発明者らの知る限り、従来技術によるパスレンダリングはいずれも、この事例にその全ての変形において正しく対処するわけではない。この事例では、一致セグメントは巻数が求められるときにグループとして扱われる必要がある。
【００６３】
応用形態及び顕著な特徴
奇数−偶数パリティ規則に従ってパスを塗りつぶすレンダリング方法は、図２において概説したような輪郭マージ手順を前処理ステップとして用いて、非ゼロ巻数規則に従って塗りつぶされるように設計されたパス、例えばＴｒｕｅＴｙｐｅ（登録商標）フォントにおけるグリフを正しくレンダリングすることができる。
【００６４】
輪郭マージ手順を用いて、様々なフォントレンダリングシステム内に存在する内部エッジハロー及び外形描画アーティファクトを取り除くこともできる。奇数−偶数パリティ規則は非ゼロ巻数規則よりも複雑でなく、実行が高速である。したがって、輪郭マージ手順を用いて入力パスを等価な出力パスに変換し、次に奇数−偶数パリティ規則を用いてレンダリングすることができる。
【００６５】
輪郭マージ手順は、２次元パスにおける、論理和、論理積、論理差等の２次元空間領域構成法（ＣＳＧ：constructive solid geometry）演算を行うのに用いることもできる。
【００６６】
輪郭マージ手順は、リアルタイムで非常に困難な計算幾何学問題を解き、従来技術と比較すると幾つかの顕著な特徴を有する。輪郭マージ手順は、困難なグレージング条件及び特異性、例えば一致点及び一致セグメントを処理することができる。手順は、非線形曲線エッジ及び有向エッジをサポートする。ほとんどの従来技術による手順は、線形エッジを有する多角形に対してのみ機能する。輪郭マージ手順は、整数計算を用いて整数グリッドに対して演算を行うことができる。これは従来技術による同等の手順よりも１桁〜２桁高速である。
【００６７】
輪郭マージ手順は、グレージング条件、セグメント及び輪郭の縮退前処理及び後処理、並びに交差を求めるための曲線セグメントのオンデマンドテッセレーションを適切に処理するように、一致エッジの同時分類も提供する。曲線セグメントのテッセレーションは目標レンダリングサイズに基づくことができ、したがって所与の目標の性能を最適化することができる。より良好な性能及び正確性のためにセグメントの単調性を強制することができる。マージ中、全ての制御点を整数座標系上に表し、正確性及び性能を改善することができる。輪郭セグメントが交差において分割され、分けられると、手順は収束するまで反復交差テストを用いてロバスト性を確保することができる。
【００６８】
セグメントを内部又は外部として正しくラベル付けすることによって、パスが縮退事例を含むときに、パスレンダリングシステム、パス圧縮システム、パス単純化システム等が正しく機能することが可能になる。
【図１】
2015022760.tif 000003
【図２】
2015022760.tif 000004
【図３】
2015022760.tif 000005
【図４】
2015022760.tif 000006
【図５】
2015022760.tif 000007
【図６Ａ】
2015022760.tif 000008
【図６Ｂ】
2015022760.tif 000009
【図７】
2015022760.tif 000010
【図８】
2015022760.tif 000011
【外国語明細書】
2015022760.tif 000012
2015022760.tif 000013
2015022760.tif 000014
2015022760.tif 000015
2015022760.tif 000016
2015022760.tif 000017
2015022760.tif 000018
2015022760.tif 000019
2015022760.tif 000020
2015022760.tif 000021
2015022760.tif 000022
2015022760.tif 000023
2015022760.tif 000024
2015022760.tif 000025
2015022760.tif 000026
2015022760.tif 000027
2015022760.tif 000028
2015022760.tif 000029
2015022760.tif 000030
2015022760.tif 000031
2015022760.tif 000032
2015022760.tif 000033
2015022760.tif 000034
2015022760.tif 000035
2015022760.tif 000036
2015022760.tif 000037
2015022760.tif 000038
2015022760.tif 000039
2015022760.tif 000040
2015022760.tif 000041
2015022760.tif 000042
2015022760.tif 000043
2015022760.tif 000044
2015022760.tif 000045
2015022760.tif 000046
2015022760.tif 000047
2015022760.tif 000048