(57)【要約】  ストローク・コントラストは、プログラム的制約又は「ヒント」を用いて、ある範囲のフォント・サイズ及び表示解像度に対して保存される。「フォント・ヒンティング」手法の一つの実現形態は、ストローク・ウェイトの正規化を実施して、ストローク・コントラストが、それをレンダリングするのに十分なフォント・サイズ及び表示解像度に対して保存されるようにする。フォント・ヒンティング命令は、グリフをレンダリングするとき、ストローク・コントラストを保存すべきか、それとも省略すべきかを判断するために使用され得るストローク・コントラスト閾値を決定する。一つの実現形態では、ストローク・コントラスト閾値は、その書体と関連付けられた１つ又は複数のストローク・コントラスト関係に基づく。他の実現形態では、ストローク・コントラスト閾値は、最小サイズ閾値、又は小文字／大文字のストローク・コントラスト関係に基づく。
2009520238.tif 000002
【特許請求の範囲】
【請求項１】
表示解像度を有する出力装置により、指定されたグリフ・サイズでの提示のために、書体のグリフにおけるストローク・コントラストを制御する方法であって、
前記グリフが、定義された基本表現を有しており、
前記指定されたグリフ・サイズ及び前記表示解像度に従って、前記グリフの前記基本表現をスケーリングするステップ（２０６）と、
前記指定されたグリフ・サイズ及び前記表示解像度に基づいて、ストローク・コントラスト閾値を決定するステップ（２０８）と、
前記グリフの前記スケーリングされた表現が、前記ストローク・コントラスト閾値を満たす場合、前記グリフにおける前記ストローク・コントラストを保存するように、前記スケーリングされた表現を変形させるステップ（２１０）と、
前記グリフの前記スケーリングされた表現が、前記ストローク・コントラスト閾値を満たしていない場合、前記グリフにおける前記ストローク・コントラストを省略するように、前記スケーリングされた表現を変形させるステップ（２１０）と
を含む方法。
【請求項２】
前記書体に関連付けられたストローク・コントラスト関係を決定し、前記ストローク・コントラスト閾値を前記ストローク・コントラスト関係に基づかせるステップを更に含む、請求項１に記載の方法。
【請求項３】
前記ストローク・コントラスト関係が、前記グリフの前記基本表現の垂直ストローク・ウェイトを前記グリフの前記基本表現の水平ストローク・ウェイトに関係付ける、請求項２に記載の方法。
【請求項４】
前記決定する動作が、
前記書体と関連付けられたストローク・コントラスト関係を決定するステップと、
前記グリフの前記スケーリングされた表現の垂直ストローク・ウェイト又は前記グリフの前記スケーリングされた表現の水平ストローク・ウェイトのいずれか大きい方のストローク・ウェイトを選択するステップと、
前記大きい方のストローク・ウェイトを、最も近くにある画素に関係した丸め点へ丸めるステップと、
前記ストローク・コントラスト関係に基づく前記丸められた大きい方のストローク・ウェイトを調整し、前記ストローク・コントラスト閾値として、調整されたストローク・ウェイト・メトリックを作成するステップと
を含む、請求項１に記載の方法。
【請求項５】
前記調整されたストローク・ウェイト・メトリックが、少なくとも解像度閾値だけ、前記丸められた大きい方のストローク・ウェイトと異なる場合、前記グリフの前記スケーリングされた表現が、前記ストローク・コントラスト閾値を満たしていると決定される、請求項４に記載の方法。
【請求項６】
前記グリフにおける前記ストローク・コントラストを保存するように、前記スケーリングされた表現を変形させる動作が、
前記グリフの前記スケーリングされた表現の垂直ストローク・ウェイト又は前記グリフの前記スケーリングされた表現の水平ストローク・ウェイトのいずれか小さい方のストローク・ウェイトを有する前記グリフのストロークを選択するステップと、
前記調整されたストローク・ウェイト・メトリックのストローク・ウェイトを有するように、前記選択されたストロークを変形させるステップと
を含む、請求項４に記載の方法。
【請求項７】
前記調整されたストローク・ウェイト・メトリックが、少なくとも解像度閾値だけ、前記丸められた大きい方のストローク・ウェイトと異なっていない場合、前記グリフの前記スケーリングされた表現が、前記ストローク・コントラスト閾値を満たしていないと決定される、請求項４に記載の方法。
【請求項８】
前記グリフにおける前記ストローク・コントラストを省略するように、前記スケーリングされた表現を変形させる動作が、
前記グリフの前記スケーリングされた表現の垂直ストローク・ウェイト又は前記グリフの前記スケーリングされた表現の水平ストローク・ウェイトのいずれか小さい方のストローク・ウェイトを有する前記グリフのストロークを選択するステップと、
前記大きい方のストローク・ウェイトのストローク・ウェイトを有するように、前記選択されたストロークを変形するステップと
を含む、請求項４に記載の方法。
【請求項９】
前記出力装置に対して前記グリフをレンダリングするステップを更に含む、請求項１に記載の方法。
【請求項１０】
前記書体と関連付けられた最小サイズ閾値を決定するステップを更に含み、前記ストローク・コントラスト閾値が前記最小サイズ閾値に基づく、請求項１に記載の方法。
【請求項１１】
前記書体の大文字の前記ストローク・ウェイトを前記書体の小文字に関係付けるストローク・コントラスト関係を決定するステップを更に含み、前記ストローク・コントラスト閾値が前記ストローク・コントラスト関係に基づく、請求項１に記載の方法。
【請求項１２】
前記ストローク・コントラスト関係が、前記グリフの大文字バージョンの前記基本表現のストローク・ウェイトを、前記グリフの小文字バージョンの前記基本表現のストローク・ウェイトに関係付ける、請求項１１に記載の方法。
【請求項１３】
前記決定する動作が、
前記書体の大文字の前記ストローク・ウェイトを前記書体の小文字のストローク・ウェイトに関係付けるストローク・コントラスト関係を決定するステップと、
前記グリフの前記スケーリングされた表現の垂直な文字のストローク・ウェイト又は前記グリフの前記スケーリングされた表現の水平な文字のストローク・ウェイトのいずれか大きい方の文字のストローク・ウェイトを選択するステップと、
前記大きい方のストローク・ウェイトを、最も近くにある画素に関係した丸め点へ丸めるステップと、
前記ストローク・コントラスト関係に基づいて、前記丸められた大きい方のストローク・ウェイトを調整し、前記ストローク・コントラスト閾値として、調整されたストローク・ウェイト・メトリックを作成するステップと
を含む、請求項１に記載の方法。
【請求項１４】
前記調整されたストローク・ウェイト・メトリックが、少なくとも解像度閾値だけ、前記丸められた大きい方のストローク・ウェイトと異なる場合、前記グリフの前記スケーリングされた表現が、前記ストローク・コントラスト閾値を満たしていると決定される、請求項１３に記載の方法。
【請求項１５】
前記グリフにおける前記ストローク・コントラストを保存するように、前記スケーリングされた表現を変形させる動作が、
前記グリフの前記スケーリングされた表現の垂直ストローク・ウェイト又は前記グリフの前記スケーリングされた表現の水平ストローク・ウェイトのいずれか小さい方のストローク・ウェイトを有する前記グリフのストロークを選択するステップと、
前記調整されたストローク・ウェイト・メトリックのストローク・ウェイトを有するように、前記選択されたストロークを変形させるステップと
を含む、請求項１３に記載の方法。
【請求項１６】
前記調整されたストローク・ウェイト・メトリックが、少なくとも解像度閾値だけ、前記丸められた大きい方のストローク・ウェイトと異なっていない場合、前記グリフの前記スケーリングされた表現が、前記ストローク・コントラスト閾値を満たしていないと決定される、請求項１３に記載の方法。
【請求項１７】
前記グリフにおける前記ストローク・コントラストを省略するように、前記スケーリングされた表現を変形させる動作が、
前記グリフの大文字バージョンの前記スケーリングされた表現のストローク・ウェイトと、前記グリフの小文字バージョンの前記スケーリングされた表現のストローク・ウェイトとに基づいて、複合ストローク・ウェイトを計算するステップと、
前記グリフの前記大文字バージョンの前記スケーリングされた表現と、前記グリフの前記小文字バージョンの前記スケーリングされた表現とのストロークを、前記複合ストローク・ウェイトを有するように変形させるステップと
を含む、請求項１３に記載の方法。
【請求項１８】
複合ストローク・ウェイトを計算する動作が、前記グリフの前記大文字バージョンの前記スケーリングされた表現の前記ストローク・ウェイトと、前記グリフの前記小文字バージョンの前記スケーリングされた表現の前記ストローク・ウェイトとを平均するステップを含む、請求項１７に記載の方法。
【請求項１９】
表示解像度を有する出力装置による提示のために、書体のグリフにおけるストローク・コントラストを制御するためのシステムであって、
前記グリフが、定義された基本表現を有しており、
指定されたグリフ・サイズ及び前記表示解像度に従って、前記グリフの前記表現をスケーリングするスケーリング・モジュール（２０８）と、
前記指定されたグリフ・サイズ及び前記表示解像度に基づいてストローク・コントラスト閾値を決定し、前記グリフの前記スケーリングされた表現が前記ストローク・コントラスト閾値を満たす場合、前記グリフにおける前記ストローク・コントラストを保存するように前記スケーリングされた表現を変形し、前記グリフの前記スケーリングされた表現が前記ストローク・コントラスト閾値を満たしていない場合、前記グリフにおける前記ストローク・コントラストを省略するように、前記スケーリングされた表現を変形するフォント・ヒンティング・モジュール（１００）と
を備えるシステム。
【請求項２０】
表示解像度を有する出力装置による提示のために、書体のグリフにおけるストローク・コントラストを制御するためのシステムであって、
前記グリフが、定義された基本表現を有しており、
指定されたグリフ・サイズ及び前記表示解像度に従って、前記グリフの前記表現をスケーリングするスケーリング・モジュール（２０８）と、
前記指定されたグリフ・サイズ及び前記表示解像度に基づいて、ストローク・コントラスト閾値を決定するフォント・ヒンティング・モジュール（１００）であって、前記ストローク・コントラスト閾値が、１つ又は複数の基本表現からのストローク・ウェイトに関係するストローク・コントラスト関係に基づいているフォント・ヒンティング・モジュール（１００）と、
前記グリフの前記スケーリングされた表現が前記ストローク・コントラスト閾値を満たす場合、前記グリフにおける前記ストローク・コントラストを保存するように、前記出力装置に対する前記スケーリングされた表現のビットマップを生成し、前記グリフの前記スケーリングされた表現が前記ストローク・コントラスト閾値を満たしていない場合、前記グリフにおける前記ストローク・コントラストを省略するように、前記出力装置に対する前記スケーリングされた表現のビットマップを生成するレンダリング・モジュール（２１２）と
を備えるシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
多くのコンピューティング・システムは、テキストを、画面上に、又は印刷されたページなど何らかの他の媒体上に表示することにより、ユーザに情報を提示することができる。人間の視覚系、ならびに様々なタイプ及び品質の電子ディスプレイもしくは印刷技術の物理的特性は、テキストが提示され得る書体を開発する場合、書体デザイナーに対して特有の課題を提示する。
【０００２】
タイポグラフィでは、書体は１組の統合された文字設計からなる。書体は、通常、アルファベット文字、数字、句読点、表意文字、及び記号（集合的に、文字又はグリフと呼ばれる）からなる。Ａｒｉａｌ（エリアル）、Ｔｉｍｅｓ  Ｎｅｗ  Ｒｏｍａｎ（タイムズニューローマン）、Ｖｅｒｄａｎａ（ベルダナ）及びＧｅｏｒｇｉａ（ジョージア）は、書体の４つの例である。従来、用語「フォント」は、特定のサイズ（通常、ポイントで測定される）と、ウェイト（例えば、淡、ブック、太字、黒）と方向（例えば、ローマン体、イタリック体、斜体）とにおいて完全な書体を示す。所与の書体に対して、典型的には、各文字は単一のグリフに相当するが、いくつかの書体のいくつかの文字は複数のグリフを含むことができる。
【０００３】
ストロークは、多くのグリフの顕著な特徴である。例えば、文字「Ｅ」を表すグリフは、３つの水平なストローク（「クロスバー」とも呼ばれる）と１つの垂直なストロークとを含むと言える。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
多くの書体において、個々のストロークは、異なる相対的な濃淡又はウェイトを有することができる。ストローク・ウェイトの関係は、「ストローク・コントラスト」と呼ばれる。ストローク・コントラストは、書体の読みやすさ及び美観に寄与することができる。最近の書体デザイナーに対する１つの課題は、或る範囲のフォントサイズ及び表示解像度に対して、ストローク・コントラストを最もよく保存するような方法で、所与の書体のグリフを表示することである。
【課題を解決するための手段】
【０００５】
本明細書で述べられ且つ特許請求される実現形態は、プログラム的制約又は「ヒント」を用いて、或る範囲のフォント・サイズ及び表示解像度に対して、ストローク・コントラストを保存するのを助ける。「フォント・ヒンティング（ｆｏｎｔ  ｈｉｎｔｉｎｇ）」手法の一つの実現形態は、ストローク・コントラストが、それをレンダリングするのに十分なフォント・サイズ及び表示解像度に対して保存されるように、ストローク・ウェイトの規則化を実施する。代りに、フォント・サイズ及び表示解像度が、所与のフォントに対して必要なストローク・ウェイトのすべてをレンダリングするのに不十分である場合、いくつかのストローク・ウェイトは、これらのサイズ及び解像度制限に適合するように等しくされ、一方、他のものは、ストローク・コントラストの少なくともいくつかを保存するように変形される。フォント・ヒンティング命令は、そのグリフをレンダリングするときに、ストローク・コントラストを保存すべきか、それとも省略すべきかを決定するために使用されるストローク・コントラスト閾値を決定する。一つの実現形態では、ストローク・コントラスト閾値は、書体と関連付けられた１つ又は複数のストローク・コントラスト関係に基づく。他の実現形態では、ストローク・コントラスト閾値は最小サイズ閾値に基づく。更に他の実現形態では、ストローク・コントラスト閾値は小文字／大文字のストローク・コントラスト関係に基づく。
【０００６】
いくつかの実現形態では、製品は、コンピュータ・プログラム製品として提供される。コンピュータ・プログラム製品の一つの実現形態は、コンピュータ・システムにより読み取り可能であってコンピュータ・プログラムを符号化したコンピュータ・プログラム記憶媒体を提供する。コンピュータ・プログラム製品の他の実現形態は、コンピューティング・システムにより搬送波において具現化されてコンピュータ・プログラムを符合化したコンピュータ・データ信号において提供され得る。他の実現形態も本明細書で述べられ且つ列挙される。
【０００７】
この要約は、以下の詳細な説明で更に述べられる簡単な形で、概念の選択を導入するために提供される。この要約は、特許請求される主題の主要な特徴又は本質的な特徴を識別することを意図してはおらず、特許請求される主題の範囲を限定するために使用されることも意図していない。
【発明を実施するための最良の形態】
【０００８】
スケーリングが可能なアウトライン・フォントは、座標、数学的曲線及び／又は他のパラメータにより記述される連続的な形状又は縁取り文字として定義される。概して、グリフは、高解像度表現により定義されることができ、縁取り文字がその１つの例である。他の高解像度表現は、組み合わされた輪郭、コンポーネント要素、ビットマップ、数学的記述及び他の表現を含むことができるが、これらに限定されない。
【０００９】
個々のグリフが表示され、又はその他の形で出力される（例えば、印刷される）とき、基本縁取り文字は、メモリ（例えば、フォント・ファイル又はフォント・キャッシュ）から読み取ることのできるフォント定義で記述される。フォント定義は、フォント設計単位（又は「フォント単位」）のｘ軸及びｙ軸を有するデカルト格子に基づくことができるが、他の座標フレームワークを使用することもできる。指定された書体におけるグリフの基本縁取り文字は、このようなフォント単位を用いて、表示されるグリフのサイズ、又は出力装置の解像度とは関係なく記述されることができる。
【００１０】
或るグリフを生成すべき場合、基本縁取り文字は、指定されたサイズにスケーリングされ、次いで、指定されたサイズで、ディスプレイ又はハードコピー出力装置上に、離散的なドット・ラスタ（例えば、画素のビットマップ）を作成するために使用される。このようなビットマップが、スケーリングされた縁取り文字内に中心がある各画素又はプリンタセルを単にオフすることなどの単純化した方法で作られる場合、特徴の不整合及び形状の破断（「ドロップアウト」と呼ばれる）などの幾つかの視覚的に混乱させるアーティファクトを生ずる恐れがある。例えば、グリフがスケーリングされて、小さいサイズで及び／又は低解像度ディスプレイへとレンダリングされる場合、そのグリフを表すためにオン／オフされる画素は、スケーリングされた縁取り文字を肉眼的に近似させているだけである。なぜなら、スケーリングされた縁取り文字に完全に従うには、結果として生じる画素は大き過ぎて本質的に離散し過ぎるからである。
【００１１】
したがって、「フォント・ヒンティング」と呼ばれる更なる処理は、所与のサイズ及び表示解像度に対して、グリフのレンダリングを最適化するために使用されることができる。フォント・ヒンティング・コードは、個々のグリフのフォント定義に含まれる又は関連付けられることができる。フォント・ヒンティングは、フォントのラスタ化を促進するために、ラスタ・イメージ・プロセッサ（ＲＩＰ）に情報を提供する。例えば、フォント・ヒンティングは、レンダリングを改良する目的で、スケーリングされた縁取り文字を変形させるために使用することができる。フォント・ヒンティングは、（１）同じ太さになるように意図されたストロークは同じ太さに見えることを保証するため、（２）望ましくないオーバシュート（例えば、「Ｏ」などの丸味の付いた文字が意図せずして「Ｍ」などの平らな文字よりも高く見えるように拡大されるとき）を抑圧するため、（３）異なるグリフ上の同じ高さとなるべき特徴を整列させるため、（４）縦線（ｓｔｅｍ）間のスペースを開放状態に保つ（例えば、「ｍ」の垂直なストローク間のスペースを視認可能にする）ため、（５）平行なストロークの組の間で一貫した間隔を保つようにするため、及び（６）ドロップアウトを生ずるエラーなどのラスタ化アルゴリズムにおけるエラーを補償するために使用されることができる。
【００１２】
図１は、例示的なフォント・ヒンティング・モジュール１００及び得られた文字表示１０２、１０４、１０６、１０８を示す。文字表示１０２の画面で分かるように、文字「Ｈ」は、２つの主要な垂直ストローク１１０、１１２と１つの水平ストローク１１４（「クロスバー」とも呼ばれる）とを含む。文字表示１０２における文字は、特定のサイズ及び解像度で表示され、水平ストローク１１４（例えば、１画素）と比較して垂直ストローク１１０及び１１２の方が太い又は大きいストローク・ウェイト（例えば、３画素）を有するストローク・コントラストを示している。フォント・ヒンティング・モジュール１００は、指定されたフォントの文字「Ｈ」のスケーリングされた縁取り文字を受け取り、フォント・ヒンティング命令を実行して、スケーリングされた縁取り文字をレンダリングを向上させるように変形させる。
【００１３】
文字表示１０４は、文字表示１０２よりも小さいサイズで且つ高い解像度で、文字「Ｈ」を示す。けれども、サイズ及び表示解像度の組合せは、文字表示１０２で示されたものと同じストローク・コントラストを、すなわち、垂直ストロークにおける３画素と水平ストロークにおける１画素を保存することができる。フォント・ヒンティング・モジュール１００は、指定されたフォントの文字「Ｈ」のスケーリングされた縁取り文字を受け取り、フォント・ヒンティング命令を実行して、特定のフォント及び解像度に適合するように定義を変形させる。
【００１４】
それとは対照的に、文字表示１０６も、文字表示１０２よりも小さいサイズで文字「Ｈ」を示しているが、文字表示１０４よりも低解像度である。スケーリングだけに基づくならば、文字の或る様相は、文字表示１０６に示された「Ｈ」にマップされないことになる。その代わり、垂直ストロークは、文字表示１０４におけるものよりも高く、垂直のディメンジョンにおいて不均合いであり且つセリフに対して不均衡に見え、水平ストロークは、垂直ストロークの長さに対して不均合いである。したがって、サイズ及び表示解像度のこの組合せに対して、フォント・ヒンティング・モジュール１００は、フォント・ヒンティング命令を実行して定義を変形させ、これらの特徴を調整するとともに、垂直及び水平ストロークのウェイトの何らかの差を補強することによってストローク・コントラストを保存する。ストローク・コントラストは文字表示１０２、１０４と同じではないが、文字表示１０６において認知可能であり、それにより、書体の可読性及び個性を維持することができる。
【００１５】
しかし、文字表示１０８は、文字表示１０４、１０６と同様のサイズで文字「Ｈ」を示しているが、文字表示１０６よりも更に低解像度である。この構成においては、フォント・ヒンティング・モジュール１００は、ストローク・コントラストを保存することができておらず、それは、垂直及び水平ストロークの一様なストローク・ウェイトから明らかである。
【００１６】
したがって、グリフのサイズ及び表示の解像度は、所与のフォントの表示されたグリフにエラーを生じる可能性がある。特に、これらのパラメータは幾つかのフォントにおいてストローク・コントラストを壊す恐れがある。したがって、フォント・ヒンティング・モジュール１００は、フォント・ヒンティング命令を実行して、できるだけストローク・コントラストを保存するように、グリフのスケーリングされた縁取り文字を変形させる。
【００１７】
図２は、所与のフォントにおけるグリフをレンダリングするための例示的な動作２００を示す。定義動作２０２は書体を定義する。前に論じたように、書体は、典型的には、その文字セットにおける各グリフの基本縁取り文字を定義する１組の座標を含むように定義される。いくつかの実現形態では、書体における個々のグリフの定義は、タイポグラファーにより手動で定義され得る。他の実現形態では、個々のグリフの定義は、グリフ・サンプルのコンピュータで実施される分析を用いて、又は基本縁取り文字の直接的なコンピュータ化された生成を用いて、自動的に決定され得る。更に、他の実現形態では、個々のグリフ又はフォントに対して、手動による定義とコンピュータ化された定義とを組み合わせることができる。
【００１８】
他の定義動作２０４は、所与のサイズ及び表示解像度に対して、グリフのスケーリングされた縁取り文字を変形させるためのフォント・ヒンティング命令を定義する。例えば、フォント・ヒンティング命令は、レンダリング時に動作を実行して、垂直のストロークが一様な幅であることを保証するように、「Ｈ」のスケーリングされた縁取り文字を動かすことができる。一つの実現形態では、定義動作２０４は、所与の書体（又はその部分）のフォント定義におけるストローク・ウェイトの測定値を記録する。これらの測定値は、書体と関連付けられた１つ又は複数のストローク・コントラスト関係を決定するように分析される。
【００１９】
読み取り動作２０６は、グリフに対するフォント定義とフォント・ヒンティング・コードとを読み取る。一つの実現形態では、フォント定義は、ハードディスクのフォント・ライブラリに記憶されることができる。代りに、フォント定義は、グリフがレンダリングされるごとに繰り返して使用されるように、メモリにキャッシュされ得る。
【００２０】
スケーリング動作２０８は、グリフに対して指定された基本縁取り文字をスケーリングする。一つの実現形態では、基本縁取り文字は、デカルト平面と整合されたフォント単位の座標を用いて定義され、スケーリングは、これらの座標に対する変換を用いて達成されることができる。スケーリング動作２０８は、アプリケーション・プログラムでフォント・ヒンティング・モジュールと関連付けられたスケーリングモジュール、オペレーティング・システム、又はコンピュータ又はコンピュータ化された装置の他のシステムにより実施することができる。１つの例示的なスケーリング・アルゴリズムが以下に示される。
【００２１】
Ｘｎ’＝（サイズ・解像度／７２・粘度）・Ｘｎ
ただし、Ｘｎは、フォント単位ベースのデカルト格子でグリフと関連付けられたＸ座標を表し、Ｘｎ’は、画素座標系におけるグリフと関連付けられた対応するスケーリングされたＸ座標を表し、サイズは、スケーリングされたグリフのポイント・サイズを表し、解像度は出力装置の解像度を表し、粒度は、ｅｍ当たりのフォント単位で、座標格子（すなわち、ｅｍの二乗）と関連付けられた粒度メトリックを表す。係数「７２」は、１インチ当たりのポイント数を表す。
【００２２】
命令動作２１０は、グリフのスケーリングされた縁取り文字に対して、フォント・ヒンティング・コードを実行する。一つの実現形態では、スケーリングされた縁取り文字は、書体、スケーリングされたグリフ・サイズ及び表示装置の解像度と関連付けられた１つ又は複数のストローク・コントラスト関係に基づいて、フォント・ヒンティング・コードにより計算された垂直及び水平ストローク幅を満たすように変形される。命令動作２１０の例示的な実現形態の詳細は、図４に関して提供される。命令動作２１０で提供されたフォント・ヒンティングの結果は、スケーリングされたグリフ・サイズ及び表示解像度を考慮して可能である場合、何らかのストローク・コントラストを表すスケーリングされた縁取り文字である。フォント・ヒンティングの他の態様は、ドロップアウト、オーバシュートなどの修復を含む、スケーリングされたグリフの他の機能を改変することができる。
【００２３】
レンダリング動作２１２は、変形されスケーリングされた縁取り文字に基づいて、グリフのビットマップを生成する。例えば、変形されスケーリングされた縁取り文字内に中心が位置する画素はオフにされる（暗くされる）ことができ、一方、変形されスケーリングされた縁取り文字の外側にその中心が位置する画素はオンにされる（明るくされる）ことができる。また、個々の画素の状態は、単にオフ又はオンするだけではなく、漸進的である（例えば、次第に明るく又は暗くなる）ことも可能であることを理解されたい。代替のルールを用いてビットマップを生成することも可能である。例えば、個々の画素は、個々の副画素をオン又はオフする（すなわち、明るく又は暗くする）ように、副画素（例えば、ある画素の異なるカラーチャネル）へと分割され得る。レンダリング動作２１２は、アプリケーション・プログラムのレンダリング・モジュール、オペレーティング・システム、又はコンピュータもしくはコンピュータ化された装置の他のシステムにより実施されることができる。
【００２４】
図３は、ストローク・コントラストを保存するフォント・ヒンティングを用いて、書体を定義するための例示的な動作３００を示す。定義動作３０２は、所与の書体の個々のグリフに対する基本縁取り文字を定義する。前に論じたように、基本縁取り文字は、座標、曲線及び／又は他のパラメータを用いて定義されることができる。一つの実現形態では、手書きで又はコンピュータで描いたグリフの基本縁取り文字は、フォント単位でデジタル化され、フォント・ファイルに記憶され得る。しかし、個々のグリフに対する基本縁取り文字は、コンピュータ化されたモデル又はイメージから生成されることもできる。
【００２５】
ウェイト動作３０４は、書体における代表的なグリフ又は複数のグリフの垂直ストロークのストローク・ウェイト（例えば、太さ）、及び水平ストロークのストローク・ウェイトを決定する。一つの実現形態では、一連の前処理ステップで、自動ヒンタ（ｈｉｎｔｅｒ）プログラムが、グリフ中で識別されるすべてのストローク（垂直、水平、及び対角線）の構成部分を表すデータ構造を構築する。自動ヒンタ・プログラムは、何らかのメトリックに従って、ストロークのエッジ部となるのに十分な直線であると見なされる縁取り文字のセグメントのリストを生成する。自動ヒンタ・プログラムは、次いで、実質的に逆平行なエッジと連続エッジの対（例えば、グリフ「Ｈ」上の垂直ストロークの一方の側で、エッジはクロスバーにより「中断されて」いる）を識別し、個々のストロークを表すデータ構造の一部を構築する。各エッジは、何らかのタイポグラフィックなヒューリスティックに従って、最もよくそのエッジを記述する代表的な制御点と関連付けられる。例えば、数学的に完全な直線のエッジ上では、２つの制御点だけが必要であり、それらのいずれかが代表的な制御点の目的に資することができる。それとは対照的に、例えば、わずかに凹んだエッジ上では、前記目的を果たすために、最大凹部の中心における制御点が識別され得る。
【００２６】
次いで、距離の決定が、ストロークの各側部の代表的な制御エッジを選択し、その制御エッジ上の代表的な制御点間のユークリッド距離をとり、この距離をストロークの主方向に直角な法線ベクトル上に投影することにより行われる。例えば、垂直ストローク（ｙ方向に向いている）として識別されたストロークの場合、ストローク・ウェイトを決定するために使用される２つの制御点は、互いに水平方向に対向している必要はなく、したがって、距離は水平な法線（すなわち、ｘ方向）上に投影される。
【００２７】
計算動作３０６は、ストローク・ウェイトの測定値を処理する。一つの実現形態では、単一の書体を横断する複数の垂直ストロークは、１つの複合垂直ストローク・ウェイトを生ずるように平均化され、また単一の書体を横断する複数の水平ストローク・ウェイトは、１つの複合水平ストローク・ウェイトを生ずるように平均化される。代替の実現形態では、１つ又は複数の参照グリフからの垂直及び水平ストローク・ウェイトが、複合垂直及び水平ストローク・ウェイトを表すために使用される。他の代替の実現形態では、個々のグリフに対する平均の垂直及び水平ストローク・ウェイトが、そのグリフに対する複合垂直及び水平ストローク・ウェイトとして使用され得る。
【００２８】
決定動作３０８は、複合ストローク・ウェイトを用いて、所与の書体に対して又は書体の個々のグリフに対してストローク・コントラスト関係を決定する。例えば、書体「Ｖｅｒｄａｎａ」において、主要な垂直ストロークは１９８フォント単位のウェイトで設計されるが、主要な水平ストロークは１７６フォント単位のウェイトで設計される。細いストロークを、より太いストロークのパーセンテージとして関係付けるストローク・コントラスト関係を用いると、得られるストローク・コントラスト関係は８９％である。比、勾配などを含む他の形のストローク・コントラスト関係、ならびに太いストローク・ウェイトを、より細いストローク・ウェイトのパーセンテージとして関係付ける他の形のストローク・コントラスト関係もまた使用されることができる。
【００２９】
記憶動作３１０は、書体及び／又はその書体の個々のグリフと関連する１つ又は複数のストローク・コントラスト関係を記録する。フォント・ヒンティング期間に使用され得る解像度閾値、最小サイズ閾値、ストローク・コントラスト関係などを含む他のパラメータもまた、書体及び／又は個々のグリフと関連付けられ得る。
【００３０】
図４はストローク・コントラストを保存するフォント・ヒンティングを用いて、フォント中のグリフをレンダリングするための例示的な動作４００を示す。出力のために或るグリフが選択されたとき、基本グリフ縁取り文字のフォント定義、及び関連するフォント・ヒンティング命令と他のパラメータが、読み取り動作４０２で、フォント・ライブラリ（又はキャッシュ）から読み取られる。スケーリング動作４０４は、指定されたグリフ・サイズ及び表示装置の解像度に基づいて、基本縁取り文字をスケーリングする。
【００３１】
丸め動作４０６は、スケーリングされたグリフ縁取り文字に対して、ストローク・ウェイトのより大きい方（すなわち、垂直又は水平の）を画素で測定し、測定されたストローク・ウェイトを最も近くにある画素に、又は画素に関係する何らかの丸め点へ丸める。調整動作４１０は、丸められた、より大きいストローク・ウェイトをストローク・ウェイト関係によって調整し、調整されたストローク・ウェイト・メトリックをストローク・メトリック閾値として決定するように丸める。例えば、一つの実現形態では、グリフに対する丸められた垂直のストローク・ウェイトが５画素（ストローク・ウェイトの太い方）であり、ストローク・コントラスト関係が８９％である場合、調整されたストローク・ウェイト・メトリックは、
調整されたストローク・コントラスト・メトリック＝丸め（５画素の８９％）
＝丸め（４．４５画素）
＝４画素
となる。
【００３２】
判断動作４１２は、スケーリングされた縁取り文字が、ストローク・コントラスト閾値を満たすかどうかを試験する。例えば、図４で示すように、調整されたストローク・ウェイト・メトリックが、１画素などの少なくとも指定された解像度閾値だけ、より大きいストローク・ウェイトとは異なる場合、スケーリングされた縁取り文字は、ストローク・コントラスト閾値を満たす。判断動作４１２は、グリフが、ストローク・コントラスト閾値のどちら側に存在するかを有効に識別する。ストローク・コントラスト閾値の一方の側では、ストローク・コントラストが保存され、ストローク・コントラスト閾値の他方の側では、ストローク・コントラストは省略される。
【００３３】
１画素の指定された解像度閾値を有する上記の例の場合、４画素の調整されたストローク・ウェイト・メトリックは、より大きいストローク・ウェイト（５画素）とは、少なくとも１画素（例示的な解像度閾値）だけ異なる。したがって、ストローク・コントラスト閾値は満たされ、割り当て動作４１４は、その調整されたストローク・ウェイト・メトリックをグリフのより小さいストローク・ウェイトへ割り当てて、それにより、ストローク・コントラストを保存する。そうではなくて、調整されたストローク・ウェイト・メトリックが、以下で述べる状況などのように、より大きいストローク・ウェイトと少なくとも１画素は異なっていない場合、
調整されたストローク・コントラスト・メトリック＝丸め（５画素の９１％）
＝丸め（４．５５画素）
＝５画素
となる。そこで、ストローク・コントラスト閾値は満たされず、他の割り当て動作４１６が、より大きいストローク・ウェイトをグリフのより小さいストロークに割り当てて、それによりストローク・コントラストを犠牲にする。
【００３４】
フォント・ヒンティング動作４１８は、割り当てられたストローク・ウェイトを有するように、より小さいストロークのスケーリングされた縁取り文字を変形させる。調整されたストローク・ウェイト・メトリックが（例えば、割り当て動作４１４で）割り当てられた場合、より小さいストロークは、この変形に基づいて少なくとも解像度閾値だけ、より大きいストロークとの対比を示す。それとは対照的に、より大きいストローク・ウェイトが（例えば、割り当て動作４１６で）割り当てられた場合、より小さいストロークは、この変形に基づいて、より大きいストロークとの対比を示すことはない。
【００３５】
ストローク・コントラスト閾値は、上記で述べた調整されたストローク・コントラスト・メトリック手法などの様々な異なる方法を用いて決定されることができる。代替の一つの実現形態では、ストローク・コントラスト閾値は、最小サイズ閾値（ｅｍ当たり最小画素閾値など）に基づく。スケーリングされたグリフが、最小サイズ閾値のサイズ又はそれを超えるサイズである場合、ストローク・コントラストは保存されることになる。いくつかのタイポグラフィックなアプリケーションでは、ｅｍ当たり１画素のサイズは、出力装置環境の具体的な特性を示すことができる。例えば、ｅｍ当たり４２画素は、３００ドット・パー・インチ（ｄｐｉ）出力装置（例えば、レーザ又はインクジェット・プリンタ）上で１０ポイントに相当しており、これは典型的なテキスト・フォント・サイズとローエンドの出力装置の典型的な解像度とを表している。したがって、タイポグラフィのエンジニアは、例えば、最小サイズ閾値を満たすように（例えば、最小サイズ閾値で、又はそれを超えて）レンダリングされる任意のグリフが（例えば、割り当て動作４１４を用いるなどにより）ストローク・コントラストを保存してレンダリングされるように、例えば、このような出力装置に対して、ｅｍ当たり４２画素の最小サイズ閾値を設定することができる。それとは対照的に、最小サイズ閾値を満たさないように（例えば、最小サイズ閾値以下であるように）レンダリングされる任意のグリフは、（例えば、割り当て動作４１６などにより）ストローク・コントラストを省略するようにレンダリングされる。
【００３６】
更に他の実現形態では、大文字のストロークと小文字のストロークとの間のストローク・コントラストを制御することができる。いくつかの書体に対して、大文字の主要な垂直ストロークは、対応する小文字の主要な垂直ストロークよりも大きくなり得る。例えば、Ｖｅｒｄａｎａでは、ある文字の大文字の主要な垂直ストロークは、１９８フォント単位のウェイトを有するように設計され、また同じ文字の小文字の主要な垂直ストロークは、１８８フォント単位のウェイトを有するように設計されており、９５％の大文字／小文字のストローク・コントラスト関係を示す。
【００３７】
いくつかの出力コンテキストでは、大文字の主要なストロークは、小文字の主要なストロークよりも低いｅｍ当たりの画素でストローク・コントラスト閾値を満たしており、その結果、大文字は或るサイズ／解像度条件でストローク・コントラストを示すが、小文字は同じサイズ／解像度条件でストローク・コントラストを示さないことになる。この状況では、大文字の方が小文字よりも明確に幅がある又は太く見えるという、意図しない且つ混乱した結果を生ずる恐れがある。
【００３８】
したがって、この実現形態では、ストローク・コントラスト閾値は、大文字／小文字ストローク・コントラスト関係に基づいて決定される。グリフのスケーリングされた縁取り文字が（例えば、判断動作４１２に関して述べたものと同様の試験、ｅｍ当たりの最小画素サイズ、又は何らかの他の方法を用いて）ストローク・コントラスト閾値を満たす場合、スケーリングされたグリフは、大文字と小文字とに対して、（例えば、割り当て動作４１４を用いるなどにより）ストローク・コントラストを保存するようにレンダリングされる。それとは対照的に、スケーリングされたグリフがストローク・コントラスト閾値を満たさない場合、スケーリングされたグリフは、ストローク・コントラストを省略するようにレンダリングされるが、大文字と小文字との間の一貫性は維持する。したがって、この場合、複合垂直及び水平ストローク・ウェイトは、書体の大文字と小文字の間で計算され、複合垂直ストローク・ウェイトは、大文字と小文字との垂直ストロークに適用され、複合水平ストローク・ウェイトは、大文字と小文字との水平ストロークに適用される。理解されるように、複合ストローク・ウェイトは、大文字と小文字のストローク・ウェイトを平均すること、大文字と小文字のストローク・ウェイトを比例配分することなどを含む、様々な方法で計算されることができる。
【００３９】
本発明を実施するための図５の例示的なハードウェア及び動作環境は、処理装置２１、システム・メモリ２２、及び、システム・メモリを含む様々なシステム・コンポーネントを処理装置２１に動作可能に結合するシステム・バス２３を含むコンピュータ２０の形の汎用コンピューティング装置を含む。コンピュータ２０のプロセッサが単一の中央処理装置（ＣＰＵ）、又は一般に並列処理環境と呼ばれる複数の処理装置を備えるように、１つだけの処理装置２１又は複数の処理装置２１が存在する。コンピュータ２０は、従来のコンピュータ、分散コンピュータ、又は他の任意のタイプのコンピュータとすることができ、本発明はそれらに限定されない。
【００４０】
システム・バス２３は、メモリ・バス又はメモリ・コントローラ、周辺バス、スイッチ型ファブリック、ポイントツーポイント接続、及び様々なバス・アーキテクチャのうちの任意のものを使用するローカル・バスを含むいくつかのタイプのバス構造のうちの任意のものであり得る。システム・メモリは単にメモリとも呼ばれ、ＲＯＭ（読み取り専用メモリ）２４及びＲＡＭ（ランダム・アクセス・メモリ）２５を含む。起動期間などにコンピュータ２０内のエレメント間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム（ＢＩＯＳ）２６がＲＯＭ２４に記憶される。コンピュータ２０は更に、ハードディスク（図示せず）から読み取り又は書き込むためのハードディスク・ドライブ２７、取外し可能な磁気ディスク２９から読み取り又は書き込むための磁気ディスク・ドライブ２８、及びＣＤ  ＲＯＭ又は他の光媒体などの取外し可能な光ディスク３１から読み取り又は書き込むための光ディスク・ドライブ３０を含む。
【００４１】
ハードディスク・ドライブ２７、磁気ディスク・ドライブ２８及び光ディスク・ドライブ３０は、それぞれ、ハードディスク・ドライブ・インターフェース３２、磁気ディスク・ドライブ・インターフェース３３、及び光ディスク・ドライブ・インターフェース３４によりシステム・バス２３に接続される。ドライブ及びその関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラム・モジュール、及びコンピュータ２０のための他のデータの不揮発性の記憶を提供する。当業者であれば理解されるように、磁気カセット、フラッシュメモリ・カード、デジタル・ビデオディスク、ＲＡＭ（ランダム・アクセス・メモリ）、ＲＯＭ（読み取り専用メモリ）など、コンピュータによりアクセス可能なデータを記憶できるコンピュータ可読媒体のうちの任意のタイプが、例示的な動作環境で使用され得る。
【００４２】
オペレーティング・システム３５、１つ又は複数のアプリケーション・プログラム３６、他のプログラム・モジュール３７及びプログラム・データ３８を含むいくつかのプログラム・モジュールは、ハードディスク、磁気ディスク２９、光ディスク３１、ＲＯＭ２４又はＲＡＭ２５に記憶されることができる。ユーザは、キーボード４０及びポインティング装置４２などの入力装置を介して、パーソナル・コンピュータ２０にコマンド及び情報を入力することができる。他の入力装置（図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、サテライト・ディッシュ、スキャナなどを含むことができる。これらの及び他の入力装置は、システムバスに結合されるシリアルポート・インターフェース４６を介して処理装置２１に接続されることが多いが、パラレルポート、ゲームポート、又はユニバーサル・シリアル・バス（ＵＳＢ）などの他のインターフェースにより接続され得る。モニタ４７又は他のタイプの表示装置はまた、ビデオ・アダプタ４８などのインターフェースを介してシステム・バス２３に接続される。モニタに加えて、コンピュータは、典型的には、スピーカ及びプリンタなどの他の周辺出力装置（図示せず）を含む。
【００４３】
コンピュータ２０は、遠隔コンピュータ４９などの１つ又は複数の遠隔コンピュータへの論理接続を用いて、ネットワーク環境で動作することができる。これらの論理接続は、コンピュータ２０に結合された又はコンピュータ２０の一部である通信装置により達成されるが、本発明は通信装置の特定のタイプに限定されるものではない。遠隔コンピュータ４９は、他のコンピュータ、サーバ、ルータ、ネットワークＰＣ、クライアント、ピア（ｐｅｅｒ）装置、又は他の共通のネットワーク・ノードであり得、典型的には、コンピュータ２０に対して上記で述べたエレメントの多くを又はすべてを含むが、図５にはメモリ記憶装置５０だけが示されている。図５に示された論理接続は、ローカル・エリア・ネットワーク（ＬＡＮ）５１及び広域ネットワーク（ＷＡＮ）５２を含む。このようなネットワーキング環境は、オフィス・ネットワーク、企業規模のコンピュータ・ネットワーク、イントラネット及びインターネットで普通のものであり、それらのすべてはネットワークの形式である。
【００４４】
ＬＡＮネットワーキング環境で使用されたとき、コンピュータ２０は、通信装置の１つのタイプであるネットワーク・インターフェース又はアダプタ５３を介してローカル・ネットワーク５１に接続される。ＷＡＮネットワーキング環境で使用されるとき、コンピュータ２０は、典型的には、モデム５４、ネットワーク・アダプタ又は広域ネットワーク５２を介して通信を確立するための通信装置の１つのタイプ又は任意の他のタイプの通信装置を含む。内部又は外部とすることのできるモデム５４は、シリアルポート・インターフェース４６を介してシステム・バス２３に接続される。ネットワーク化された環境では、パーソナル・コンピュータ２０又はその部分に関連して示されたプログラム・モジュールは、遠隔のメモリ記憶装置に記憶されることができる。理解されるとおり、図示されたネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立するための他の手段及び通信装置が使用できる。
【００４５】
例示的な実現形態では、スケーリング・モジュール、フォント・ヒンティング・モジュール、レンダリング・モジュール及び他のモジュールは、メモリ４０４及び／又は記憶装置４０８、４１０に記憶された命令により実施され、処理装置４０２により処理される。フォント定義、フォント・ヒンティング・コード、ストローク・コントラスト関係、解像度閾値、最小サイズ閾値、ストローク・コントラスト閾値、スケーリングされたフォント縁取り文字、レンダリングされたビットマップ及び他のデータは、メモリ４０４及び／又は記憶装置４０８及び４１０に記憶される。
【００４６】
本明細書で述べた技術は、１つ又は複数のシステムで論理動作及び／又はモジュールとして実施される。論理動作は、１つ又は複数のコンピュータ・システムで実行される、一連のプロセッサで実施されるステップとして、又は１つ又は複数のコンピュータ・システム内の相互接続されたマシン又は回路モジュールとして実施され得る。同様に、様々なコンポーネント・モジュールの説明は、モジュールにより実行される又は行われる動作に関して提供される。その結果得られる実現形態は、述べられた技術を実施するその基礎となるシステムの性能要件に依存しており、選択の問題である。したがって、本明細書で述べられた技術の実施の形態を構成する論理動作は、動作、ステップ、オブジェクト又はモジュールと様々に呼ばれる。理解されるように、更に、論理動作は、明示的にその他の形で要求されない限り、又は、特有の順序が、要求する言語により本質的に必要とされない限り、任意の順序で実施できる。
【００４７】
上記の仕様、実例及びデータは、本発明の例示的な実施の形態の構造及び使用法の完全な説明を提供する。本発明の様々な実施の形態が、ある程度詳細に、あるいは１つ又は複数の個々の実施の形態を参照して上記で述べられてきたが、当業者であれば、本発明の趣旨又は範囲から逸脱することなく、開示された実施の形態に対して、数多くの改変を加えることも可能である。特に、上記の技術は、パーソナル・コンピュータに依存せずに使用できることを理解されたい。したがって、他の実施の形態も企図される。上記の説明に含まれ且つ添付の図面で示されたすべてのものは、特定の実施の形態の例示のためだけであり、限定するものではないと解釈すべきであることが意図される。細部又は構造における変更は、添付の特許請求の範囲で定義された本発明の基本的な要素から逸脱することなく行うことができる。
【００４８】
本主題は、構造的特徴及び／又は方法論的技術に特有の言語で述べられているが、添付の特許請求の範囲で定義された主題は、上記で述べられた特定の特徴又は行為に必ずしも限定されないことを理解されたい。そうではなくて、上記で述べられた特定の機能及び行為は、特許請求される主題を実施するための例示的な形態として開示される。
【図面の簡単な説明】
【００４９】
【図１】例示的なフォント・ヒンティング・モジュール、及び得られた文字表示を示す図である。
【図２】所与のフォントでグリフをレンダリングするための例示的な動作を示す図である。
【図３】ストローク・コントラストを保存するフォント・ヒンティングを用いて、書体を定義するための例示的な動作を示す図である。
【図４】ストローク・コントラストを保存するフォント・ヒンティングを用いて、フォントにおけるグリフをレンダリングするための例示的な動作を示す図である。
【図５】述べられた技術を実施するのに有用であり得る例示的なシステムを示す図である。
【図１】
2009520238.tif 000003
【図２】
2009520238.tif 000004
【図３】
2009520238.tif 000005
【図４】
2009520238.tif 000006
【図５】
2009520238.tif 000007
【国際調査報告】
2009520238.tif 000008
2009520238.tif 000009