(57)【特許請求の範囲】
【請求項１】
ピクセルサブコンポーネントによって規定されたピクセルを有する表示装置上に、レンダリングすべきテキスト文字を、文字情報に基づいて、ラスタ化する方法であって、
前記テキスト文字に対応する前記文字情報を、水平スケールファクタに基づいて水平方向にスケーリングして、ソースサブピクセルの行を規定するステップと、
前記ソースサブピクセルの前記行を、ビットマップ画像に変換するステップと
を備え、
前記行を変換するステップにおいて、前記表示装置の前記ピクセルサブコンポーネントは、独立した光度要素として扱われるものであり、
前記ソースサブピクセルの前記行を変換するステップは、前記ソースサブピクセルのＮ個のブロックにアクセスするステップを含み、Ｎは１より大きい整数であり、
前記ソースサブピクセルの前記Ｎ個のブロックは、左サイドベアリングの余りの分だけシフトされており、
前記左サイドベアリングの前記余りは、前記左サイドベアリングを前記水平スケールファクタで割った余りに対応することを特徴とする方法。
【請求項２】
前記水平スケールファクタはＮに等しいことを特徴とする請求項１に記載の方法。
【請求項３】
マシンによって実行されるとき、ピクセルサブコンポーネントによって規定されたピクセルを有する表示装置上にレンダリングすべきテキスト文字を、文字情報に基づいてラスタ化する方法を実行する機械実行可能命令を有する機械可読媒体であって、前記方法は、
前記テキスト文字に対応する前記文字情報を、水平スケールファクタに基づいて水平方向にスケーリングして、ソースサブピクセルの行を規定するステップと、
前記ソースサブピクセルの前記行をビットマップ画像に変換するステップと
を備え、
前記行を変換するステップにおいて、前記表示装置の前記ピクセルサブコンポーネントは独立した光度要素として扱われるものであり、
前記ソースサブピクセルの前記行を変換するステップは、前記ソースサブピクセルのＮ個のブロックにアクセスするステップを含み、Ｎは１より大きい整数であり、
前記ソースサブピクセルの前記Ｎ個のブロックは、左サイドベアリングの余りの分だけシフトされており、
前記左サイドベアリングの前記余りは、前記左サイドベアリングを前記水平スケールファクタで割った余りに対応することを特徴とする機械可読媒体。
【請求項４】
ピクセルサブコンポーネントによって規定されたピクセルを有する表示装置上に、レンダリングすべきテキスト文字を、文字情報に基づいて、ラスタ化するための装置であって、
前記テキスト文字に対応する前記文字情報を水平スケールファクタに基づいて水平方向にスケーリングして、ソースサブピクセルの行を規定するためのタイプスケーラと、
前記ソースサブピクセルの前記行をビットマップ画像に変換する手段と
を備え、
前記変換において、前記表示装置の前記ピクセルサブコンポーネントは独立した光度要素として扱われるものであり、
前記変換する手段は、前記ソースサブピクセルのＮ個のブロックにアクセスする手段を含み、Ｎは１より大きい整数であり、
前記ソースサブピクセルの前記Ｎ個のブロックは、左サイドベアリングの余りの分だけシフトされており、
前記左サイドベアリングの前記余りは、前記左サイドベアリングを前記水平スケールファクタで割った余りに対応することを特徴とする装置。
【発明の詳細な説明】
【０００１】
（１．発明の背景）
（１．１  発明の分野）
本発明は、記憶済みのデータブロックへのアクセスを向上させることに関し、より詳細には、オフセット値を含むスケーリングされたサブピクセルデータの記憶済みブロックへのアクセスを向上させることに関する。これらのスケーリングされたサブピクセルデータのブロックは、アクセスを受けた後で後続の処理を施されて、より読みやすいテキストが、液晶表示装置（すなわちＬＣＤ）ビデオモニタなどのフラットパネルビデオモニタ上に作成される。
【０００２】
（１．２  関連技術）
本発明は、ＬＣＤビデオモニタなどのフラットパネルビデオモニタにおいて用いることができる。特に本発明は、より読みやすいテキストをＬＣＤビデオモニタ上に作成するための処理の一部として用いることができる。カラー表示装置は、ほとんどのコンピュータユーザが好む主要な表示装置となっている。通常、モニタ上の色の表示は、光（例えば赤、緑、青の光の組合せ）を発するように表示装置を操作することによって達成され、それにより人間の目が１つまたは複数の色を知覚する。
【０００３】
一般にカラービデオモニタ、具体的にはＬＣＤビデオモニタは当業者に周知であるが、読者の便宜のために以下にこれらを紹介する。以下の１．２．１章で、まず陰極線管（すなわちＣＲＴ）ビデオモニタを紹介する。次いで以下の１．２．２章で、ＬＣＤビデオモニタを紹介する。
【０００４】
１．２．１  ＣＲＴビデオモニタ
陰極線管（ＣＲＴ）表示装置は、連続するドットとしてＣＲＴの画面上に適用される蛍光コーティングを含む。通常、異なる蛍光コーティングが異なる色、例えば赤、緑、青などの生成に関連する。したがって、一連の蛍光ドットの繰返しがビデオモニタの画面上に規定される。蛍光ドットは、電子のビームによって励起されたとき、それに関連する色、例えば赤、緑、青などを生成することになる。
【０００５】
例えば何千ものスポット（ｓｐｏｔ）の矩形グリッドのようなスポットのグループ中の、あるスポットを指すのに、一般に用語「ピクセル」が使用される。スポットが選択的にアクティブにされて、表示装置上に画像が形成される。ほとんどのカラーＣＲＴでは、赤、緑、青の蛍光ドットの単一なトライアッド（ｔｒｉａｄ；三つ組）を一意に選択することができない。したがって、可能な最小ピクセルサイズは、蛍光ドットを励起させるのに使用する電子銃の焦点、照準、および帯域幅によって決まることになる。ＣＲＴ表示装置で周知の様々な構成において、赤、緑、青の蛍光ドットの１つまたは複数のトライアッドから発する光は、混合して、遠くからは単色の光源に見える傾向がある。
【０００６】
カラー表示装置では、加法三原色（赤、緑、青など）から発する光の強度を変えて、所望のほぼどんなカラーピクセルの見た目も達成することができる。色が加えられない場合、すなわち光が発せられない場合は、黒いピクセルが作成される。３色すべてを１００パーセント加えると、白いピクセルが作成される。
【０００７】
カラーＣＲＴビデオモニタを紹介したが、次に以下の１．２．２章でカラーＬＣＤビデオモニタを紹介する。
【０００８】
１．２．２  ＬＣＤビデオモニタ
ポータブルコンピューティングデバイス（一般にコンピューティングアプライアンスまたは無ケーブル式コンピューティングアプライアンスとも呼ばれる）は、しばしば液晶表示装置（ＬＣＤ）またはその他のフラットパネル表示装置をＣＲＴの代わりに使用する。これは、フラットパネル表示装置がＣＲＴ表示装置よりも小さくて軽い傾向があるからである。また、フラットパネル表示装置は同等サイズのＣＲＴ表示装置よりも消費電力が少ないので、電池によって電源を得る適用例に非常に適している。
【０００９】
カラーＬＣＤ表示装置は、要素（本明細書ではピクセルサブコンポーネントまたはピクセルサブエレメントと呼ぶ）をはっきりと指定して、表示する画像の各ピクセルを表す表示装置の一例である。通常、カラーＬＣＤ表示装置の各ピクセル要素は、非正方形の３つの要素を含む。より具体的には、各ピクセル要素は、隣接する赤、緑、青（ＲＧＢ）のピクセルサブコンポーネントを含む。したがって、一組のＲＧＢピクセルサブコンポーネントが共に単一のピクセル要素を規定する。
【００１０】
通常、周知のＬＣＤ表示装置は、一般に表示装置に沿ってストライプを形成するように構成された一連のＲＧＢピクセルサブコンポーネントを含む。ＲＧＢストライプは通常、表示装置の全長を一方向に走る。得られるＲＧＢストライプは、「ＲＧＢストライピング」と呼ばれることもある。高さよりも幅の方が広くなっているコンピュータ用途のための一般的なＬＣＤモニタは、ＲＧＢ垂直ストライプを有する傾向がある。
【００１１】
図１に、複数の行（Ｒ１〜Ｒ１２）と列（Ｃ１〜Ｃ１６）に構成されたピクセルを含む周知のＬＣＤ画面１００を示す。すなわち、行と列の各交点にピクセルが規定される。各ピクセルは、中程度の点描で示す赤のピクセルサブコンポーネントと、濃い点描で示す緑のコンポーネントと、まばらな点描で示す青のコンポーネントを含む。図２に、周知の表示装置１００の左上部分をより詳細に示す。各ピクセル要素、例えば（Ｒ１，Ｃ４）ピクセル要素がどのように別個の３つのサブエレメントまたはサブコンポーネント、すなわち赤のサブコンポーネント２０６、緑のサブコンポーネント２０７、および青のサブコンポーネント２０８を含んでいるかに留意されたい。周知の各ピクセルサブコンポーネント２０６、２０７、２０８は、幅が１ピクセルの１／３または約１／３であり、高さが１ピクセルと同じまたはほぼ同じである。したがって、幅が１／３であり高さが完全にある３つのピクセルサブコンポーネント２０６、２０７、２０８が結合されると、単一のピクセル要素が規定される。
【００１２】
図１に示すように、ＲＧＢピクセルサブコンポーネント２０６、２０７、２０８によるある周知の構成では、垂直なカラーストライプに見えるものが表示装置１００上に形成される。したがって、図１および２に示す周知の方式による１／３幅のカラーサブコンポーネント２０６、２０７、２０８の構成は、「垂直ストライピング」とも呼ばれるものを呈する。
【００１３】
周知のシステムでは、一般にＲＧＢピクセルサブコンポーネントをグループとして使用して、表すべき画像の単一サンプルに対応する単一の色付きピクセルを生成する。より具体的には、周知のシステムでは、あるピクセル要素のすべてのピクセルサブコンポーネントに対する光度値は、表すべき画像の単一サンプルから生成される。例えば図３を参照すると、画像がグリッド３２０によって９個の正方形に分割されている。分割された画像によって画定された、グリッドの各正方形は、単一のピクセル要素によって表されることになる画像領域を表す。図３では、影付きの円を使用して単一の画像サンプルを表しており、この画像サンプルから、それに関連するピクセルの赤、緑、青のピクセルサブコンポーネント３３２、３３３、３３４に関する光度値が生成される。
【００１４】
周知のＬＣＤ表示装置の一般的な構造および動作を紹介したが、以下の１．２．２．１章で、このようなＬＣＤ表示装置上にテキストをレンダリングする技術、ならびにそのような周知の技術において認められる欠点を紹介する。
【００１５】
１．２．２．１  ＬＣＤ表示装置上へのテキストのレンダリング
ＬＣＤ表示装置は、純粋な画像またはビデオの情報の他に、テキスト情報をレンダリングするのにもしばしば使用される。例えば、個人情報マネージャを使用して、コンタクト情報、例えば人の住所、電話番号、ファックス番号、電子メールアドレスなどを無ケーブル式コンピューティングデバイス上にレンダリングすることができる。テキストをレンダリングする際は、文字サイズおよび文字間隔が重要な要素である。
【００１６】
以下の１．２．２．１．１章で、フォントセットを使用したテキスト情報の表現を紹介する。次いで以下の１．２．２．１．２章で、いわゆるピクセル精度を用いたテキスト情報のレンダリングと、その実施において認められる欠点を紹介する。最後に以下の１．２．２．１．３章で、フォーマットを維持する要求について述べる。
【００１７】
１．２．２．１．１  フォントセット
相対的と絶対的の両方における文字間隔は、読み取られるテキスト品質に重大な影響を及ぼす恐れがある。また文字間隔は、テキストファイル、例えばワードプロセッシングファイルなどのフォーマット（またはレイアウト）に影響する恐れもある。
【００１８】
現代の多くのコンピュータシステムは、テキストのレンダリングおよび表示を容易にするフォントアウトライン技術、例えばスケーラブルフォントを使用する。このようなシステムでは、様々なフォントセット、例えば「Ｔｉｍｅｓ  Ｎｅｗ  Ｒｏｍａｎ」、「Ｏｎｙｘ」、「Ｃｏｕｒｉｅｒ  Ｎｅｗ」などを提供することができる。フォントセットは通常、提供されたフォントセットを使用して表示できる各文字ごとに高解像度の輪郭表現、例えば線、点、曲線などを含む。記憶済みの輪郭文字表現は、通常、文字の最大水平境界および最大垂直境界を越えた空間（空白（ｗｈｉｔｅ  ｓｐａｃｅ）とも呼ばれる）を表さない。したがって、文字フォントの記憶済み文字輪郭部分は、しばしばブラックボディ（またはＢＢ；ｂｌａｃｋ  ｂｏｄｙ）と呼ばれる。記憶済みブラックボディ文字輪郭情報に加えて、文字フォントは通常、ブラックボディサイズ、ブラックボディ配置、および全文字幅の情報も含む。ブラックボディサイズ情報は、ブラックボディの垂直境界および水平境界を規定するのに使用される文字枠の寸法で表されることもある。
【００１９】
次に図４を参照しながら、文字を規定するのに用いるいくつかの用語を定義するが、この図には文字ＡおよびＩ４００が示してある。枠４０８は、文字（Ａ）のブラックボディ４０７のサイズを規定する文字枠である。文字（Ａ）に関連することになる空白を含めた文字（Ａ）の幅全体を、アドバンス幅（ＡＷ）の値４０２で示す。アドバンス幅は通常、文字枠４０８の左にある点で始まる。この点４０４は、左サイドベアリングポイント（またはＬＳＢＰ；ｌｅｆｔ  ｓｉｄｅ  ｂｅａｒｉｎｇ  ｐｏｉｎｔ）と呼ばれる。左サイドベアリングポイント４０４は、文字（Ａ）を現在の表示位置に対して相対的に配置するための水平開始点を規定する。文字枠４０８の左端と左サイドベアリングポイント４０４の左端との間の水平距離４１０は、左サイドベアリング（またはＬＳＢ）と呼ばれる。左サイドベアリング４１０は、現在文字（Ａ）の文字枠４０８の左端と先行文字（図示せず）の右サイドベアリングポイントとの間に配置される空白の量を示す。アドバンス幅４０２の端にある、文字枠４０８の右の点４０６は、右サイドベアリングポイント（またはＲＳＢＰ；ｒｉｇｎｔ  ｓｉｄｅ  ｂｅａｒｉｎｇ  ｐｏｉｎｔ）と呼ばれる。右サイドベアリングポイント４０６は、現在文字（Ａ）の端と、次の文字（Ｉ）の左サイドベアリングポイント４０４′が配置されるべき点とを規定する。文字枠４０８の右端と、右サイドベアリングポイント４０６との間の水平距離４１２は、右サイドベアリング（またはＲＳＢ）と呼ばれる。右サイドベアリング４１２は、現在文字（Ａ）の文字枠４０８の右端と、次の文字（Ｉ）の左サイドベアリングポイント４０４′との間に配置される空白の量を示す。
【００２０】
以上に解説したように、スケーラブルフォントファイルは通常、サポートする各文字ごとにブラックボディサイズ、ブラックボディ配置、および全文字幅の情報を含む。ブラックボディサイズ情報は、文字枠４０８の寸法の形で表される水平垂直サイズ情報を含むことができる。ブラックボディ配置情報は、左サイドベアリングの値４１０として表すことができる。全文字幅情報は、アドバンス幅４０２として表すことができる。
【００２１】
１．２．２．１．２  ピクセル精度に対するテキストのレンダリング
ほとんどのコンピュータシステムは、表示されている文字の開始点と終了点（例えば左サイドベアリングポイントと右サイドベアリングポイントをそれぞれ想起されたい）がピクセル境界上に配置されるようにする。さらに、このようなコンピュータシステムは普通、ブラックボディ幅および左サイドベアリングをピクセルサイズの整数倍になるようにするか、整数倍に変換する。周知の実装形態では、これらの制約は、（ｉ）文字の表示に用いられるポイントサイズに応じて、文字フォントに含まれるサイズおよび配置の情報をスケーリングし、（ｉｉ）次いで、サイズおよび配置の値を特定の表示装置で用いられるピクセルサイズの整数倍に丸めることによって課される。ピクセルサイズの単位を最小（または「原子」）距離単位として用いることにより、値の精度が１ピクセルのサイズになるので、いわゆる「ピクセル精度」が生じる。
【００２２】
文字フォントのサイズおよび配置の値をピクセル精度に丸めることにより、変化または誤差が表示画像中に導入される。これらの誤差のサイズはそれぞれ、１／２ピクセルに達する場合がある（１／２ピクセル未満の値は切り捨てられ、１／２ピクセル以上の値は切り上げられると仮定した場合）。したがって、文字のＡＷが丸められる（ことがある）ので、文字の全幅の精度が所望の精度よりも低くなる場合がある。さらに、左サイドベアリングが丸められる（ことがある）ので、文字のブラックボディをその文字に割り振られた総水平空間内に配置することが最適ではない場合もある。ポイントサイズが小さい場合、ピクセル精度を用いて丸めることによって導入される変化は重大になる可能性がある。
【００２３】
１．２．２．１．３  フォーマットの維持
既存の文書中に現れる文字間隔の小さな変化は、フォーマットに影響する可能性がある。このようなフォーマット変化は重大なことがあり、しばしばユーザには予期されない。例えば全文字幅が変化すると、行およびページの切れ目が変化することがあり、それにより、テキストが予期しない形で折り返し、かつ／またはテキストが以前は及んでいなかった複数のページに及ぶことがある。
【００２４】
（２  発明の概要）
本発明は、「ソースサブピクセル」とも呼ばれるオーバーサンプリングされたサブピクセルにアクセスするための方法、装置、およびデータ構造を含み、アクセスすべきソースサブピクセルのブロックは、最終的な文字表示において左サイドベアリングの余りが調整されるようにシフトされる。ソースサブピクセルは、オーバーサンプリングレートに対応するブロック（またはチャンク）で効率的にアクセスされる。
【００２５】
（４  詳細な説明）
本発明は、左サイドベアリングデータを調整しながらサブピクセルデータなどのデータにアクセスするのに用いる新規な方法、装置、およびデータ構造に関する。以下の記述は、当業者が本発明を実現し使用できるようにするために提示し、特定の適用例およびその要件において提供するものである。開示する実施形態に対する様々な修正が当業者には明らかであろうし、以下に述べる一般原理を他の実施形態および実装形態に適用することもできる。したがって本発明は、説明する実施形態に限定するものではない。
【００２６】
本発明の方法、装置、およびデータ構造を、フラットパネル画面上のテキストの読みやすさを向上させるためのシステムにおいて述べる。以下の４．１章で、このシステムの概要、ならびにこのシステムを実施するのに使用できる装置、および本発明の少なくともいくつかの態様を述べる。次いで４．２章で、本発明によって実施できる機能を紹介する。次に４．３章で、本発明を実施するための例示的なプロセス、方法、およびデータ構造を述べる。その後４．４章で、本発明の例示的な実施形態の動作を示す例を述べる。最後に４．５章で、本発明についての結びの見解を提示する。
【００２７】
４．１  例示的な環境
繰り返すが、本発明の方法、装置、およびデータ構造は、フラットパネル画面上のテキストの読みやすさを向上させるためのシステム（単に「テキストエンハンスメント（ｅｎｈａｎｃｅｍｅｎｔ）システム」とも呼ぶ）において述べる。このシステムの概観を以下の４．１．２章で提示する。ただしその前に、本発明の少なくともいくつかの態様ならびにテキストエンハンスメントシステムを実施するのに使用できる例示的な装置について４．１．１章で述べる。
【００２８】
４．１．１  例示的な装置
図５Ａおよび後続の解説では、本発明の少なくともいくつかの態様ならびにテキストエンハンスメントシステムを実装できる、例示的な装置の簡単かつ一般的な記述を提供する。本発明の様々な方法を、パーソナルコンピュータなどのコンピューティングデバイスによって実行されるコンピュータ実行可能命令、例えばプログラムモジュールおよび／またはルーチンにおいて述べる。本発明の他の態様は、物理ハードウェア、例えば表示装置コンポーネントや表示画面などの面から述べる。
【００２９】
当然ながら本発明の方法は、述べる装置以外の装置によって実施することもできる。プログラムモジュールは、タスクを行うか特定の抽象データ型を実装する、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造、例えばルックアップテーブルなどを含むことができる。さらに、本発明の少なくともいくつかの態様は、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースのまたはプログラム可能な家庭用電化製品、ネットワークコンピュータ、ミニコンピュータ、セットトップボックス、メインフレームコンピュータ、自動車や航空や工業などの適用分野で使用される表示装置などを含めた、他の構成でも実施することができることを、当業者なら理解するであろう。本発明の少なくともいくつかの態様は、通信ネットワークを介してリンクされたリモート処理デバイスによってタスクが行われる分散コンピューティング環境で実施することもできる。分散コンピューティング環境では、プログラムモジュールはローカルおよび／またはリモートのメモリ記憶装置内に位置することができる。
【００３０】
図５Ａは、本発明の少なくともいくつかの態様を実装するのに使用できる例示的な装置５００のブロック図である。パーソナルコンピュータ５２０は、処理装置５２１と、システムメモリ５２２と、システムメモリを含めた様々なコンポーネントを処理装置５２１に結合するシステムバス５２３とを備える。システムバス５２３は、様々なバスアーキテクチャのいずれかを用いた、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスを含めた、いくつかのバス構造のうちのどれでもよい。システムメモリは、読取り専用メモリ（ＲＯＭ）５２４および／またはランダムアクセスメモリ（ＲＡＭ）５２５を含むことができる。ＲＯＭ５２４には、起動時などにパーソナルコンピュータ５２０内の要素間で情報を転送するのを助ける基本ルーチンを含むＢＩＯＳ（ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）５２６を記憶することができる。パーソナルコンピュータ５２０は、ハードディスク（図示せず）に対して読取りおよび書込みを行うためのハードディスクドライブ５２７と、（例えばリムーバブルな）磁気ディスク５２９に対して読取りおよび書込みを行うための磁気ディスクドライブ５２８と、コンパクトディスクまたはその他の光（磁気）媒体などのリムーバブル光（磁気）ディスク５３１に対して読取りおよび書込みを行うための光ディスクドライブ５３０も備えることができる。ハードディスクドライブ５２７、磁気ディスクドライブ５２８、および光（磁気）ディスクドライブ５３０は、それぞれハードディスクドライブインタフェース５３２、磁気ディスクドライブインタフェース５３３、および光（磁気）ドライブインタフェース５３４によってシステムバス５２３と結合することができる。ドライブおよびそれらに関連する記憶媒体は、機械可読命令、データ構造、プログラムモジュール、およびその他のデータの不揮発性記憶域をパーソナルコンピュータ５２０に提供する。本明細書に述べるこの例示的な環境は、ハードディスク、リムーバブル磁気ディスク５２９、およびリムーバブル光ディスク５３１を採用するが、磁気カセット、フラッシュメモリカード、ディジタルビデオディスク、ベルヌーイ（Ｂｅｒｎｏｕｌｌｉ）カートリッジ、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）など、他のタイプの記憶媒体を、先に紹介した記憶装置に代えてまたは追加して使用することもできることを当業者は理解されたい。
【００３１】
ハードディスク５２３、磁気ディスク５２９、光（磁気）ディスク５３１、ＲＯＭ５２４、またはＲＡＭ５２５には、いくつかのプログラムモジュール、例えばオペレーティングシステム５３５、１つまたは複数のアプリケーションプログラム５３６、その他のプログラムモジュール５３７、ディスプレイドライバ８３０、および／またはプログラムデータ５３８などを記憶することができる。ＲＡＭ５２５はまた、以下で解説されるように表示のために画像をレンダリングする際に用いるデータを記憶するのに使用することもできる。ユーザは、入力デバイス、例えばキーボード５４０やポインティングデバイス５４２などを介してパーソナルコンピュータ５２０にコマンドおよび情報を入力することができる。マイクロホン、ジョイスティック、ゲームパッド、衛星放送用アンテナ、スキャナなど、他の入力デバイス（図示せず）を備えることもできる。これらおよび他の入力デバイスは、システムバスに結合されたシリアルポートインタフェース５４６を介して処理装置５２１に接続されることが多い。ただし入力デバイスは、パラレルポート、ゲームポート、ＵＳＢ（ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）など、他のインタフェースによって接続することもできる。インタフェース、例えばディスプレイアダプタ５４８などを介して、モニタ５４７または他のタイプの表示装置をシステムバス５２３に接続することもできる。パーソナルコンピュータ５２０は、モニタ５４７に加えてその他の周辺出力デバイス（図示せず）、例えばスピーカやプリンタなどを備えることもできる。
【００３２】
パーソナルコンピュータ５２０は、リモートコンピュータ５４９など、１つまたは複数のリモートコンピュータへの論理接続を規定したネットワーク化環境で動作することもできる。リモートコンピュータ５４９は、別のパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピア（ｐｅｅｒ）デバイス、またはその他の共通ネットワークノードとすることができ、パーソナルコンピュータ５２０に関して先に述べた要素の多くをまたはすべてを備えることができる。ただし、図５Ａでは、メモリ記憶素子のみを示してある。図５Ａに示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）５５１と、イントラネットおよびインターネットのワイドエリアネットワーク（ＷＡＮ）５５２とを含む。
【００３３】
ＬＡＮの中で使用するときは、パーソナルコンピュータ５２０は、ネットワークインタフェースアダプタ（または「ＮＩＣ」）５５３を介してＬＡＮ５５１に接続することができる。インターネットなどのＷＡＮの中で使用するときは、パーソナルコンピュータ５２０は、ワイドエリアネットワーク５５２を介して通信を確立するためのモデム５５４または他の手段を備えることができる。モデム５５４は内蔵でも外付けでもよく、シリアルポートインタフェース５４６を介してシステムバス５２３に接続することができる。ネットワーク環境では、パーソナルコンピュータ５２０に関して示したプログラムモジュールの少なくともいくつかをリモートメモリ記憶装置に記憶することができる。図示のネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立する他の手段を使用することもできる。
【００３４】
図５Ｂは、上述したプロセスの１つまたは複数を実施できる、より一般的なマシン５００′である。マシン５００′は基本的に、プロセッサ５０２と、入出力インタフェースユニット５０４と、記憶装置５０６と、結合された要素の間のデータ通信および制御通信を容易にするシステムバスまたはネットワーク５０８とを備える。プロセッサ５０２は、本発明の１つまたは複数の態様ならびにテキストエンハンスメントシステムの態様を実施するための機械実行可能命令を実行することができる。機械実行可能命令およびデータ構造の少なくとも一部は、記憶装置５０６に（一時的またはより継続的に）記憶することもでき、かつ／または入力インタフェースユニット５０４を介して外部ソースから受け取ることもできる。
【００３５】
本発明の少なくともいくつかの態様ならびにテキストエンハンスメントシステムを実施できる例示的な装置について述べたが、次に以下の４．１．２章で、テキストエンハンスメントシステムの外観を提示する。
【００３６】
４．１．２  タイプエンハンスメントシステム
先の１．２．２章で述べた図３から、最も従来型の走査変換動作では、画像の対応部分をマッピングできる個別の単位として、ピクセルを扱うことを想起されたい。したがって従来の走査変換動作の場合、画像の同じ部分、例えばピクセル要素と同サイズの部分を使用して、スケーリングされた画像の一部のマッピング先であるピクセル要素の各ＲＧＢピクセルサブコンポーネントに関して用いられる光度値が決定される。
【００３７】
テキストエンハンスメントシステムでは、ピクセルのＲＧＢピクセルサブコンポーネントを、スケーリングされた画像の異なる部分をマッピングできる独立した光度要素として扱う。したがって、周知の走査変換技術を用いて可能な解像度よりも高い解像度がもたらされる。図６に、例示的なテキストエンハンスメントシステムに従って実施される例示的な走査変換動作を示す。図示の実施形態では、グリッド６２０によって分割された画像の異なる画像サンプル６２２、６２３、６２４を使用して、生成中のビットマップ画像６３０の対応部分６３２、６３３、６３４に関連する赤、緑、青の光度値が生成される。図６に示す例では、赤および青に対する画像サンプルは、それぞれ緑のサンプルからピクセル幅の−１／３および＋１／３の距離で変位している。したがって、図３に示す周知のサンプリング／画像表示方法に伴って現れる、１．２．２．１．２章で述べたピクセル精度への丸めの際に導入される配置誤差は、配置誤差が残っているとしてもほとんど知覚できないくらいまで減少する。
【００３８】
図７は、テキストエンハンスメントシステムによって実施されるプロセスの高レベルの図である。図７に示すように、アプリケーションプロセス、例えばワードプロセッサやコンタクトマネージャが、テキストの表示を要求することができる。テキストは、グラフィックス表示インタフェース（またはＧＤＩ）プロセス（より一般的にはグラフィックス表示インタフェース）７２２に提供される。ＧＤＩプロセス７２２は、テキストをグリフ（glyph）に変換するために表示情報７２４および文字情報７２８を用いてグリフを生成する（またはあらかじめ生成されたキャッシュ済みグリフにアクセスする）。グリフは、スケーリング済み文字タイプフォント（またはブラックボディ情報４０７を含む文字枠４０８）のビットマップ、アドバンス幅４０２情報、および左サイドベアリング４１０情報を含むことができる。以下の４．１．２．１章で、グラフィックス表示インタフェースプロセス７２２についてより詳細に述べる。グラフィックス表示インタフェースプロセス７２２、表示情報７２４、およびグリフキャッシュ７２６は、Ｗｉｎｄｏｗｓ（登録商標）ＣＥ(登録商標)やＷｉｎｄｏｗｓ(登録商標)ＮＴ（登録商標）オペレーティングシステム（ワシントン州ＲｅｄｍｏｎｄのＭｉｃｒｏｓｏｆｔ  Ｃｏｒｐｏｒａｔｉｏｎから出ている）などのオペレーティングシステム５３５′の一部とすることができ、オペレーティングシステムによって操作することができる。
【００３９】
グリフキャッシュ７２６またはグラフィックス表示インタフェースプロセス７２２からのグリフは、次いで文字出力プロセス７３０に提供され、文字出力プロセス７３０は、文字グリフ情報を実際のＲＧＢピクセルサブコンポーネント光度値に変換する。文字出力プロセス７３０は、ディスプレイドライバ７３２によって実施することができる。ディスプレイドライバ７３２は、事前計算されたルックアップテーブルのセットを含むことができ、これを使用して複数の画像処理動作を行うことができる。文字出力プロセス７３０は、グリフ情報および表示情報を入力として受け取る。表示情報は、例えば前景／背景色情報、ガンマ値、カラーパレット情報、ピクセル値フォーマット情報を含むことができる。表示情報を用いて、使用するルックアップテーブルのセットに含まれる１つのルックアップテーブルが選択される。
【００４０】
ルックアップテーブルのセットの中のルックアップテーブルは、グリフを表すのに用いるパックピクセル値を処理済みピクセル値に変換するのに使用される。処理済みピクセル値は、例えば８ビットのＲ、Ｇ、Ｂ光度値の形をとり、ディスプレイアダプタ５４８′および／またはディスプレイ５４７によって使用される。各ルックアップテーブルは、有りうる各パックピクセル値に対する１つのエントリと、対応する出力値とを含む。有りうるパックピクセル値が１８０個ある例示的な場合では、ルックアップテーブルは、１８０個のパックピクセル値と、対応する１８０個の処理済みピクセル値すなわち出力ピクセル値とを含むことになる。各出力ピクセル値は、その出力ピクセル値に対応するパックピクセル値を入力として用いて実装済みディスプレイドライバ処理動作を行うことによって生成される、事前計算された値である。
【００４１】
グリフを表すパックピクセル値をルックアップテーブルへのインデックスとして用いることにより、Ｒ、Ｇ、Ｂ光度値を含む処理済みピクセル値のセットが、取り付けられたディスプレイアダプタまたは表示装置に利用される形で得られる。
【００４２】
ルックアップテーブルに含まれる処理済みピクセル値は、事前計算することができる。すなわち、ディスプレイドライバ７３２中で使用する前に計算することができる。処理済みピクセル値を事前計算することにより、ガンマ補正、色補償、および／またはパレット選択の動作を画像レンダリング中にリアルタイムで行う必要が回避される。
【００４３】
文字出力プロセス７３０として、ピクセル値ルックアップテーブル手法に対する代替方法を用いることもできる。ガンマ補正、色補償、および／またはパレット選択の動作は、ディスプレイアダプタ５４８′および／またはディスプレイ５４７が、パックピクセル値を入力として用いて使用に適したフォーマットの処理済みピクセル値を生成することによって行うこともできる。
【００４４】
ディスプレイドライバのルックアップテーブル動作を通して、または代替方法によって生成された処理済みピクセル値は、ディスプレイアダプタ５４８に出力されるようにスクリーンフレームバッファ７４２に記憶される。スクリーンフレームバッファ７４２を使用すると、異なるいくつかの文字を表すグリフから例えばテキスト列の単一画像を生成することができる。したがって、文字出力プロセス７３０からの文字出力データは、表示すべき現在のビデオフレームを記憶するフレームバッファプロセス７４０に提供される。フレームバッファプロセス７４０は、スクリーンフレームバッファ７４２によって実施することができる。
【００４５】
次いで、フレームバッファプロセス７４０からのビデオは表示適合プロセス７５０に提供され、表示適合プロセス７５０は、特定の表示装置用にビデオを適合させる。表示適合プロセス７５０は、ディスプレイアダプタ５４８′によって実施することができる。
【００４６】
最後に、適合されたビデオは、レンダリングされるように表示装置、例えばＬＣＤディスプレイ５４７などに提示される。
【００４７】
テキストエンハンスメントシステムは、基本的にグラフィックス表示インタフェースプロセス７２２中で実施される。次に、以下の４．１．２．１章でグラフィックス表示インタフェースプロセス７２２についてより詳細に述べる。
【００４８】
４．１．２．１グラフィックス表示インタフェース
図８に、グラフィックス表示インタフェース（またはＧＤＩ）プロセス７２２が実施できるプロセス、ならびにＧＤＩプロセス７２２が使用できるデータを示す。図８に示すように、ＧＤＩプロセス７２２はグリフキャッシュ管理プロセス（またはより一般的にはグリフキャッシュマネージャ）８０２を含むことができ、このグリフキャッシュ管理プロセス８０２は、テキスト、より具体的にはテキストを表示する要求８２０を受け付ける。グリフキャッシュ管理プロセス８０２は、この要求をグリフキャッシュ７２６に転送する。グリフキャッシュ７２６は、要求されたテキスト文字に対応するグリフを含んでいる場合はそれをダウンストリーム処理に向けて提供する。一方、要求されたテキスト文字に対応するグリフを有しない場合は、グリフキャッシュ７２６はそのようにグリフキャッシュ管理プロセス８０２に通知し、グリフキャッシュ管理プロセス８０２は、必要なグリフを生成する要求をタイプラスタ化プロセス（またはより一般的にはタイプラスタライザ）８０４′に依頼する。以下の４．１．２．１．１章で、タイプラスタ化プロセスについて述べる。
【００４９】
４．１．２．１．１  ラスタライザ
タイプラスタ化プロセス８０４は基本的に、スケーリングプロセス（またはより一般的にはタイプスケーラ）８０６、任意選択のヒンティングプロセス（hinting process；またはより一般的にはタイプヒンタ（ｈｉｎｔｅｒ））８０８、ソースピクセルアクセスプロセス（またはより一般的にはソースピクセルリーダ）８１０（本発明が対象とする）、および走査変換プロセス（またはより一般的には走査変換器）８１２を含む。スケーリング、ヒンティング、および走査変換のプロセスは、表示装置のＲＧＢピクセルサブコンポーネントを、レンダリングされる画像の異なる部分を表すのに使用できる別々の光度エンティティとして考慮、使用、または処理する。以下の４．１．２．１．１．１章で、スケーリングプロセス８０６について述べる。次いで以下の４．１．２．１．１．２章で、任意選択のヒンティングプロセス８０８について述べる。最後に以下の４．１．２．１．１．３章で、走査変換プロセス８１２について述べる。
【００５０】
これらのプロセスへの入力は、アプリケーション７１０から得られたテキスト、フォント、およびポイントサイズの情報を含むことができる。さらに、入力は表示情報７２４を含むこともできる。表示情報７２４は、スケーリング情報、前景／背景色情報、ガンマ値、ピクセルサイズ情報、カラーパレット情報、および／または、ディスプレイアダプタ／表示装置ピクセル値フォーマット情報を含むことができる。表示情報７２４は、オペレーティングシステム５３５によってメモリ５２２に記憶されたモニタ設定から得ることができる。最後に、入力は、高解像度表示などの文字データを、例えば表示されるテキスト文字の線、点、および／または曲線の形で含むこともできる。
【００５１】
４．１．２．１．１．１  スケーリング
スケーリングプロセス８０６は、各ピクセル要素に含まれるサブコンポーネントの方向および／または数に基づいて非正方形スケーリングを行うことができる。具体的には、高解像度文字情報７２８（この情報は、受信したテキストおよびフォントの情報によって指定される、表示される文字の線および点の表現を含むことができることを想起されたい）を、ストライピングに直交する方向に、ストライピング方向でのレートよりも大きなレートでスケーリングさせることができる。したがって、例えば図１に示すタイプの表示装置をデータ表示先のデバイスとして使用するときは、スケーリングが垂直方向よりも大きなレートで水平方向に行われる。これにより後続の画像処理動作は、本発明により個別のピクセルサブコンポーネントを独立の光度ソースとして使用することによって達成できる、より高い解像度を利用することができる。
【００５２】
垂直画像方向と水平画像方向の間のスケーリングの違いは、使用する表示装置と、後で行われる走査変換プロセス８１２およびヒンティングプロセス８０８に応じて変わる可能性がある。スケーリング情報を含む表示情報を用いて、所与の実施形態で行われるスケーリングが決定される。
【００５３】
必ずしもそうである必要はないがほとんどの場合、文字または画像のスケーリングは、ストライピングに直交する方向で、赤、緑、青のストライプをさらに分割することが可能なレートで行われ、それにより後続の重み付き走査変換動作がサポートされる。重み付き走査変換動作が適用される場合、スケーリングは、用いるＲＧＢストライピングおよび重み付けに応じて行われる。赤のピクセルコンポーネントに重み５が割り振られ、緑のピクセルサブコンポーネントに重み９が割り振られ、青のピクセルサブコンポーネントに重み２が割り振られた垂直ストライピングを用いる一実施形態では、スケーリングは、ｙ方向に１倍およびｘ方向に１６倍のレートで行われる。図９に、図１に示したような垂直ストライピングを有するモニタ上に表示される文字「ｉ」９０２の高解像度表現に対して行ったこのようなスケーリング動作を示す。この例では、水平（Ｘ）方向のスケーリングは１６倍のレートで適用され、垂直（Ｙ）方向のスケーリングは１倍のレートで適用されていることに留意されたい。この結果、元の文字９０２とちょうど同じ高さだが幅が１６倍のスケーリング文字９０８が得られる。
【００５４】
ブラックボックスをスケーリングするのに加え、左サイドベアリング４１０の値およびアドバンス幅４０２の値もまたスケーリングすることができる。別法として、これらの値は倍率から再決定することもできる。この別法の場合、得られる左サイドベアリング４１０およびアドバンス幅４０２の値は、必ずしも水平（すなわちＸ）方向のサンプリングレートの偶数倍ではなくなる。例えば、レンダリングされる文字に対する左サイドベアリング４１０の値は、指定のポイントサイズに基づいてスケーリングすることもできる。単に左サイドベアリング４１０を最も近いピクセルに丸めるのではなく、サブピクセル精度を維持することができる。したがって、得られる左サイドベアリング４１０の値は、ピクセルサイズ単位の整数倍に対応する部分と、ピクセルサイズ単位よりも小さい余りとを有する可能性がある。同様に、レンダリングされる文字に対するアドバンス幅４０２の値もまた、指定のポイントサイズに基づいてスケーリングすることができる。アドバンス幅４０２の値をスケーリングするとき、サブ精度を使用することもできる。
【００５５】
図８に戻って参照すると、スケーリングプロセスを行った後で任意選択のヒンティングプロセス８０８を行うことができる。以下の４．１．２．１．１．２章で、このプロセス８０８について述べる。
【００５６】
４．１．２．１．１．２  ヒンティング
基本的にヒンティングは、利用可能なピクセルサブコンポーネントを使用して正確な文字表示を最適化することを意図した方式により、文字「ｉ」９０８などのスケーリング済みの文字を、後続の走査変換動作によって使用されるグリッド１００４内で整列させるものである。ヒンティングはまた、画像がグリッド１００４の形状によりよく合うように画像輪郭を歪めることも含む。グリッド１００４は、ディスプレイ５４７のピクセル要素の物理的サイズと、後続の走査変換プロセス８１２中に加えられる任意の重みとに応じて決定することができる。
【００５７】
ヒンティング整列動作では、ピクセルサブコンポーネント境界を、文字をそれに沿って整列させることができるとともに整列させるべき境界として、または文字の輪郭をそれに対して調整すべき境界として扱う。
【００５８】
多くの場合、ヒンティングは、文字ステム（ｓｔｅｍ）の左端を左のピクセルまたはサブピクセルコンポーネントの境界と整列させ、文字底辺の下部をピクセルコンポーネントまたはサブコンポーネントの境界に沿って整列させることを含む。実験結果によれば、垂直ストライピングの場合、文字ステムの左端が青または緑になるように整列させたステムを有する文字は、左端が赤になるように整列させたステムを有する文字よりも一般に読みやすい傾向があることが示された。したがって、少なくともいくつかの実施形態では、垂直ストライピングを有する画面上に表示すべき文字をヒンティングするときは、ヒンティングプロセスの一部として、ステムに対して赤い左端よりも青または緑の左端のほうが好ましい。水平ストライピングの場合、文字底辺の下部が赤または青の下端を有するように整列させた文字は、底辺が緑の下端を有するように整列させた文字よりも読みやすい傾向がある。したがって、水平ストライピングを有する画面上に表示すべき文字をヒンティングするときは、少なくともいくつかの実施形態では、ヒンティングプロセスの一部として緑の下端よりも赤または青の下端が好ましい。
【００５９】
図１０に、ヒンティングプロセス８０８（「グリッドフィッティング」と呼ばれることもある）の動作を示す例を提供する。より具体的には、図１０に、垂直ストライピングを有するモニタ上に表示すべきスケーリング済みの文字「ｉ」１００８のヒンティングを示す。ヒンティングプロセス８０８の一部として、スケーリング済みの画像１００８がグリッド１００４上に配置され、その位置および輪郭が、グリッド形状によりよく合うように、かつ所望の程度の文字間隔を達成するように調整される。図１０中の文字「Ｇ．Ｐ．」は、グリッド配置ステップを示し、用語「ヒンティング」は、ヒンティングプロセスにおける輪郭調整の部分および文字間隔をとる部分を示す。
【００６０】
ヒンティングプロセス８０８が完了した後で、またはヒンティングプロセス８０８が行われない場合はスケーリングプロセス８０６が完了した後で、走査変換プロセス８１２が行われる。以下の４．１．２．１．１．３章で走査変換プロセスについて述べる。本発明が取り入れられる、介在するソースピクセルアクセスプロセス８１０については、後に４．２章、４．３章、および４．４章で述べる。
【００６１】
４．１．２．１．１．３  走査変換
基本的に、走査変換プロセス８１２は、文字を表すスケーリング済みの幾何形状をビットマップ画像に変換する。従来の走査変換動作では、スケーリング済みの画像の対応部分をマッピングできる個別の単位としてピクセルを扱う。したがって従来の走査変換動作では、スケーリング済みの画像の一部がマッピングされるピクセル要素の、各ＲＧＢピクセルサブコンポーネントに関して用いる光度値が、画像の同じ部分を使用して決定される。図３に、ビットマップとして表示される画像をサンプリングして、サンプリングした値から光度値を生成することを含む、周知の走査変換プロセスの一例が示してあることを想起されたい。
【００６２】
テキストエンハンスメントシステムの走査変換プロセス８１２では、ピクセルのＲＧＢピクセルサブコンポーネントを独立の光度要素として扱う。したがって、各ピクセルサブコンポーネントを、スケーリング済みの画像の異なる部分をマッピングできる別々の光度コンポーネントとして扱う。スケーリング済みの画像の異なる部分を異なるピクセルサブコンポーネントにマッピングできるようにすることにより、周知の走査変換技術を用いる場合よりも高い解像度がもたらされる。別の言い方をすれば、スケーリング済みの画像の異なる部分を使用して、各ピクセルサブコンポーネントに関して用いる光度値を別々に決定する。
【００６３】
図６に、テキストエンハンスメントシステムで用いることのできる例示的な走査変換プロセス８１２が示してあることを想起されたい。例示した実施形態では、グリッド６２０によって分割された画像の異なる画像サンプル６２２、６２３、６２４を使用して、生成中のビットマップ画像６３０の対応部分６３２、６３３、６３４に関連する赤、緑、青の光度値を生成する。図６に示すこの例では、赤および青に対する画像サンプルがそれぞれ緑のサンプルからピクセル幅の−１／３および＋１／３の距離で変位していることを想起されたい。
【００６４】
走査変換プロセス８１２は、ピクセルサブコンポーネントごとに赤、緑、青（Ｒ、Ｇ、Ｂ）の光度値を生成する。これらの値は、赤、緑、青の別々の光度レベルの形で表すことができる。重み付けなしの走査変換動作では、Ｒ、Ｇ、Ｂ光度レベルは通常、０と１のどちらかになる。重み付き走査変換動作では、通常、１つまたは複数のＲ、Ｇ、Ｂのピクセルサブコンポーネントに対して３つ以上の光度レベルがサポートされる。
【００６５】
多くのシステムでは、Ｒ、Ｇ、Ｂの光度値は別々の３つの数量として指定、記憶、および処理され、各数量は、ピクセルサブコンポーネント光度値を、ディスプレイアダプタ５４８および／またはディスプレイ５４７に指定するのに用いる数に対応する、いくつかのビットを有する。例えば多くのシステムは、Ｒ、Ｇ、またはＢの光度値をそれぞれ表す、８ビットの数量を用いる。このような実装形態では、Ｒ、Ｇ、Ｂ光度値の処理には１ピクセルにつき２４ビットの記憶、処理、および転送が必要である。
【００６６】
いくつかのデバイス（例えばポータブルコンピュータやハンドヘルドコンピューティングデバイスなど）では、メモリ、処理、さらにはバス帯域幅でさえ限られたリソースであり、レンダリングプロセス全体にわたり各Ｒ、Ｇ、Ｂ光度値を表すのに８ビットを使用することは、利用可能なリソースにとって大きな負担となる可能性がある。メモリを含め、グリフを処理し記憶するのに必要なリソースを減らすには、別々のＲ、Ｇ、Ｂ光度レベルの値を単一の数に変換、例えば圧縮すればよい。この数を本明細書では「パックピクセル値（ｐａｃｋｅｄ  ｐｉｘｅｌ  ｖａｌｕｅ）」と呼ぶが、これは、あるピクセルに関連するＲ、Ｇ、Ｂ光度値を単一の値にパッキングすることを表すからである。ピクセルＲ、Ｇ、Ｂ光度レベルを表すのに用いる数の範囲、例えばパックピクセル値の範囲は、可能なＲ、Ｇ、Ｂ光度レベルの各組合せが一意に識別できるように十分に広く選択する。したがって、Ｒ、Ｇ、Ｂ光度レベルの組合せを表すのに用いるパックピクセル値の総数は、少なくとも、サポートされる赤の光度レベルの総数と、サポートされる緑の光度レベルの総数と、サポートされる青の光度レベルの総数との積と同じになるべきである。メモリアクセス、処理、およびデータ転送の動作の点で、バイトすなわち８ビットの数量で処理するのがしばしば便利なので、積は８ビットの数量またはその倍数として指定できるべきである。ハンドヘルドコンピューティングデバイスでは、メモリからみた節約が大きいなどのことから、３つのＲ、Ｇ、Ｂ光度値の積の１ピクセル表現につき単一の８ビットが特に望ましい（１ピクセルサブコンポーネント光度値につき８ビットを使用して１ピクセルにつき合計２４ビットを必要とする実施形態と比較して）。
【００６７】
一般に画像のレンダリング、特にテキスト画像に関連するリソース負担を制限するために、走査変換プロセス８１２は、ピクセルに関係する別々のＲ、Ｇ、Ｂ光度値をパックピクセル値に変換することができる。このような実施形態では、グリフは、例えば別々の３つの８ビットＲ、Ｇ、Ｂ光度値ではなくパックピクセル値を用いて表現および記憶される。パックピクセル値表現は、ディスプレイ５４７によって使用される形の別々のＲ、Ｇ、Ｂ光度値に変換した後でディスプレイアダプタ５４８に供給することができる。
【００６８】
別々のＲ、Ｇ、Ｂ光度レベルをパックピクセル値に変換することは、走査変換プロセス８１２の一部として行うことができる。シフト演算または算術式を用いて、ピクセルに関連する別々のＲ、Ｇ、Ｂ光度レベルとパックピクセル値との間の変換を行うことができる。このような演算により、合計Ｎ個（０〜Ｎ−１）の別個のパックピクセル値エントリを作成することができ、Ｎは、あるピクセル要素に割り当てることのできるＲ、Ｇ、Ｂ光度レベルの可能な組合せの総数である。対応するＲ、Ｇ、Ｂ光度レベルの組合せが各パックピクセル値と関連付けられる。Ｒ光度値は０からＲＰ−１までの範囲で変化し、ＲＰは赤の光度レベルの可能な最大数である。Ｇ光度値は０からＧＰ−１までの範囲で変化し、ＧＰは緑の光度レベルの可能な最大数である。Ｂ光度値は０からＢＰ−１までの範囲で変化し、ＢＰは青の光度レベルの可能な最大値である。あるいは、ルックアップテーブルを使用し、パックピクセル値をルックアップテーブルへのインデックスとして使用してパックピクセル値に関連する個別のＲ、Ｇ、Ｂ光度レベルエントリを出力することによってパックピクセル値をＲ、Ｇ、Ｂ光度値に変換することもできる。
【００６９】
１６をファクタ（ｆａｃｔｏｒ）としたＲＧＢストライピングに直交する方向のオーバーサンプリングがサポートされる、ある例示的な走査変換プロセス８１２では、６個の赤の光度レベル、例えばレベル０〜５が用いられ、１０個の緑の光度レベル、例えばレベル０〜９が用いられ、３個の青の光度レベル、例えばレベル０〜２が用いられる。この結果、合計１８０（＝６×１０×３）通りのＲ、Ｇ、Ｂ光度レベルの組合せが可能となる。このような実施形態では、Ｎは１８０に等しく、ルックアップテーブルは０〜１７９のパックピクセル値を含むことになる。
【００７０】
サポートされるＲ、Ｇ、Ｂ光度レベルの数は普通、走査変換プロセス８１２中にＲ、Ｇ、Ｂ光度レベルを決定するのに使用するセグメントの数に相関することに留意されたい。また、１８０通りのＲ、Ｇ、Ｂ光度レベルの可能な組合せがサポートされる例示的な実施形態では、０〜１７９の各パックピクセル値を８ビットの数量を用いて表すことができることにも留意されたい。これにより、Ｒ、Ｇ、Ｂの組合せごとの合計２４ビットに別々の８ビット値を使用する実施形態と比較して、記憶要件が大幅に削減される。
【００７１】
図１１に、例示的な走査変換方法８１２′を示す。ステップ１１０２で、スケーリングされた（かつ任意選択でヒンティングされた）画像データが受け付けられる。スケーリングされた画像データは通常、複数のピクセルに関係する画像データを含む。各ピクセルに対応するスケーリング済みの画像データは、赤のピクセルサブコンポーネント対する光度レベル決定ステップ１１０４、緑のピクセルサブコンポーネント対する光度レベル決定ステップ１１０６、および青のピクセルサブコンポーネントに対する光度レベル決定ステップ１１０８によって別々に処理される。より具体的には、ステップ１１０４で、処理中のピクセルセグメントに対応する赤のピクセルサブコンポーネントに関して用いられる光度レベルが決定される。このステップ１１０４は、スケーリング済みの画像を調べることにより、「オン」になる赤のピクセルサブコンポーネントセグメントの数を決定することによって行うことができる。ステップ１１０６で、処理中のピクセルセグメントに対応する緑のピクセルサブコンポーネントに関して用いられる光度レベルが決定される。このステップ１１０６は、スケーリング済みの画像を調べることにより、「オン」になる緑のピクセルサブコンポーネントセグメントの数を決定することによって行うことができる。最後にステップ１１０８で、処理中のピクセルセグメントに対応する青のピクセルサブコンポーネントに関して用いられる光度レベルが決定される。このステップ１１０８は、スケーリング済みの画像を調べることにより、「オン」になる青のピクセルサブコンポーネントセグメントの数を決定することによって行うことができる。ステップ１１０４、１１０６、および１１０８は並行して行うように示してあるが、順番に行ってもよい。
【００７２】
処理中のピクセルセグメントに対応するピクセル要素の、Ｒ、Ｇ、Ｂピクセルサブコンポーネントに対するＲ、Ｇ、Ｂ光度レベル値のセットが決定された後で、方法８１２′は任意選択のステップ１１１０に進む。任意選択のステップ１１１０で、Ｒ、Ｇ、Ｂ光度レベル値のセットはパックピクセル値に変換される。このステップはルックアップテーブルまたは変換機能を用いて実施できることを想起されたい。
【００７３】
次いでステップ１１２０で、スケーリングされた（かつ任意選択でヒンティングされた）画像のピクセルセグメントがすべて処理されたか否かが判定される。スケーリング済みの画像セグメントに対応するデータが未処理のまま残っている場合、方法８１２′は、次のピクセルセグメントに対応するスケーリング済みの画像データを処理できるように、分岐してステップ１１０４、１１０６、および１１０８に戻る。一方、スケーリングされた（かつ任意選択でヒンティングされた）画像のピクセルセグメントがすべて処理されたと判定された場合は、方法８１２′はステップ１１３０に分岐する。
【００７４】
ステップ１１３０では、生成された、グリフを表すパックピクセル値のセットをグリフキャッシュ７２６および／または文字出力プロセス７３０に出力する。次いで、「リターン」ノード１１４０を経由して走査変換方法８１２′を出る。
【００７５】
図１２に、水平ストライピングを有する表示装置上に表示するために、ヒンティング済み画像１００８に対して行う重み付き走査変換動作を示す。図１２に示す例では、走査変換動作によって生成されるビットマップ画像中で「オフになる」ピクセルサブコンポーネントを示すのに白を用いている。例えば少なくとも５０％が文字輪郭内にあるセグメントを１つまたは複数有することから「オン」になるピクセルサブコンポーネントは、点描を用いて示す。点描付きのピクセルサブコンポーネントは、点描が濃いほどその光度が低い。
【００７６】
黒いテキストの「オン」は、ピクセルサブコンポーネントが光を発しないかまたは最小限の光度で光を出力するように、ピクセルサブコンポーネントに関連する光度値が制御されることを意味する。背景ピクセルを白と仮定すると、「オン」でないサブコンポーネントは、それらの光出力を一杯まで出力させる光度値が割り当てられることになる。１ピクセルサブコンポーネントにつき複数のセグメントを有するグリッド上に画像が配置されているときは、完全な「オン」と完全な「オフ」の間のグラデーションが可能である。このような場合、所与のサブコンポーネントに対して「オン」にすべきセグメントの数のカウントが決定される。「オン」の画像セグメントの数が光度レベル値である。このような値は、対応するピクセルサブコンポーネントに用いられる光度を示す。Ｍ個のセグメントを使用して１個のピクセルサブコンポーネントが表される場合、Ｍ＋１個の光度レベル、すなわち０個の「オン」セグメントからＭ個の「オン」セグメントまでに対応するレベルがサポートされる。
【００７７】
スケーリング中に、あるピクセルサブコンポーネントに対応する画像のセグメントを「オン」と見なすべきかどうかを判定する第１の技術は、スケーリンググリッドの一部によって表され、かつ、ピクセルサブコンポーネント中にマッピングされている、スケーリング済み画像セグメントが、表示すべき画像のスケーリング表現内にあるかどうかを判定するものである。もう１つの技術は、ピクセルサブコンポーネント中にマッピングされているスケーリング済み画像セグメントの５０％以上が、表示すべき画像によって占められるかどうかを判定するものである。そうである場合は、その画像セグメントは「オン」になると見なされる。そうでない場合は、その画像セグメントは「オフ」になると見なされる。
【００７８】
重み付けが適用されるときは、スケーリング済み画像の異なるサイズの領域を使用して、特定のピクセルサブコンポーネントが「オン」になるべきか「オフ」になるべきか、またはその中間の値になるべきかを判定する。
【００７９】
人間の目は、異なる色光源からの光度を異なる割合で知覚する。赤、緑、青のピクセルサブコンポーネントをそれらの最大光度出力に設定して得られる白いピクセルの知覚輝度に対し、緑は約６０％、赤は約３０％、青は約１０％貢献する。したがって、リソース、例えば光度レベルを割り振る際、青または赤よりも多くのレベルを緑に割り振ることができる。同様に、青よりも多くの光度レベルを赤に割り振ることができる。ただしいくつかの実施形態では、赤、緑、青のピクセルサブコンポーネントに同数の光度レベルが割り当てられる。
【００８０】
図１２に示す例示的な実施形態では、水平オーバーサンプリング（図９を想起されたい）の結果として、各ピクセル要素に１６個の画像セグメントが対応する。したがって図１２では、１つのピクセルセグメントが１６個の画像セグメントを有する。１つのピクセルセグメントに関連する１６個の画像セグメントのうち、５個は赤のピクセルサブコンポーネントに対応するものとして割り振られ（本明細書では「赤の画像セグメント」と呼ぶ）、９個のピクセルセグメントは緑のピクセルサブコンポーネントに割り振られ（本明細書では「緑の画像セグメント」と呼ぶ）、１６個の画像セグメントのうち残りの２個は青のピクセルサブコンポーネントに割り振られる（本明細書では「青の画像セグメント」と呼ぶ）。こうしたセグメントの割振りは、赤のピクセルサブコンポーネントの光度レベル６つ、緑のピクセルサブコンポーネントの光度レベル１０、および青のピクセルサブコンポーネントの光度レベル３つをサポートする。
【００８１】
その他の画像セグメント割振りも可能であり、いくつかの実施形態では、同数のセグメント、例えば２個または３個のセグメントがピクセルサブコンポーネントごとに割り振られる。
【００８２】
図１２の走査変換の例では、ピクセルセグメントの５０％が画像輪郭内にある場合にそのピクセルセグメントは「オン」と見なされる。図１２に示す走査変換動作によりビットマップ画像１２０３が得られるが、このビットマップ画像は、本発明によりパックピクセル値のセットとして記憶される。ビットマップ画像の列Ｃ１〜Ｃ３の各ピクセルサブコンポーネントが、１６個の画像セグメントの異なるセットからどのように決定されるかに留意されたい。また、個別のピクセルサブコンポーネントの光度が個別の赤、緑、青のピクセルサブコンポーネントに対応する「オン」セグメントの数に応じてどのように異なるかにも留意されたい。
【００８３】
図１３に、スケーリングおよびヒンティングされた画像１０１８の第４行１３００Ｒ４に対して重み付き走査変換動作を行った結果をより詳細に示す。図１３では、Ｒ、Ｇ、Ｂの各ピクセルサブコンポーネントに対するＲ、Ｇ、Ｂのピクセルセグメント数を、対応するピクセルサブコンポーネントの真下に列１３０２中に示してある（走査変換方法８１２′のステップ１１０４、１１０６、および１１０８を想起されたい）。
【００８４】
レンダリング中の文字の画像は、ピクセル（Ｃ１，Ｒ４）に対応するセグメントは通らない。したがって、このピクセル要素に関連するセグメントはどれも「オン」ではなく、このピクセルに対するＲ、Ｇ、Ｂのサブピクセルセグメントのカウントはすべて０であり、Ｒ，Ｇ，Ｂの値は（０，０，０）になる。ピクセル要素（Ｃ２，Ｒ４）の場合、画像の輪郭内に赤のピクセルサブコンポーネントセグメントは０個であり、少なくとも５０％が画像の輪郭内にある緑のピクセルサブコンポーネントセグメントは７個あり、少なくとも５０％が画像の輪郭内にある青のピクセルサブコンポーネントは２個あるので、スケーリング済みの画像に対して走査変換ステップ１１０４、１１０６、１１０８を行うことによって得られる光度レベルは（０，７，２）である。最後に、ピクセル要素（Ｃ３，Ｒ４）の場合、少なくとも５０％が画像の輪郭内にある赤のピクセルサブコンポーネントセグメントは４個あり、少なくとも５０％が画像の輪郭内にある緑のピクセルサブコンポーネントセグメントは０個であり、少なくとも５０％が画像の輪郭内にある青のピクセルサブコンポーネントセグメントは０個なので、スケーリング済みの画像に対して走査変換を行うことによって得られる光度レベルは（４，０，０）である。
【００８５】
Ｒ、Ｇ、Ｂの光度ピクセルサブコンポーネント値（０，０，０）、（０，７，２）、および（４，０，０）は、以下の例示的なピクセルパッキングの式を用いたとき、走査変換サブルーチンステップ８６２でそれぞれパックピクセル値０、２３、および１２０に変換される。
【００８６】
パックピクセル＝（１０×Ｒ＋Ｇ）×３＋Ｂ
【００８７】
行１３０４に、（Ｃ１，Ｒ４）、（Ｃ２，Ｒ４）、（Ｃ３，Ｒ４）の各ピクセル要素に対して生成されたパックピクセル値を示す。
【００８８】
本発明が動作できる例示的なテキストエンハンスメントシステムについて述べたが、４．２章で、本発明の機能を紹介する。次いで４．３章で、本発明の様々な態様を実施するための例示的なプロセス、データ構造、および方法を開示する。最後に４．４章で、本発明の様々な態様の動作を示す例を開示する。
【００８９】
４．２  本発明の機能
図１４と１５の両方を参照するが、先の４．１．２．１．１．１章から、左サイドベアリング４１０の値をスケーリングする際、スケーリングされた左サイドベアリングの値１４１０、１５１０は、ピクセルサイズ単位（例えば１６など）の整数倍１４２０、１５２０と、ピクセルサイズ単位よりも小さい余り１４３０、１５３０とに対応する部分を有する可能性があることを想起されたい。左サイドベアリングの余り１４３０、１５３０は、列Ｃ１が列Ｃ１′になり、列Ｃ２が列Ｃ２′になり、列Ｃ３が列Ｃ３′になるようにピクセル境界をシフトすることに留意されたい。また、追加の列である列Ｃ４が追加されることにも留意されたい。したがって、「ソースサブピクセル」とも呼ばれるオーバーサンプリングされたサブピクセルにアクセスするとき、アクセスされるソースサブピクセルのブロックは、左サイドベアリングの余り１４３０、１５３０が最終的な文字表示において調整されるようにシフトすべきである。
【００９０】
オーバーサンプリングレートに対応するブロック（またはチャンク）中のソースサブピクセルにアクセスすることが望ましく、この例では、１６個のソースサブピクセルのブロックである。図示の例では１６個のソースサブピクセルのブロックが元々はバイト境界に対応しているものの、左サイドベアリングの余り１４３０、１５３０が追加されると、所望のソースサブピクセルのブロックまたはチャンクがバイト内のどこでも開始する可能性があり、バイト境界にまたがる可能性もある。したがって本発明の機能の１つは、所望のソースサブピクセルブロックに迅速にアクセスする方式を提供するものである。
【００９１】
４．３  例示的なプロセス、方法、およびデータ構造
図９、１０、および１２〜１５に関して述べた例では、水平（すなわちＸ）方向のオーバーサンプリング「レート」が１６であったことを想起されたい。このような実施形態では、本発明は１６個のソースサブピクセルのブロックまたはチャンクにアクセスする。以下の４．３．１章で、オーバーサンプリング「レート」が水平（すなわちＸ）方向に１６であるときのプロセス８１０を実施する例示的な方法を開示する。以下の４．３．２章で、水平（すなわちＸ）方向のオーバーサンプリング「レート」が２から２４までの間であるときにプロセス８１０を実施する一般的な方法を開示する。
【００９２】
４．３．１  第１の例示的な方法（Ｎ＝１６）
図１６は、ソース（source）サブピクセルアクセスプロセス８１０を実施するための例示的な方法８１０′の流れ図である。繰り返すが、この方法は、水平（またはＸ）方向のオーバーサンプリングレートが１６であるときに用いることができる。ステップ１６０５に示すように、第１および第２の３２ビット記憶構造（一般性を失わずに「レジスタ」とも呼ばれる）を生成する。これらの３２ビット記憶構造はそれぞれ、４個の８ビット整数（またはバイト）、２個の１６ビット整数（またはワード）、あるいは１個の３２ビット整数（またはワード）としてアドレス指定することができる。ステップ１６１０に示すように、これらの３２ビット記憶構造は、すべて０を含むように初期化する。ステップ１６１５で、インデックスカウンタＩを０に初期化する。最後にステップ１６２０で、８ビット変数「ＢＹＴＥ０」をソースサブピクセルの第１バイト（ＳＰ０）に初期化し、８ビット変数「ＢＹＴＥ１」をソースサブピクセルの第２バイト（ＳＰ１）に初期化する。
【００９３】
ステップ１６２５と１６５５が、デスティネーション（destination）ピクセル、すなわち走査変換動作から得られるピクセルすべてを通したループを規定する。考慮される左サイドベアリングの余りがない場合は、デスティネーションピクセルの数は単に、行の中のソースサブピクセルの数をオーバーサンプリングレート（この場合は１６）で割り、結果を最も近い整数に切り上げた数であることに留意されたい。しかし、左サイドベアリングの余りが考慮されるので、デスティネーションピクセルの数は、行の中のソースサブピクセルの数と左サイドベアリングの余りとの和をオーバーサンプリングレート（この場合は１６）で割り、結果を最も近い整数に切り上げた数として決定される。
【００９４】
ステップ１６２５と１６５５によって規定されたループ内で、いくつかのステップを実施する。より具体的には、ステップ１６３０に示すように、第１の３２ビット記憶構造の第２バイト（Ｒ１，ＢＹＴＥ１）にＢＹＴＥ０をロードし、第１の３２ビット記憶構造の第１バイト（Ｒ１，ＢＹＴＥ０）にＢＹＴＥ１をロードする。次にステップ１６３５に示すように、第１の３２ビット記憶構造の内容を第２の３２ビット記憶構造にコピーする。次いでステップ１６４０に示すように、第２の３２ビット記憶構造の内容を左サイドベアリングの余りの分だけ右にシフトする。（ビットが記憶構造の外にシフトされるときはラップアラウンドがないことに留意されたい。）次にステップ１６４５に示すように、第１のデスティネーションピクセルを決定するために走査変換プロセス８１２によって使用される第１の１６ビットソースサブピクセルチャンクを、第２の３２ビット記憶構造から１６ビットとして読み出す。最後にステップ１６５０に示すように、第１の３２ビット記憶構造の内容を１６ビット左にシフトする（やはりラップアラウンドはない）。行の中で走査変換プロセス８１２によって処理すべきデスティネーションピクセルがまだある場合は、ステップ１６５５からステップ１６６０およびステップ１６６５にループが継続し、ステップ１６６０ではインデックスカウンタＩをインクリメントし、ステップ１６６５では８ビットのＢＹＴＥ０変数およびＢＹＴＥ１変数をソースピクセルの次の２つのバイトに更新し、ループはステップ１６２５に戻る。そうでない場合は、「リターン」ノード１６９５を経由してプロセス８１０′を出る。
【００９５】
図示の方法８１０′は、１つのグリフ行を規定する１つのデスティネーションピクセル行を生成するために走査変換プロセス８１２によって使用されるソースサブピクセルの行１つだけにしかアクセスしないことに留意されたい。当然この方法８１０′は、修正するかまたはより大規模な方法の一部にして、グリフ全体を規定するすべてのデスティネーションピクセル行を生成するのに、走査変換プロセス８１２によって使用されるソースサブピクセルのすべての行を通してループするようにすることもできる。
【００９６】
オーバーサンプリングレートが水平（すなわちＸ）方向に１６であるときにソースサブピクセルにアクセスする方法８１０′を述べたが、以下の４．３．２章に、オーバーサンプリングレートが２から２４までの間の場合にソースサブピクセルにアクセスする別のより一般的な例示的方法を述べる。
【００９７】
４．３．２  第２の例示的な方法（１＜Ｎ≦２４）
図１７は、２ビットから２４ビットまでの間のチャンク中のソースサブピクセルにアクセスする例示的な方法８１０″の流れ図である。まずステップ１７０５に示すように、最下位ビット中にＮ個の１を有する３２ビットマスク記憶構造（一般性を失わずに「レジスタ」とも呼ばれる）を規定する。このような３２ビットマスクレジスタは、例えば３２ビット記憶構造に２進数１をロードし、それを左にＮ回シフトし、１を引くことによって規定することができる。
【００９８】
ステップ１７１０と１７５５が、ソースサブピクセルのすべての行を通したループを規定する。ステップ１７１０と１７５５によって規定されるループ内では、変数「ＢＩＴＳＨＩＦＴ」を左サイドベアリングの余りに設定し、第１および第２の３２ビット記憶構造を規定してそれぞれ０に初期化し、カウントインデックスＩを０に初期化する。
【００９９】
ステップ１７２０と１７５０は、現在の行の中の各デスティネーションピクセル、すなわち走査変換動作から得られるピクセルを通したループを規定する。考慮される左サイドベアリングの余りがない場合は、デスティネーションピクセルの数は単に、行の中のソースサブピクセルの数をオーバーサンプリングレート（Ｎ）で割り、結果を最も近い整数に切り上げた数であることを想起されたい。しかし、左サイドベアリングの余りが考慮されるので、デスティネーションピクセルの数は、行の中のソースサブピクセルの数と左サイドベアリングの余りとの和をオーバーサンプリングレート（Ｎ）で割り、結果を最も近い整数に切り上げた数として決定することができる。ステップ１７２０と１７５０で規定されたループ内では、ステップ１７２５に示すように、変数「ＢＩＴＳＨＩＦＴ」をオーバーサンプリングファクタ（Ｎ）だけデクリメントする。次いで処理は決定ステップ１７３０に進む。
【０１００】
決定ステップ１７３０では、変数「ＢＩＴＳＨＩＦＴ」が０未満か否かを判定する。０未満の場合、処理はステップ１７３２に分岐し、そこで第１の３２ビット記憶構造の内容を左に８だけシフトする。次いでソースサブピクセルのＩ番目のバイトを３２ビット記憶構造の第１バイト（Ｒ１、ＢＹＴＥ０）に追加する。ステップ１７３６でインデックスＩをインクリメントし、ステップ１７３８で「ＢＩＴＳＨＩＦＴ」変数を８つインクリメントする。次いで、処理は分岐して決定ステップ１７３０に戻る。以上、「ＢＩＴＳＨＩＦＴ」変数が０未満の場合に発生する処理について述べた。一方、「ＢＩＴＳＨＩＦＴ」変数が０未満でない場合、処理はステップ１７３５に分岐し、そこで第１の３２ビット記憶構造の内容を第２の３２ビット記憶構造にコピーする。次いでステップ１７４０で、第２の３２ビット記憶構造を「ＢＩＴＳＨＩＦＴ」変数の分だけ右にシフトする。次いでステップ１７４５に示すように、第２の３２ビット記憶構造の内容と３２ビットマスクとの論理積をビットごとにとって、デスティネーションピクセルを生成するために走査変換プロセス８１２によって使用されるソースサブピクセルのチャンクを生成する。
【０１０１】
ステップ１７５０で、現在の行に対して処理すべきデスティネーションピクセルがまだ残っている場合は、処理は分岐してステップ１７２０に戻る。そうでない場合は、処理はステップ１７５５に分岐する。ステップ１７５５で、処理すべきソースサブピクセル行がまだある場合は、処理は分岐してステップ１７１０に戻る。そうでない場合は、「リターン」ノード１７６０を経由してこの方法を出る。
【０１０２】
ソースサブピクセルアクセスプロセス８１０を実施するための例示的な２つの方法を述べたが、以下の４．３．３章で、得られるデータ構造について述べ、以下の４．４章で、これらの方法の動作を示す例を提示する。
【０１０３】
４．３．３  データ構造
図２１に、本発明のソースサブピクセルアクセスプロセス８１０によって受け付けられ生成されるデータ構造を示す。スケーリングプロセス８０６および／またはヒンティングプロセス８０８からデータ２１１０が提供される。基本的にデータ２１１０は、「オーバーサンプリング済み」左サイドベアリング２１１２と、オーバーサンプリング済み文字のビットマップ２１１４を含む。技術的には、左サイドベアリング２１１２は厳密にはオーバーサンプリングされるのではなく、オーバーサンプリングレートに基づいて決定される。すなわち、「オーバーサンプリング済み」左サイドベアリング２１１２は、必ずしもオーバーサンプリングレートの整数倍ではない。
【０１０４】
ソースサブピクセルアクセスプロセス８１０は、データ２１２０あるいはデータ２１２０′を生成する。データ２１２０は、整数のダウンサンプリング済み左サイドベアリングデータ２１２２を含む。データ２１２０はまた、左サイドベアリングの余りを有するオーバーサンプリング済み文字のビットマップ２１２４も含む。代替データ２１２０′も同様に、整数のダウンサンプリング済み左サイドベアリングデータ２１２２を含む。ただしこの場合、データ構造２１２４は、左サイドベアリングの余りの分だけ左にシフトされたソースサブピクセルのＮビットの「チャンク」を含む（Ｎはオーバーサンプリングレート）。いずれの場合も、走査変換プロセス８１２は、整数のダウンサンプリング済み左サイドベアリング２１２２と、左サイドベアリングの余りを含むグリフ２１３４とを含むデータ２１３０を作成することができる。
【０１０５】
また、「オーバーサンプリング済み」またはダウンサンプリング済みのアドバンス幅情報をプロセス間で渡すこともできる。
【０１０６】
ソースサブピクセルアクセスプロセスによって受け付けられ生成されるデータ構造について述べたが、先の４．３．１章および４．３．２章で開示した方法の動作を示す例を以下の４．４章に提示する。
【０１０７】
４．５  動作例
以下の４．４．１章で、図１６の方法８１０′の動作の一例を述べる。次いで以下の４．４．２章および４．４．２章で、図１７の方法８１０″の動作の例を、オーバーサンプリングレートが１６よりも大きい場合と１６未満の場合の両方でそれぞれ述べる。
【０１０８】
４．４．１  第１の実施形態（Ｎ＝１６）の動作を示す例
図１８Ａ〜１８Ｆに、オーバーサンプリングレート１６に対応するソースサブピクセル行の２つの列（Ｃ１、Ｃ２）（または２つの１６ビットチャンク）に対する図１６の方法８１０′の動作の一例を示す。図１８Ａには、ある行の２つの列（または４バイト）に対するソースサブピクセル１８００が示してある。左サイドベアリングの余りＬＳＢＲが考慮されるので、走査変換プロセス８１２は、ソースサブピクセルの列２つ（Ｃ１、Ｃ２）または１６ビットチャンクだけではなく、ソースサブピクセルの列（またはチャンク）３つ（Ｃ１′、Ｃ２′、Ｃ３）を操作することになる。
【０１０９】
最初に、第１の３２ビット記憶構造１８１０にすべて０がロードされる。図１８Ｂに示すように、第１の３２ビット記憶構造では、この場合、ソースサブピクセルの第２バイト（Ｓ，ＢＹＴＥ１）がその第１バイト（Ｒ１，ＢＹＴＥ０）にロードされ、ソースサブピクセルの第１バイト（Ｓ，ＢＹＴＥ０）がその第２バイト（Ｒ１，ＢＹＴＥ１）にロードされる。（図１６のステップ１６３０を想起されたい。）ソースサブピクセルは「ビックエンディアン」の順番（すなわち、数の最下位部分が下位アドレスにある、またはバイトが左から右に並ぶ）で構成され、第１の３２ビット記憶構造は「リトルエンディアン」の順番（すなわち、数の最上位部分が上位アドレスにある、またはバイトが右から左に並ぶ）で構成されることに留意されたい。
【０１１０】
図１８Ｃに示すように、第１の３２ビットレジスタ１８１０の内容が第２の３２ビットレジスタ１８２０にロードされ、これらの内容が左サイドベアリングの残りの分だけ右にシフトされる。（図１６のステップ１６３５および１６４０を想起されたい。）第２の３２ビットレジスタ１８２０の最初の１６ビット（またはワードＷ０）が読み出され、第１のデスティネーションピクセルを決定するために走査変換プロセス８１２によって使用されるソースサブピクセルとして働く。（図１６のステップ１６４５を想起されたい。）
【０１１１】
次に図１８Ｂと１８Ｄの両方を参照すると、第１の３２ビットレジスタの内容が左に１６だけシフトされ、その結果、図１８Ｄに示す第１の３２ビットレジスタ１８１０′になっている。（ステップ１６５０を想起されたい。）
【０１１２】
走査変換プロセス８１２によって決定すべきデスティネーションピクセルがまだあるので、プロセス８１０′はループし、図１８Ｅに示すように、次の２バイト（すなわちＳ，ＢＹＴＥ２およびＳ，ＢＹＴＥ３）が第１の３２ビットレジスタ１８１０″の第２バイトおよび第１バイト（Ｒ１，ＢＹＴＥ１およびＲ１，ＢＹＴＥ０）にロードされる。（図１６のステップ１６３０を想起されたい。）
【０１１３】
次いで、第１の３２ビットレジスタ１８１０″の内容が第２の３２ビットレジスタ１８２０にコピーされ、左サイドベアリングの余りの分だけ右にシフトされる。図１８Ｆに、得られる第２の３２ビットレジスタ１８２０′の内容を示す。（図１６のステップ１６３５および１６４０を想起されたい。）第２の３２ビットレジスタ１８２０′の最初の１６ビットが読み出され、第２のデスティネーションピクセルを決定するために走査変換プロセス８１２によって使用されるソースサブピクセルとして働く。（図１６のステップ１６４５を想起されたい。）図示していないが、プロセス８１０′はループして、後続のソースサブピクセルへのアクセスを継続する。
【０１１４】
４．４．２  オーバーサンプルレートが１６よりも大きい第２の実施形態の動作を示す例
図１９Ａ〜１９Ｉに、オーバーサンプリングレート２０に対応するソースサブピクセル行の列２つ（Ｃ１、Ｃ２）に対する図１７の方法８１０″の動作の一例を示すが、ここで左サイドベアリングの余りは４である。図１９Ａには、ステップ１７０５で生成された３２ビットマスク１９０５を示す。図１９Ｂには、ソースサブピクセル１９１０と、デスティネーションピクセルを取り出すために走査変換プロセス８１２によって使用される２０個のソースサブピクセルのチャンクに対して左サイドベアリングの残りが与える影響とを示す。ステップ１７１５で「ＢＩＴＳＨＩＦＴ」変数が４にセットされ、次いでステップ１７２５で−１６（＝４−２０）に変更される。「ＢＩＴＳＨＩＦＴ」変数が０よりも大きいので、図１９Ｃに示すように、第１の３２ビット記憶構造が右に８だけシフトされ、ソースサブピクセルのｂｙｔｅ０が第１の３２ビット記憶構造１９２０に追加される。（図１７のステップ１７３２および１７３４を想起されたい。）インデックスカウントＩが１にインクリメントされ、「ＢＩＴＳＨＩＦＴ」変数が−８（＝−１６＋８）に変更される（ステップ１７３６および１７３８を想起されたい）。「ＢＩＴＳＨＩＦＴ」変数はまだ０未満なので、第１の３２ビット記憶構造は再び左に８だけシフトされ、記憶サブピクセルのｂｙｔｅ１が第１の３２ビット記憶構造に読み込まれる。（ステップ１７３０、１７３２、および１７３４を想起されたい。）図１９Ｄに第１の３２ビット記憶構造１９２０′の内容を示す。次いでインデックスカウントＩが２にインクリメントされ、「ＢＩＴＳＨＩＦＴ」変数が０（＝−８＋８）に変更される（ステップ１７３６および１７３８を想起されたい）。「ＢＩＴＳＨＩＦＴ」変数は０未満ではないので、第１の３２ビット記憶構造の内容が第２の３２ビット記憶構造にコピーされ、第２の記憶構造は「ＢＩＴＳＨＩＦＴ」ビットの分だけ右にローテートされる（「ＢＩＴＳＨＩＦＴ」が０なので実際には右のシフトは起こらない）。（ステップ１７３５および１７４０を想起されたい。）図１９Ｄに、得られる第２の３２ビット記憶構造１９３０を示す。マスク１９０５と第２の３２ビット記憶構造１９３０の内容との論理積をビットごとにとることにより、ソースサブピクセルの第１のチャンクが決定される。この演算の結果は図１９ＢのＣ１′に対応することに留意されたい。
【０１１５】
次のデスティネーションピクセルに向けて、「ＢＩＴＳＨＩＦＴ」変数が−２０（＝０−２０）に設定される。（ステップ１７５０、１７２０、および１７２５を想起されたい。）第１の３２ビット記憶構造が左に８だけシフトされ、ソースサブピクセルのｂｙｔｅ２が第１の３２ビット記憶構造に追加され、インデックスＩが３にインクリメントされ、ＢＩＴＳＨＩＦＴ変数が８つインクリメントされて−１２（＝−２０＋８）になる。（ステップ１７３２、１７３４、１７３６、および１７３８を想起されたい。）この結果、図１９Ｅに示す第１の３２ビット記憶構造１９２０″が得られる。「ＢＩＴＳＨＩＦＴ」変数が０未満なので、第１の３２ビット記憶構造が左に８だけシフトされ、ソースサブピクセルのバイト３が第１の３２ビット記憶構造に追加され、インデックスＩが４にインクリメントされ、ＢＩＴＳＨＩＦＴ変数が８つインクリメントされて−４（＝−１２＋８）になる。（ステップ１７３０、１７３２、１７３４、１７３６、および１７３８を想起されたい。）この結果、図１９Ｆに示す第１の３２ビット記憶構造１９２０'''が得られる。「ＢＩＴＳＨＩＦＴ」変数がまだ０未満なので、第１の３２ビット記憶構造が左に８だけシフトされ、ソースサブピクセルのｂｙｔｅ４が第１の３２ビット記憶構造に追加され、インデックスＩが５にインクリメントされ、ＢＩＴＳＨＩＦＴ変数が８つインクリメントされて４（＝−４＋８）になる。（ステップ１７３０、１７３２、１７３４、１７３６、および１７３８を想起されたい。）このとき「ＢＩＴＳＨＩＦＴ」変数は０未満ではないので、第１の３２ビット記憶構造の内容が第２の３２ビット記憶構造にコピーされ（図１９Ｇの１９３０′参照）、第２の３２ビット記憶構造が変数「ＢＩＴＳＨＩＦＴ」の分だけ右にシフトされる。この場合は右に４だけシフトされる。（ステップ１７３５および１７４０を想起されたい。）図１９Ｈに、得られる第２の３２ビット記憶構造１９３０″を示す。次いで、第２の３２ビット記憶構造の内容とマスク１９０５との論理積がビットごとにとられる。この結果、図１９Ｉに示す出力１９４０が得られる。この出力１９４０は、デスティネーションピクセルを取り出すのに使用されることになるソースサブピクセルの第２のチャンクＣ２′に対応することに留意されたい。
【０１１６】
後続のソースサブピクセルチャンクおよび後続の行も同様にアクセスされる。
【０１１７】
オーバーサンプル値が１６よりも大きい場合の図１７の方法８１０′の動作例を示したが、以下の４．４．３章で、オーバーサンプル値が１６未満の場合の図１７の方法８１０′の動作例について述べる。
【０１１８】
４．４．３  オーバーサンプルレートが１６未満である第２の実施形態の動作を示す例
図２０Ａ〜２０Ｅに、オーバーサンプリングレート１０に対応するソースサブピクセル行の列２つ（Ｃ１、Ｃ２）に対する図１７の方法８１０″の動作の一例を示すが、ここで左サイドベアリングの余りは４である。図２０Ａには、ステップ１７０５で生成された３２ビットマスク２００５を示す。図２０Ｂには、ソースサブピクセル２０１０と、デスティネーションピクセルを取り出すために走査変換プロセス８１２によって使用される１０個のソースサブピクセルのチャンクに対して左サイドベアリングの余りが与える影響とを示す。ステップ１７１５で「ＢＩＴＳＨＩＦＴ」変数が４に設定され、次いでステップ１７２５で−６（＝４−１０）に変更される。「ＢＩＴＳＨＩＦＴ」変数が０未満なので、図２０Ｃに示すように、第１の３２ビット記憶構造が右に８だけシフトされ、ソースサブピクセルのｂｙｔｅ０が第１の３２ビット記憶構造２０２０に追加される。（図１７のステップ１７３２および１７３４を想起されたい。）インデックスカウントＩが１にインクリメントされ、「ＢＩＴＳＨＩＦＴ」変数が２（＝−６＋８）に変更される（ステップ１７３６および１７３８を想起されたい）。「ＢＩＴＳＨＩＦＴ」変数は０未満ではないので、第１の３２ビット記憶構造の内容が第２の３２ビット記憶構造にコピーされ、第２の記憶構造は「ＢＩＴＳＨＩＦＴ」ビットの分だけ右にローテートされる（すなわち右に２だけシフトされる）（ステップ１７３５および１７４０を想起されたい）。図２０Ｄに、得られる第２の３２ビット記憶構造２０３０を示す。マスク２００５と第２の３２ビット記憶構造２０３０との論理積をビットごとにとることにより、ソースサブピクセルの第１チャンクが決定される。この演算の結果は図２０ＢのＣ１′に対応することに留意されたい。
【０１１９】
次のデスティネーションピクセルに向けて、「ＢＩＴＳＨＩＦＴ」変数が−８（＝２−１０）に設定される。（ステップ１７５０、１７２０、および１７２５を想起されたい。）第１の３２ビット記憶構造が左に８だけシフトされ、ソースサブピクセルのｂｙｔｅ２が第１の３２ビット記憶構造に追加され、インデックスＩが３にインクリメントされ、ＢＩＴＳＨＩＦＴ変数が８つインクリメントされて０（＝−８＋８）になる。（ステップ１７３２、１７３４、１７３６、および１７３８を想起されたい。）この結果、図２０Ｅに示す第１の３２ビット記憶構造１９２０′が得られる。このとき「ＢＩＴＳＨＩＦＴ」変数は０未満ではない（０に等しい）ので、第１の３２ビット記憶構造の内容が第２の３２ビット記憶構造にコピーされ（図２０Ｇの２０３０′参照）、第２の３２ビット記憶構造が変数「ＢＩＴＳＨＩＦＴ」の分だけ右にシフトされる（この場合、変数「ＢＩＴＳＨＩＦＴ」が０なので実際にはシフトは起こらない）。（ステップ１７３５および１７４０を想起されたい。）図２０Ｅに、得られる第２の３２ビット記憶構造１９３０′を示す。次いで、第２の３２ビット記憶構造の内容とマスク２００５との論理積がビットごとにとられる。この出力は、デスティネーションピクセルを規定するために走査変換プロセス８１２によって使用されることになるソースサブピクセルＣ２′の第２のチャンクに対応する。
【０１２０】
後続のソースサブピクセルチャンクおよび後続の行も同様にアクセスされる。
【０１２１】
本発明によって使用できる方法、装置、およびデータ構造、ならびに本発明が動作できる例示的な実施形態について述べたが、以下の４．５章で、本発明に関する結びの見解をいくつか提示する。
【０１２２】
４．５  結論
以上のことから本発明は、「ソースサブピクセル」とも呼ばれるオーバーサンプリングされたサブピクセルにアクセスするための方法、装置、およびデータ構造を開示し、アクセスすべきソースサブピクセルのブロックは、最終的な文字表示において左サイドベアリングの余り１４３０、１５３０が調整されるようにシフトされる。ソースサブピクセルは、オーバーサンプリングレートに対応するブロック（またはチャンク）で効率的にアクセスされる。
【図面の簡単な説明】
【図１】  ＬＣＤ表示装置上におけるサブピクセルコンポーネントの周知の構成を示す図である。
【図２】  図１の一部をより詳細に示す図である。
【図３】  周知の画像サンプリング動作を示す図である。
【図４】  文字情報を操作する周知の方式を示す図である。
【図５Ａ】  本発明の少なくともいくつかの態様を実装するのに使用できるコンピュータシステムのブロック図である。
【図５Ｂ】  本発明の少なくともいくつかの態様を実装するのに使用できるマシンの高レベルのブロック図である。
【図６】  本発明を用いることのできる画像サンプリング技術を示す図である。
【図７】  本発明が動作できる環境の高レベルのプロセスを示す図である。
【図８】  本発明が動作できる環境のグラフィックス表示インタフェースプロセスを示す図である。
【図９】  文字スケーリング動作の一例を示す図である。
【図１０】  文字ヒンティング動作の一例を示す図である。
【図１１】  文字走査変換プロセスを実施するための例示的な方法を示す図である。
【図１２】  オーバーサンプリングされた文字ビットマップに対する走査変換動作を示す図である。
【図１３】  オーバーサンプリングされた文字ビットマップのうちの１つの行に対する走査変換動作を示す図である。
【図１４】  左サイドベアリング情報が提供された場合の、オーバーサンプリングされた文字ビットマップに対する走査変換動作を示す図である。
【図１５】  左サイドベアリング情報が提供された場合の、オーバーサンプリングされた文字ビットマップのうちの１つの行に対する走査変換動作を示す図である。
【図１６】  本発明のソースピクセルアクセスプロセスを実施するための例示的な方法の流れ図である。
【図１７】  本発明のソースピクセルアクセスプロセスを実施するための別の例示的な方法の流れ図である。
【図１８Ａ】  図１６の例示的な方法の動作の一例を示す図である。
【図１８Ｂ】  図１６の例示的な方法の動作の一例を示す図である。
【図１８Ｃ】  図１６の例示的な方法の動作の一例を示す図である。
【図１８Ｄ】  図１６の例示的な方法の動作の一例を示す図である。
【図１８Ｅ】  図１６の例示的な方法の動作の一例を示す図である。
【図１８Ｆ】  図１６の例示的な方法の動作の一例を示す図である。
【図１９Ａ】  オーバーサンプリングレートが１６よりも大きい場合の、図１７の例示的な方法の動作の一例を示す図である。
【図１９Ｂ】  オーバーサンプリングレートが１６よりも大きい場合の、図１７の例示的な方法の動作の一例を示す図である。
【図１９Ｃ】  オーバーサンプリングレートが１６よりも大きい場合の、図１７の例示的な方法の動作の一例を示す図である。
【図１９Ｄ】  オーバーサンプリングレートが１６よりも大きい場合の、図１７の例示的な方法の動作の一例を示す図である。
【図１９Ｅ】  オーバーサンプリングレートが１６よりも大きい場合の、図１７の例示的な方法の動作の一例を示す図である。
【図１９Ｆ】  オーバーサンプリングレートが１６よりも大きい場合の、図１７の例示的な方法の動作の一例を示す図である。
【図１９Ｇ】  オーバーサンプリングレートが１６よりも大きい場合の、図１７の例示的な方法の動作の一例を示す図である。
【図１９Ｈ】  オーバーサンプリングレートが１６よりも大きい場合の、図１７の例示的な方法の動作の一例を示す図である。
【図１９Ｉ】  オーバーサンプリングレートが１６よりも大きい場合の、図１７の例示的な方法の動作の一例を示す図である。
【図２０Ａ】  オーバーサンプリングレートが１６未満の場合の、図１７の例示的な方法の動作の一例を示す図である。
【図２０Ｂ】  オーバーサンプリングレートが１６未満の場合の、図１７の例示的な方法の動作の一例を示す図である。
【図２０Ｃ】  オーバーサンプリングレートが１６未満の場合の、図１７の例示的な方法の動作の一例を示す図である。
【図２０Ｄ】  オーバーサンプリングレートが１６未満の場合の、図１７の例示的な方法の動作の一例を示す図である。
【図２０Ｅ】  オーバーサンプリングレートが１６未満の場合の、図１７の例示的な方法の動作の一例を示す図である。
【図２１】  本発明のソースサブピクセルアクセス方法によって受け付けられ生成される例示的なデータ構造を示す図である。
【図１】
0004818513.tif 000002
【図２】
0004818513.tif 000003
【図３】
0004818513.tif 000004
【図４】
0004818513.tif 000005
【図５Ａ】
0004818513.tif 000006
【図５Ｂ】
0004818513.tif 000007
【図６】
0004818513.tif 000008
【図７】
0004818513.tif 000009
【図８】
0004818513.tif 000010
【図９】
0004818513.tif 000011
【図１０】
0004818513.tif 000012
【図１１】
0004818513.tif 000013
【図１２】
0004818513.tif 000014
【図１３】
0004818513.tif 000015
【図１４】
0004818513.tif 000016
【図１５】
0004818513.tif 000017
【図１６】
0004818513.tif 000018
【図１７】
0004818513.tif 000019
【図１８Ａ】
0004818513.tif 000020
【図１８Ｂ】
0004818513.tif 000021
【図１８Ｃ】
0004818513.tif 000022
【図１８Ｄ】
0004818513.tif 000023
【図１８Ｅ】
0004818513.tif 000024
【図１８Ｆ】
0004818513.tif 000025
【図１９Ａ】
0004818513.tif 000026
【図１９Ｂ】
0004818513.tif 000027
【図１９Ｃ】
0004818513.tif 000028
【図１９Ｄ】
0004818513.tif 000029
【図１９Ｅ】
0004818513.tif 000030
【図１９Ｆ】
0004818513.tif 000031
【図１９Ｇ】
0004818513.tif 000032
【図１９Ｈ】
0004818513.tif 000033
【図１９Ｉ】
0004818513.tif 000034
【図２０Ａ】
0004818513.tif 000035
【図２０Ｂ】
0004818513.tif 000036
【図２０Ｃ】
0004818513.tif 000037
【図２０Ｄ】
0004818513.tif 000038
【図２０Ｅ】
0004818513.tif 000039
【図２１】
0004818513.tif 000040