(57)【要約】フォント制御値選択が、フォント制御値の閾値の個数が特定されるまでフォントプロパティ値の分布を漸進的にフィルタすることにより、自動化される。フォントヒンティング命令は、これらのアルゴリズム的に決定されるフォント制御値を用いてパラメータ化されてよく、これらのフォント制御値は、その書体全体にわたるグリフアウトラインのフォントプロパティの計測から得られてよい。一実装では、計測されたフォントプロパティの分布は漸進的にフィルタされ、閾値条件などの所定の基準を満たす分布特性を特定する。その分布の閾値を満たす点に対応するフォントプロパティ値は、フォント制御値として割り当てられる。【選択図】図１
2009520216.tif 000002
【特許請求の範囲】
【請求項１】
フォントヒンティング命令をパラメータ化する際に用いる１つまたは複数のフォント制御値を生成する方法であって、前記フォント制御値は書体と関連付けられ、
前記書体のグリフのフォントプロパティの計測に基づきフォントプロパティ分布（２０２）を生成するステップ（３０４）と、
フィルタされたフォントプロパティ分布（２１２）を生成するために、前記フォントプロパティ分布（２０２）を漸進的にフィルタするステップ（３１０）と、
前記１つまたは複数のフォント制御値を前記フィルタされたフォントプロパティ分布（２１２）から得られたフォントプロパティ値に設定するステップ（３１２）と
を含む方法。
【請求項２】
前記漸進的にフィルタするステップの操作は、
前記フィルタされたフォントプロパティ分布が所定の基準を満たすまで、次第により強くなるフィルタ強度で前記フォントプロパティ分布を漸進的にフィルタするステップを含む、請求項１に記載の方法。
【請求項３】
前記漸進的にフィルタするステップの操作は、
前記フィルタされたフォントプロパティ分布が所定の基準を満たすまで、次第により強くなるフィルタ強度で前記フォントプロパティ分布を漸進的にフィルタするステップを含み、前記所定の基準は、前記フィルタされたフォントプロパティ分布内の極大値の最大個数を表す、請求項１に記載の方法。
【請求項４】
前記漸進的にフィルタするステップの操作は、
前記フィルタされたフォントプロパティ分布が所定の基準を満たすまで、次第により強くなるフィルタ強度で前記フォントプロパティ分布を漸進的にフィルタするステップを含み、前記所定の基準は、前記フィルタされたフォントプロパティ分布内の極小値の最大個数を表す、請求項１に記載の方法。
【請求項５】
前記漸進的にフィルタするステップの操作は、
前記フィルタされたフォントプロパティ分布内の１つまたは複数の極大値を特定するステップと、
前記フィルタされたフォントプロパティ分布内の前記１つまたは複数の極大値の個数をカウントするステップと
を含む、請求項１に記載の方法。
【請求項６】
前記漸進的にフィルタするステップの操作は、
前記フィルタされたフォントプロパティ分布内の１つまたは複数の極小値を特定するステップと、
前記フィルタされたフォントプロパティ分布内の前記１つまたは複数の極小値の個数をカウントするステップと
を含む、請求項１に記載の方法。
【請求項７】
前記所定の基準は、前記書体の前記フォントプロパティに関連付けられるフォント制御値の最大個数を表す、請求項１に記載の方法。
【請求項８】
前記漸進的にフィルタするステップの操作は、
ガウス分布ぼかしフィルタを用いて前記フォントプロパティ分布をフィルタするステップを含む、請求項１に記載の方法。
【請求項９】
前記漸進的にフィルタするステップの操作は、
中間のフィルタされたフォントプロパティ分布を生成するために、第１のフィルタ強度で前記フォントプロパティ分布をフィルタするステップと、
前記中間のフィルタされたフォントプロパティ分布が前記所定の基準を満たさない場合、前記フィルタされたフォントプロパティ分布を生成するために、前記第１のフィルタ強度より大きな第２のフィルタ強度で前記フォントプロパティ分布をフィルタするステップと
を含む、請求項１に記載の方法。
【請求項１０】
請求項１に記載の前記方法を実装するコンピュータ処理を実行するためのコンピュータ実行可能な命令を有するコンピュータ可読媒体。
【請求項１１】
フォントヒンティング命令をパラメータ化する際に用いる１つまたは複数のフォント制御値を生成するシステムであって、前記フォント制御値は書体と関連付けられ、
前記書体のグリフのフォントプロパティの計測に基づきフォントプロパティ分布（２０２）を生成する分布モジュール（３０４）と、
フィルタされたフォントプロパティ分布（２１２）を生成するために、前記フォントプロパティ分布（２０２）を漸進的にフィルタするフィルタモジュール（３１０）と、
前記１つまたは複数のフォント制御値を前記フィルタされたフォントプロパティ分布（２１２）から得られたフォントプロパティ値に設定する制御値設定モジュール（３１２）と
を備えるシステム。
【請求項１２】
前記フィルタモジュールは、前記フィルタされたフォントプロパティ分布が所定の基準を満たすまで、次第により強くなるフィルタ強度で前記フォントプロパティ分布を漸進的にフィルタする、請求項１１に記載のシステム。
【請求項１３】
前記フィルタモジュールは、前記フィルタされたフォントプロパティ分布が所定の基準を満たすまで、次第により強くなるフィルタ強度で前記フォントプロパティ分布を漸進的にフィルタし、前記所定の基準は、前記フィルタされたフォントプロパティ分布内の極大値の最大個数を表す、請求項１１に記載のシステム。
【請求項１４】
前記フィルタモジュールは、前記フィルタされたフォントプロパティ分布が所定の基準を満たすまで、次第により強くなるフィルタ強度で前記フォントプロパティ分布を漸進的にフィルタし、前記所定の基準は、前記フィルタされたフォントプロパティ分布内の極小値の最大個数を表す、請求項１１に記載のシステム。
【請求項１５】
前記フィルタモジュールは、前記フィルタされたフォントプロパティ分布内の１つまたは複数の極大値を特定し、前記フィルタされたフォントプロパティ分布内の前記１つまたは複数の極大値の個数をカウントする、請求項１１に記載のシステム。
【請求項１６】
前記フィルタモジュールは、前記フィルタされたフォントプロパティ分布内の１つまたは複数の極小値を特定し、前記フィルタされたフォントプロパティ分布内の前記１つまたは複数の極小値の個数をカウントする、請求項１１に記載のシステム。
【請求項１７】
前記所定の基準は、前記書体の前記フォントプロパティに関連付けられるフォント制御値の最大個数を表す、請求項１１に記載のシステム。
【請求項１８】
前記フィルタモジュールは、ガウス分布ぼかしフィルタを用いて前記フォントプロパティ分布を漸進的にフィルタする、請求項１１に記載のシステム。
【請求項１９】
前記フィルタモジュールは、中間のフィルタされたフォントプロパティ分布を生成するために、第１のフィルタ強度で前記フォントプロパティ分布を漸進的にフィルタし、前記中間のフィルタされたフォントプロパティ分布が前記所定の基準を満たさない場合、前記フィルタされたフォントプロパティ分布を生成するために、前記第１のフィルタされた強度より大きな第２のフィルタ強度で前記フォントプロパティ分布をフィルタする、請求項１１に記載のシステム。
【請求項２０】
フォントヒンティング命令をパラメータ化する際に用いる１つまたは複数のフォント制御値を生成するシステムであって、前記フォント制御値は書体と関連付けられ、
前記書体のグリフのフォントプロパティの計測に基づきフォントプロパティ分布（２０２）を生成する手段（３０４）と、
フィルタされたフォントプロパティ分布（２１２）を生成するために、前記フォントプロパティ分布（２０２）を漸進的にフィルタする手段（３１０）と、
前記１つまたは複数のフォント制御値を前記フィルタされたフォントプロパティ分布（２１２）から得られたフォントプロパティ値に設定する手段（３１２）と
を備えるシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
多くのコンピューティングシステムは、テキストを画面または印刷されたページなどの他のなんらかの媒体上に表示することによりユーザに情報を提供できる。人間の視覚体系の物理的特性ならびに電子表示または印刷の技術の様々な種類および質が、テキストが提示可能な書体を開発する際に活字デザイナーに対して独特の課題を提供する。
【０００２】
活版印刷では、書体は、調整された一組の文字デザインで構成される。通常書体は、文字、数字、句読点、表意文字、および記号の文字体系（集合的に文字またはグリフと呼ばれる）で構成される。Ａｒｉａｌ、Ｔｉｍｅｓ  Ｎｅｗ  Ｒｏｍａｎ、Ｖｅｒｄａｎａ、およびＧｅｏｒｇｉａは、書体の４つの例である。従来、「フォント」という言葉は、特定のサイズ（通常ポイントで測られる）、幅（例えば、薄い（ｌｉｇｈｔ）、書籍の（ｂｏｏｋ）、太い（ｂｏｌｄ）、ブラックの（ｂｌａｃｋ））、および方向（例えば、ローマン体（ｒｏｍａｎ）、イタリック体（ｉｔａｌｉｃ）、斜体（ｏｂｌｉｑｕｅ））においてすべて揃っている書体を指す。所与の書体に対して、各文字は典型的には単一のグリフに対応するが、いくつかの書体のある文字は、複数のグリフを含んでよい。
【０００３】
書体は、紙に描かれるか、またはコンピュータ描画アプリケーションで作成された一連のグリフとして作り出されることができる。例えば、描画されたグリフは、各グリフのアウトライン表示をレンダリングするためにスキャンおよびデジタル化されてよい。または書体は、異なるフォント形式の書体から変換（例えば、ラスター形式からＴｒｕｅＴｙｐｅ形式でのアウトラインに）可能である。少なくともこれらの方法により、所与の書体のグリフは、フォントファイル内のアウトライン定義により定義可能である。
【０００４】
概して、グリフアウトライン定義は、一連の点および／または輪郭を指定する。単純なグリフアウトラインはただ１つの輪郭を有してよく、複雑なグリフは２つ以上の輪郭を有してよい。さらに、複合グリフは２つ以上のより単純なグリフを合成することにより構成でき、視覚表示されない特定の制御文字は輪郭を持たないグリフにマッピングする。
【０００５】
グリフがレンダリングされる際、グリフアウトラインは、フォントファイルならびに特定のフォントのサイズ（例えば、１２ポイント）および表示解像度（例えば、７２ｄｐｉまたはインチ当たりドット数）にスケーリングされたフォントキャッシュから読み込まれる。次にこのスケーリングされたアウトラインは、スケーリング処理により持ち込まれた任意の知覚されたエラーを修正するためにフォントヒンティング命令により変更されるが、フォントサイズおよび表示解像度の相互作用が丸め誤差をもたらし、意図しないゆがみおよび望まないゆがみをグリフアウトラインに持ち込む可能性がある。例示のエラーには、ドロップアウト（すなわち、グリフ内の意図しない隙間）、ストローク幅または文字の高さの意図しないばらつき等が含まれる可能性があるが、これに限定されない。
【０００６】
フォントヒンティングの一態様では、命令は、制御値テーブル（ＣＶＴ：ｃｏｎｔｒｏｌ  ｖａｌｕｅ  ｔａｂｌｅ）にアクセスして、その書体全体にわたり常に適用されるべきフォント制御値を決定してよい。このフォント制御値は、その書体内のグリフの一定の特性を指定できる。例えば、一定のストローク幅が、選択した書体内のグリフの垂直ストロークに対して指定されてよい。他の例示のフォント制御値は、ベースラインの上の小文字の高さ、文字（例えば、「Ｏ」）の丸い底部がベースラインの下に出てよい距離、小文字「ｉ」のドットと垂直ストロークの上端との間の間隔、等を定義してよい。次にフォントヒンティング命令は、フォント制御値を満たすためにスケーリングされたフォントアウトラインを変更でき、その結果、所与の書体のグリフに対して一定の特性を与える。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかし、書体内の大量のグリフを代表するフォント制御値を選択することは難しい。例えば、異なるグリフの元のアウトラインが、書体全体にわたる所与のフォントプロパティ（例えば、垂直ストローク幅）に、いくつかのわずかなばらつき、およびいくつかのあまりわずかでないばらつきを呈する可能性がある。したがって、計測されたフォントプロパティは、所与の書体全体にわたり著しく変動する可能性がある。その結果、活版技術者は、書体の複数のグリフ全体にわたりフォントプロパティの分布を手作業で、および主観的に測定して、１つまたは複数の「許容できる」フォント制御値を選択し、書体の全体またはいくつかの重要な部分を表示する可能性がある。残念ながら、フォント制御値の手作業の決定は、コストと時間がかかりすぎる。
【課題を解決するための手段】
【０００８】
本明細書で説明され請求される実装は、フォント制御値の閾値の個数が特定されるまでフォントプロパティ値の分布を漸進的にフィルタすることにより、フォント制御値選択の自動化を可能とする。フォントヒンティング命令は、これらのアルゴリズム的に決定されるフォント制御値を用いてパラメータ化されてよく、これらのフォント制御値は、その書体全体にわたるグリフアウトラインのフォントプロパティの計測から得られてよい。一実装では、計測されたフォントプロパティの分布は漸進的にフィルタされ、閾値条件などの所定の基準を満たす分布特性を特定する。その分布の閾値を満たす点に対応するフォントプロパティ値は、フォント制御値として割り当てられる。
【０００９】
いくつかの実装では、製造品がコンピュータプログラムの製品として提供されている。コンピュータプログラムの製品の一実装は、コンピュータシステムにより読み取り可能でコンピュータプログラムを符号化するコンピュータプログラムの記憶媒体を提供する。コンピュータプログラムの製品の他の実装が、コンピューティングシステムにより搬送波で実現され、コンピュータプログラムを符号化するコンピュータデータ信号で提供されてよい。他の実装もまた本明細書で説明される。
【００１０】
本要約は、詳細な説明において以下にさらに説明される概念の選択を簡略化した形で紹介するために設けられている。本要約は、特許請求の範囲の対象のキーとなる機能または基本的な機能を特定することを意図せず、特許請求の範囲の対象範囲を限定するために用いられることを意図しない。
【発明を実施するための最良の形態】
【００１１】
スケーラブルなアウトラインフォントは、座標、数値の曲線、および／または他のパラメータにより表現される連続的な形状またはアウトラインとして定義される。ベースアウトラインは、個々のグリフが表示されるかまたはその他の方法で出力（例えば、印刷）される際に、メモリ（例えば、フォントファイルまたはフォントキャッシュ）から読むことができるフォント定義内に表現される。フォント定義は、フォントデザイン単位（または「フォント単位」）でｘ軸およびｙ軸を有するＣａｒｔｅｓｉａｎグリッドに基づいてよいが、他の座標フレームワークが用いられてよい。このようなフォント単位を用いて、指定された書体内のグリフのベースアウトラインが、表示されるグリフのサイズまたは出力装置の解像度に関わりなく表現されてよい。
【００１２】
グリフが生成される際、ベースアウトラインは、指定されたサイズにスケーリングされ、次に指定されたサイズのディスプレイまたはハードコピー出力装置上に不連続なドットのラスター（例えば、画素のビットマップ）を作成するために用いられる。このようなビットマップが、その中心がスケーリングされたアウトラインの中にある各画素またはプリンタセルを単にオフにするなど、単純化した方法で作成される場合、形状における特徴の調整不良および切断（「ドロップアウト」と呼ばれる）など、いくつかの視覚的に気を散らす成果物が現れる可能性がある。例えば、グリフが小さいサイズでおよび／または低解像度ディスプレイにスケーリングされレンダリングされる場合、その結果得られた画素が実際には大きく不連続でありすぎ、スケーリングされたアウトラインを完全にたどれないため、グリフを表示するためにオン／オフされた画素は、スケーリングされたアウトラインに大ざっぱに近づくだけである。
【００１３】
したがって、「フォントヒンティング」と呼ばれる追加処理を用いて、所与のサイズおよび表示解像度に対してグリフのレンダリングを最適化できる。フォントヒンティングコードが、個々のグリフのそれぞれのフォント定義内に含まれるか、または関連付けられることができる。フォントヒンティングは、フォントのラスター化を向上させるためにラスター・イメージ・プロセッサ（ＲＩＰ：ｒａｓｔｅｒ  ｉｍａｇｅ  ｐｒｏｃｅｓｓｏｒ）に情報を提供する。例えば、フォントヒンティングを用いて、レンダリングを向上させるように、スケーリングされたアウトラインを変更またはゆがませてよい。他の使用の中でも、フォントヒンティングを用いて、（１）均等な太さになるように意図されたストロークが均等に太く見えることを保証し、（２）望まないオーバーシュート（例えば、「Ｏ」などの丸い文字が、意図せずにスケーリングされ、「Ｍ」などの平坦な文字より高く見える場合）を抑え、（３）同一の高さであるべきである異なるグリフ上の特徴をそろえ、（４）ステムの間の間隔を開いた状態に保ち（例えば、「ｍ」の垂直ストロークの間の間隔が目に見えるようにすべきである）、（５）平行のストロークの組の間に一定の間隔をとることを強制し、（６）ドロップアウトの原因となるエラーなど、ラスター化アルゴリズムにおけるエラーを補正することができる。
【００１４】
一実装では、フォントヒンティング命令は、２つのカテゴリ、すなわち（１）フォント当たり、および（２）グリフ当たりに分割できる。フォント当たりの命令は、書体内の複数の文字に関連付けられるフォント制御値に基づき個々のグリフのアウトラインを変更する。例えば、Ｃｏｕｒｉｅｒ  Ｎｅｗ書体の多くのまたはすべてのグリフに関連付けられる垂直ストローク幅は８４フォント単位である。したがって、フォント当たりの命令は、このようなグリフの個々のスケーリングされたアウトラインの垂直ストローク幅を変更し、Ｃｏｕｒｉｅｒ  Ｎｅｗ書体に対して指定された垂直ストローク幅を満たすことができる。このように、共通のフォントのグリフは、一定の特性でレンダリングする傾向があり、その結果すべてのこのようなグリフが書体全体にわたり同様の雰囲気および読みやすさを反映する。それに対して、グリフ当たりの命令は、個々のグリフに対して特定の変更を行うように指示される。例えば、グリフ当たりの命令は、小文字「ｍ」の垂直ストロークが、均等で認識できる垂直ストローク幅およびカウンタストローク幅（例えば、グリフの垂直ストロークの間の「間隔」）でレンダリングされることを保証する可能性がある。
【００１５】
フォント当たりの命令は、制御値テーブル（ＣＶＴ）からのフォント当たり制御値（「フォント制御値」と呼ばれる）を用いてパラメータ化されてよい。個々のフォント制御値は、書体全体にわたるグリフアウトラインのプロパティ（「フォントプロパティ」と呼ばれる）の計測から導かれてよい。しかし、これらの計測は、書体全体にわたり著しくばらつきがある可能性があるため、１つまたは複数のフォント制御値の選択は、可能性のあるフォントプロパティ計測の分布からアルゴリズム的に行われ、その書体の複数のグリフ全体にわたり適用される。このアルゴリズムによる選択は、自動ヒンティングモジュールにより実行され、ＣＶＴのフォント制御値を取得する。
【００１６】
図１は、フォント生成システムにおける例示の自動ヒンティングモジュール１００を示す。書体におけるグリフアウトラインの表現１０２は、フォントライブラリまたは他のデータストア内に格納される。図式ブロック１０４は、例示のグリフの部分、すなわちＴｉｍｅｓ  Ｎｅｗ  Ｒｏｍａｎでの大文字「Ｈ」の垂直右ステム１０６、および垂直左ステム１０８を有するＴｉｍｅｓ  Ｎｅｗ  Ｒｏｍａｎでの大文字「Ｂ」の底部を示す。垂直右ステム１０６は、デジタル化されたアウトラインに基づき、２３３フォント単位のストローク幅を有する。それに対して、垂直左ステム１０８は、デジタル化されたアウトラインに基づき、２３０のストローク幅を有する。
【００１７】
アウトラインが、（例えば、テキストレンダリングシステムのスケーリングモジュール１１０により）スケーリングされる際、表示解像度により影響される丸め誤差が、２つのストローク幅が人目を引く分量だけ異なる原因となる可能性がある（垂直右ステム１１４は１１画素幅であり、垂直左ステム１１６は１０画素幅である図式ブロック１１２を参照されたい）。したがって、テキストレンダリングシステムのフォント当たり作成モジュール１１８は、より一定のレンダリングを達成するためのフォント当たりの命令をパラメータ化するための制御値データストア１２０（例えば、制御値テーブルまたはＣＶＴ）からフォント制御値を抽出する。図１の例では、垂直ストローク幅に対するフォント制御値は１１に等しい。したがって、図式ブロック１２２に見られるように、フォント当たり作成モジュール１１８は、スケーリングされたアウトラインを変更して、１１画素幅の垂直右ステム１２４および１１画素幅の垂直左ステム１２６を出力する。このように、同一フォントのグリフは、指定されたサイズおよび表示解像度でレンダリングされると、スケーリング操作で持ち込まれる丸め誤差に関わらず、一定の雰囲気および読みやすさを表す。
【００１８】
ＣＶＴのフォント制御値を選択する一実装では、自動ヒンティングモジュール１００は、所与の書体に対するグリフアウトラインをフォントライブラリから読み込み、各グリフアウトラインの特定のフォントプロパティの分布を生成する（例えば、図２の分布２０２および２０４を参照されたい）。例示のフォントプロパティは、以下を含んでよいがこれに限定されない。
【００１９】
（１）大文字および小文字のフラットベース  −  文字ベースライン
（２）大文字のラウンドベース  −  丸い文字（大文字「Ｏ」など）が平坦なベースラインの下に出る分量
（３）小文字のラウンドベース  −  丸い文字（小文字「ｏ」など）が平坦なベースラインの下に出る分量
（４）数字のラウンドベース  −  丸い数字（数字ゼロまたは「０」など）が平坦なベースラインの下に出る分量
（５）ｘハイト（ｘ−ｈｅｉｇｈｔ）・フラット  −  上端が平坦な小文字（小文字「ｘ」など）の高さ
（６）ｘハイト・ラウンドオーバーラップ  −  丸い小文字（「ｏ」のような）がｘハイト・フラットの上に出る分量
（７）フラットキャップ  −  上端が平坦な大文字（「Ｘ」のような）の高さ
（８）ラウンドキャップ  −  丸い大文字（「Ｏ」のような）がフラットキャップの上に出る分量
（９）数字フラット  −  上端が平坦な数字（「７」のような）の高さ
（１０）数字ラウンドトップ  −  丸い数字（「０」のような）が数字フラットの上に出る分量
（１１）フラット・アセンダ（ａｓｃｅｎｄｅｒ）  −  小文字「ｘ」の上に出る（ａｓｃｅｎｄｉｎｇ）、平坦な上端の小文字の高さ（小文字「ｌ」など）
（１２）フラット・ディセンダ（ｄｅｓｃｅｎｄｅｒ）  −  小文字のベースラインの下に出る（ｄｅｓｃｅｎｄｉｎｇ）、平坦な底部の小文字の高さ（小文字「ｐ」など）
（１３）ラウンド・ディセンダ  −  小文字のベースラインの下に出る、丸い底部の小文字の高さ（小文字「ｇ」など）
（１４）「ｉ」のドットと上部の間の間隔
書体全体にわたるフォントプロパティの分布がＣＶＴの閾値を越えないいくつかの極大値を示す場合、自動ヒンティングモジュール１００は、制御値テーブルのフォント制御値をこれらの極大値に等しく設定する。例えば、所与のフォントプロパティの分布が、書体全体にわたり単一の値に限定される可能性がある。この場合、そのフォントプロパティに対応する制御値は、その単一の値に設定される。しかし多くの場合、フォントプロパティの分布は、ある範囲にわたり分布する多くの可能性のあるフォントプロパティ値を含む可能性がある。したがって、自動ヒンティングモジュール１００は、フィルタリング手法を用いて、フォントプロパティの分布に基づき適切な個数のフォント制御値を選択する。
【００２０】
離散分析のためのフォントプロパティ差の極小値、最低極値、最高極値、または標準偏差点、メジアン、平均等などの他の統計手段、あるいは連続分析のための微積分を含む他の分布の特性が用いられてフォント制御値を選択できることを理解されたい。
【００２１】
図２は、例示の漸進的なフィルタリング結果２００を示す。分布２０２は、Ｔｉｍｅｓ  Ｎｅｗ  Ｒｏｍａｎ書体における一組のグリフ全体にわたる３４垂直ストローク幅の分布を表す。ストローク幅（フォント単位の水平軸に沿ってグラフに記入される）は、８８フォント単位から２３２フォント単位まで変動していることに留意されたい。ｙ軸は、所与のストローク幅の頻度を表す。それに対して、分布２０４は、Ｃｏｕｒｉｅｒ  Ｎｅｗ書体における一組のグリフ全体にわたる３７垂直ストローク幅の分布を表す。Ｃｏｕｒｉｅｒ  Ｎｅｗは、この書体全体にわたりほぼ完全に均一のストローク幅を有する書体であるため、垂直ストローク幅の分布は、約８４フォント単位に計測されるほぼ単一の値である。分布２０２および２０４の両方は、「フィルタ幅＝０フォント単位」という説明により示されるようにフィルタされていない。
【００２２】
一実装では、限定された個数のフォント制御値を選択するために、自動ヒンティングモジュールは、許容できる個数の極大値（すなわち、ＣＶＴの閾値）に達するまで一連のフィルタリング操作を使用する。一実装では、高頻度データを抑えるフィルタが用いられ、特に、ガウス分布ぼかしフィルタ（Ｇａｕｓｓｉａｎ  ｂｌｕｒ  ｆｉｌｔｅｒ）が用いられるが、ボックスフィルタ（ｂｏｘ  ｆｉｌｔｅｒ）、シンクフィルタ（ｓｉｎｃ  ｆｉｌｔｅｒ）または高頻度のノイズを低減させる他のフィルタを含む他のフィルタも考えられる。３フォント単位のフィルタ幅を有するガウス分布ぼかしフィルタを分布２０２に適用することにより、フィルタされた分布２０６が得られる。自動ヒンティングモジュールは、フィルタ分布の極大値を（例えば、分布に沿って移動し、そこで検知された極大値をカウントすることにより）カウントする。
【００２３】
図２の例では、２というＣＶＴの閾値を仮定することが用いられている。フィルタされた分布２０６は、フィルタされていない分布２０２と比べるといくらか平滑化されているが、６つの極大値はＣＶＴの閾値条件を満たしていない。したがって、より強力なフィルタリング（すなわち、９フォント単位のフィルタ幅）が適用され、フィルタされた分布２０８を得る。またもや、５つの極大値はＣＶＴの閾値条件を満たしていない。漸進的なフィルタリングが以下に示す例示のフィルタリング結果を続ける。
【００２４】
（１）フィルタ幅＝１１フォント単位  フィルタされた分布２１０では４つの極大値
（２）フィルタ幅＝１９フォント単位  フィルタされた分布２１２では３つの極大値
（３）フィルタ幅＝３３フォント単位  フィルタされた分布２１４では２つの極大値
フィルタされた分布２１４は、２というＣＶＴの閾値条件を満たす。したがって、２つの極大値のｘ値（９０フォント単位および１９３フォント単位）が、Ｔｉｍｅｓ  Ｎｅｗ  Ｒｏｍａｎ書体のＣＶＴの垂直ストローク幅に関して対応するフォント制御値として選択される。
【００２５】
他の実装では、漸進的なフィルタリングは、カスケードの個々の段階での分布が漸進的により目立つフィルタリング効果を呈するように、異なるプロパティを伴うカスケード式フィルタを必要としてよい。
【００２６】
図３は、自動化されたフォント制御値決定の例示の操作３００を示す。受信操作３０２は、フォントライブラリからなど、所与の書体に対するデジタル化したグリフアウトラインを受信する。自動ヒンターの分布モジュールは、グリフアウトラインの分析からフォントプロパティの分布を生成する分布操作３０４を実行する。一実装では、例えば、分布操作３０４は、上端が平坦な文字のグリフの最高点を「ｘハイト・フラット」プロパティとして特定し、各グリフに対してこの点に合わせたｙ座標を記録する。他の実装では、分布操作３０４は、重要な垂直ストロークを特定し、「ｘステム幅」プロパティ分布のためにそれらの幅を計測する。他のフォントプロパティ分布は、同様の方法で生成できる。
【００２７】
自動ヒンターの特定モジュールは、フォントプロパティ分布の極大値を特定およびカウントする極大値操作３０６を実行する。一実装では、極大値操作３０６は、軸に沿って移動し、より低い隣接した点を両側に有する分布上の点を検出する。別の実装では、任意の標準的な微積分、または極値プロパティ（例えば、極大値、極小値等）を有する幾何学的軌跡を特定する他の数学操作が用いられてよい。
【００２８】
分布内の極大値のカウントされた個数がＣＶＴの閾値より大きくない場合、ＣＶＴの閾値条件が決定操作３０８により満たされたと考えられ、処理は対応する制御当たりの値を極大値のｘ座標に設定する設定操作３１２（例えば、自動ヒンターの設定モジュールにより実行される）に進む。そうではなく、ＣＶＴの閾値条件が満たされない場合、自動ヒンターのフィルタリングモジュールにより実行されるフィルタリング操作３１０は、フィルタされた分布を得るために分布をフィルタし、処理は極大値操作３０６に戻り、フィルタされた分布内の極大値を特定およびカウントする。それぞれの繰り返しで、図２に関して図示され説明されたように、ＣＶＴの閾値条件が満たされるまでフィルタリング強度は増加し、フォント制御値が設定操作３１２の極大値に基づき設定される。
【００２９】
本発明を実装する図４の例示のハードウェアおよびオペレーティング環境は、コンピュータ２０の形の汎用コンピューティング装置を含み、コンピュータ２０は、処理装置２１、システムメモリ２２、およびシステムメモリを含む様々なシステム要素を処理装置２１へ動作可能なように接続するシステムバス２３を含む。ただ１つの処理装置２１が存在してもよく、または１つより多い処理装置２１が存在してもよく、その結果コンピュータ２０のプロセッサは、単一の中央演算処理装置（ＣＰＵ）、または並列処理環境と通常呼ばれる複数の処理装置を備える。コンピュータ２０は、従来のコンピュータ、分散コンピュータ、または任意の他のタイプのコンピュータであってよく、本発明はそのような制限をうけることはない。
【００３０】
システムバス２３は、いくつかのタイプのバス構造のうちの任意のものでよく、これらのバス構造は、様々なバスアーキテクチャのうちの任意のものを用いるメモリバスまたはメモリコントローラ、周辺バス、スイッチファブリック、２地点間接続、およびローカルバスを含む。システムメモリはまた、単にメモリと呼ばれてよく、読み出し専用メモリ（ＲＯＭ）２４およびランダムアクセスメモリ（ＲＡＭ）２５を含む。基本入出力システム（ＢＩＯＳ）２６は、起動中などにコンピュータ２０内の要素間で情報を移送することを助ける基本ルーチンを含むが、ＲＯＭ２４に格納される。さらにコンピュータ２０は、ハードディスク（図示せず）から読み取り、ハードディスクへ書き込むハードディスクドライブ２７、リムーバブル磁気ディスク２９から読み取り、リムーバブル磁気ディスク２９へ書き込む磁気ディスクドライブ２８、およびＣＤ  ＲＯＭまたは他の光学媒体などのリムーバブル光ディスク３１から読み取り、リムーバブル光ディスク３１へ書き込む光ディスクドライブ３０を含む。
【００３１】
ハードディスクドライブ２７、磁気ディスクドライブ２８、および光ディスクドライブ３０は、システムバス２３にそれぞれハードディスクドライブインターフェース３２、磁気ディスクドライブインターフェース３３、および光ディスクドライブインターフェース３４により接続される。ドライブおよびその関連したコンピュータ可読媒体は、コンピュータ２０のためにコンピュータ可読の命令、データ構造、プログラムモジュールおよび他のデータの非揮発性の保存を行う。磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）等など、コンピュータによりアクセス可能なデータを格納できる任意のタイプのコンピュータ可読媒体は、例示のオペレーティング環境内で用いられてよいことを当業者は理解されたい。
【００３２】
オペレーティングシステム３５、１つまたは複数のアプリケーションプログラム３６、他のプログラムモジュール３７、およびプログラムデータ３８を含むいくつかのプログラムモジュールは、ハードディスク、磁気ディスク２９、光ディスク３１、ＲＯＭ２４、またはＲＡＭ２５上に格納できる。ユーザは、コマンドおよび情報をパーソナルコンピュータ２０にキーボード４０およびポインティングデバイス４２などの入力装置を介して入力できる。他の入力装置（図示せず）は、マイクロフォン、ジョイスティック、ゲームパッド、パラボラアンテナ、スキャナ等を含んでよい。これらのおよび他の入力装置は、処理装置２１に、システムバスに接続されるシリアルポートインターフェース４６を介して接続されることが多いが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス（ＵＳＢ）などの他のインターフェースにより接続されてよい。モニタ４７または他のタイプのディスプレイ装置もシステムバス２３にビデオアダプタ４８などのインターフェースを介して接続される。モニタに加え、コンピュータは典型的にはスピーカおよびプリンタなどの他の周辺出力装置（図示せず）を含む。
【００３３】
コンピュータ２０は、リモートコンピュータ４９などの１つまたは複数のリモートコンピュータへの論理接続を用いてネットワーク環境で動作してよい。これらの論理接続は、コンピュータ２０に接続されるかまたはコンピュータ２０の一部である通信装置により実現され、本発明は特定のタイプの通信装置に限定されない。リモートコンピュータ４９は、他のコンピュータ、サーバ、ルータ、ネットワークＰＣ、クライアント、ピアデバイスまたは他の一般的なネットワークノードであってよく、メモリ記憶装置５０のみが図４で示されているが、典型的にはコンピュータ２０に対して上述された多くのまたはすべての要素を含む。図４に図示された論理接続は、ローカルエリアネットワーク（ＬＡＮ）５１および広域ネットワーク（ＷＡＮ）５２を含む。このようなネットワーク環境は、オフィスネットワーク、企業規模のコンピュータネットワーク、イントラネットおよびインターネットで一般的であり、これらはすべてのタイプのネットワークである。
【００３４】
ＬＡＮネットワーク環境で使われるとき、コンピュータ２０は、ローカルネットワーク５１にネットワークインターフェースまたはアダプタ５３を介して接続され、このインターフェースは１つのタイプの通信装置である。ＷＡＮネットワーク環境で使われるとき、コンピュータ２０は、典型的には広域ネットワーク５２を介して通信を確立するためのモデム５４、ネットワークアダプタ、一タイプの通信装置、または任意の他のタイプの通信装置を含む。モデム５４は、内蔵型または外付け型であってよいが、システムバス２３にシリアルポートインターフェース４６を介して接続される。ネットワーク環境では、パーソナルコンピュータ２０に対して図示されたプログラムモジュールまたはその部分は、リモートメモリ記憶装置に格納されてよい。図示のネットワーク接続は例示であり、コンピュータ間の通信リンクを確立する他の手段の通信装置が使用されてよいことを理解されたい。
【００３５】
例示の実装では、スケーリングモジュール、自動ヒンティングモジュール、フォント当たり作成モジュール、レンダリングモジュール、決定モジュール、および他のモジュールは、メモリ４０４ならびに／または記憶装置４０８および４１０内に格納され、処理装置４０２により処理される命令により実装されてよい。フォント定義、フォントヒンティング命令、フォントプロパティ分布、ＣＶＴ、ＣＶＴの閾値、レンダリングされたビットマップ、および他のデータは、メモリ４０４ならびに／または記憶装置４０８および４１０内に格納されてよい。
【００３６】
本明細書で説明した技術は、１つまたは複数のシステム内の論理操作および／またはモジュールとして実装される。論理操作は、１つまたは複数のコンピュータシステムで実行する一連のプロセッサ実装のステップとして、および１つまたは複数のコンピュータシステム内で相互接続したマシンまたは回路モジュールとして実装されてよい。同様に、様々なコンポーネントモジュールの説明がモジュールにより実行されるかまたは行われる操作に関して行われてよい。その結果の実装は選択できる問題であり、説明された技術を実装する基礎となるシステムの性能要件に依存する。したがって、本明細書で説明した技術の実施形態を作り上げる論理操作は、操作、ステップ、オブジェクト、またはモジュールとして様々に参照される。さらに、他の方法で明示的にクレーム化されないかまたは特定の順序がクレーム文言により本質的に必要とされないならば、論理操作が任意の順序で実行されてよいことを理解されたい。
【００３７】
上記の明細書、例およびデータは、本発明の例示の実施形態の構造および使用の完全な説明を提供する。本発明の様々な実施形態が、ある程度の特殊性を伴ってまたは１つまたは複数の個々の実施形態を参照して、上記で説明されてきたが、当業者は、本発明の精神および範囲から逸脱することなく、開示した実施形態に多くの変更を行うことができる。特に、説明された技術はパーソナルコンピュータと無関係に用いられてよいことを理解されたい。したがって、他の実施形態が考えられる。上述の説明に含まれ、添付の図面に示されたすべての内容は、特定の実施形態の例示にすぎず、限定するものではないと解釈すべきであることを意図している。詳細または構造における変更が、特許請求の範囲に定義される本発明の基本要素から逸脱することなく行うことができる。
【００３８】
本対象は、構造的な機能および／または方法論的な行為に特有な言葉で説明されてきたが、添付の特許請求の範囲で定義される対象は、上述の具体的な機能または行為に必ずしも限定されないことを理解されたい。むしろ、上述の具体的な機能および行為は、特許請求の範囲を実装する形式例として開示される。
【図面の簡単な説明】
【００３９】
【図１】フォント生成システムにおける例示の自動ヒンティングモジュールを示す図である。
【図２】例示の漸進的なフィルタリング結果を示す図である。
【図３】自動化されたフォント制御値の決定のための例示の操作を示す図である。
【図４】説明された技術を実装する際に有用である可能性がある例示のシステムを示す図である。
【図１】
2009520216.tif 000003
【図２】
2009520216.tif 000004
【図３】
2009520216.tif 000005
【図４】
2009520216.tif 000006
【国際調査報告】
2009520216.tif 000007
2009520216.tif 000008