(57)【特許請求の範囲】
【請求項１】
キャラクタをレンダリングする際に、フォントのキャラクタのシュミレート化ボールド化処理を実施するためのコンピュータ実施方法であって、
フォントが、そのフォントの１つまたは複数のキャラクタ用の埋め込み白黒ビットマップを含むかどうかを決定し、前記決定する動作において埋め込み白黒ビットマップを含む場合に、前記フォントの前記１つまたは複数のキャラクタ用の前記埋め込み白黒ビットマップからデータを入力し、前記決定する動作において埋め込み白黒ビットマップを含まない場合に、前記フォントの１つまたは複数のキャラクタ用のアウトラインデータを入力する動作と、
前記入力データが埋め込み白黒ビットマップからかあるいはアウトラインデータからかに関わらず、前記入力データから、前記フォントの前記キャラクタ用の白黒ビットマップを生成する動作と、
前記白黒ビットマップにアクセスする動作と、
前記白黒ビットマップを使用して、中間グレー・レベルを割り当てられた１又は複数のピクセルを含むボールド化されたアンチエイリアシング・ビットマップを生成する動作と、
前記アンチエイリアシング・ビットマップの値を、前記フォントの１つまたは複数のキャラクタのディスプレイの前記ピクセルにマッピングする動作とを含むことを特徴とするコンピュータ実施方法。
【請求項２】
前記白黒ビットマップを使用して、前記ボールド化されたアンチエイリアシング・ビットマップを生成する動作は、対応する入力ピクセルが白である出力ピクセルのうちの少なくとも１つについて、
前記対応する入力ピクセルの左隣の入力ピクセルが黒であることを決定する動作と、
前記対応する入力ピクセルの右隣の入力ピクセルが黒であることを決定する動作と、
前記それぞれの決定する動作に応じて前記出力ピクセルに中間グレー・レベルを割り当てる動作とを含むことを特徴とする請求項１記載のコンピュータ実施方法。
【請求項３】
前記中間グレー・レベルは、
前記対応する入力ピクセルの上隣の入力ピクセルが白であるか、黒であるかを決定する動作と、
前記対応する入力ピクセルの上隣の入力ピクセルが黒であると決定される場合に、上隣の入力ピクセルが白であると決定された場合に割り当てられることになるよりも明るい中間グレー・レベルを割り当てる動作とを実施することにより割り当てられることを特徴とする請求項２記載のコンピュータ実施方法。
【請求項４】
前記中間グレー・レベルは、
前記対応する入力ピクセルの下隣の入力ピクセルが白であるか、黒であるかを決定する動作と、
前記対応する入力ピクセルの下隣の入力ピクセルが黒であると決定される場合に、下隣の入力ピクセルが白であると決定された場合に割り当てられることになるよりも明るい中間グレー・レベルを割り当てる動作とを実施することにより割り当てられることを特徴とする請求項３に記載のコンピュータ実施方法。
【請求項５】
前記中間グレー・レベルは、
前記対応する入力ピクセルの下隣の入力ピクセルが白であるか、黒であるかを決定する動作と、
前記対応する入力ピクセルについての下隣の入力ピクセルが黒であると決定される場合に、下隣の入力ピクセルが白であると決定された場合に割り当てられることになるよりも明るい中間グレー・レベルを割り当てる動作とをさらに実施することにより割り当てられることを特徴とする請求項２に記載のコンピュータ実施方法。
【請求項６】
前記白黒ビットマップを使用して、ボールド化されたアンチエイリアシング・ビットマップを生成する前記動作は、
対応する出力ピクセルに中間グレー・レベルを適用する前記動作の実施によって、前記出力ピクセルを含む他のピクセルの値をボールド化されるようにするボールド化の方向に全体的に垂直な方向におけるピクセルのシーケンスのパスを識別する動作と、
前記対応する出力ピクセルに割り当てられた前記中間グレー・レベルの平均化を適用して、前記対応する出力ピクセルに対する最終的な中間グレー・レベルを生成する動作とをさらに含むことを特徴とする請求項５に記載のコンピュータ実施方法。
【請求項７】
前記白黒ビットマップを使用して、ボールド化されたアンチエイリアシング・ビットマップを生成する前記動作は、
対応する出力ピクセルに中間グレー・レベルを適用する前記動作の実施によって、出力ピクセルを含む他のピクセルの値をボールド化されるようにするボールド化の方向に全体的に垂直な方向におけるピクセルのシーケンスのパスを識別する動作と、
前記対応する出力ピクセルに割り当てられた前記中間グレー・レベルの平均化を適用して、前記対応する出力ピクセルに対する最終的な中間グレー・レベルを生成する動作とをさらに含むことを特徴とする請求項４記載のコンピュータ実施方法。
【請求項８】
前記白黒ビットマップを使用して、ボールド化されたアンチエイリアシング・ビットマップを生成する前記動作は、
対応する出力ピクセルに中間グレー・レベルを適用する前記動作の実施によって、出力ピクセルを含む他のピクセルの値をボールド化されるようにするボールド化の方向に全体的に垂直な方向におけるピクセルのシーケンスのパスを識別する動作と、
前記対応する出力ピクセルに割り当てられた前記中間グレー・レベルの平均化を適用して、前記対応する出力ピクセルに対する最終的な中間グレー・レベルを生成する動作とをさらに含むことを特徴とする請求項３記載のコンピュータ実施方法。
【請求項９】
前記白黒ビットマップを使用して、ボールド化されたアンチエイリアシング・ビットマップを生成する前記動作は、
対応する出力ピクセルに中間グレー・レベルを適用する前記動作の実施によって、出力ピクセルを含む他のピクセルの値をボールド化されるようにするボールド化の方向に全体的に垂直な方向におけるピクセルのシーケンスのパスを識別する動作と、
前記対応する出力ピクセルに割り当てられた前記中間グレー・レベルの平均化を適用して、前記対応する出力ピクセルに対する最終的な中間グレー・レベルを生成する動作とをさらに含むことを特徴とする請求項２記載のコンピュータ実施方法。
【請求項１０】
前記マッピングされたおよびボールド化されたアンチエイリアシング・ビットマップの１つまたは複数のキャラクタをディスプレイ上に表示する動作を
さらに含むことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項１１】
前記白黒ビットマップを使用して、ボールド化されたアンチエイリアシング・ビットマップを生成する前記動作は、
前記白黒ビットマップ中の傾斜した複数のストロークの間の接続箇所におけるボールド化の方向に対応する少なくとも１つの狭いキャップの存在を決定する動作と、
前記少なくとも１つの狭いキャップのおのおののチューブを構成する入力ピクセルに黒の値を割り当てる動作とを含むことを特徴とする請求項１に記載のコンピュータ実施方法。
【請求項１２】
コンピューティング・システムの１つまたは複数のプロセッサによって実行されるときに、前記コンピューティング・システムに、キャラクタをレンダリングする際に、フォントのキャラクタのシュミレート化ボールド化処理を実施するための方法を実施させるコンピュータ実行可能命令をその上に有する１つまたは複数のコンピュータ読取り可能記録媒体であって、前記方法は、
フォントが、そのフォントの１つまたは複数のキャラクタ用の埋め込み白黒ビットマップを含むかどうかを決定し、前記決定する動作において埋め込み白黒ビットマップを含む場合に、前記フォントの前記１つまたは複数のキャラクタ用の前記埋め込み白黒ビットマップからデータを入力し、前記決定する動作において埋め込み白黒ビットマップを含まない場合に、前記フォントの１つまたは複数のキャラクタ用のアウトラインデータを入力する動作と、
前記入力データが埋め込み白黒ビットマップからかあるいはアウトラインデータからかに関わらず、前記入力データから、前記フォントの前記キャラクタ用の白黒ビットマップを生成する動作と、
前記白黒ビットマップにアクセスする動作と、
前記白黒ビットマップを使用して、中間グレー・レベルを割り当てられた１又は複数のピクセルを含むボールド化されたアンチエイリアシング・ビットマップを生成する動作と、
前記アンチエイリアシング・ビットマップの値を、前記フォントの１つまたは複数のキャラクタのディスプレイのピクセルにマッピングする動作とを含むことを特徴とする１つまたは複数のコンピュータ読取り可能な記録媒体。
【請求項１３】
前記白黒ビットマップを使用して、前記ボールド化されたアンチエイリアシング・ビットマップを生成する動作は、対応する入力ピクセルが白である出力ピクセルのうちの少なくとも１つについて、
前記対応する入力ピクセルの左隣の入力ピクセルが黒であることを決定する動作と、
前記対応する入力ピクセルの右隣の入力ピクセルが黒であることを決定する動作と、
前記それぞれの決定する動作に応じて前記出力ピクセルに中間グレー・レベルを割り当てる動作とを含むことを特徴とする請求項１２に記載の１つまたは複数のコンピュータ読取り可能な記録媒体。
【請求項１４】
前記中間グレー・レベルは、
前記対応する入力ピクセルの上隣の入力ピクセルが白であるか、黒であるかを決定する動作と、
前記対応する入力ピクセルの上隣の入力ピクセルが黒であると決定される場合に、上隣の入力ピクセルが白であると決定された場合に割り当てられることになるよりも明るい中間グレー・レベルを割り当てる動作とを実施することにより割り当てられることを特徴とする請求項１３に記載の１つまたは複数のコンピュータ読取り可能な記録媒体。
【請求項１５】
前記中間グレー・レベルは、
前記対応する入力ピクセルの下隣の入力ピクセルが白であるか、黒であるかを決定する動作と、
前記対応する入力ピクセルの下隣の入力ピクセルが黒であると決定される場合に、下隣の入力ピクセルが白であると決定された場合に割り当てられることになるよりも明るい中間グレー・レベルを割り当てる動作とを実施することにより割り当てられることを特徴とする請求項１４に記載の１つまたは複数のコンピュータ読取り可能な記録媒体。
【請求項１６】
前記白黒ビットマップを使用して、ボールド化されたアンチエイリアシング・ビットマップを生成する前記動作は、
対応する出力ピクセルに中間グレー・レベルを適用する前記動作の実施によって、前記出力ピクセルを含む他のピクセルの値をボールド化されるようにするボールド化の方向に全体的に垂直な方向におけるピクセルのシーケンスのパスを識別する動作と、
対応する出力ピクセルに割り当てられた前記中間グレー・レベルの平均化を適用して、対応する出力ピクセルに対する最終的な中間グレー・レベルを生成する動作とをさらに含むことを特徴とする請求項１５に記載の１つまたは複数のコンピュータ読取り可能な記録媒体。
【請求項１７】
前記白黒ビットマップを使用して、ボールド化されたアンチエイリアシング・ビットマップを生成する前記動作は、
対応する出力ピクセルに中間グレー・レベルを適用する前記動作の実施によって、出力ピクセルを含む他のピクセルの値をボールド化されるようにするボールド化の方向に全体的に垂直な方向におけるピクセルのシーケンスのパスを識別する動作と、
前記対応する出力ピクセルに割り当てられた前記中間グレー・レベルの平均化を適用して、前記対応する出力ピクセルに対する最終的な中間グレー・レベルを生成する動作とをさらに含むことを特徴とする請求項１４に記載の１つまたは複数のコンピュータ読取り可能な記録媒体。
【請求項１８】
前記白黒ビットマップを使用して、ボールド化されたアンチエイリアシング・ビットマップを生成する前記動作は、
対応する出力ピクセルに中間グレー・レベルを適用する前記動作の実施によって、出力ピクセルを含む他のピクセルの値をボールド化されるようにするボールド化の方向に全体的に垂直な方向におけるピクセルのシーケンスのパスを識別する動作と、
前記対応する出力ピクセルに割り当てられた前記中間グレー・レベルの平均化を適用して、前記対応する出力ピクセルに対する最終的な中間グレー・レベルを生成する動作とをさらに含むことを特徴とする請求項１３に記載の１つまたは複数のコンピュータ読取り可能な記録媒体。
【請求項１９】
前記方法は、
前記マッピングされたおよびボールド化されたアンチエイリアシング・ビットマップの１つまたは複数のキャラクタをディスプレイ上に表示する動作を
さらに含むことを特徴とする請求項１２に記載の１つまたは複数のコンピュータ読取り可能な記録媒体。
【請求項２０】
前記白黒ビットマップを使用して、ボールド化されたアンチエイリアシング・ビットマップを生成する前記動作は、
前記入力ビットマップ中の傾斜した複数のストロークの間の接続箇所におけるボールド化の方向に対応する少なくとも１つの狭いキャップの存在を決定する動作と、
前記少なくとも１つの狭いキャップのおのおののチューブを構成する入力ピクセルに黒の値を割り当てる動作とを含むことを特徴とする請求項１２に記載の１つまたは複数のコンピュータ読取り可能記録媒体。
【請求項２１】
キャラクタをレンダリングする際に、フォントのキャラクタのシュミレート化ボールド化処理を実施するためのコンピュータ実施方法であって、
フォントが、そのフォントの１つまたは複数のキャラクタ用の埋め込み白黒ビットマップを含むかどうかを決定し、前記決定する動作において埋め込み白黒ビットマップを含む場合に、前記フォントの前記１つまたは複数のキャラクタ用の前記埋め込み白黒ビットマップからデータを入力し、前記決定する動作において埋め込み白黒ビットマップを含まない場合に、前記フォントの１つまたは複数のキャラクタ用のアウトラインデータを入力する動作と、
前記入力データが埋め込み白黒ビットマップからかあるいはアウトラインデータからかに関わらず、前記入力データから、前記フォントの前記キャラクタ用の白黒ビットマップを生成する動作と、
前記白黒ビットマップにアクセスする動作と、
前記白黒ビットマップを使用して、前記白黒ビットマップからの対応する入力ピクセルが白であるピクセルに対する、アンチエイリアシング・ビットマップの少なくとも１つの出力ピクセルに対して、
前記対応する入力ピクセルの左隣の入力ピクセルが黒であると決定すること、
前記対応する入力ピクセルの右隣の入力ピクセルが黒であると決定すること、
前記それぞれの決定する動作に応じて、前記出力ピクセルに中間の灰色レベルを割り当てること
を実行して、ボールド化されたアンチエイリアシング・ビットマップを生成する動作と、
前記アンチエイリアシング・ビットマップの値を、前記フォントの１つまたは複数のキャラクタのディスプレイの前記ピクセルにマッピングする動作とを含むことを特徴とするコンピュータ実施方法。
【請求項２２】
コンピューティング・システムの１つまたは複数のプロセッサによって実行されると、コンピュータに、キャラクタをレンダリングする際に、フォントのキャラクタのシュミレート化ボールド化処理を実行させる方法を実行させるコンピュータ実行可能命令を記録したコンピュータ読み取り可能な記録媒体であって、前記方法は、
フォントが、そのフォントの１つまたは複数のキャラクタ用の埋め込み白黒ビットマップを含むかどうかを決定し、前記決定する動作において埋め込み白黒ビットマップを含む場合に、前記フォントの前記１つまたは複数のキャラクタ用の前記埋め込み白黒ビットマップからデータを入力し、前記決定する動作において埋め込み白黒ビットマップを含まない場合に、前記フォントの１つまたは複数のキャラクタ用のアウトラインデータを入力する動作と、
前記入力データが埋め込み白黒ビットマップからかあるいはアウトラインデータからかに関わらず、前記入力データから、前記フォントの前記キャラクタ用の白黒ビットマップを生成する動作と、
前記白黒ビットマップにアクセスする動作と、
前記白黒ビットマップを使用して、前記白黒ビットマップからの対応する入力ピクセルが白であるピクセルに対する、アンチエイリアシング・ビットマップの少なくとも１つの出力ピクセルに対して、
前記対応する入力ピクセルの左隣の入力ピクセルが黒であると決定すること、
前記対応する入力ピクセルの右隣の入力ピクセルが黒であると決定すること、
前記それぞれの決定する動作に応じて、前記出力ピクセルに中間の灰色レベルを割り当てること
を実行して、ボールド化されたアンチエイリアシング・ビットマップを生成する動作と、
前記アンチエイリアシング・ビットマップの値を、前記フォントの１つまたは複数のキャラクタのディスプレイの前記ピクセルにマッピングする動作とを含むことを特徴とするコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、レンダリング技術に関し、より詳細には、フォント・キャラクタのアルゴリズム的なシミュレート化ボールド化処理（algorithmic simulated emboldening）を実施するための機構に関する。
【背景技術】
【０００２】
コンピューティング技術は、多種多様なアプリケーションを可能にする。これらのアプリケーションの一部は、例えばマウス、キーボード、マイクロフォン、カメラなどを介して人間ユーザからの入力を受け取ることにより、あるいは例えばスピーカ、ディスプレイまたはプリンタを介して人間ユーザに出力を供給することによって、人間とインターフェースする。とりわけ、視覚は、とても有力な人間の感覚機能であるので、人間ユーザは、計算結果を解釈し、かつ／またはアプリケーションとインターフェースするのに、ある種のプリンタまたはディスプレイに、通常、依存する。
【０００３】
表示されるものの一つは、キャラクタである。キャラクタの組は、（それがテキストであるか、そうでないかにかかわらず）論理的に、全体としてグループ化することができる。フォントは、キャラクタの論理的なグルーピングの一例を表す。とりわけ、フォントは、特定のスタイルおよびサイズで、印刷可能な、または表示可能な、キャラクタの一つの組である。フォントのキャラクタは、多くの場合に、「グリフ（glyph）」と名付けられる。
【０００４】
フォントのキャラクタ（グリフ）は、アウトライン（outline）または埋め込みビットマップ（embedded bitmap）によって記述することができる。アウトラインは、キャラクタ形状の輪郭を記述することによってキャラクタを記述する。そのようなアウトラインは、より簡単に拡大縮小することができる。ラスタ化（rasterization）プロセス中に、ソフトウェアは、所定の要求されたポイントサイズ、またはエム当たりのピクセル（Pixels Per EM)(ppem）の表示用の適切なビットマップに、アウトラインを変換することができる。
【０００５】
埋め込みビットマップは通常、特定のｐｐｅｍに対応する、手作業であらかじめデザインされたビットマップ画像である。埋め込みビットマップは通常、低いｐｐｅｍおよび中間のｐｐｅｍに対して、およびヒント情報のないアウトラインのラスタ化に由来するｐｐｅｍよりも高い画像品質を通常必要とするこれらのｐｐｅｍに対してのみ存在する。ヒンティング（hinting）は、低いｐｐｅｍに対してのレンダリングされた結果の品質を改善する（ビットマップを埋め込むことに比べられた）別の方法を表すアウトラインの条件付き修正である。
【０００６】
伝統的に、（ラテンなど）比較的少数のキャラクタと比較的単純なキャラクタ形状を有するフォントのキャラクタは、ヒント情報付きのアウトラインによって記述される。他方、（以降でＥＡとも称される東アジア（East Asia）のフォントなどの）多数のキャラクタと比較的複雑なキャラクタ形状を有するフォントのキャラクタは、ヒント情報のないアウトラインによって記述され、また通常（以降でＢＷとも称される）一連の埋め込み白黒ビットマップによって記述される。これらの、より複雑なフォントは、通常、幾つかの、ただし必ずしもすべてがそうではないが、低いｐｐｅｍおよび中間のｐｐｅｍの埋め込みビットマップを有する。さらに、この埋め込みビットマップは、必ずしもそのフォントにおけるキャラクタの全範囲（full repertoire）をカバーするとは限らない。非常にまれに、フォントは、アンチエイリアシング（以降ではＡＡとも称される）埋め込みビットマップを含んでいる。非常に少ないが、（以降でＣＴとも称される）ＣＬＥＡＲＴＹＰＥ（登録商標）フォーマットの埋め込みビットマップを含んでいるフォントもある。
【０００７】
一部の状況においては、キャラクタを「ボールドにする（bold）」ことが望ましいことがある。ボールドにされたキャラクタは、より重い視覚または印刷上の重みを有する傾向がある。ボールドにされたキャラクタは、しばしばそれらの対応するレギュラー重みキャラクタの代わりに提供される。キャラクタをボールドにすることが望ましいこともあるいくつかの場合が存在する。例えば、キャラクタは、しばしばキャラクタによって伝えられる意味を強調するためにボールドにされることがある。
【０００８】
フォントが、真のボールド・バージョン（bold version）を有する場合がある。その場合は、より重い重みを表すフォント・キャラクタの別個のデザインがあり、これらのデザインが、元のフォントに関連するものとしてレンダリング・ソフトウェアによって認識可能な方法で記憶されている。フォントのキャラクタに関連付けられた真のボールド・デザインは、元のレギュラー重みフォントのキャラクタに関して、一様なボールドにする変換（uniform bolding transformation）に必ずしも従うとは限らない。キャラクタの異なる要素は、キャラクタの固有の形態が与えられると、それぞれに見合った異なる方法でボールド化（embolden）される。多くの場合に、より正式な高品質のボールドにされた外観に寄与する、多くの主観的美的判断を考慮に入れるために、ボールド化フォントのカスタム・デザインには人間が関与させられる。
【０００９】
伝統的に、（ラテン・フォントなど）より少数のキャラクタと比較的単純なキャラクタ形状を有する最も一般的に使用されるフォントは、関連する真のボールド・バージョンを有する。しかし、フォントのカスタム・デザインに関連する時間とコストに起因して、より複雑なキャラクタと、より多数のキャラクタを有する、ほとんどのより大きなフォントは、関連する真のボールド・バージョンを有さない。さらに、これらの複雑なキャラクタ・セットについてのそのような真のボールド・フォントのデザインは、法外に高くつく可能性がある。結果として、ユーザがボールド・オプション（bold option）を選択する場合、シミュレート化ボールド化処理（simulated emboldening）が、レンダリング・エンジン（rendering engine）によって実行される。
【００１０】
シミュレート化ボールド化処理は、レギュラー・フォントからのデータに基づいてレンダリング・エンジンによって実施される自動的なアルゴリズム的プロシージャである。現在適用されるシミュレート化ボールド化処理は、必ずしも元のデザインの意図を配慮したり、あるいはボールド化フォント・データの品質および外観を改善する非常に多くの主観的判断を配慮したりするとは限らない、一様なアルゴリズムによって実施される。
【００１１】
シミュレート化ボールド化処理についての現在適用されるアルゴリズムは、より単純なキャラクタを有するフォントについては非常に判読しやすい結果をもたらすが、そのようなアルゴリズムは通常、より複雑で密度の高いキャラクタを有するフォントについては判読しやすい結果をもたらすことができない。
【００１２】
簡略化されたビューにおいては、レンダリング・プロセスは、３つのステージに分割することができる。第１のステージにおいては、フォント・ファイルからの情報がアクセスされ、また必要に応じてラスタライザ読取り可能（rasterizer-readable）フォーマットに変換される。第２のステージにおいて、ラスタライザ読取り可能フォント・フォーマットがビットマップと呼ばれる値の２次元アレイに変換されるラスタ化プロセスが行われる。ビットマップは、「単純ビットマップ（simple bitmap）」ではピクセル当たりに１つの値を有し、ＣＬＥＡＲＴＹＰＥ（登録商標）ビットマップの場合におけるような「オーバースケールビットマップ（overscaled bitmap）」では、ピクセル当たりに複数の値を有することになる。値は、白黒（ＢＷ）ビットマップでは、単なる２進値（例えば、０または１）とし、ＡＡビットマップでは、値の範囲（例えば、０から１６まで）とすることができる。第３のステージでは、ディスプレイのピクセル（またはピクセル・サブ・コンポーネント）に対するビットマップ値の実際のマッピングが行われ、表示されるキャラクタがもたらされる。
【００１３】
シミュレート化ボールド化処理は、ラスタ化プロセス中の第２のステージにおいて行われる。ビットマップ値をディスプレイに対してマッピングする第３のステージは、特定のボールド化アルゴリズムの選択、および／またはあるアルゴリズムが選択された後のパラメータをチューニングすることに影響を及ぼし得るが、特定の種類のマッピングは、本発明の基本的な原理および実施形態を説明する際に、明確にするために説明から省略することができる。シミュレート化ボールド化処理のアルゴリズムが、ラスタ化プロセスの第２のステージ中に行われるので、第２のステージの処理は、本明細書中で論じられる主要なステージになる。
【００１４】
現在では、３つの主要なレンダリング・モード、すなわち白黒（ＢＷ）、アンチエイリアシング（ＡＡ）およびＣＬＥＡＲＴＹＰＥ（登録商標）（ＣＴ）が存在する。従来、ラスタ化ステージにおいて、レンダリング・モードは、ビットマップの最終フォーマットと、特にボールド化が適用される場合には、ボールド化されたビットマップの出力フォーマットを定義する。
【００１５】
レンダリング・モードの選択に影響を及ぼし得る様々なファクタが存在する。そのようなファクタは、例えばデバイスの特性および設定、要求されるｐｐｅｍ、フォント・データ（例えば、埋め込みビットマップの存在、（オープンタイプ（ＯＰＥＮＴＹＰＥ）（登録商標）／ＴｒｕｅＴｙｐｅフォントのファイルにおけるような）「ｇａｓｐ」テーブルの存在および内容）、要求される任意の幾何学的変形の存在および種類を含むことができる。他のファクタが、レンダリング・モードの選択に影響を及ぼす可能性がある。例えば、フォントの「複雑さ」は、レンダリング・モードを選択する際に考慮することができる。例えば、ＢＷレンダリング・モードを適用し、比較的複雑なフォントについて埋め込みＢＷビットマップを使用し、ＣＴレンダリング・モードを適用し、比較的複雑でないフォントについて埋め込みＢＷビットマップを完全に無視することを決定することができる。
【００１６】
レンダリング・モードの選択は、必ずしもディスプレイ・デバイスのすべての可能性を十分に実現するとは限らない。多くの状況において、選択は、ソフトウェアによって行われ、異なる条件下で人間の目にとって読みやすさや読みにくさがある個々のレンダリング・モードについての一般的な体験に基づいている。例えば、低いｐｐｅｍにおいて、ＡＡレンダリング・モードは通常、特にフォントがＢＷ埋め込みビットマップを含む場合には、ＢＷモードよりも低品質のレンダリング結果をもたらす。したがって、「ｇａｓｐ」テーブル中のフラグは、たとえディスプレイ・デバイスの大部分がグレーの濃淡（shade）を表示することができるとしても、低いｐｐｅｍのキャラクタをレンダリングするときに、適用すべきＢＷレンダリング・モードを強制することができる。ＣＬＥＡＲＴＹＰＥ（登録商標）に関しても同じことが当てはまる。例えば、たとえディスプレイ・デバイスが、ＣＴモードでレンダリングする機能を有するとしても、埋め込みＢＷビットマップがフォント中に存在する場合のより低いｐｐｅｍでの比較的複雑なフォントについて、ＢＷレンダリング・モードを適用することを決定することができる。選択されたレンダリング・モードは、最良のユーザ体験をもたらすべきであり、別のレンダリング・モードが、より良いレンダリング結果をもたらすように見える場合には、変更することができる。
【００１７】
現在では、レギュラー重みキャラクタとボールド重みキャラクタは一般的に、他のすべての条件が同じであることを仮定すると同じレンダリング・モードでレンダリングされる。しかし、この決定は、どのような内部要件も反映せず、別のアプローチが、より良いレンダリング結果をもたらすことが示されることになる場合には、上書きすることができる。
【００１８】
ビットマップ・ボールド化処理のための現行のアルゴリズムは一般に、入力および出力について同じタイプのビットマップを使用し、これは、ボールド化アルゴリズムについてレンダリング・モードが、入力タイプも出力タイプも、一般に暗黙のうちに設定することを意味する。しかし、この依存性は、一般的に必須ではない。
【００１９】
ラスタ化プロセスは、レギュラー重み、およびシミュレートされるボールド重みについて同じ主要なステップを通過する。１つの違いは、シミュレート化ボールド化処理の形態が適用される場合、追加のボールド化ステップが、ラスタ化プロセス中において使用されることである。このボールド化ステップは、それがレギュラー重みについて実施されることになるときにラスタ化のフローを途中で横取りし（intecept）、必要なボールド化オペレーションを実施し、次いでラスタ化のフローをレギュラー重みの場合におけるように正確に継続させる。したがって、ボールド化ステップが、その適切なラスタ化のコンテキストで理解することができるように、レギュラー重み用のラスタ化処理のある一般的なバックグラウンドの説明が今や存在することになる。
【００２０】
ラスタライザは、フォントの特定の特性（characteristics）に、または要求されている異なるレンダリング条件に、関連した多数の異なるパラメータを受け入れることができる。シミュレート化ボールド化処理の従来のモデルを説明する目的のために、本発明者等は、ラスタライザに与えられる、以下の入力情報に焦点を合わせることにする。
・要求されているキャラクタの識別に関する情報（例えば、ユニコード・キャラクタ・コード）。
・サイズ（ｐｐｅｍ）、異なる幾何学的変換（non-identical geometrical transformation）の存在、シミュレート化ボールド化処理についての要求などのレンダリング条件に関する情報。シミュレート化ボールド化処理が要求される場合に、「重さ（heaviness）」（ボールド化の量）およびボールド化の方向を識別する幾つかの追加パラメータが、ラスタライザに渡されることになる（より詳細に以下で説明される）。
・フォント・ファイルに由来する情報：埋め込みビットマップが、同じ条件についての特定のキャラクタまたはキャラクタの和について存在するかどうか、特定のキャラクタについての埋め込みビットマップまたは／およびアウトライン・データの記述に対するアクセス、特定のｐｐｅｍについての好ましいレンダリング・モードなど、デザイナによって指定される情報など。
・レンダリング・モードに関する情報（これらは、結果として生ずるビットマップのフォーマットを定義する）：レンダリング・モードＢＷ、ＡＡ、またはＣＴの仕様、および追加の要求される任意の情報（例えば、ＡＡボールド化の場合には−要求されたグレー・レベル数）。
【００２１】
ラスタライザは、入力情報に基づいて適切なラスタ化を実施することになり、結果として生ずるビットマップのサイズおよび位置決めに関連したメトリック情報（metric information）と一緒に、要求されたレンダリング・モードに対応するフォーマットで、結果として生ずるビットマップを供給することになる。
【００２２】
以下の好ましい実施形態の節の詳細な説明に述べられるボールド化シミュレーションの新しいアルゴリズムは、メトリック情報を必ずしも修正することを意図していないので、従来のラスタ化プロセスのビットマップ出力が、次に説明される。
【００２３】
従来のＢＷレンダリングのためのラスタ化プロセスは、特定の例に関して、また図１に関して次に説明される。ＢＷレンダリング・モードにおいて、ラスタライザは通常、もし存在するなら、埋め込みＢＷビットマップを使用することになる。図１の例において、ユニコード「ギリシャ語大文字ＭＵ（GREEK CAPITAL LETTER MU）」がレンダリングされるべきであるものと仮定する。キャラクタおよび要求された条件のＢＷビットマップが存在する場合（図１におけるブランチ「（ＢＷ：埋め込みＢＷ単純ビットマップ（Embedded BW Simple Bitmap））」）、次ぎに埋め込みＢＷビットマップが、ラスタ化のために使用される。次ぎに、ラスタライザからのＢＷ値は、ラスタライザの外部のソフトウェアによって実際の（複数の）ピクセル・カラーにマッピングされる。
【００２４】
キャラクタおよび要求された条件のＢＷビットマップが存在しない場合（図１におけるブランチ「（ＢＷ：アウトラインから単純ビットマップ（Outline to Simply Bitmap））」）、次いで単純ビットマップは、スキャン変換アルゴリズムをアウトラインに対して適用することにより、フォント中に存在するアウトライン情報を使用してレンダリングされる。埋め込みビットマップが、もし存在するなら使用される理由は、ヒント情報のないフォントでは、アウトラインのレンダリングによって生成されるビットマップは通常、埋め込みビットマップよりも低品質を有するからである。
【００２５】
どちらのアプローチが使用されているとしても、最終出力は、同じフォーマット、すなわち単純ＢＷビットマップである。このラスタ化プロセスの重要な特性は、このラスタ化プロセスが、最終的な出力ビットマップの計算の任意の中間ステップにおいて、オーバー・スケーリングされたビットマップを使用しないことである。計算のすべてのステージにおいて、ピクセル当たりに１つの値しか存在しない。
【００２６】
従来のＡＡレンダリングのラスタ化プロセスは、次に特定の例に関して、また図２Ａおよび２Ｂに関して説明されることになる。ＡＡレンダリング・モードにおいて、ラスタライザは通常、レンダリングすべきフォント中において、もし存在するなら埋め込みＡＡビットマップ（図２Ａにおけるブランチ「（ＡＡ：埋め込みＡＡ単純ビットマップ（Embedded AA Simple Bitmap））」）を使用する。ほとんどのフォントが埋め込みＡＡビットマップを有さないので、ブランチ「（ＡＡ：埋め込みＡＡ単純ビットマップ）は、ほとんどの場合決して実行されない。
【００２７】
他方、埋め込みビットマップが、キャラクタおよび要求された条件について存在しない場合には、単純ＡＡビットマップが、フォント（図２Ｂにおけるブランチ「（ＡＡ：オーバー・スケーリングされたビットマップから単純ビットマップ（Overscaled to Simple Bitmap））」に続く図２Ａにおけるブランチ「（ＡＡ：アウトラインからオーバー・スケーリングされたビットマップ（Outline to Overscaled Bitmap））」）中に存在するアウトライン情報を使用してレンダリングされる。ラスタ化が、アウトライン情報から出発するときに、ラスタ化は、２つの独立したステージ：（ＡＡ：アウトラインからオーバー・スケーリングされたビットマップ）および（ＡＡ：オーバー・スケーリングされたビットマップから単純ビットマップ）を通過する。ステージ（ＡＡ：アウトラインからオーバー・スケーリングされたビットマップ）中に使用されるアウトライン・データに基づいたオーバー・スケーリングされたビットマップの計算のためのアルゴリズムと、ステージ（ＡＡ：オーバー・スケーリングされたビットマップから単純ビットマップ）中の単純ＡＡビットマップの最終値の計算のためのアルゴリズムは、互いに依存してはおらず、これらが必要とされる入力フォーマットおよび出力フォーマットを用いて動作する限り、独立に修正することができる。
【００２８】
どちらのアプローチが使用されているにしても、最終出力は、同じフォーマット、すなわち単純ＡＡビットマップを有する。このラスタ化プロセスの重要な特性は、埋め込みＡＡビットマップが存在しないときに、ラスタ化プロセスは、オーバー・スケーリングされたビットマップを最終出力ビットマップの計算の中間結果として使用することである。
【００２９】
ラスタ化プロセスが、ＢＷレンダリング・モードおよびＡＡレンダリング・モードのおのおのについて、一般に説明されたので、説明は、従来のＢＷボールド化アルゴリズムおよびＡＡボールド化アルゴリズムへと進む。入力のタイプに応じて、ボールド化シミュレーションのアルゴリズムは、２つの大きなグループ、すなわち「ビットマップ・ボールド化」と「アウトライン・ボールド化」とに再分割される。様々なボールド化パラメータに加えて、ビットマップ・ボールド化アルゴリズムは、ビットマップを入力として受け入れるが、アウトライン・ボールド化アルゴリズムは、アウトラインをその入力として受け入れる。ビットマップ・ボールド化は、ビットマップをその出力として戻すが、アウトライン・ボールド化は、修正されたアウトラインを戻し、この修正されたアウトラインは、後でスキャン変換されて、ビットマップを生成することになる。
【００３０】
ビットマップ・ボールド化アルゴリズムとアウトライン・ボールド化アルゴリズムは、ラスタ化プロセスの異なるステージにおいて適用される。アウトライン・ボールド化は、それがレギュラー重みについて実施されることになるので、ラスタ化プロセスの第１のステップの前に常に適用されることになる。アウトライン・ボールド化が実施された後に、ラスタ化は、それがレギュラー重みの場合にまさにそうなるように継続することになる。
【００３１】
現在では、アウトライン・ボールド化は、ほとんどの場合決して適用されない。ビットマップ・ボールド化は、ささいでない幾何学的変形がテキストに適用されるまれな場合を除いて、ほとんどの状況においてほとんどのアプリケーションによって実施される。ビットマップ・ボールド化を適用する機能は、埋め込みビットマップを有するキャラクタに依存しない。したがって、ビットマップ・ボールド化は、埋め込みビットマップを有するか、あるいは有さないキャラクタに適用することができる。キャラクタが要求された条件の埋め込みビットマップを有さない場合、アウトライン情報に基づいたスキャン変換の結果は、ビットマップ・ボールド化アルゴリズムのための入力としての役割を果たすことになる。本発明の原理は、より多くをビットマップ・ボールド化に適用しており、したがっていくつかの従来のビットマップ・ボールド化アルゴリズムが、次に説明されることになる。
【００３２】
定義によって、ビットマップ・ボールド化アルゴリズムは、ビットマップをそれらの入力として受け入れ、ビットマップをそれらの出力として戻す。ビットマップそれ自体に加えて、ビットマップ・ボールド化アルゴリズムは通常、ボールド化の重さおよび方向に関する情報を受け入れる。この情報は、それぞれ水平方向および垂直方向の一対の「ボールド化シフト」によって表現することができる。ボールド化シフトは、（ピクセルで表現された）どれだけの量だけ、ボールド化されたビットマップが、視覚的に元のビットマップよりも重くなるべきであるかを明らかにし、シフトの符号は、ボールド化の（右／左および上／下への）方向を示している。ほとんどの現在のアプリケーションは、ピクセルの総数だけに対応するボールド化シフトを用いて動作する。さらに、低／中間ｐｐｅｍにおいて、また高ｐｐｅｍの低い側の範囲においてさえ（例えば、約５０ｐｐｅｍまで）、右へ１ピクセルの（また垂直方向に０ピクセルの）シミュレート化ボールド化処理が通常、適用される。
【００３３】
入力ビットマップは、（埋め込みビットマップやグリフのアウトラインなど）異なるデータからのものとすることが可能であり、異なった方法で計算することができる。入力ビットマップが計算される特定の方法は、ビットマップに適用されるボールド化アルゴリズムとは無関係である。重要なことは、入力ビットマップのどのフォーマットがボールド化アルゴリズムによって予想されるかと、アルゴリズムがどのフォーマットの出力ビットマップを生成することになるかである。したがって、様々なボールド化アルゴリズムは、入力ビットマップおよび出力ビットマップのフォーマットに基づいて区別されることになる。
【００３４】
ラスタ化プロセスの異なるステップが、異なるフォーマットのビットマップを用いて動作するので、異なる種類のビットマップ・ボールド化アルゴリズムは、ラスタ化プロセスの異なるステップにおいて適用することができる。しかし、現在適用されるビットマップ・ボールド化アルゴリズムは、多くの場合に（ＢＷフォーマット、ＡＡフォーマットまたはＣＴフォーマットの）単純ビットマップと共に開始され、それらの入力と同じフォーマットの単純ビットマップを生成する。
【００３５】
ほとんどの現在適用されるビットマップ・ボールド化アルゴリズムは、オーバー・スケーリングされたビットマップの計算を伴うラスタ化プロセス中でさえ、入力としても出力としても、単純ビットマップを用いて動作する。オーバー・スケーリングされたビットマップが計算される場合に、ボールド化処理は、オーバー・スケーリングされたビットマップが、単純ビットマップに変換された後に適用される。
【００３６】
さらに、ほとんどの現在適用されるビットマップ・ボールド化アルゴリズムは、入力ビットマップ・フォーマットと全く同じ出力ビットマップ・フォーマットを有する。
【００３７】
さらに、これらのアルゴリズムは、しばしば入力ビットマップにおいてオフであり、またはより明るかった諸ピクセルの一部を、オンにし、またはもっと暗くすることもあり、またしばしば諸ピクセルをオフにせず、またはそれらをもっと明るくしないこともある。
【００３８】
従来のアルゴリズムはまた、一般的に、ボールド化の方向における（低い／中間のｐｐｅｍについての）１つ、または複数の隣接したピクセルなど、入力ビットマップの局所的な特性に基づいて特定のピクセルの値を修正すべきかどうかを決定する。現在使用されているアルゴリズムは、ボールド化と直角な方向における隣接したピクセルの情報を使用してはいない。
【００３９】
さらに、従来のアルゴリズムは、（水平ボールド化の場合には）行ごとに、また（垂直ボールド化の場合には）列ごとに動作し、それ故に、これらのアルゴリズムは、一度に一方向（水平または垂直のどちらか）だけを解析する。換言すれば、結果として生ずるピクセル値は、行だけ、または列だけのいずれかにおける隣接ピクセルに依存し、２次元の近傍を考慮には入れてはいない。
【００４０】
現在適用されているビットマップ・ボールド化アルゴリズムは、水平方向または垂直方向に適用することができる。水平方向および垂直方向についてのこれらのアルゴリズムは、方向性が変化するだけで本質的に対称である。一般に、水平ボールド化と垂直ボールド化についてのこれらのアルゴリズムは、混在しない。換言すれば、ボールド化が両方の方向に適用されるべき場合、その場合にはボールド化は、まず一方向で適用されることになり、次いで第１の方向におけるボールド化の結果に対して別の方向で適用される。
【００４１】
さらに、入力ビットマップを含む長方形のピクセル区域に加えて、諸アルゴリズムは通常、パラメータとして受け入れたボールド化シフトの値に応じて、その長方形区域に隣接した１つまたは複数の行、および／または１つまたは複数の列に影響を及ぼす。
【００４２】
低い／中間のｐｐｅｍ（すなわち、約５０ｐｐｅｍまで）では、これらのアルゴリズムは通常、水平方向に右に１ピクセルだけボールド化を適用する。低い／中間のｐｐｅｍは、レンダリングされたその画像の品質が特に解決されるべき課題で、また既存のアルゴリズムの改善が特に必要とされる、エリアであることに注意すべきである。
【００４３】
図３Ａによって示されるように、ＢＷレンダリング・モードにおいては、従来のボールド化アルゴリズムは、ＢＷ単純ビットマップを入力として受け入れ、ＢＷ単純ビットマップを出力として生成する。ボールド化アルゴリズムは、それがレギュラー重みの場合に適用されることになるのでレンダリング・プロセスの終わりに実施される（例えば、この説明については図１を参照されたい）。
【００４４】
特に、要求された条件用の埋め込みビットマップがフォント中に存在する場合（図３ＡにおけるＹＥＳ）、以降で「（ＢＷ：ビットマップ単純レギュラーからビットマップ単純ボールド（Bitmap Simple Regular to Bitmap Simple Bold））」とも呼ばれるＢＷボールド化アルゴリズムは、以降で「（ＢＷ：埋め込みＢＷ単純ビットマップ（Embedded BW Simple Bitmap））」（図１の左半分を参照）と呼ばれるステップの出力ビットマップに適用される。代わりに、要求された条件の埋め込みビットマップがフォント中に存在しない場合（図３ＡにおけるＮＯ）には、ステップ（ＢＷ：ビットマップ単純レギュラーからビットマップ単純ボールド）は、以降で、ラスタ化がアウトライン・データに基づいている場合に「（ＢＷ：アウトラインから単純ビットマップ（Outline to Simple Bitmap））」（図１の右半分を参照）と呼ばれるステップの後に実施される。
【００４５】
入力ビットマップも出力ビットマップもＢＷ単純ビットマップになるための（ＢＷ：ビットマップ単純レギュラーからビットマップ単純ボールド）における要件は、全く柔軟性がない。これらの制約条件に従って、ボールド化アルゴリズムは、入力ビットマップ中においてオフにされていた（値０を有した）ピクセルの一部を、出力ビットマップ中でオンにする（すなわち、値１を割り当てる）ことができるだけである。
【００４６】
例えば、ビットマップが水平方向に右に１ピクセルだけボールド化されるべき場合には、本明細書中において、「＜ＢＷ：Ａｌｇ規格＞」と呼ばれる一般的に使用されるアルゴリズムは、以降のように動作する。元のビットマップ中の行ごとに、すぐ左に隣接する「黒」の（すなわち、オンにされた）ピクセルを有するすべてのピクセルをオンにする。
【００４７】
このアルゴリズムの適用の一例が、図３Ｂにも図３Ｃにも示されており、これらの図においては、ラスタライザの外部のソフトウェアによる白黒カラーへのマッピングの後のそのアルゴリズムの入力と出力が示されている。図３Ｂから分かるように、アルゴリズム＜ＢＷ：Ａｌｇ規格＞は、制約条件を考慮して完全に妥当なオペレーションを実施する。しかし、図３Ｃ中のキャラクタは、同じボールド化アルゴリズムを使用してレンダリングされる。図３Ｃから明らかなように、キャラクタが比較的複雑な場合には、ボールド化アルゴリズムは、出力キャラクタを認識できないようにしてしまう。
【００４８】
図４Ａによって示されるように、ＡＡレンダリング・モードにおいては、従来のボールド化アルゴリズムは、ＡＡ単純ビットマップを入力として受け入れ、ＡＡ単純ビットマップを出力として生成する。ボールド化アルゴリズムは、それがレギュラー重みの場合に適用されることになるのでレンダリング・プロセスの終わりまで待つ。特に、要求された条件のＡＡビットマップを有するキャラクタのレンダリング（図４ＡにおけるＹＥＳ）では、単純ＡＡビットマップは、ステップ（ＡＡ：埋め込みＡＡ単純ビットマップ）（図２Ａの左半分を参照）に示されるように埋め込みＡＡビットマップデータに基づいて生成される。他方、要求された条件についてＡＡビットマップを有さないキャラクタのレンダリング（図４ＡにおけるＮＯ）では、単純ＡＡビットマップは、キャラクタのアウトラインに基づいて、ステップ（ＡＡ：アウトラインからオーバー・スケーリングされたビットマップ）および（ＡＡ：オーバー・スケーリングされたビットマップから単純ビットマップ）（図２Ａの右半分を参照）を使用して生成される。どちらの場合にも、以降で「（ＡＡ：ビットマップ単純レギュラーからビットマップ単純ボールド）」と呼ばれるＡＡボールド化ステップが、出力ビットマップに対して適用される。
【００４９】
以降で「＜ＡＡ：Ａｌｇ規格＞」と呼ばれる従来のＡＡボールド化アルゴリズムは、単純ＡＡビットマップ上で動作し、この単純ＡＡビットマップは、ピクセルごとに、オーバースケールビットマップ中のオンにされたサブ・ピクセル数を表す。このアルゴリズムは、簡単な「付加的な」原理に従って動作し、隣接するピクセルについてのオンにされたサブ・ピクセル数を累積する。このアルゴリズムは、ピクセル内のサブ・ピクセルの正確な位置を用いて動作するのではなくて、むしろピクセル内のオンにされたサブ・ピクセル数に関する累積情報を用いて動作する。
【００５０】
このアルゴリズムは、これらの累積値だけを用いて動作するが、それらの結果は、オーバー・スケーリングされたビットマップ上で直接に動作することになる最も単純なアルゴリズムと非常に類似しており、ピクセル中のサブ・ピクセル数により、オーバー・スケーリングされたビットマップを一様にボールド化し、これは、従来のアルゴリズムについて妥当な根拠を提供する。しかし、この問題は、より複雑なキャラクタに対して、現行のアルゴリズムは、判読可能な結果を生成しないことである。
【００５１】
右に１ピクセルだけのボールド化では、従来のＡＡボールド化アルゴリズム＜ＡＡ：Ａｌｇ規格＞は、以下のようになる。  
１）元のビットマップ中の行ごとに、右から左へと進む。  
２）ピクセルごとに、  
２ａ）ピクセルそれ自体の値にすぐ左隣のピクセルの値を追加する。  
２ｂ）結果として生ずる値が、特定のフォーマットにおいて許容される最大値を超過する場合、ピクセルの最大値を割り当てる。
【００５２】
このアルゴリズムの適用の一例が、図４Ｂに示されている。この例は、レギュラー重みについてのＡＡモードにおけるレンダリングに関連した、上述で（図２Ａおよび２Ｂで）与えられた「ウェーブ（wave）」キャラクタに関連した例を継続するものである。
【発明の開示】
【発明が解決しようとする課題】
【００５３】
したがって、有利になるのは、複雑なキャラクタの場合でさえ、ボールド化されたキャラクタが、より判読可能で、読取り可能となるＢＷおよびＡＡのシミュレート化ボールド化機構である。
【課題を解決するための手段】
【００５４】
本発明の原理は、入力白黒ビットマップをボールド化するための機構および方法に関する。入力白黒ビットマップにアクセスした後に、シミュレート化ボールド化処理は、入力白黒ビットマップを使用して、ボールド化されたアンチエイリアシング・ビットマップを生成し、それによって従来のシミュレート化ボールド化技法に比べてボールド化されたキャラクタの外観および読取り可能性を改善している。
【００５５】
本発明の追加の実施形態は、以下に続く記述で説明されることになり、部分的にその説明から明らかになり、あるいは本発明の実行により学習することができる。本発明の実施形態は、特許請求の範囲において特に指摘される機器および組合せを用いて実現し、取得することができる。本発明のこれらの実施形態および他の実施形態は、以降の説明および添付の特許請求の範囲から、より十分に明らかになり、あるいは以降で記述される本発明の実行により学習することができる。
【００５６】
本特許または出願のファイルは、カラーで実行される少なくとも１枚の図面を含んでいる。１枚（または複数枚）のカラー図面を有する本特許または特許出願公開のコピーは、要求および必要な料金の支払いに応じて、米国特許商標庁によって提供されることになる。
【００５７】
本発明の、以上に列挙の、または他の利点および特徴を得ることができる方法について説明するために、以上で簡潔に説明された本発明のより詳細な説明が、添付の図面に示されるその特定の実施形態に関して表現されることになる。これらの図面は、本発明の典型的な実施形態だけを示しており、したがってその範囲を限定するものとは考えられていないことを理解して、本発明は、添付図面の使用によって、さらなる特定性および詳細を伴って記述され説明されることになる。
【発明を実施するための最良の形態】
【００５８】
本発明の原理は、改善されシミュレート化ボールド化機構に関し、これは、たとえややこしく複雑なキャラクタおよび／または小さなポイントサイズで表示されたキャラクタの場合でさえ、ボールド化されたキャラクタについての判読可能性および読取り可能性をかなり改善する。シミュレート化ボールド化法は、単純ＢＷビットマップから始まり、単純ＡＡボールド化ビットマップをもたらす。
【００５９】
本発明の詳細を説明するのに先立って、本発明の原理を実施するために使用することができる適切なコンピューティング・アーキテクチャが、まず図５に関して説明されている。以降に続く説明においては、本発明の実施形態は、他に示されていなければ、１台または複数台のコンピュータによって実施される動作、およびオペレーションのシンボリック表現に関して説明される。したがって、時にコンピュータ実行されていると称されるそのような動作およびオペレーションは、構造化形式におけるデータを表現する電気信号のコンピュータの処理ユニットによる操作を含んでいることが理解されよう。この操作は、データを変換し、あるいはコンピュータのメモリ・システム中のロケーションにそれらを保持し、これは、当業者によってよく理解されるようにコンピュータのオペレーションを再構成し、あるいは変更する。データが保持されるデータ構造は、データのフォーマットによって定義される特定のプロパティを有するメモリの物理ロケーションである。しかし、本発明の原理は前述の場合について説明されているが、当業者なら、以降で説明される動作およびオペレーションのいくつかがハードウェアで実施することもできることを理解するように、限定することを意味してはいない。
【００６０】
図面に戻ると、本発明の原理は、適切なコンピューティング環境中において実施されるものとして示されており、図面中で、同様な参照番号は、同様な要素を意味している。以降の説明は、本発明の例示の実施形態に基づいており、本明細書中で明示的に説明されていない代替実施形態に関して、本発明を限定するものとは解釈すべきではない。
【００６１】
図５は、これらのデバイスのために使用可能な一例のコンピュータアーキテクチャの概略図を示している。説明の目的のために、描かれたアーキテクチャは、適切な環境の一例にすぎず、本発明の用途または機能の範囲についてどのような限定を暗示することも意図してはいない。コンピューティング・システムは、図５に示されるコンポーネントの任意の１つまたは組合せに関連したどのような依存性または要件を有するものとも解釈されるべきではない。
【００６２】
本発明の原理は、非常に多くの他の汎用または専用のコンピューティングまたは通信の環境またはコンフィギュレーション（システム構成）を用いて動作可能である。本発明と共に使用するのに適したよく知られたコンピューティングのシステム、環境、およびコンフィギュレーションの例は、それだけには限定されないが、モバイル電話、ポケット・コンピュータ、パーソナル・コンピュータ、サーバ、マルチプロセッサ・システム、マイクロプロセッサ・ベースのシステム、ミニ・コンピュータ、メインフレーム・コンピュータ、および以上のシステムまたはデバイスのうちのどれかを含む分散コンピューティング環境を含む。
【００６３】
その最も基本的なコンフィギュレーションにおいては、コンピューティング・システム５００は、一般的に少なくとも１つの処理ユニット５０２およびメモリ５０４を含んでいる。メモリ５０４は、（ＲＡＭなどの）揮発性であっても、（ＲＯＭ、フラッシュ・メモリなどの）不揮発性であっても、あるいはこれら２つの何らかの組合せであってもよい。この最も基本的なコンフィギュレーションが、図５中に破線５０６によって示される。この説明および特許請求の範囲において、「コンピューティング・システム」は、ソフトウェア、ファームウェア、またはマイクロコードを実行して、ファンクションを実施することができる任意のハードウェア・コンポーネントまたはハードウェア・コンポーネントの組合せとして定義される。コンピューティング・システムは、分散されたファンクションを遂行するために分散することさえできる。
【００６４】
ストレージ媒体デバイスは、追加の特徴および機能を有することができる。例えば、これらは、それだけには限定されないが、ＰＣＭＣＩＡカード、磁気ディスクおよび光ディスク、および磁気テープを含めて追加のストレージ（取外し可能および取外し不能）を含むことができる。そのような追加のストレージは、図５中において取外し可能ストレージ５０８および取外し不能ストレージ５１０によって示される。コンピュータ・ストレージ媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、他のデータなどの情報の記憶のための任意の方法または技術で実施される揮発性および不揮発性の、取外し可能および取外し不能な媒体を含んでいる。メモリ５０４、取外し可能ストレージ５０８、および取外し不能ストレージ５１０はすべて、コンピュータ・ストレージ媒体の例である。コンピュータ・ストレージ媒体は、それだけには限定されないが、所望の情報を記憶するために使用することができ、コンピューティング・システムによってアクセスすることができるＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリ、他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク、他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク・ストレージ、他の磁気ストレージ・デバイス、および他の任意の媒体を含む。
【００６５】
本明細書中で使用されるように、用語「モジュール」または「コンポーネント」は、コンピューティング・システム上で実行されるソフトウェア・オブジェクトまたはルーチンを意味することができる。本明細書中で説明される異なるコンポーネント、モジュール、エンジン、およびサービスは、（例えば、別個のスレッドとして）コンピューティング・システム上で実行されるオブジェクトまたはプロセスとして実施することができる。本明細書中で説明されるシステムおよび方法は、ソフトウェアで実施されることが好ましいが、ソフトウェアおよびハードウェア、またはハードウェアにおける実施形態もまた可能であり、企図されている。
【００６６】
コンピューティング・システム５００は、ホストが、例えばネットワーク５２０上で他のシステムおよびデバイスと通信することができるようにする通信チャネル５１２を含むこともできる。通信チャネル５１２は、通信媒体の例である。通信媒体は、一般的に搬送波や他の輸送機構などの被変調データ信号の形でコンピュータ読取り可能命令、データ構造、プログラムモジュール、または他のデータを実施し、任意の情報配信媒体を含んでいる。例として限定するものではないが、通信媒体は、有線ネットワークや直接配線接続などの有線媒体と、音響媒体、無線媒体、赤外線媒体、他の無線媒体などの無線媒体とを含んでいる。本明細書中で使用されるような用語、コンピュータ読取り可能媒体は、ストレージ媒体も通信媒体も含んでいる。
【００６７】
コンピューティング・システム５００は、キーボード、マウス、ペン、音声入力コンポーネント、タッチ入力デバイスなどの入力コンポーネント５１４も有することができる。出力コンポーネント５１６は、スクリーンディスプレイ、スピーカ、プリンタなどと、それらを駆動するための（しばしば「アダプタ」と呼ばれることもある）レンダリング・モジュールとを含んでいる。コンピューティング・システム５００は、出力コンポーネント５１６と以下で説明されるボールド化技法のうちのどれかによって生成されるボールド化キャラクタをレンダリングするための関連するアダプタとを使用することができる。コンピューティング・システム５００は、電源５１８を有する。
【００６８】
本発明の原理を使用することができる適切なコンピューティング環境について説明してきており、本発明の原理によるシミュレート化ボールド化処理法について、次に説明する。シミュレート化ボールド化処理は一般に、例えば上記の（＜ＢＷ：Ａｌｇ規格＞）の方法など、入力として単純ＢＷビットマップを使用する従来のボールド化アルゴリズムに比べてボールド化キャラクタの品質を改善する。以降で説明されるシミュレート化ボールド化処理法は、埋め込みビットマップが存在するか否かにかかわらずフォントに対して正常に適用することができる。さらに、以降で説明されるシミュレート化ボールド化処理法の出力画像中の要求されるグレー・レベルの特定の数は、包括的であり、グレー・レベルの任意の要求される数に適合することができるが、以下に示されるほとんどの例は、０、１、２、．．．１６に対応する１７個のグレー・レベルに対応することになる。
【００６９】
シミュレート化ボールド化処理法は、いくつかの一般的な原理の下で動作することができる。本明細書中で＜Ｇｅｎ：１＞と称される第１の一般的原理によれば、それらの方法は、入力として単純ＢＷレギュラー・ビットマップから開始され、（ＢＷではなくて）ＡＡフォーマットの単純ビットマップとしてボールド化アルゴリズムの出力を作成する。したがって、ボールド化法の入力および出力は、従来のシミュレート化ボールド化処理法とは違って、異なるフォーマットを有することができる。出力ビットマップは、ピクセル当たりに２つの２進値だけには限定されないので、この柔軟性により、ボールド化法の出力は、より判読可能および読取り可能になることができる。
【００７０】
例えば、ＢＷビットマップが、出力ビットマップもまたＢＷビットマップであるという従来の制約条件に従ってボールド化されることになる図６Ａを考察する。図６Ａの入力ビットマップは、互いに１ピクセル離れたいくつかの垂直の平行なストロークを有する。次に１ピクセルだけ右にキャラクタをボールド化する要求が存在するものと仮定する。従来の「ＢＷからＢＷ」ボールド化法は、各垂直ストローク中におけるあらゆる黒ピクセルの右に黒ピクセルを追加することができ、図６ＢのＢＷビットマップをもたらすことができる。図６Ｂから分かるように、すべての垂直ストロークが視覚的に分離されずにマージされるので、これは、キャラクタの元のデザインをあいまいにしてしまう。代わりに従来の「ＢＷからＢＷ」ボールド化法は、垂直ストロークの間のピクセルを白のままに残すこともでき、図６ＣのＢＷビットマップをもたらすこともできる。これは、垂直ストロークを視覚的に損なわれないままに残すが、ボールド化ビットマップをレギュラー重みのビットマップのビットマップと非常に類似した視覚的外観を有するままに残し、それによってボールド化の目的を駄目にしてしまう。
【００７１】
＜Ｇｅｎ：１＞原理は、ピクセルの濃淡付けの選択（shading choices for a pixel）の可能性を拡張し、これは、入力ビットマップの要素間に十分なスペースが存在しない状況において有利である。この原理は、ボールド化ビットマップが、元のデザインを保持しながら、レギュラー・ビットマップよりもかなり重く見える適切なバランスを可能にする。
【００７２】
「出力」の観点から、＜Ｇｅｎ：１＞原理は、（この場合には全体のラスタ化プロセスの出力でもある）ボールド化シミュレーションのＡＡ出力が、出発点としてのＡＡビットマップを起源としている必要がなくてもよいことを可能にする。以前に示されたように、比較的少ないフォントしか、埋め込みＡＡビットマップを含んでいない。さらに、レギュラー重み且つ低い／中間のｐｐｅｍでは、ＡＡモードにおけるレンダリングの結果は、ＢＷモードにおけるレンダリングの結果よりもかなり低い品質を有する。したがって、原理＜Ｇｅｎ：１＞は、ボールド化シミュレーション法は、「ＡＡからＡＡ」のボールド化法において現在使用されているよりもずっと良い品質の入力ビットマップから出発することができることを意味する。かなりの数の高密度の／複雑なキャラクタを有するＥＡフォントおよび大多数の他のフォントは通常、少なくとも低い／中間のｐｐｅｍにおける（ほぼ１０〜２２ｐｐｅｍの範囲における）最も複雑なキャラクタについて埋め込みＢＷビットマップを含むので、ＢＷビットマップから出発することは、可能なときはいつでも（アウトラインからレンダリングするのではなくて）手で調整したビットマップ・デザインを使用することができる、直接的で非常に重要な利点をもたらす。
【００７３】
本明細書中で＜Ｇｅｎ：２＞と呼ばれる第２の一般的原理は、入力ＢＷビットマップの要素間の白スペースの完全なブロッキング（blocking）が、しばしば上記されるようにボールド化キャラクタの判読可能性の損失をもたらすことがあるので、このような完全なブロッキングを回避すべきである、ということである。少なくとも部分的に入力ビットマップの黒ピクセルの間のピクセルに対して、より明るいグレー・レベル値を割り当てることが問題を解決する。入力ビットマップの黒ピクセルの間に新しい黒ピクセルを割り当てることは、複雑な／高密度のキャラクタについての元のデザインの損失を（全体的または局所的に）もたらす可能性がある。対照的に、その代わりにグレー値を割り当てることは、入力ビットマップの諸要素の間の視覚的な分離を可能にし、デザインが完全に失われてしまわないようにする。
【００７４】
グレー・レベルを割り当てることにより、入力ビットマップの諸要素の間の視覚的な分離を保持することについては、図７に関して説明される。ＡＡレンダリング・モードにおいては、オーバー・スケーリングされたビットマップから単純ＡＡビットマップへの従来の変換は、ピクセルごとに黒サブ・ピクセルをカウントすることにより行われる。換言すれば、特定のピクセルでは、グレー・レベルは、オーバー・スケーリングされたビットマップ中における黒であるピクセルの分数から得られる。例えば、図７から分かるように水平方向にも垂直方向にもオーバー・スケール・ファクタ４の場合には、ピクセル当たりに１６個のサブ・ピクセルが存在する。図７に示される黒サブ・ピクセルのコンフィギュレーションにおいては、黒サブ・ピクセルの数は、９である。したがって、ピクセルに割り当てられたグレー・レベルは９／１６となる。
【００７５】
視覚的分離を保持するボールド化アルゴリズムのデザインにおいて、ピクセルは、概念的にいくつかのサブ・ピクセルに再分割することができる。次いでデザイナは、入力単純ビットマップの既存の諸要素の間の視覚的な分離を保持するために「サブ・ピクセル」ビットマップがどのように見えるべきかを想像することができる。次いで、グレー・レベルを割り当てて、ピクセルの概念的なサブ・ピクセル・コンフィギュレーションを反映させることができる。
【００７６】
例えば、各サブ・ピクセルに１７個のグレーレベル（０から１６まで）のうちの１つが割り当てられているものと仮定する。次に、図８Ａに示される単純ＢＷ入力ビットマップのピクセル・コンフィギュレーションが、１ピクセルだけ右にボールド化されるべきことを仮定する。図８Ｂは、図８Ａの３つの強調表示されたピクセルを拡大し、中央のピクセルを複数のサブ・ピクセルに再分割している。より重い重みをデザインするために、一部の黒またはグレーのピクセルが、入力ビットマップの黒ピクセルの右に追加されるべきである。図８Ａの３つの強調表示されたピクセルについて、ピクセルの右隣から３／８の「距離を保持」して、入力ビットマップのストロークが衝突するように見えないようにすることにより、視覚的な分離が、保持されるべきことを仮定する。本発明者等は、白の強調表示されたピクセル（図８Ｂの中央ピクセルを参照）を概念的に再分割し、視覚的な諸要素の間の距離を保つことがどのようにしてオーバー・スケーリングされたビットマップ中で見えることになるかを想像することができる。この場合には、中央ピクセルの５／８が黒になるべきであり、これが１６の最大グレー・レベルでは、割り当てられた１０に等しいグレー・レベル値をもたらすことになる。
【００７７】
以下の例は、原理＜Ｇｅｎ：２＞に従う単純ボールド化アルゴリズムが、どのようにしてレンダリング結果の品質を改善することができるかを示している。一例のボールド化アルゴリズムは、以降のように右へ１ピクセルのボールド化シフトが実施されるべきであることを仮定している。
１）黒の左隣を有する入力ビットマップの白ピクセルごとに、
１ａ）ピクセルの右隣が白である場合に、（黒色に対応する）最大グレー・レベルを割り当て、
１ｂ）ピクセルの右隣が黒である場合には、「中間の」グレー・レベルを割り当てる（元のビットマップの２つの黒ピクセルの間のスペースの完全な黒化を防止する）。
【００７８】
これは、本発明者等が白ピクセルによって分離された入力ビットマップの任意の２つの黒ピクセルの間に「約１／２のピクセルの視覚的距離を保持」していることを意味する。図９Ａから９Ｃは、アルゴリズムの適用を示すものである。特に、図９Ａは、ボールド化すべき入力ＢＷビットマップを表す。図９Ｂは、ちょうど説明されたばかりのアルゴリズムを使用したボールド化ＡＡビットマップを表す。図９Ｂを参照すると、結果として生ずるボールド化ＡＡビットマップは、完全ではない。例えば、図９Ｂのボールド化ＡＡビットマップは、ストローク（１）の上部部分に「偽のセリフ（false serif）」を含み、ストローク（２）の非常に一様でない外観をもたらす。それにもかかわらず、この結果は、視覚的距離を保持しない図９Ｃに示される＜ＢＷ：Ａｌｇ規格＞によって作成される結果よりもずっと良好である。
【００７９】
図１０は、実際のサイズにおけるいくつかの複雑なキャラクタについてのレンダリング結果を示している。第１の（最上部の）ラインは、レギュラー重みビットマップを表し、第２のラインは、従来の＜ＢＷ：Ａｌｇ規格＞の方法によるボールド化の結果を表し、第３の（最下部の）ラインはちょうど説明されたばかりのボールド化法の結果を表す。第３のラインは、第１のラインよりも重い視覚的外観を有し（したがってボールド化を実現し）、第３のラインは、元のデザインが、デザイン要素の視覚的分離を介して大いに保持されるので第２のラインよりもずっと判別しやすい。
【００８０】
ボールド化法についての第３の一般的原理は、＜Ｇｅｎ：３＞と称されることになる。原理＜Ｇｅｎ：３＞は、アルゴリズムによって割り当てられるピクセルのグレー・スケール値が、異なるピクセルについては異なる可能性があり、任意の種類の「コンテキスト的」情報に基づいて計算することができ、ここで、「コンテキスト」は、ボールド化の方向におけるすぐ近傍、または他の任意の種類の局所的な近傍に基づいた情報だけに限定される必要はない。入力ビットマップの可変特性に調整することにより、次にキャラクタのデザインの要素を保持し、キャラクタに特有のバランス化された「重さ」を（局所的にまた全体的に）保持することにより、結果として生ずるビットマップの品質を改善することができるようになる。
【００８１】
原理＜Ｇｅｎ：２＞に関連して以上で説明されたアルゴリズムは、それがそれらのすぐ右隣に応じて諸ピクセルに異なるグレー値を割り当てるので、実際に単純な「コンテキスト的」アルゴリズムである。しかし、このアルゴリズムは、ボールド化の方向に向かってのみデータを解析する（水平方向におけるボールド化では、すぐ左隣および右隣のみが、白ピクセルについての「コンテキスト」として考慮されることになる）。
【００８２】
２次元の「コンテキスト」（すなわち、ボールド化の方向と垂直の方向の両方におけるピクセルの近傍）を考慮に入れた１つのアルゴリズムは、ピクセルの４つの近隣（左、右、上、下）を考慮する。１ピクセルのボールド化シフトを伴う水平方向に右へのボールド化では、アルゴリズムは、以降の計算を適用して、ピクセルについての新しい値を割り当てることができる。
１）黒の左隣を有する白ピクセルでは、
１ａ）ピクセルの右隣が白である場合、
最大グレー値を割り当てる（すなわち、ピクセルを黒に色づけする）。  
１ｂ）そうでない場合には（すなわち、ピクセルの右隣が黒である場合には）、
割り当てられた最大値を１／４だけ減少させ、
ピクセルの上隣が黒である場合、さらなる３／１６だけ割り当てられた最大値を減少させ、
ピクセルの下隣が黒である場合、さらなる３／１６だけ割り当てられた最大値を減少させる。
【００８３】
このアルゴリズムは、水平方向だけでなく垂直方向にも同様に視覚的分離を可能にする。図１１Ａおよび１１Ｂは、３×３のピクセルアレイのコンテキストにおける単一のピクセル（中央ピクセル）に対するこのアルゴリズムの基本的な適用を示している。図１１Ａは、入力ＢＷビットマップの入力ＢＷピクセル・コンフィギュレーションを示している。図１１Ｂは、中間のオーバー・スケーリングされたピクセル・コンフィギュレーションを示している。本発明者等は概念的に、図１１Ｂの中央ピクセルに示されるように、ピクセルを４×４のサブ・ピクセルに再分割することができる。ピクセルが黒の右隣を有する場合、本発明者等は、サブ・ピクセルの最後の（最も右の）列を白に保持したいと思う。さらに、ピクセルが、黒の上隣または下隣を有する場合には、本発明者等は、サブ・ピクセルの上側または下側の行を白に保持することになる。図１１Ｂに示されるコンフィギュレーションにおいては、中央の白ピクセルには、（最大グレー・レベル値が１６であることを仮定して）値９が割り当てられることになる。
【００８４】
このアルゴリズムに従ってグレー・レベル値を割り当てる一例が、図１２Ａから１２Ｄに示される。図１２Ａは、入力ビットマップに対応する。図１２Ｂは、ちょうど説明されたばかりのボールド化アルゴリズムを使用したボールド化の結果を示している。図１２Ｃは、それが入力ビットマップ中において黒であったピクセルを強調表示する点だけを違いとして図１２Ｂと同じである。図１２Ｃ中の閉じられた領域の両端（図１２Ｄ中のピクセル（１ａ）および（１ｂ））におけるコントラストのより高いレベルと、入力ビットマップにおけるすべての黒の隣を有するピクセル（２）についてのより高くさえあるコントラストレベルとに注意すべきである。垂直ストローク（３）に対する右隣の白ピクセルのどちらも黒の右隣を有さないこと、したがってこれらのすべてのピクセルが黒に色づけされることにも注意すべきである。
【００８５】
ある「コンテキスト」に従って値をサブ・ピクセルに割り当てるシミュレート化ボールド化処理法は、必ずしもピクセルのあらかじめ定義された局所的近傍だけを考慮することによって限定されるべきであるとは限らない。例えば、シミュレート化ボールド化処理法は、レギュラー・ビットマップ画像中の垂直ストローク（または、より一般的にはボールド化の方向に垂直なストローク）の長さを考慮に入れることができ、かつ／または両側からの２本のストロークによって拘束された白領域の長さなどを考慮することができる。入力ビットマップのより広い領域に関連した情報を使用する一部のコンテキスト的アルゴリズムが、＜Ｇｅｎ：４Ａ＞および＜Ｇｅｎ：４Ｂ＞と称される２つの部分原理を一括して表す、本明細書中で＜Ｇｅｎ：４＞と称される第４の一般的原理に関連して説明されることになる。
【００８６】
第４の一般的原理の第１の部分原理＜Ｇｅｎ：４Ａ＞においては、「ボールド化の方向に垂直なパス」または「パス」が、一般的に、ボールド化の方向に垂直な方向に（ただし、必然的に一致して、または連続して）存在するピクセルのシーケンスとして定義される。第２の部分原理＜Ｇｅｎ：４Ｂ＞は、「パス」に沿った方向における平均化または平滑化を使用する。
【００８７】
より正確には、「パス」は、（その値が修正されようとしている複数のピクセルではなくて）ボールド化の結果として他の１つ（または複数）のピクセルの値を修正されるようにすることを引き起こすピクセルのシーケンスである。もちろん、この定義は、説明の便宜のためだけに導入されるにすぎず、本発明の原理から逸脱することなく、変更することができる。
【００８８】
例えば、図１３の入力ビットマップにおけるピクセルのコンフィギュレーション（および水平方向に右へのボールド化）では、強調表示されたピクセル（図１３の左列における３つのピクセル）は、「パス」を表すことができ、その「パス」の右のピクセルの値は、修正されようとしている値である。
【００８９】
この一般的な概念および原理に従うアルゴリズムは、２つのステップ、すなわち１）ボールド化の初期量の計算、および２）平均化、から成る。第１のステップは、ピクセルについて計算されたグレー・レベル値で表現されたボールド化の量をもたらす。第１のステップにおけるボールド化の量の計算は、以上の＜Ｇｅｎ：２＞および＜Ｇｅｎ：３＞に関連して説明されたコンテキスト的アルゴリズムを含めて適切な任意のアルゴリズムによって実施することができる。
【００９０】
ピクセルについてのボールド化の初期量の計算は通常、ピクセルの比較的限られた近傍に依存するので、ボールド化の方向に垂直な方向における突然の望ましくない急激な変化が観察されことがある。例えば、以上の一般的原理＜Ｇｅｎ：２＞および＜Ｇｅｎ：３＞に関連して説明されたボールド化法の結果として生ずるビットマップを参照されたい。これらの変化を平滑化し、ボールド化によって引き起こされる望ましくない視覚的効果を回避するために、平均化についての第２のステップが適用される。キャラクタの元のデザインを保存するために、入力ビットマップの各構造要素に適用されるボールド化をほぼ一様な値に維持することが有利である。したがって、平均化する「パス」が、何らかの構造要素に一般に従うことが有利ということになる。しかし、「構造要素」を構成するものについての解釈は、広く変化してもよい。さらに、レンダリングされた結果は、非常に小さなサイズで表示されるので、個別要素についてのある視覚的混合および視覚的調節が、とにかく我々の目によって行われ、その結果、その「構造要素」を定義するためのより念入りに作られたアルゴリズムは、より単純なアルゴリズムよりもレンダリングされた結果に区別可能な良好な品質をもたらさないこともあり得る。
【００９１】
「パス」の一部の例が、図１４Ｂから１４Ｅに与えられ、これらの図においては、様々な「パス」が強調表示されている。これらの例においては、ボールド化が右に向かって行われるものと仮定される。図１４Ａは、入力ビットマップを表すのに対して、図１４Ｂから１４Ｅは、様々な「パス」定義から導き出すことができるパスのいくつかの強調表示された例を表す。それらの例は、第２列で行われ得るパスを示すにすぎない。図１４Ｂにおいては、単一「パス」が、全体の列中のすべて黒のピクセルとして定義される（この「パス」は、不連続であることができる）。したがって、図１４Ｂのビットマップの第２の列の黒ピクセルのすべてが強調表示され、それによって１つの不連続なパスを表している。図１４Ｃにおいては、「パス」は、複数の黒ピクセルからなる連続した垂直シーケンスとして定義される。したがって、図１４Ｃにおいては、第２の列には２つのパスが存在し、各パスは、複数の黒ピクセルからなる連続した各垂直シーケンスに対応する。図１４Ｄにおいては、「パス」は、白い右隣を有する黒ピクセルの連続した垂直シーケンスとして定義され、それによって第２の列中において４つのパスを定義している。図１４Ｅにおいては、パスが、３以上の黒ピクセルの連続した水平シーケンス（水平ストローク）と交わらない限り、「パス」は、黒ピクセルの連続した垂直シーケンスとして定義される。この結果、図１４Ｅの第２の列中には３つの異なるパスがもたらされる。
【００９２】
「パス」は、必ずしもピクセルの一方向のシーケンスとして定義されるべきであるとは限らない。入力ビットマップの「構造要素」の任意の解釈を「パス」の定義として使用することができる。例えば、図１５Ａを入力ビットマップとして解釈して、「ほとんど垂直のストローク」の認識アルゴリズムは、図１５中における２つの強調表示されたピクセルパスによって表されるような入力ビットマップについての２つの「パス」をもたらすことができる。
【００９３】
前述のように、一般的原理＜Ｇｅｎ：４Ｂ＞に従うボールド化法の第２のステップは、ちょうど説明されたばかりの一般的原理＜Ｇｅｎ：４Ａ＞によって定義されるパスごとにパスに沿った平均化を伴う。そのような平均化は、それらの値が、ある与えられたパスのボールド化に起因して修正されようとしているすべてのピクセルが、何らかの平均化アルゴリズムを受けることになることを意味する。１つのピクセルのボールド化シフトと共に水平方向に右に向かってのボールド化では、これは、「パス」ごとに平均化が、入力ビットマップ中において白であった、またパスを形成するピクセルのすぐ右隣にあるすべてのピクセルに対して適用されることになることを意味する。例えば、図１６の入力ビットマップの第２の列中において強調表示される上側のパスでは、平均化は、第３の列中の「点が描かれた」ピクセルのすべてに対して適用されることになる。
【００９４】
平均化それ自体は、任意の平均化アルゴリズムに従って実施することができる。そのような平均化アルゴリズムの例は、一様な平均化、または異なる重みを用いた平均化を含んでいる。平均化は、全体の「パス」に沿って行われてもよく、あるいはあるピクセルのいくつかの近隣についてのみ行われてもよい。平均化は、平均化されるピクセルのシーケンス中の不連続性を考慮に入れる、あるいは入れない、などとすることもできる。
【００９５】
以下の例においては、図１７Ａは、入力ビットマップに対応する。図１７Ｂは、第１のステージからもたらされ、＜Ｇｅｎ：３＞に関連して説明されたアルゴリズムによって計算される初期グレー・レベル値を示している。図１７Ｃは、入力画像が強調表示された、図１７Ｂとまさしく同じ結果を表す。垂直ストローク（１）の最上部における「偽のセリフ」と、ストローク（２）のボールド化後の不均一な外観に注意すべきである。図１７Ｄおよび１７Ｅは、平均化の結果を示している。両方の場合において、「パス」は、黒ピクセルの連続した任意の垂直シーケンスとして定義される。図１７Ｄは、パスに沿った一様な平均化に対応しており、平均化の結果として、キャラクタのデザインは、平均化が使用されないときよりも、ボールド化ビットマップ中においてより良好に表されることに注意されたい。図１７Ｅは、別の平均化アプローチに対応しており、これは、ピクセルのグレー・レベル値を、そのピクセルと、異なる重みを有するその２つの上方および２つの下方の近隣の初期グレー・レベルの平均化に基づいて計算する、この平均化は、より暗い区域内における何らかのコントラストを保持しながら、図１７Ｂに表される結果よりも全体的にずっと滑らかな結果をもたらす。
【００９６】
シミュレート化ボールド化処理法は、単純ＢＷビットマップを入力として使用するので、それらの方法は、単純ＢＷビットマップが（レギュラー重みについての）ＢＷモードのラスタ化の標準プロセスの終わりに使用可能になった後に（例えば、図１８中の（ＢＷからＡＡ：ビットマップ単純レギュラーからビットマップ単純ボールド）ステップを参照）、ラスタ化プロセス中において実施される。ラスタ化プロセスの他のステップに対する（重要な）修正は、必要とされない。しかし、ラスタ化の特定の実施形態によっては、ボールド化アルゴリズムの出力のＡＡフォーマットをサポートするために一部の小変更が必要とされることもあり得る。例えば、ラスタ化は、単なるＢＷ２進ビットではなくて完全なグレー・レベル値を戻すことができるようにするためにより多くのメモリ割付けを必要とすることもある。
【００９７】
ＢＷモード中の現在適用されているボールド化からの重要な違いは、新しいアルゴリズムが、（＜Ｇｅｎ：１＞による）ＢＷフォーマットではなくてＡＡフォーマットで出力ビットマップを生成することである。ボールド化は、ラスタ化プロセスの最後のステージにおいて実施されるので、出力フォーマットは、ラスタライザそれ自体については問題にならない。しかし、レンダリング・エンジンは、ラスタライザによって生成された結果として生ずるビットマップのＡＡフォーマットについて知っているべきであり、その結果、レンダリング・エンジンは、ビットマップを正しく解釈し、グレーの対応する濃淡へのビットマップ値のマッピングを実施することになる。
【００９８】
一般的な概念および原理＜Ｇｅｎ：１＞、＜Ｇｅｎ：２＞、＜Ｇｅｎ：３＞、＜Ｇｅｎ：４＞に従うアルゴリズムの特定のパラメータのファミリ＜Ｆ１＞について、次に説明する。一部の概念をより具体的にするのに加えて、このアルゴリズムのファミリは、オペレーションの特定の順序を記述する。このアルゴリズムのファミリについてのパラメータの可能な選択（すなわち、ファミリからの特定のアルゴリズム）について次に説明し、新しいアルゴリズムと現在一般的に適用されているアルゴリズムとの間の比較が行われる。
【００９９】
パラメータのファミリは、以降のパラメータの組と以降のオペレーションの順序によって定義される。
【０１００】
＜Ｆ１：ステップ：１＞と称される第１のステップにおいては、任意の種類の前処理アルゴリズム（pre-processing algorithm）が、入力ビットマップに対して適用される（前処理アルゴリズムが適用されないことも、有効な選択である）。前処理アルゴリズムの選択は、ファミリからの特定のアルゴリズムを識別するために定義されるべき第１のパラメータ＜Ｆ１：Ｐａｒ：１＞である。アルゴリズムの現行のファミリでは、明確にするために、本発明者等は、前処理アルゴリズムは、（もしあるなら）単純ＢＷビットマップをもたらすことを仮定することにする。
【０１０１】
＜Ｆ１：ステップ：２＞と称される第２のステップにおいては、ボールド化の初期量が計算される。＜Ｆ１＞は、ピクセルの「４つの近隣」の近傍に基づいてボールド化の初期量を計算する以降のコンテキスト的アルゴリズム（＜Ｇｅｎ：３＞参照）を使用する。このアルゴリズムは、＜Ｇｅｎ：３＞に関連して説明されるアルゴリズムに類似している。もう一度、本発明者等は、１ピクセルのボールド化シフトを伴う水平方向における右に向かってのボールド化を仮定する。その値が修正されるべきピクセルでは（すなわち、黒の左隣を有するピクセルでは）、「反発力（repulsive power）」を計算して、初期入力ビットマップの構造要素間の視覚的距離を保持する。「反発力（repulsive power）」の値は、最大の（すなわち、最も暗い）グレー・レベルに関してボールド化ピクセルの暗さを（パーセントで、または絶対グレー・レベルで）どれだけ減少させるべきか（すなわち、明るさをどれだけ増大させるべきか）を定義することになる。「反発力」の計算についての特定の式の選択は、パラメータのファミリのうちの第２のパラメータ：＜Ｆ１：Ｐａｒ：２＞を表す。
【０１０２】
＜Ｆ１：ステップ：３＞と称される第３のステップにおいては、平均化「パス」が定義され、平均化アルゴリズムが、あらゆる平均化「パス」に沿って適用される（＜Ｇｅｎ：４＞参照）。平均化「パス」の特定の定義と平均化アルゴリズムの特定の選択は、それぞれパラメータのファミリのうちの第３のパラメータ＜Ｆ１：Ｐａｒ：３＞および第４の＜Ｆ１：Ｐａｒ：４＞を定義する。「平均化なし」は、＜Ｆ１：Ｐａｒ：４＞についての有効な選択であることに注意すべきである。
【０１０３】
＜Ｆ１：ステップ：４＞と称される第４のステップにおいては、平均化「パス」ごとに、「パス」に沿ったすべてのピクセルについての結果として生ずる平均値が、割り当てられる。
【０１０４】
＜Ｆ１：ステップ：５＞と称される第５のステップにおいては、任意の後処理アルゴリズム（post-processing algorithm）が、結果として生ずるＡＡビットマップに適用される。＜Ｆ１：ステップ：５＞において適用すべき後処理アルゴリズムを選択しないことは、有効である。特定の後処理アルゴリズムの選択は、パラメータのファミリの第５のパラメータ＜Ｆ１：Ｐａｒ：５＞を定義する。
【０１０５】
アルゴリズムのファミリ＜Ｆ１＞からの特定のアルゴリズムの一例について次に説明する。以下に説明される特定のアルゴリズムのパラメータは、適用される異なるパラメータと共に上記されるアルゴリズムのファミリからのアルゴリズムの出力結果の視覚的な比較の後に選択された。目標の１つは、結果の品質と、適用されるアルゴリズムの複雑さとの間のバランスを達成することであった。パラメータの特定の選択について以下で説明する。
【０１０６】
第１のアルゴリズムのパラメータ＜Ｆ１：Ｐａｒ：１＞（すなわち、前処理ステップ）では、「キャップ補正（cap-correction）」アルゴリズムが、適用される（以下の説明を参照）。
【０１０７】
第２のアルゴリズムのパラメータ＜Ｆ１：Ｐａｒ：２＞（すなわち、「反発力」についての特定の式の定義）では、その定義は、以降のようになる。すなわち、その値がボールド化中に修正されるべき任意のピクセルに対して、そのピクセルが、ボールド化の方向に黒の隣接ピクセルを有する場合に、最大グレー値の４／１６だけ割り当てられた最大グレー値を減少させ、またボールド化の方向に垂直な方向における黒の隣接ピクセル一つごとに、最大グレー値のさらなる３／１６だけ割り当てられた最大グレー値を減少させる。
【０１０８】
１ピクセルのボールド化シフトを伴う水平方向における右に向かってのボールド化では、結果として生ずる初期ボールド化アルゴリズムは、以下のように要約することができる。  
ピクセルが白であり、その左隣が黒である場合、
｛
その右隣が白である場合には、
｛
反発力を適用しない。  
｝
そうでない場合には、
｛
４／１６の反発力を適用し、
上隣が黒である場合には、さらなる３／１６の反発力を適用し、
下隣が黒である場合には、さらなる３／１６の反発力を適用する。  
｝
｝
【０１０９】
最初に白のピクセルに対する上記の例のアルゴリズムの結果として生ずる割り当てられた値が、図１９の６つの異なるピクセル・コンフィギュレーションについて示される。図１９の例は、１７個のグレーレベル（０．．．１６）を仮定している。上記の式によるボールド化の初期量の計算の結果が、図２０Ａおよび２０Ｂに示され、ここで図２０Ａは、入力ビットマップを表し、図２０Ｂは、平均化する前のボールド化の結果に対応する。
【０１１０】
第３のアルゴリズムのパラメータ＜Ｆ１：Ｐａｒ：３＞（すなわち、平均化「パス」の定義）では、「パス」は、ボールド化の方向に垂直な方向における黒ピクセルの連続したシーケンスとして定義される。
【０１１１】
第４のアルゴリズムのパラメータ＜Ｆ１：Ｐａｒ：４＞（すなわち、平均化アルゴリズムの定義）では、割り当てられたグレー・レベル値の一様な平均化が、ボールド化の方向におけるパスのサイドに沿って白ピクセルに適用される。１ピクセルのボールド化シフトを伴う水平方向における右に向かってのボールド化では、平均化アルゴリズムは、以降のように定義することができる。すなわち
「パス」中のピクセルからすぐ右にある（入力ビットマップ中の）白ピクセルの数を計算し、この数をＮｕｍＷｈｉｔｅとする。
【０１１２】
「パス」に沿った（入力ビットマップ中の）すべての白ピクセルについての「反発力」の総和として総「反発力」を計算し、この総和をＮｅｇＴｏｔａｌとする。
【０１１３】
平均値ＬｅｖｅｌＭａｘ−（ＬｅｖｅｌＭａｘ＊（ＮｅｇＴｏｔａｌ／ＮｕｍＷｈｉｔｅ））を計算し、ここでＬｅｖｅｌＭａｘは、グレー・レベルの最大値である。
【０１１４】
「パス」に沿ったすべての白ピクセルにこの平均値を割り当てる。
【０１１５】
図２１Ａの元のビットマップに対する初期ボールド化およびこの平均化の適用の結果は、（「キャップ補正」の前処理が適用されずに）図２１Ｂに示される。
【０１１６】
第５のアルゴリズムのパラメータ＜Ｆ１：Ｐａｒ：５＞（すなわち、後処理の識別）は、後処理が適用されないことを識別する。
【０１１７】
ちょうど上記されたばかりの特定のアルゴリズムのレンダリング結果は、かなりの数の複雑な高密度のキャラクタを含むフォントについての現在一般的に適用されているＢＷボールド化アルゴリズムの結果よりもずっと判読しやすい。例えば、図２２Ａは、入力ビットマップを示している。現在一般的に適用されているＢＷボールド化アルゴリズムによるボールド化の結果が、図２２Ｂに示されている。著しい対照をなして、特定の例の＜Ｆ１＞アルゴリズムによるボールド化の結果が、図２２Ｃに示されている。明らかに、図２２Ｃのボールドにされたキャラクタは、図２２Ｂよりも、図２２Ａ中のキャラクタのずっと認識しやすいボールド化画像になっている。
【０１１８】
「キャップ補正」の前処理ステップについて次に説明する。「キャップ補正」アルゴリズムのための理由は、傾斜したストロークの間の接続箇所における狭い「キャップ」を取り除くことであり、取り除かない場合は、ボールド化の後に接続されたストロークの視覚的な不連続性を引き起こすことになる。以降の説明および例は、１ピクセルだけ右に水平ボールド化するための「キャップ補正」を示している。「キャップ検出」と「キャップ補正」に対する同じ基本的なアルゴリズム的アプローチは、ボールド化の他の方向に対しても適用することができる。例えば、図２３Ａの入力ビットマップは、１ピクセル右にボールド化されるものと仮定する。図２３Ａのレギュラー画像に適用される、「キャップ補正」のない（ファミリ＜Ｆ１＞からの）一例のビットマップ・ボールド化アルゴリズムは、図２３Ｂのボールド化されたビットマップをもたらすことになる。図２３Ｂのビットマップは、（右の長い、および左の短い）２つの別個のストロークから成るように見えるが、これらのストロークは、レギュラー・ビットマップにおいては接続されていた。（この視覚的不連続性を有する）図２３Ｂのボールド化されたビットマップ画像は、図２３Ａのレギュラー重みビットマップ中で表されるキャラクタ以外の全く異なる（意味的に異なる）キャラクタとして誤って解釈される（誤って読み取られる）可能性がある。「キャップ補正」アルゴリズムは、傾斜した接続されたストロークの間の狭い接続箇所を識別し、ボールド化画像中の視覚的不連続性を防止する。「キャップ補正」を用いて適用された新しいボールド化アルゴリズムは、図２３Ｃのビットマップをもたらすことになる。
【０１１９】
「キャップ補正」アルゴリズムを説明するために、本発明者等は、いくつかの定義を使用する。「チューブ（tube）」は、黒ピクセルに左側も右側も接している、入力ビットマップ中の連続した１列幅の白ピクセルの垂直シーケンスである。図２４のピクセル・コンフィギュレーション中に示されるチューブは、黒ピクセルによって最上部が閉じられ、最下部がオープンになったチューブを示している。所与の列Ｃについての行Ｒは、行Ｒおよび列Ｃにおけるピクセルが白であり、その左隣と右隣の両方が黒である場合に「チューブ・トリプレット（tube triplet）」に対応する。「チューブ・トリプレット」に対応する行の例が、図２５に示されている。
【０１２０】
さらに「オープニング（opening）」について次に説明する。チューブのそれぞれ左側および右側に沿って走る黒ピクセル（左および右）の２つのチェーンが存在する。左チェーンの黒ピクセルは、チューブの一端から延び、それが垂直に（または左に対角線状に）接続する別の黒ピクセルが存在する限り、垂直に続いている。右チェーンの黒ピクセルは、チューブの一端から延び、それが垂直に（または右に対角線状に）接続する別の黒ピクセルが存在する限り、左チューブと同じ方向に垂直に続いている。「オープニング」は、左チェーンと右チェーンに、これから先もなお依然として接しているチューブの外側の区域である。左チェーンも右チェーンもチューブのオープン・エンドからカウントして少なくともＬ個のピクセルを含んでいる場合、オープニングは、（少なくとも）長さＬであると言われる。特定の行におけるオープニングの幅は、その特定の行の右チェーンと左チェーンとの間の白ピクセル数である。オープニングの例が、図２６に示される。この例においては、オープニングは、長さ３を有し、これは、長さ２のチューブの開口部から延びている。オープニングは、最上部から第３の行において２の幅を有し、最上部から第２の行において３の幅を有し、第１の（最上部）行において４の幅を有する。
【０１２１】
「キャップ」は、「オープニング」を付随する「チューブ」である。キャップ補正アルゴリズムは、以降の判断基準が満たされる場合に、キャップを検出することになる。最初に、垂直の一端で閉じられた長さ１または２のチューブが見出される。チューブの他端におけるオープニングが見出され、オープニングは、そのチューブの開放端からカウントしてその第１の行において少なくとも２ピクセル幅である。チューブまたはオープニングを規定する黒ピクセルに（丁度対角線状に）接触するオープニングの内側には、黒ピクセルは見出されない。図２７は、長さ１のチューブを有する最上部に向かって開かれたすべての可能なキャップを示している。図２８は、長さ２のチューブを有する最上部に向かって開かれたすべての可能なキャップを示している。
【０１２２】
「キャップ補正」アルゴリズムは、以下のように動作する。  
１）元のレギュラー・ビットマップにおいて、（ボールド化の方向に対応する）すべての「キャップ」を検出する。  
２）「キャップ」ごとに、あらかじめ定義されたグレーの暗い濃淡（shade）（本実施形態においては黒）を用いてその「チューブ」を塗りつぶす。
【０１２３】
したがって、ちょうど説明されたばかりのシミュレートされたボールド化法は、元のＢＷビットマップのボールド化ビットマップを生成するための改善された方法を提供する。本発明は、その趣旨または本質的な特徴を逸脱することなく他の特定の形態で実施することもできる。説明されている実施形態は、すべての点において例示的にすぎず、限定的ではないと考えられるべきである。それ故に、本発明の範囲は、前述の説明によってではなく、特許請求の範囲によって示される。特許請求の範囲と等価な意味および範囲内に含まれるすべての変更は、特許請求の範囲内に包含されるべきものである。
【図面の簡単な説明】
【０１２４】
【図１】白黒レンダリングのための従来のラスタ化プロセスのフローチャートを示す図である。
【図２Ａ】アンチエイリアシング・レンダリングのための従来のラスタ化プロセスのフローチャートを示す図である。
【図２Ｂ】アンチエイリアシング・レンダリングのための従来のラスタ化プロセスのフローチャートを示す図である。
【図３Ａ】従来の白黒のシミュレート化ボールド化処理法についてのコンテキストを示すフローチャートを示す図である。
【図３Ｂ】単純なキャラクタがボールド化される、従来のシミュレート化白黒ボールド化処理の第１の例を示す図である。
【図３Ｃ】複雑なキャラクタがボールド化される、従来のシミュレート化白黒のボールド化処理の第２の例を示す図である。
【図４Ａ】従来のシミュレート化アンチエイリアシングボールド化処理法についてのコンテキストを示すフローチャートを示す図である。
【図４Ｂ】単純なキャラクタがボールド化される従来のシミュレート化アンチエイリアシングボールド化処理の一例を示す図である。
【図５】本発明の原理を実行することができる一例のコンピューティング環境を示す図である。
【図６Ａ】ボールド化すべきサンプルの白黒入力ビットマップを示す図である。
【図６Ｂ】黒の左隣のピクセルを有するすべての白ピクセルが黒に変化させられる従来の白黒のシミュレート化ボールド化処理法によってボールド化される出力の白黒入力ビットマップを示す図である。
【図６Ｃ】ピクセルが黒の右隣のピクセルも有さなければ、黒の左隣のピクセルを有するすべての白ピクセルが黒に変化させられる従来の白黒のシミュレート化ボールド化処理法によってボールド化される出力の白黒入力ビットマップを示す図である。
【図７】概念的に１６セクションに再分割された単一ピクセルを示す図である。
【図８Ａ】３つのピクセルが強調表示された、サンプルの入力白黒ビットマップを示す図である。
【図８Ｂ】中央のピクセルが、概念的に６４個のコンポーネントに再分割された、拡大図の形の図８Ａの３つの強調表示されたピクセルを示す図である。
【図９Ａ】サンプルの入力白黒ビットマップを示す図である。
【図９Ｂ】本発明の原理による、図９Ａの入力白黒ビットマップに対するシミュレート化ボールド化処理法の適用からもたらされるボールド化されたアンチエイリアシング出力ビットマップを示す図である。
【図９Ｃ】従来のシミュレート化白黒ボールド化処理の原理による、図９Ａの入力白黒ビットマップに対するシミュレート化ボールド化処理法の適用からもたらされるボールド化された白黒出力ビットマップを示す図である。
【図１０】本発明の原理によるボールド化の実際の結果を従来のシミュレート化ボールド化処理と比較して示す図である。
【図１１Ａ】入力の３×３の白黒入力ビットマップを示す図である。
【図１１Ｂ】垂直のコンテキスト的情報がボールド化において考慮に入れられ、中央のピクセルが１６個の区域を使用して表される、本発明の原理によるシミュレート化ボールド化処理法からもたらされる、結果として生ずる出力アンチエイリアシング・ビットマップを示す図である。
【図１２Ａ】一例の入力白黒ビットマップを示す図である。
【図１２Ｂ】本発明の原理による、垂直のコンテキスト的情報が考慮に入れられるシミュレート化ボールド化処理法を図１２Ａの入力ビットマップに対して適用することを示す図である。
【図１２Ｃ】入力ビットマップの黒ピクセルが強調されることを除いて、図１２Ｂと同じものを示す図である。
【図１２Ｄ】いくつかの特徴が指摘された図１２Ａの入力ビットマップを示す図である。
【図１３】「パス」が最左列中に（強調表示されて）示された、一例の入力白黒ビットマップを示す図である。
【図１４Ａ】一例の入力白黒ビットマップを示す図である。
【図１４Ｂ】用語「パス」の一定義の下で定義されるようなパスに属するピクセルが強調表示された、図１４Ａの入力白黒ビットマップを示す図である。
【図１４Ｃ】用語「パス」の別の定義の下で定義されるようないくつかのパスに属するピクセルが強調表示された、図１４Ａの入力白黒ビットマップを示す図である。
【図１４Ｄ】用語「パス」の第３の定義の下で定義されるようないくつかのパスに属するピクセルが強調表示された、図１４Ａの入力白黒ビットマップを示す図である。
【図１４Ｅ】用語「パス」の第４の定義の下で定義されるようないくつかのパスに属するピクセルが強調表示された、図１４Ａの入力白黒ビットマップを示す図である。
【図１５Ａ】一例の入力白黒ビットマップを示す図である。
【図１５Ｂ】おのおのが、パスとしての役割を果たす２つの垂直な「足（ｌｅｇ）」を有する図１５Ａの例の入力白黒ビットマップを示す図である。
【図１６】パス平均化の適用について強調表示された２つの別個の「パス」を有する図１４Ａの白黒入力ビットマップを示す図である。
【図１７Ａ】一例の入力白黒ビットマップを示す図である。
【図１７Ｂ】第１のステージからもたらされ、図１７Ａの入力白黒ビットマップに適用されるシミュレート化ボールド化処理アルゴリズムによって計算された初期グレー・レベル値を示す図である。
【図１７Ｃ】入力画像が強調表示された図１７Ｂとまさしく同じ結果を提示する図である。
【図１７Ｄ】第１の平均化法の適用の後である以外は、図１７Ｃのビットマップと同じである出力ビットマップを示す図である。
【図１７Ｅ】第２の平均化法の適用の後である以外は、図１７Ｃのビットマップと同じである出力ビットマップを示す図である。
【図１８】シミュレート化ボールド化処理についてのコンテキストを示すフローチャートである。
【図１９】コンテキスト的情報に基づいて中間グレー・レベルを割り当てるためのコンテキスト的方法の適用を示す図である。
【図２０Ａ】一例の入力白黒ビットマップを示す図である。
【図２０Ｂ】図２０Ａの入力白黒ビットマップに対するボールド化の初期量の計算の結果を示す図である。
【図２１Ａ】一例の入力白黒ビットマップを示す図である。
【図２１Ｂ】本発明の原理による、図２１Ａの入力白黒ビットマップに対する平均化の後のボールド化の結果を示す図である。
【図２２Ａ】一例の入力白黒ビットマップを示す図である。
【図２２Ｂ】図２２Ａの入力白黒ビットマップに対する従来のシミュレート化ボールド化処理の適用を示す図である。
【図２２Ｃ】図２２Ａの白黒ビットマップに対する本発明の原理によるシミュレート化ボールド化処理の適用を示す図である。
【図２３Ａ】一例の入力白黒ビットマップを示す図である。
【図２３Ｂ】「キャップ補正」の適用がないだけの、図２３Ａの白黒ビットマップに対する本発明の原理によるシミュレート化ボールド化処理の適用を示す図である。
【図２３Ｃ】図２３Ａの白黒ビットマップに対する本発明の原理による、「キャップ補正」を伴うシミュレート化ボールド化処理の適用を示す図である。
【図２４】「チューブ」を有し、そのチューブの端点が識別された、一例の入力白黒ビットマップ・セグメントを示す図である。
【図２５】チューブ・トリプレットを有する、一例の入力白黒ビットマップを示す図である。
【図２６】「オープニング」を有し、そのオープニングの部分が識別された、一例の入力白黒ビットマップを示す図である。
【図２７】用語「キャップ」の定義に従って長さ１のチューブを有する上部に対して開かれたすべての可能なキャップを示す図である。
【図２８】用語「キャップ」の定義に従って長さ２のチューブを有する上部に対して開いているすべての可能なキャップを示す図である。
【図１】
0005490360.tif 000002
【図２Ａ】
0005490360.tif 000003
【図２Ｂ】
0005490360.tif 000004
【図３Ａ】
0005490360.tif 000005
【図３Ｂ】
0005490360.tif 000006
【図３Ｃ】
0005490360.tif 000007
【図４Ａ】
0005490360.tif 000008
【図４Ｂ】
0005490360.tif 000009
【図５】
0005490360.tif 000010
【図６Ａ】
0005490360.tif 000011
【図６Ｂ】
0005490360.tif 000012
【図６Ｃ】
0005490360.tif 000013
【図７】
0005490360.tif 000014
【図８Ａ】
0005490360.tif 000015
【図８Ｂ】
0005490360.tif 000016
【図９Ａ】
0005490360.tif 000017
【図９Ｂ】
0005490360.tif 000018
【図９Ｃ】
0005490360.tif 000019
【図１０】
0005490360.tif 000020
【図１１Ａ】
0005490360.tif 000021
【図１１Ｂ】
0005490360.tif 000022
【図１２Ａ】
0005490360.tif 000023
【図１２Ｂ】
0005490360.tif 000024
【図１２Ｃ】
0005490360.tif 000025
【図１２Ｄ】
0005490360.tif 000026
【図１３】
0005490360.tif 000027
【図１４Ａ】
0005490360.tif 000028
【図１４Ｂ】
0005490360.tif 000029
【図１４Ｃ】
0005490360.tif 000030
【図１４Ｄ】
0005490360.tif 000031
【図１４Ｅ】
0005490360.tif 000032
【図１５Ａ】
0005490360.tif 000033
【図１５Ｂ】
0005490360.tif 000034
【図１６】
0005490360.tif 000035
【図１７Ａ】
0005490360.tif 000036
【図１７Ｂ】
0005490360.tif 000037
【図１７Ｃ】
0005490360.tif 000038
【図１７Ｄ】
0005490360.tif 000039
【図１７Ｅ】
0005490360.tif 000040
【図１８】
0005490360.tif 000041
【図１９】
0005490360.tif 000042
【図２０Ａ】
0005490360.tif 000043
【図２０Ｂ】
0005490360.tif 000044
【図２１Ａ】
0005490360.tif 000045
【図２１Ｂ】
0005490360.tif 000046
【図２２Ａ】
0005490360.tif 000047
【図２２Ｂ】
0005490360.tif 000048
【図２２Ｃ】
0005490360.tif 000049
【図２３Ａ】
0005490360.tif 000050
【図２３Ｂ】
0005490360.tif 000051
【図２３Ｃ】
0005490360.tif 000052
【図２４】
0005490360.tif 000053
【図２５】
0005490360.tif 000054
【図２６】
0005490360.tif 000055
【図２７】
0005490360.tif 000056
【図２８】
0005490360.tif 000057