(57)【特許請求の範囲】
【請求項１】
少なくとも一つの演算装置により、グリフを受け付け、
前記少なくとも一つの演算装置により、受け付けた前記グリフを所定の形式に縮減し、
前記少なくとも一つの演算装置により、縮減した前記グリフを規格化し、
前記少なくとも一つの演算装置により、規格化した前記グリフを複数のプロトタイプイメージと比較し、
前記少なくとも一つの演算装置により、前記比較に基づいて、前記複数のプロトタイプイメージの少なくとも一つを出力し、
前記比較においては、
規格化した前記グリフの行数と前記複数のプロトタイプイメージから選択した一つの行数を特定し、
前記行数の少ない方の分だけ、規格化した前記グリフの画素と、前記選択したプロトタイプイメージの対応する画素との排他的論理和をとった結果を求め、
前記排他的論理和の結果を保持し、
規格化した前記グリフおよび前記選択したプロトタイプイメージのうち、前記排他的論理和をとられなかった各行について「オン」である画素の数を前記結果に加算し、
加算された前記結果を保存する、方法。
【請求項２】
前記縮減においては、受け付けた前記グリフを１ビット深度のビットマップ形式に縮減する、請求項１に記載の方法。
【請求項３】
前記規格化においては、縮減した前記グリフを所定の幅と比例する高さに規格化する、請求項１に記載の方法。
【請求項４】
前記複数のプロトタイプイメージの各々は前記所定の幅に規格化される、請求項３に記載の方法。
【請求項５】
前記少なくとも一つの演算装置により、前記複数のプロトタイプイメージを、さらにリポジトリに保存する、請求項１に記載の方法。
【請求項６】
前記比較においては、
前記複数のプロトタイプイメージから少なくとも２番目に選択したものの行数を特定し、
規格化した前記グリフの行数と、前記少なくとも２番目に選択したプロトタイプイメージの行数の少ない方の分だけ、規格化した前記グリフの画素と、前記少なくとも２番目に選択したプロトタイプイメージの対応する画素との排他的論理和をとった第２の結果を求め、
前記排他的論理和の第２の結果を保持し、
規格化した前記グリフおよび前記少なくとも２番目に選択したプロトタイプイメージのうち、前記排他的論理和をとられなかった各行について「オン」である画素の数を前記第２の結果に加算し、
加算された前記第２の結果を保存し、
前記結果と前記第２の結果の小さい方を特定する、請求項１に記載の方法。
【請求項７】
前記出力においては、特定された前記結果と前記第２の結果の小さい方に対応するプロトタイプイメージを出力する、請求項６に記載の方法。
【請求項８】
受け付けた前記グリフの境界線をさらに計算し、
前記規格化は、計算した前記境界線に基づいて行なう、請求項１に記載の方法。
【請求項９】
命令を格納したトランジトリでないコンピュータ読取り可能な媒体であって、当該命令がコンピュータに実行されることにより、当該コンピュータに
グリフを受け付けさせ、
受け付けた前記グリフを所定の形式に縮減させ、
縮減した前記グリフを規格化させ、
規格化した前記グリフを複数のプロトタイプイメージと比較させ、
前記比較に基づいて、前記複数のプロトタイプイメージの少なくとも一つを出力させ、
前記比較においては、
規格化した前記グリフの行数と前記複数のプロトタイプイメージから選択した一つの行数を特定させ、
前記行数の少ない方の分だけ、規格化した前記グリフの画素と、前記選択したプロトタイプイメージの対応する画素との排他的論理和をとった結果を求めさせ、
前記排他的論理和の結果を保持させ、
規格化した前記グリフおよび前記選択したプロトタイプイメージのうち、前記排他的論理和をとられなかった各行について「オン」である画素の数を前記結果に加算させ、
加算された前記結果を保存させる、トランジトリでないコンピュータ読取り可能な媒体。
【請求項１０】
前記命令が前記コンピュータに実行されることにより、当該コンピュータに受け付けた前記グリフを１ビット深度のビットマップ形式に縮減させる、請求項９に記載のトランジトリでないコンピュータ読取り可能な媒体。
【請求項１１】
前記命令が前記コンピュータに実行されることにより、当該コンピュータに縮減した前記グリフを所定の幅と比例する高さに規格化させる、請求項９に記載のトランジトリでないコンピュータ読取り可能な媒体。
【請求項１２】
前記命令が前記コンピュータに実行されることにより、当該コンピュータに
前記複数のプロトタイプイメージから少なくとも２番目に選択したものの行数を特定させ、
規格化した前記グリフの行数と、前記少なくとも２番目に選択したプロトタイプイメージの行数の少ない方の分だけ、規格化した前記グリフの画素と、前記少なくとも２番目に選択したプロトタイプイメージの対応する画素との排他的論理和をとった第２の結果を求めさせ、
前記排他的論理和の第２の結果を保持させ、
規格化した前記グリフおよび前記少なくとも２番目に選択したプロトタイプイメージのうち、前記排他的論理和をとられなかった各行について「オン」である画素の数を前記第２の結果に加算させ、
加算された前記第２の結果を保存させ、
前記結果と前記第２の結果の小さい方を特定させる、請求項９に記載のトランジトリでないコンピュータ読取り可能な媒体。
【請求項１３】
前記出力においては、特定された前記結果と前記第２の結果の小さい方に対応するプロトタイプイメージを出力する、請求項１２に記載のトランジトリでないコンピュータ読取り可能な媒体。
【請求項１４】
少なくとも一つのプロセッサと、命令を格納するメモリとを備え、当該命令が前記少なくとも一つのプロセッサに実行されることにより、
グリフを受け付け、
受け付けた前記グリフを所定の形式に縮減し、
縮減した前記グリフを規格化し、
規格化した前記グリフを複数のプロトタイプイメージと比較し、
前記比較に基づいて、前記複数のプロトタイプイメージの少なくとも一つを出力し、
前記比較においては、
規格化した前記グリフの行数と前記複数のプロトタイプイメージから選択した一つの行数を特定させ、
前記行数の少ない方の分だけ、規格化した前記グリフの画素と、前記選択したプロトタイプイメージの対応する画素との排他的論理和をとった結果を求めさせ、
前記排他的論理和の結果を保持させ、
規格化した前記グリフおよび前記選択したプロトタイプイメージのうち、前記排他的論理和をとられなかった各行について「オン」である画素の数を前記結果に加算させ、
加算された前記結果を保存させる、装置。
【請求項１５】
前記命令が前記少なくとも一つのプロセッサに実行されることにより、受け付けた前記グリフを１ビット深度のビットマップ形式に縮減する、請求項１４に記載の装置。
【請求項１６】
前記命令が前記少なくとも一つのプロセッサに実行されることにより、縮減した前記グリフを所定の幅と比例する高さに規格化する、請求項１４に記載の装置。
【請求項１７】
前記命令が前記少なくとも一つのプロセッサに実行されることにより、
規格化した前記グリフを回転し、
回転した前記グリフと前記複数のプロトタイプイメージとを比較する、請求項１４に記載の装置。
【請求項１８】
前記命令が前記少なくとも一つのプロセッサに実行されることにより、
受け付けた前記グリフの境界線を計算し、
計算した前記境界線に基づいて前記規格化を行ない、
計算した前記境界線をオフセット値だけ変位させ、
変位した前記境界線に基づいて縮減した前記グリフを規格化し、
縮減および規格化した前記グリフを、変位した前記境界線に基づいて、前記複数のプロトタイプイメージと比較し、
前記比較に基づいて、受け付けた前記グリフに最もマッチする少なくとも一つのプロトタイプイメージを前記複数のプロトタイプイメージから選択して特定し、
特定された前記少なくとも一つのプロトタイプイメージを出力する、請求項１４に記載の装置。
【請求項１９】
前記命令が前記少なくとも一つのプロセッサに実行されることにより、
受け付けた前記グリフを最近傍アルゴリズムに基づいて縮減する、請求項１４に記載の装置。
【請求項２０】
前記命令が前記少なくとも一つのプロセッサに実行されることにより、
前記複数のプロトタイプイメージから少なくとも２番目に選択したものの行数を特定し、
規格化した前記グリフの行数と、前記少なくとも２番目に選択したプロトタイプイメージの行数の少ない方の分だけ、規格化した前記グリフの画素と、前記少なくとも２番目に選択したプロトタイプイメージの対応する画素との排他的論理和をとった第２の結果を求め、
前記排他的論理和の第２の結果を保持し、
規格化した前記グリフおよび前記少なくとも２番目に選択したプロトタイプイメージのうち、前記排他的論理和をとられなかった各行について「オン」である画素の数を前記第２の結果に加算し、
加算された前記第２の結果を保存し、
前記結果と前記第２の結果の小さい方を特定する、請求項１４に記載の装置。
【請求項２１】
前記出力においては、特定された前記結果と前記第２の結果の小さい方に対応するプロトタイプイメージを出力する、請求項２０に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フォントマッチングの技術に関する。
【背景技術】
【０００２】
現在のフォント認識プログラムおよびアルゴリズムは、フォントの使用傾向をフォントのプロバイダあるいはマネージャに対して明らかにするように構成されている。例えば、フォントに関連付けられたメタデータが収集および解析され、ある特定のフォントセットが少なくとも一つの他のフォントセットに対してどのくらいの頻度で選択されているかを特定する。より一般化して言うと、メタデータが収集および解析され、ある特定の（演算）機能の別の（演算）機能に対する選択頻度が特定される。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
一般にフォントプロバイダは、特定スタイルのフォントに名前を対応させることができる。印刷の分野では、Times New RomanやArialがフォントの一般的な例である。Times New Romanフォントにおける文字「ａ」とArialフォントにおける文字「ａ」では、様式的に異なって見えることがある。もし特定のタイプあるいはスタイルのフォントがある程度頻繁に使用されるのであれば、ユーザは当該フォントに一定の慣用レベルを与えることができる。しかしながら既に膨大な数のフォントスタイルが存在し、あるいは作り出されている。フォントの選択肢が増えるに従い、特定のフォント名を思い出したり特定のフォントを指定することが困難になってきている。
【課題を解決するための手段】
【０００４】
発明の態様についての基本的な理解を与えるための概要説明を以下に記す。この概要説明は発明の全体を要約するものではない。発明における重要な要素を特定することを意図したものでも、発明の範囲を画定することを意図したものでもない。この概要説明は、以降の詳細な説明の前置きとして、発明に係る幾つかの概念を簡略化した形式で示したものに過ぎない。
【０００５】
発明の一態様は、リポジトリの生成および維持に関する。リポジトリは少なくとも一つのフォントあるいはフォントグリフについて複数のプロトタイプイメージを含みうる。一つのプロトタイプイメージが単一のフォントグリフ（すなわち当該フォントについて定義された単一の文字）を含むようにしてもよい。
【０００６】
プロトタイプイメージは、少なくとも一つの形式、例えばビットマップ形式で前記リポジトリに保存されうる。プロトタイプイメージについて表示されるビットマップは１ビット深度を有するようにしてもよい。
【０００７】
プロトタイプイメージの境界線が計算されてもよい。これに加えてあるいは代えて、プロトタイプイメージが規格化されてもよい。規格化は当該プロトタイプイメージが所定の幅や高さを有するように行なわれうる。例えば、リポジトリ内の全てのプロトタイプイメージが同じ規格化された幅や高さを有するようにしてもよい。
【０００８】
発明の一態様は、リポジトリに保存されたプロトタイプイメージにグリフをマッチさせることに関し、当該グリフが属するフォントあるいは類似するフォントを特定する。
【０００９】
受け付けたグリフは１ビット深度のビットマップ形式に縮減されうる。受け付けたグリフと１ビット深度ビットマップに縮減されたグリフの少なくとも一方について境界線が計算されうる。
【００１０】
受け付けたグリフは規格化に供されうる。例えば規格化を行なうことによって、受け付けたグリフは所定の幅や高さを有するものとされうる。
【００１１】
リポジトリに保存された少なくとも一つのプロトタイプイメージと受け付けたグリフ（縮減と規格化を経たもの）が比較されて、少なくとも一つのマッチするフォントの候補が特定されうる。この比較は、受け付けたグリフ（縮減と規格化を経たもの）とリポジトリに保存された少なくとも一つのプロトタイプイメージの間の相違あるいは距離を示すスコアを演算することによって行なわれうる。
【００１２】
その他の詳細な事項および特徴は、以降の説明で明らかにする。発明は添付の特許請求の範囲により特定されるが、発明を構成する各種特徴は、添付の図面を含む開示全体を査読することにより明らかになるであろう。なお図面は発明の趣旨を例示的に説明するものに過ぎず、当該趣旨に対する限定的な解釈を何ら与えるものではない。各図において同様の要素には同一の参照番号が付与されている。
【図面の簡単な説明】
【００１３】
【図１】本発明の態様の少なくとも一つが実施されるシステムの例を示す図である。
【図２】本発明の態様の少なくとも一つが実施されるネットワーク環境の例を示す図である。
【図３】本発明の態様の少なくとも一つに係る方法を示す図である。
【図４】本発明の態様の少なくとも一つに係る方法を示す図である。
【図５】本発明の態様の少なくとも一つに係る方法を示す図である。
【図６】本発明の態様の少なくとも一つに係るプロトタイプイメージおよびグリフを示す図である。
【発明を実施するための形態】
【００１４】
開示の一部をなす添付の図面を参照しつつ、発明を実施するための形態の様々な例について以下説明する。発明の趣旨を逸脱しない限りにおいて、他の実施形態の採用や構造的・機能的な改変が可能であることは明らかである。
【００１５】
以降の説明においては要素間の様々な接続について言及するが、特に断りのない限りにおいてこれらの接続は直接、間接、無線、有線を含む一般的なものである。本明細書はこの点について限定することを意図していない。
【００１６】
発明の態様の少なくとも一つが実施されるシステムの例を図１に示す。本明細書における少なくとも一つの構成および態様は、コンピュータプログラムにより実施可能である。もしくはコンピュータプログラムをコンピュータ１００と組み合わせて用いることにより、および／またはコンピュータプログラムをメモリ１１３に格納することにより実施可能である。
【００１７】
コンピュータ１００は汎用演算装置を示し、例えばデスクトップコンピュータ、ラップトップコンピュータ、ネットブックコンピュータ、ネットワークサーバ、携帯演算装置、ＰＤＡ、スマートフォン、携帯電話、分散型演算ネットワーク装置や、以下に説明するように動作するのに必要な要素や能力を備え、本発明に係る特殊用途装置として機能しうるあらゆる装置が挙げられる。
【００１８】
コンピュータ１００は、ＣＰＵ等のプロセッサ１０３、ＲＡＭ等の不揮発性メモリ１０５、ＲＯＭ等のブートメモリ１０７、少なくとも一つのネットワークインターフェース１０９、少なくとも一つの入出力ポート１１１、および不揮発性メモリ１１３を備える。
【００１９】
ネットワークインターフェース１０９の例としては、イーサネット（登録商標）、無線ネットワークインターフェース、モデム等が挙げられ、コンピュータ１００はネットワークインターフェース１０９を通じて広域ネットワークやローカルエリアネットワーク（インターネット、ＬＡＮ、ＷＡＮ、ＰＡＮ等）に接続できる。入出力ポート１１１の例としては、キーボード、マウス、モニタ、プリンタ、ＵＳＢポート、シリアルポート、パラレルポート、IEEE 1394/Firewireポート等が挙げられる。不揮発性メモリ１１３の例としては、固定ディスク、光ディスク、ホログラフィックストレージ、リムーバブル記憶媒体、フラッシュドライブ等が挙げられる。
【００２０】
コンピュータ１００は様々なプログラム、命令、アプリケーション、およびデータをメモリ１１３に格納できる。メモリ１１３は、ＯＳソフトウェア１１５、フォントサーブレット１１７、データ１１９、およびフォントデータベース１２１を含んでいるがこれに限られるものではない。
【００２１】
フォントサーブレット１１７の例としては、少なくとも一つのプラグインや以下に述べる各種フォントソフトウェアが挙げられる。データ１１９の例としては、文書、ファイルや以下に述べる各種データが挙げられる。フォントデータベース１２１の例としては、少なくとも一つのフォントファイルや以下に述べる各種ファイルが挙げられる。
【００２２】
発明の態様の少なくとも一つは、コンピュータが処理可能なデータやコンピュータが実行可能な命令によって実施される。例えば、少なくとも一つのコンピュータや各種装置により実行されて少なくとも一つのフォントを出力としてディスプレイやプリンタといった装置に表示する少なくとも一つのプログラムモジュールが挙げられる。
【００２３】
一般にプログラムモジュールはルーティン、プログラム、オブジェクト、コンポーネント、データ構造等を含んでおり、コンピュータにおける少なくとも一つのプロセッサや各種処理装置により実行されることにより、特定のタスクを実行したり、特定の抽象データ形式を実装したりする。
【００２４】
コンピュータが実行可能な命令は、コンピュータが読み取り可能な媒体に記憶されうる。そうした媒体の例としては、ハードディスク、光ディスク、リムーバブル記憶媒体、ソリッドステートメモリ、ＲＡＭ等が挙げられる。
【００２５】
プログラムモジュールの機能性は、様々な形で必要に応じ組み合わされ、また分配される。さらに当該機能性の少なくとも一部は、ファームウェアあるいはハードウェアの等価物により実現されうる。等価物の例としては、集積回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）等が挙げられる。
【００２６】
特定のデータ構造は発明の態様の少なくとも一つを実施するのに効果的に用いられる。そのようなデータ構造は、ここに述べるコンピュータが実行可能な命令およびコンピュータが処理可能なデータの範疇である。
【００２７】
発明の態様の少なくとも一つが実施されるネットワーク環境２００の例を図２に示す。ネットワーク環境２００は、少なくとも１つのコンピュータを含む。コンピュータの例としては、ウェブディベロッパコンピュータ２０５、ウェブユーザコンピュータ２１０、ウェブドメインサーバ２２０、サーブレットホスト２２５、およびフォントサーバ２３０が挙げられる。またネットワーク環境２００は、少なくとも一つのローカルエリアネットワーク（ＬＡＮ）やインターネット等の少なくとも一つの広域ネットワーク（ＷＡＮ）を含む。
【００２８】
少なくとも一つの態様において、ウェブディベロッパコンピュータ２０５は、ウェブディベロッパや、ウェブサイトやカスケードスタイルシート（ＣＳＳ）コードをデザインする各種ユーザが使用するコンピュータである。ＣＳＳはスタイルシート言語であり、これによりウェブページのような構造化文書における少なくとも一つのパラメータが制御や変更を受ける。
【００２９】
例えば、ユーザはＣＳＳを用いてウェブページに表示されるテキストのフォントやフォントスタイルを定義することができる。すなわちフォントやフォントスタイルコーディングを直接各ウェブページに埋め込んでいかねばならないのではなく、ウェブページが適当なＣＳＳを呼び出しあるいは参照している。複数のウェブページが同じフォントやフォントスタイル、およびＣＳＳで定義される各種様式属性を使用するのであれば、同じＣＳＳを用いることができる。
【００３０】
ウェブユーザコンピュータ２１０は、インターネット２１５上で少なくとも一つのウェブサイトやウェブページを閲覧するウェブユーザにより使用されるコンピュータである。
【００３１】
ウェブドメインサーバ２２０は、少なくとも一つのウェブサイトやＣＳＳコードが格納され、リモートの要求に応じて当該少なくとも一つのウェブサイトやＣＳＳコードを提供するコンピュータである。
【００３２】
サーブレットホスト２２５は、少なくとも一つのフォント要求処理、フォント提供コンピュータプログラムやスクリプトが格納されるコンピュータである。
【００３３】
フォントサーバ２３０は、少なくとも一つのフォントや少なくとも一つのフォントデータベースが格納されるコンピュータである。
【００３４】
例えば、ウェブサイトディベロッパは、ウェブディベロッパコンピュータ２０５を用いてＣＳＳコードを含むウェブサイトあるいはウェブページを設計あるいは開発する。次いでウェブサイトディベロッパは、当該ウェブサイトあるいはウェブページをインターネット２１５を経由してウェブドメインサーバ２２０にアップロードする。
【００３５】
上記に加えてあるいは代えて、ウェブサイトディベロッパや各種ユーザは、ドメインサーバ２２０上においてウェブサイトあるいはウェブページを、ウェブディベロッパコンピュータ２０５からリモートで開発することができる。
【００３６】
その後、ウェブユーザはウェブユーザコンピュータ２１０を用いてインターネット２１５経由で当該ウェブサイトあるいはウェブページにアクセスする。ウェブサイトあるいはウェブページにアクセスし、そこに含まれるＣＳＳコードを実行することにより、ユーザはフォント要求を発行することができる。
【００３７】
フォント要求の発行の結果、ウェブユーザコンピュータ２１０やウェブドメインサーバ２２０はフォント要求をサーブレットホスト２２５に送信する。当該フォント要求はフォント要求サーバのアドレス、カスタマ識別子、セキュリティトークン、フォント名、フォントファイル名や、これらの組合せを含みうる。
【００３８】
フォント要求を受け取ると、サーブレットホスト２２５は当該フォント要求を処理する。当該処理には、フォント要求の構文解析、フォント要求サーバのアドレス、カスタマ識別子、セキュリティトークン、フォント名やフォントファイル名の評価が含まれうる。
【００３９】
当該フォント要求が無効あるいは未承認であるとサーブレットホスト２２５が判定すると、サーブレットホスト２２５はそれ以上の処理は行なわずに、当該フォント要求を拒否するメッセージやこれと同等の応答を送信する。
【００４０】
一方、当該フォント要求が有効あるいは承認されたものであるとサーブレットホスト２２５が判定すると、サーブレットホスト２２５は当該フォント要求に対応する少なくとも一つのフォントをフォントサーバ２３０に要求する。
【００４１】
当該要求に応じてフォントサーバ２３０は当該少なくとも一つのフォントをサーブレットホスト２２５、ウェブドメインサーバ２２０、ウェブユーザコンピュータ２１０の少なくとも一つへ送信する。
【００４２】
これに加えてあるいは代えて、フォントサーバ２３０から当該少なくとも一つのフォントを受け取ったサーブレットホスト２２５が、当該少なくとも一つのフォントをウェブドメインサーバ２２０とウェブユーザコンピュータ２１０の少なくとも一方に送信する構成としてもよい。
【００４３】
フォント要求に応じた当該少なくとも一つのフォントを受け取ると、ウェブユーザコンピュータ２１０は受け取ったフォントを用いてウェブサイトの表示や印刷をする。
【００４４】
ネットワーク環境２００は、様々な機能を実行可能な各種コンピュータを含むものとして記載したが、同じ機能性を提供すべく単独あるいは組み合わせて用いられる、任意の数のコンピュータを含むように変更可能である。例えば、上記の機能の全てを実行可能な単一のコンピュータを用いてもよい。また少なくとも一人のユーザが少なくとも一つの端末やユーザインターフェースを通じて当該単一のコンピュータとやり取りをする構成としてもよい。
【００４５】
別の例として、第１のコンピュータがウェブディベロッパコンピュータ２０５およびウェブユーザコンピュータ２１０の全ての機能を実行するものとして用いられ、第２のコンピュータがウェブドメインサーバ２２０、サーブレットホスト２２５、およびフォントサーバ２３０の全ての機能を実行するものとして用いられるように構成してもよい。
【００４６】
発明の態様の少なくとも一つに係るリポジトリの生成および維持方法を図３に示す。リポジトリは少なくとも一つのデータベースを含んでおり、当該データベースは少なくとも一つの演算プラットフォームに含まれるか結合されている。例えば図１および図２を用いて説明した演算エンティティとのあらゆる組合せが可能である。
【００４７】
ステップ３０２において、プロトタイプイメージが受け付けられる。より詳細には、プロトタイプとなる少なくとも一つのグリフに対応する情報またはデータが受け付けられる。当該プロトタイプイメージは、少なくとも一つの通信媒体またはプロトコルを用いてデータファイルとして受け付けられる。
【００４８】
これに加えてあるいは代えて、プロトタイプイメージの受け付けは、必要に応じて少なくとも一つのコンピュータにおける当該プロトタイプイメージを生成するステップを含んでもよい。
【００４９】
プロトタイプイメージは、リポジトリに加えられるフォントタイプに対応し、記号、文字、数字等を表す少なくとも一つのグリフを含んでいる。
【００５０】
ステップ３０８において、受け付けられたプロトタイプイメージが表示されるとともに、少なくとも一つの形式（例えばビットマップ形式）に変換される。ビットマップ形式に加えてあるいは代えて、他の形式を用いてもよい。
【００５１】
ステップ３１４において、プロトタイプイメージはビット深度削減（リダクションあるいは縮減）に供される。例えば二値化処理（１ビット深度のビットマップへのリダクション）が適用される。カラー画像から１ビット深度画像へのリダクションは、例えばホストオペレーティングシステムに関連付けられたグラフィックサービスのようなエンティティにより実行される。リダクションは図４を用いて後述する比較処理を容易にするために行なわれる。
【００５２】
ステップ３２０において、プロトタイプイメージに係る境界線が計算される。境界線はプロトタイプイメージのサイズや広がりを定めるために用いられる。例えばテキスト文書の場合、どこで第１のグリフ（例えば文字）が終了し、どこから第２のグリフ（例えば数字）が始まるのかを定めるために計算された境界線が用いられる。ここで第１のグリフと第２のグリフは互いに隣接あるいは接近しているものとする。
【００５３】
一例として、システムは画像解析を実行し、グリフにおける最も左側の画素、最も右側の画素、最も上側の画素、および最も下側の画素を特定する。上記計算された境界線は、ステップ３２６に関して説明する規格化処理を容易にするために用いられる。
【００５４】
ステップ３２６において、プロトタイプイメージに対して規格化処理がなされる。規格化処理は、プロトタイプイメージを所定の幅と高さに規格化する処理を含んでもよい。幅は例えば１２８ピクセルとされるが、他の値（例えば３２、６４、２５６等）であってもよい。
【００５５】
また規格化は、長さや高さの寸法について行ない、幅についてはこれらに比例するようにしてもよい。ステップ３２０で計算された境界線は、リダクション後のプロトタイプイメージにおける比例性を確保するために用いることもできる。
【００５６】
ステップ３３２において、上記の処理の少なくとも一つを経たプロトタイプイメージがリポジトリに保存される。
【００５７】
複数のグリフの一部（サブセット）が、図３を用いて説明した処理に供されるように構成してもよい。この場合、残りのグリフについては破棄してもよいし、図３に示す処理の少なくとも一つに供されることとしてもよいが、ステップ３３２については一時的な保存とする。プロトタイプイメージにおける異なるグリフについては、異なる取扱いをすることが望ましい。
【００５８】
また例えば、メモリの記憶容量、処理リソースや電源容量（電池で動作する装置等）に制限のある実施形態においては異なる取り扱いをしてもよい。その場合、いずれのグリフを保存するかを決定するにあたっては様々な基準が用いられる。例えば、頻繁に使用されると目されるグリフ（母音や句読点等）を保存するようにしてもよいし、逆にほとんど使用されないと目されるグリフは廃棄したり、一時的な保存に留めるようにしてもよい。
【００５９】
図４に示す方法は、図３に示した方法において受け付けたグリフを少なくとも一つのプロトタイプイメージにマッチさせるために用いられる。
【００６０】
ステップ４０４において、解析に供されるグリフが受け付けられる。グリフは少なくとも一つの演算エンティティ（例えば図１および図２に示した演算エンティティの少なくとも一つ）を経由して受け付けられる。グリフはスキャン画像（ファクシミリ等）、電子メール、（テキストの）メッセージとして受け付けられてもよいし、ファイルや文書として受け付けられてもよい。
【００６１】
ステップ４１０において、受け付けたグリフは少なくとも一つの形式に変換される。ステップ４１０における変換処理は、図３におけるステップ３０８について実行される変換処理に対応するようにしてもよい。すなわちステップ３０８の変換処理がビットマップの生成を伴うものであるとき、ステップ４１０ではステップ４０４で受け付けたグリフのビットマップを生成する処理を含みうる。
【００６２】
ステップ４１６において、受け付けたグリフがビット深度の削減処理（リダクションあるいは縮減）に供される。ステップ４１６における変換処理は、図３におけるステップ３１４について実行されるリダクションに対応するように実行されるとよい。すなわちステップ３１４のリダクションが１ビット深度のビットマップを得るものであるとき、ステップ４１６では受け付けたグリフが１ビット深度のビットマップに変換される。
【００６３】
ステップ４２２において、受け付けたグリフについて境界線が計算される。計算された境界線は、当該グリフのサイズや広がりを定めるのに用いられる。また当該境界線は、ステップ４２８で説明する規格化処理を容易にするためにも用いられる。
【００６４】
ステップ４２８において、受け付けたグリフに対して規格化処理が実行される。規格化処理は、当該グリフを所定の幅や比例する高さに規格化する処理を含む。幅は例えば１２８ピクセルとされるが、他の値（例えば３２、６４、２５６等）であってもよい。
【００６５】
また規格化は、長さや高さの寸法について行ない、幅についてはこれらに比例するようにしてもよい。例えば、所定の幅と高さをリポジトリに保存されているプロトタイプイメージにおける所定の幅と高さに一致させることができる。ステップ４２２で計算された境界線は、リダクション処理後のプロトタイプイメージにおける比例性を確保するために用いることもできる。
【００６６】
ステップ４２８の規格化処理は、ステップ４３４について後述する比較処理を容易にするために、図３におけるステップ３２６で実行される規格化処理に対応するようにしてもよい。
【００６７】
ステップ４３４において、受け付けたグリフ（ステップ４０４〜４２８で実行される処理を経たもの）と、図３のステップ３２２でリポジトリに保存された少なくとも一つのプロトタイプイメージとの間で比較処理がなされる。プロトタイプイメージの少なくとも一つはステップ４４０において出力される構成としてもよい。
【００６８】
図５に示すアルゴリズムの例は、図４のステップ４３４および４４０における比較処理および出力処理に用いることができる。このアルゴリズムについて以下説明する。
【００６９】
ステップ１：リポジトリ内において選択したプロトタイプイメージについて、第１の変数（以下、error_accumulatorと称する）をゼロとする。error_accumulatorは、選択したプロトタイプイメージと受け付けたグリフとの間の相違または距離を表すスコアを示すものである。
【００７０】
ステップ２：第２の変数（以下、min_num_rowsと称する）の値を、選択したプロトタイプイメージの行数および受け付けたグリフの行数以下の数とする。
【００７１】
ステップ３：min_num_rowsの値に至るまでの各行について、受け付けたグリフと選択したプロトタイプイメージの排他的論理和（xor）を演算するとともに、演算結果が「１」または「真」である場合にerror_accumulatorのカウント値を保持（アキュムレート）する。このステップで行われる排他的論理和演算は、受け付けたグリフと選択したプロトタイプイメージ間における画素ごとの排他的論理和をとることに相当する。各画素における演算結果が「１」または「真」である場合とは、当該画素が「オン」または「黒」である場合に相当し、演算結果が「０」または「偽」である場合とは、当該画素が「オフ」または「白」である場合に相当する。
【００７２】
ステップ４：受け付けたグリフと選択したプロトタイプイメージのいずれか（行数の多い方）において、ステップ３で比較の対象とされた行以外の各行についてＳＥＴビット数（例えばグレースケール画像の場合、当該画像において黒色を呈しているビットの数）をカウントし、カウント値をerror_accumulatorに加算する。
【００７３】
ステップ５：選択したプロトタイプイメージのスコアとしてerror_accumulatorの値を保存する。
【００７４】
ステップ６：リポジトリに保存されているプロトタイプイメージの各候補について上記ステップ１〜５を繰り返し、全てのプロトタイプイメージの候補について処理を行なったかを判定する。プロトタイプイメージの候補は、リポジトリに保存されているプロトタイプイメージの全てであっても一部であってもよい。
【００７５】
ステップ７：ステップ５で保存されたスコアをソートし、プロトタイプイメージの各候補に係るスコアのリストを得る。
【００７６】
ステップ８：リスト中のスコアのうち最も値の低いものを特定する。これは受け付けたグリフに最もマッチするプロトタイプイメージに対応する。当該プロトタイプイメージは出力に供される。表示装置における表示スクリーン（コンピュータモニタ等）、電子メール、テキストメッセージ、文書、音声メッセージ等の少なくとも一つを通じて出力がなされる構成とすることができる。
【００７７】
図６は、図５に係る上記ステップ１〜５を視覚的に示したものである。図６においては、プロトタイプイメージは３行３列の画素から成り、略Ｘ字形状を呈している。一方、受け付けられて図４に係る処理を経たグリフは４行３列の画素から成る。この場合、図５のステップ２で特定される最小行数は、プロトタイプイメージの３行に対応する３となる。
【００７８】
図５のステップ３により、上記３行の各々について、プロトタイプイメージと受け付けたグリフとの間で画素単位の排他的論理和演算がなされる。上から３行についての演算結果を図６における「ＸＯＲ演算結果」に示す。１行目かつ３列目の画素が黒くなっているのは、当該プロトタイプイメージにおける対応画素が「オン」または「黒」であり、当該グリフにおける対応画素が「オフ」または「白」であることによる演算結果を反映してのことである。図５のステップ３完了に伴い、この排他的論理和演算に基づいてerror_accumulatorは値「１」を持つことになる。
【００７９】
さらに図５のステップ４により、上記グリフの４行目における「オン」または「黒」の画素の数が加算される。「ＸＯＲ演算結果」における４行目かつ２列目の画素が黒くなっているのは、当該グリフの４行目かつ２列目の画素が「オン」または「黒」であることによる演算結果を反映してのことである。よって図５のステップ４によりerror_accumulatorの値が１だけ加算される。
【００８０】
すなわち図５のステップ４完了に伴い、error_accumulatorの値は「２」となり、図５のステップ５において、このプロトタイプイメージについてのerror_accumulatorの値として「２」が保存される。
【００８１】
図５のステップ６において、図６に係る上記の処理は他のプロトタイプイメージの候補（図示せず）について繰り返し行なわれ、図５のステップ７および８において、いずれのプロトタイプイメージの候補が受け付けたグリフに対して最も低いスコアを有するのかが特定される。
【００８２】
図６に示したのは一例に過ぎず、異なるプロトタイプイメージやグリフが用いられうる。例えば、図６に示したプロトタイプイメージとグリフの幅は、図示の簡略のために３画素としたのであって、異なる値であってもよい。
【００８３】
上記の方法および構成は変更が可能である。例えば、「ベストフィット」する結果を得たり、正確性を向上させるために、図３および図４に示した方法はマルチパスで実行される構成としてもよい。
【００８４】
図３のステップ３２０や図４のステップ４２２における境界線の計算は、増減といった調整や修正が適宜可能である。プロトタイプイメージと受け付けたグリフの一方を他方に対して変位させたり傾斜させたりする際に、そのような調整が行なわれる。計算された境界線の少なくとも一つについてオフセット値を加算あるいは減算することにより調整が行なわれる。計算された境界線に１以外の数を乗算して調整を行なってもよい。１より小さな数を乗ずると境界線が縮小し、１より大きな数を乗ずると境界線が拡大する。
【００８５】
ビット深度の削減（図３のステップ３１４および図４のステップ４１６）に係る技術は修正・変更することができる。例えば、二値化にあたっては、５０％閾値（ビットが黒なら「オン」、白なら「オフ」と扱う）ではなく、異なる閾値を用いてもよい。例えば、現実の使用環境で問題となる印刷インク色や用紙に係る要因を補うために７５％閾値を用いてもよい。受け付けたグリフにおけるビットのオンオフ状態によく適合するように異なる閾値を用いればよい。
【００８６】
リダクション処理においては、必要に応じて最近傍アルゴリズムを用いてもよい。例えば、ある画素へのビット値の割り当ては、受け付けたグリフの対応する位置と当該位置の近傍位置の双方についての関数としてもよい。このようにしてフィルタリングアルゴリズムを効果的に採用あるいは使用することにより、当該グリフ中の転移点を平均化あるいは平滑化する効果が得られる。
【００８７】
図４に示したアルゴリズムを適用することにより受け付けたグリフが変位（回転等）される構成としてもよい。そのような変位（回転等）はグリフの生成における機械的あるいは人的エラーを補うために用いうる。例えば、グリフがスキャン処理の結果として生成された場合、スキャン時に発生した不慮のグリフの回転を補償すべく、当該グリフに対して回転処理が実行されうる。
【００８８】
図５のステップ８で決定された最小スコアが使用されるプロトタイプイメージに対応付けられるが、当該最小スコアの代わりに別のスコアを用いた方がよい場合もある。例えば、最小スコアと次に小さなスコアの差が閾値を下回る場合に、視聴覚的なプロンプトとして最小スコアと次に小さなスコアに対応するプロトタイプイメージを表示し、ユーザにいずれか一方を選択させるように構成してもよい。
【００８９】
いずれのプロトタイプイメージを使用するかを決定するにあたり、ライセンス期間が考慮される構成としてもよい。例えば、図５のステップ８における最小スコアがライセンス期間に係る煩わしさを伴うプロトタイプイメージに対応し、一方で次に小さなスコアがライセンス期間に関して好ましいプロトタイプイメージに対応する場合がありうる。このような場合、２つのプロトタイプイメージのライセンス期間の差が閾値を上回るときに、次に小さなスコアに対応するプロトタイプイメージが使用されるようにしてもよい。
【００９０】
上記の基準（閾値の使用、ライセンス期間等）を、他の基準と組み合わせてスコア間の関係を絶つために用いてもよい。
【００９１】
本明細書に記載の様々な発明の態様が方法、装置や、コンピュータが実行可能な命令を格納したコンピュータ読取り可能な媒体として実施しうることは当業者にとって明らかなことである。よってこれらの態様は、全てがハードウェアの実施形態、全てがソフトウェアの実施形態、全てがファームウェアの実施形態、またはソフトウェア、ハードウェア、およびファームウェアを任意の形式で組み合わせた実施形態をとりうる。
【００９２】
また本明細書に記載したデータやイベントを表す各種信号は、送信元と送信先の間を信号伝達媒体を通じて光や電磁波の形で伝送される。信号伝達媒体の例としては、金属線、光ファイバや無線通信媒体（大気や宇宙等）が挙げられる。
【００９３】
コンピュータ読み取り可能な媒体は、トランジトリな媒体とトランジトリでない媒体を含みうる。
【００９４】
上述の各種方法および行為は少なくとも一つの演算サーバと少なくとも一つのネットワークにまたがって動作可能である。機能はあらゆる方法で分散されてもよいし、単一の演算装置（サーバ、クライアントコンピュータ等）に実装されてもよい。受け付けたグリフを少なくとも一つのプロトタイプイメージの候補にマッチさせるために適宜の技術が用いられうる。
【００９５】
上記の方法論的行為および処理は特定の機械や装置と結合されうる。例えばユーザコンピュータやサーバ等は、本発明の様々な態様において用いられて受け付けたグリフを少なくとも一つのプロトタイプイメージの候補にマッチさせる。
【００９６】
少なくとも一つのコンピュータは、少なくとも一つのプロセッサと、命令を格納するメモリとを備えており、当該命令が実行されることにより、上記の方法論的行為および処理が行なわれる。
【００９７】
上記の方法論的行為および処理は、あるもの（受け付けたグリフ）を別の状態や別のもの（少なくとも一つのプロトタイプイメージに関連付けられた性質や属性を有する、表示されるグリフ）に変えるための様々な機能を実行しうる。
【００９８】
発明の各種態様を、実施形態の例示を通じて説明してきたが、本明細書の開示に基づいて、添付した特許請求の範囲の記載から逸脱しない範囲において他の実施形態、変形や変更が可能であることは、当業者にとって明らかである。例えば、図面において例示した各ステップは、図示した順序以外でも実行されうる。また図示した少なくとも一つのステップは、発明の態様によっては任意に実行されるものとしてよい。
【図１】
0005885956.tif 000002
【図２】
0005885956.tif 000003
【図３】
0005885956.tif 000004
【図４】
0005885956.tif 000005
【図５】
0005885956.tif 000006
【図６】
0005885956.tif 000007