以下、図面を参照しながら本発明の実施の形態を説明する。
図1は、本発明の実施の形態の文字表示装置100の構成を示す。
文字表示装置100は、例えば、パーソナルコンピュータであり得る。パーソナルコンピュータとしては、デスクトップ型またはラップトップ型などの任意のタイプのコンピュータが使用され得る。あるいは、文字表示装置100は、ワードプロセッサであってもよい。
さらに、文字表示装置100は、カラー表示が可能な表示デバイスを備えた電子機器や情報機器などの任意の情報表示装置であり得る。例えば、文字表示装置100は、カラー液晶表示デバイスを備えた電子機器や、携帯情報ツールである携帯情報端末や、PHSを含む携帯電話機や、一般の電話機/FAXなどの通信機器などであってもよい。
文字表示装置100は、入力デバイス110と、文字を表示する表示デバイス130と、表示デバイスを制御する制御部120と、補助記憶装置140とを含む。制御部120には、入力デバイス110と、表示デバイス130と、補助記憶装置140とが接続されている。
入力デバイス110は、表示デバイス130に表示すべき文字を示す文字情報を制御部120に入力するために使用される。文字情報は、例えば、文字を識別する文字コードと文字の大きさを示すサイズ情報とを含む。入力デバイス110としては、文字コードとサイズ情報とを入力することが可能な任意のタイプの入力デバイスが使用され得る。例えば、キーボードやマウスやペン入力装置などの入力デバイスが入力デバイス110として好適に使用され得る。
文字表示装置100が携帯電話である場合には、通信先の電話番号を指定するための数字キーが、文字コードまたはサイズ情報を入力するために用いられてもよい。文字表示装置100が、インターネットを含む電話通信回線に文字表示装置100を接続するための手段を備えている場合には、その電話通信回線から受信した電子メールに含まれるメッセージが表示デバイス130に表示されてもよい。文字表示装置100が、インターネットを含む電話通信回線に文字表示装置100を接続するための手段を備えている場合には、その通信回線に接続するための手段が、入力デバイス110として機能する。
補助記憶装置140には、文字表示プログラム141と、文字表示プログラム141を実行するために必要な文字データ142とが格納されている。文字データ142は、座標データと基準点間データとを含む。座標データと基準点間データとの詳細は後述される。
文字表示プログラム141は、表示デバイスに出力する文字サイズに合うように文字データ142によって含まれる座標データをスケーリングし、スケーリングされた座標データを生成するスケーリングプログラム141aと、スケーリングされた座標データをグリッドフィッティングし、グリットフィッティングされた座標データを生成するグリッドフィッティングプログラム141bと、グリッドフィッティングされた座標データを表示デバイスに表示可能になるように描画データを生成する描画データ生成プログラム141cと同一距離フラグ取得プログラム141dとを含む。
プログラム141a〜141dの機能の詳細は、後述される。
文字データ142は、例えば、ベクトルデータである。本実施の形態では、ベクトルデータは256メッシュの解像度をもっている。しかし、ベクトルデータの解像度は、256メッシュに限らない。32メッシュでもよい。14メッシュでもよい。
補助記憶装置140としては、文字表示プログラム141および文字データ142を格納することが可能な任意のタイプの記憶装置が使用され得る。補助記憶装置140において、文字表示プログラム141および文字データ142を格納する記録媒体としては、任意の記録媒体が使用され得る。例えば、ハードディスク、CD−ROM、MO、MD、DVD、ICカード、光カードなどの記録媒体が好適に使用され得る。
なお、文字表示プログラム141および文字データ142は、補助記憶装置140によって含まれる記録媒体に格納されることに限定されない。例えば、文字表示プログラム141および文字データ142は、制御部120に含まれる主メモリ122に格納されてもよいし、ROM(図示せず)に格納されてもよい。ROMは、例えば、マスクROM、EPROM、EEPROM、フラッシュROMなどであり得る。このROM方式の場合には、そのROMを交換するだけでいろいろな処理のバリエーションを容易に実現することかできる。例えば、ROM方式は、文字表示装置100が携帯型の端末装置または携帯電話機である場合に好適に適用され得る。
さらに、文字表示装置100が、インターネットを含む電話通信回線に文字表示装置100を接続するための手段を備えている場合には、その電話通信回線から文字表示プログラム141および文字データ142の少なくとも一部をダウンロードすることができる。この場合、ダウンロードに必要なローダープログラムは、ROM(図示せず)に予め格納されていてもよいし、補助記憶装置140から制御部120にインストールされてもよい。
制御部120は、CPU121と主メモリ122とを含む。
CPU121は、文字表示装置100の全体を制御および監視するとともに、補助記憶装置140に格納されている文字表示プログラム141を実行する。
主メモリ122は、入力デバイス110から主メモリ122に入力されたデータや、表示デバイス130に表示するためのデータや、文字表示プログラム141を実行するのに必要なデータを一時的に格納する。主メモリ122は、CPU121によって制御される。
CPU121は、主メモリ122に格納された各種のデータに基づいて文字表示プログラム141を実行することにより、描画データを生成する。生成された描画データは、主メモリ122に一旦格納された後、表示デバイス130に出力される。描画データが表示デバイス130に出力されるタイミングは、CPU121によって制御される。
表示デバイス130は、例えば、カラー液晶表示デバイスである。カラー液晶表示デバイスとしては、パソコンなどに多く用いられている透過型の液晶表示デバイスのほか、反射型やリアプロ型の液晶表示デバイスが使用され得る。しかし、表示デバイス130は、カラー液晶表示デバイスに限定されない。表示デバイス130は、白黒の表示デバイスであり得る。さらに、表示デバイス130として、X方向およびY方向に配列された複数のピクセルを有する任意のカラー表示装置(いわゆるXYマトリクス表示装置)が使用され得る。
図2は、256×256メッシュで表示されたアウトラインフォントの文字「中」を示す。ベクトルデータは、アウトラインフォントを示すデータと骨格フォントを示すデータとを含む。ベクトルデータのうちアウトラインフォントを示すデータを対象として、本発明の実施の形態を説明をする。但し、本発明は、骨格フォント(ストロークフォント)を示すデータにも適用可能である。
文字「中」は、輪郭1、輪郭2および輪郭3を持つ(図2参照)。輪郭1は、点P1と点P2とを結び、点P2と点P3とを結び、点P3と点P4とを結び、点P4と点P5とを結び、点P5と点P6とを結び、点P6と点P7とを結び、点P7と点P8とを結び、点P8と点P9とを結び、点P9と点P10とを結び、点P10と点P11とを結び、点P11と点P12とを結び、さらに点P12と点P1とを結ぶことによって表現される。輪郭2は、点P13と点P14とを結び、点P14と点P15とを結び、点P15と点P16とを結び、さらに点P16と点P13とを結ぶことによって表現される。輪郭3は、点P17と点P18とを結び、点P18と点P19とを結び、点P19と点P20とを結び、さらに点P20と点P17とを結ぶことによって表現される。
更に、図2は、X軸に沿った基準点間の距離と、Y軸に沿った基準点間の距離とを示す。X軸に沿った基準点間の距離は、5つである。この5つの距離は、距離X1〜距離X5で示される。Y軸に沿った基準点間の距離は、5つである。この5つの距離は、距離Y1〜距離Y5で示される。
図3は、図2に示された文字「中」の文字データ142に含まれる座標データを示す。座標データは、輪郭1〜輪郭3を表現する点P1〜点P20の座標値を示す。
「座標番号」は、輪郭1〜輪郭3を表現する点を示す。具体的には、「座標番号」は、P1からP20を示す。
「X座標」は、点のX座標成分を示す。例えば、「X座標」は、点P1のX座標成分「143」を示す。
「Y座標」は、点のY座標成分を示す。例えば、「Y座標」は、点P1のY座標成分「240」を示す。
図4は、図2に示された文字「中」の文字データ142に含まれる基準点間データを示す。
基準点は、文字をスケーリングする際、文字の各部をバランスよく保ってスケーリングする計算の拠点となるもので、文字毎に予め適宜決められるものである。この基準点は文字を構成するブロック内に含まれる。基準点は、文字の輪郭のうちX軸方向に沿って設定されだけでなく、Y軸方向に沿っても設定され得る。また、基準点は、必ずしも、文字の輪郭上に設定される必要はなく、例えば、文字の輪郭の間の空白の場所にあってもよい。
この発明は、文字のフォントのタイプに依存せず、例えばストロークフォントであっても、上に説明したアウトラインフォントの場合と同様に適用できる。ストロークフォントの場合にも同様に、基準点は文字を構成するストローク上にあっても良いし、ストローク間の空白の場所にあっても良い。
図4aは、X軸方向の基準点間データを示す。
「X軸方向」は、文字「中」を構成する輪郭1〜輪郭3のうちX軸方向に沿って設定された複数の基準点の間を示す。具体的には、これらの基準点の間は、距離X1〜距離X5である。
「開始」は、基準点間の開始位置のX座標成分を示す。例えば、距離X1の開始位置のX座標成分は「25」である。
「距離」は、基準点間のX軸方向の距離を示す。例えば、距離X1のX軸方向の距離は「32」である。
「同一距離フラグ」は、複数の基準点間の距離のうち、調整後に同じ大きさにする基準点間をグループとして示すフラグである。同じ値の「同一距離フラグ」を持つ対象は全て調整後には同じ大きさの距離に調整される。
例えば、図4aでは、値「1」によって示される「同一距離フラグ」は、距離X1〜距離X5のうち、距離X1と、距離X3と、距離X5とが同一の大きさに調整されることを示す。同様に、値「2」によって示される「同一距離フラグ」は、距離X1〜距離X5のうち、距離X2と、距離X4とが同一の大きさに調整されることを示す。
このように、「同一距離フラグ」によれば、複数の距離の幅のうち、少なくとも1つの距離の幅と、この少なくとも1つの距離の幅に等しいと規定された他の少なくとも1つの距離の幅とを示すことができる。
「距離フラグ」は、X軸に沿った基準点間の距離として最低限必要な距離を有するか否かを示す。さらに、距離フラグは、基準点間の距離として最低限必要な距離がいくらであるかも示す。例えば、距離フラグが×である場合は、基準点間が、最低限必要な距離の幅を有しないことを示す。例えば、距離フラグが、数「M」である場合には、基準点間が、最低限必要な距離の幅「M」を有することを示す。例えば、図4aでは、距離X1の距離フラグの数が「1」を示しており、距離X1は、最低限必要な距離の幅「1」を有する。
「省略フラグ」は、X軸に沿った基準点間の距離をグリッドフィッティングにより調整する際に、調整する距離を0にできるか否かを示す。さらに、省略フラグは、調整する距離の幅を0にできる場合には、調整する距離の幅を0にする順番を示す。
例えば、省略フラグが「×」である場合には、調整する距離の幅を0にすることができないことを示す。例えば、省略フラグが、整数「N」である場合は、調整する距離の幅を0にできることを示す。さらに、省略フラグが整数「N」である場合は、調整する距離の幅を0にする順番がN番目であることを示す。例えば、図4aでは、距離X1の省略フラグが「×」であり、距離X1は調整する距離の幅を0にすることができないことを示す。
図4bは、Y軸方向の基準点間データを示す。
「Y軸方向」は、文字「中」を構成する輪郭1〜輪郭3のうちY軸方向に沿って設定された複数の基準点の間を示す。具体的には、この基準点の間は、距離Y1〜距離Y5である。
「開始」は、基準点間の開始位置のY座標成分を示す。例えば、距離Y1の開始位置のY座標成分は「16」である。
「距離」は、基準点間のY軸方向の距離を示す。例えば、距離Y1のY軸方向の距離は「80」である。
「同一距離フラグ」は、上述のように、複数の距離の幅のうち、少なくとも1つの距離と、この少なくとも1つの距離と同一の大きさに調整される他の少なくとも1つの距離の幅とを示す。例えば、値「1」によって示される「同一距離フラグ」は、距離Y1〜距離Y5のうち、距離Y2と、距離Y4とが同一の大きさに調整されることを示す。例えば、値「×」によって示される「同一距離フラグ」が付された距離の幅は、距離Y1〜距離Y5のうち、同一の大きさに調整される距離の幅がないことを示す。「同一距離フラグ」によれば、複数の距離の幅のうち、少なくとも1つの距離の幅と、この少なくとも1つの距離の幅に等しいと規定された他の少なくとも1つの距離の幅とを示すことができる。
「距離フラグ」は、Y軸に沿った基準点間の距離の幅として最低限必要な距離の幅を有するか否かを示す。さらに、距離フラグは、基準点間の距離の幅として最低限必要な距離の幅がいくらであるかも示す。例えば、図4bでは、距離Y1の距離フラグが「1」であり、距離Y1が、最低限必要な距離の幅「1」を有することを示す。
「省略フラグ」は、Y軸に沿った基準点間の距離をグリッドフィッティングにより調整する際に、調整する距離の幅を0にできるか否かを示す。さらに、省略フラグは、調整する距離の幅を0にできる場合には、調整する距離の幅を0にする順番を示す。例えば、図4bでは距離Y1の省略フラグ「X」であり、距離Y1は調整する距離の幅を0にすることができないことを示す。
図5は、256×256メッシュで表示されたアウトラインフォントの文字「晶」を示す。文字「晶」は、輪郭1〜輪郭9を含む。
更に、図5は、X軸に沿った基準点間の距離の幅と、Y軸に沿った基準点間の距離の幅とを示す。X軸に沿った基準点間の距離の数は、11である。これらの11の距離の幅は、距離X1〜距離X11で示される。Y軸に沿った基準点間の距離の数は、11である。これらの11の距離の幅は、距離Y1〜距離Y11で示される。
図6は、図5に示された文字「晶」の文字データ142に含まれる座標データを示す。座標データは、輪郭1〜輪郭9を表現する点P1〜点P36の座標値を示す。
「座標番号」は、輪郭1〜輪郭9を表現する点を示す。具体的には、「座標番号」は、P1からP36を示す。
「X座標」は、点のX座標成分を示す。例えば、「X座標」は、点P1のX座標成分「219」を示す。
「Y座標」は、点のY座標成分を示す。例えば、「Y座標」は、点P1のY座標成分「254」を示す。
図7は、図5に示された文字「晶」の文字データ142に含まれる基準点間データを示す。
図7aは、X軸方向の基準点間データを示す。
「X軸方向」は、文字「晶」を構成する輪郭1〜輪郭9のうちX軸方向に沿って設定された複数の基準点の間を示す。具体的には、この基準点の間は、距離X1〜距離X11である。
「開始」は、基準点間の開始位置のX座標成分を示す。例えば、距離X1の開始位置のX座標成分は「12」である。
「距離」は、基準点間のX軸方向の距離を示す。例えば、距離X1のX軸方向の距離は「16」である。
「同一距離フラグ」は、上述のように、複数の距離の幅のうち、少なくとも1つの距離と、この少なくとも1つの距離と同一の大きさに調整される他の少なくとも1つの距離の幅とを示す。例えば、値「1」によって示される「同一距離フラグ」は、距離X1〜距離X11のうち、距離X1、距離X3、距離X5、距離X7、距離X9および距離X11が同一の大きさに調整されることを示す。例えば、値「2」によって示される「同一距離フラグ」は、距離X1〜距離X11のうち、距離X2および距離X10が同一の大きさに調整されることを示す。例えば、値「3」によって示される「同一距離フラグ」は、距離X1〜距離X11のうち、距離X4および距離X8が同一の大きさに調整されることを示す。例えば、値「×」によって示される「同一距離フラグ」が付された距離X6は、距離X1〜距離X11のうち、同一の大きさに調整される距離がないことを示す。「同一距離フラグ」によれば、複数の距離の幅のうち、少なくとも1つの距離の幅と、この少なくとも1つの距離の幅に等しいと規定された他の少なくとも1つの距離の幅とを示すことができる。
「距離フラグ」は、X軸に沿った基準点間の距離の幅として最低限必要な距離の幅を有するか否かを示す。さらに、距離フラグは、基準点間の距離の幅として最低限必要な距離の幅がいくらであるかも示す。例えば、距離X1の距離フラグは「1」を示す。すなわち、距離X1は、最低限必要な距離の幅「1」を有する。
「省略フラグ」は、X軸に沿った基準点間の距離の幅をグリッドフィッティングにより調整する際に、調整する距離の幅を「0」にできるか否かを示す。さらに、省略フラグは、調整する距離の幅を「0」にできる場合には、調整する距離の幅を「0」にする順番を示す。例えば、距離X1の省略フラグは「×」を示す。すなわち、調整する距離の幅を「0」にすることができないことを示す。
図7bは、Y軸方向の基準点間データを示す。
「Y軸方向」は、文字「晶」を構成する輪郭1〜輪郭9のうちY軸方向に沿って設定された複数の基準点の間を示す。具体的には、この基準点の間は、距離Y1〜距離Y11である。
「開始」は、基準点間の開始位置のY座標成分を示す。例えば、距離Y1の開始位置のY座標成分は「1」である。
「距離」は、基準点間のY軸方向の距離の幅を示す。例えば、距離Y1のY軸方向の距離の幅は「16」である。
「同一距離フラグ」は、上述のように、複数の距離の幅のうち、少なくとも1つの距離と、この少なくとも1つの距離と同一の大きさに調整される他の少なくとも1つの距離の幅とを示す。例えば、値「1」によって示される「同一距離フラグ」は、距離Y1〜距離Y11のうち、距離Y1、距離Y3、距離Y5、距離Y7、距離Y9および距離Y11が同一の大きさに調整されることを示す。例えば、値「2」によって示される「同一距離フラグ」は、距離Y1〜距離Y11のうち、距離Y2および距離Y4が同一の大きさに調整されることを示す。例えば、値「3」によって示される「同一距離フラグ」は、距離Y1〜距離Y11のうち、距離Y8および距離Y10が同一の大きさに調整されることを示す。例えば、値「×」によって示される「同一距離フラグ」が付された距離Y6は、距離Y1〜距離Y11のうち、同一の大きさに調整される距離の幅がないことを示す。「同一距離フラグ」によれば、複数の距離の幅のうち、少なくとも1つの距離の幅と、この少なくとも1つの距離の幅に等しいと規定された他の少なくとも1つの距離の幅とを示すことができる。
「距離フラグ」は、Y軸に沿った基準点間の距離の幅として最低限必要な距離の幅を有するか否かを示す。さらに、距離フラグは、基準点間の距離の幅として最低限必要な距離の幅がいくらであるかも示す。例えば、距離Y1の距離フラグは、「1」である。距離フラグが「1」であることは、距離Y1が、最低限必要な距離の幅「1」を有することを示す。
「省略フラグ」は、Y軸に沿った基準点間の距離の幅をグリッドフィッティングにより調整する際に、調整する距離の幅を「0」にできるか否かを示す。さらに、省略フラグは、調整する距離の幅を「0」にできる場合には、調整する距離の幅を「0」にする順番を示す。例えば、距離Y4の省略フラグは「3」を示す。すなわち、調整する距離の幅を「0」にする順番が3番目であることを示す。
図8は、本発明の表示処理手順を示す。表示処理手順は、CPU121が文字表示プログラム141を実行するによって実現される。
以下、図8を参照して、本発明の表示処理手順をステップごとに説明する。
ステップS101:表示デバイス130に表示すべき文字を示す文字情報が、入力デバイス110を介して主メモリ122に入力される。入力された文字情報に応じて、CPU121は、補助記憶装置140に格納されている文字データ142を補助記憶装置140から読み込む。読み込まれた文字データ142は、座標データ(図3参照)および基準点間データ(図4参照)を含む。
ステップS102:CPU121は、表示デバイス130に出力する文字サイズに合わせて、座標データをスケーリングし、スケーリングされた座標データを生成する。CPU121が、プログラム141aを実行することによって、ステップS102が処理される。スケーリングされた座標データは、主メモリ122に格納される。
出力する文字サイズがnドットの場合には、スケーリングされた座標データ(X,Y)は、例えば、(n×X/256,n×Y/256)である。スケーリングされた座標データは、小数第2位まで計算される。
図9は、文字「中」の文字データ142に含まれる座標データとこれらの座標データをスケーリングした後の座標データとを示す。スケーリング前の座標データは、図3で示された座標データである。
「X座標」は、スケーリング前の座標のうちX座標成分を示す。「Y座標」は、スケーリング前の座標のうちY座標成分を示す。
「スケーリング後のX座標」は、スケーリング後の座標のうちX座標成分を示す。「スケーリング後のY座標」は、スケーリング後の座標のうちY座標成分を示す。
出力する文字サイズが16ドットの場合には、スケーリング前の点P1(143,240)は、スケーリングされることによってスケーリング後の点P1(8.94,15.00)に変更される。
図10は、文字「晶」の文字データ142に含まれる座標データとこれらの座標データをスケーリングした後の座標データとを示す。
スケーリング前の座標データは、図6で示された座標データである。
「X座標」は、スケーリング前の座標のうちX座標成分を示す。「Y座標」は、スケーリング前の座標のうちY座標成分を示す。
「スケーリング後のX座標」は、スケーリング後の座標のうちX座標成分を示す。「スケーリング後のY座標」は、スケーリング後の座標のうちY座標成分を示す。
出力する文字サイズが16ドットの場合には、スケーリング前の点P1(219,254)は、スケーリングされることによってスケーリング後の点P1(13.69,15.88)に変更される。
再び図8を参照して本発明の表示処理手順の説明を続ける。
ステップS103:CPU121は、スケーリングされた座標データをグリッドフィッティングし、グリットフィッティングされた座標データを生成する。CPU121が、プログラム141bを実行することによって、ステップS103が処理される。グリットフィッティングされた座標データは、主メモリ122に格納される。
グリッドフィッティング処理手順の詳細は、後述される。
ステップS104:CPU121は、グリッドフィッティングされた座標データが表示デバイスに表示可能になるように描画データを生成する。描画データの生成は、アウトラインフォントを示すデータを生成する手法として、公知である。例えば、CPU121は、直線引きやスプライン等の曲線引きプログラムによって、文字の輪郭を示す描画データを生成し、塗りつぶしプログラムによって、輪郭内部を塗りつぶす。CPU121が、プログラム141cを実行することによって、ステップS104が実行される。生成された描画データは、主メモリ122に格納される。
ステップS105:CPU121は、ステップS104で生成された描画データを表示デバイス130に表示する。
図11は、グリッドフィッティング処理手順(プログラム141bのステップS103の処理手順)を示す。プログラム141bは、CPU121によって実行される。図11(a)は、ステップS301〜ステップS310およびステップS327〜ステップS330を示す。図11(b)は、ステップS319〜ステップS326を示す。図11(c)は、ステップS311〜ステップS318を示す。
図12は、図4に示された基準点間データをグリッドフィッティング処理した後の基準点間データを示す。
図12(a)は、X軸方向の基準点間データ(図4(a)参照)をグリッドフィッティング処理した後の基準点間データを示す。
「X軸方向」は、グリッドフィッティングの対象となった複数の距離の幅を示す。具体的には、グリッドフィッティングの対象となった複数の距離の幅は、距離X1〜距離X5である。
「距離」は、グリッドフィッティング処理した後の基準点間のX軸方向の距離の幅を示す。例えば、距離X1の距離の幅は「2.00」である。
「量子化後の距離」は、「距離」に示された値を量子化することによって生成された距離の幅を示す。例えば、距離X1を量子化することによって生成された距離の幅は、「2」である。なお、量子化することについての詳細は、後述される。
「第1誤差」は、「量子化後の距離」で示された値から「距離」で示された値への変化量を示す。例えば、距離X2を対象とした場合、「量子化後の距離」で示された値から「距離」で示された値への変化量は、「−0.44(即ち、3−3.44)」である。
「同一距離フラグ」は、複数の距離の幅のうち、少なくとも1つの距離と、この少なくとも1つの距離と同一の大きさに調整される他の少なくとも1つの距離の幅とを示す。例えば、値「1」によって示される「同一距離フラグ」は、距離X1〜距離X5のうち、距離X1と、距離X3と、距離X5とが同一の大きさに調整されることを示す。例えば、値「2」によって示される「同一距離フラグ」は、距離X1〜距離X5のうち、距離X2と、距離X4とが同一の大きさに調整されることを示す。「同一距離フラグ」によれば、複数の距離の幅のうち、少なくとも1つの距離の幅と、この少なくとも1つの距離の幅に等しいと規定された他の少なくとも1つの距離の幅とを示すことができる。
「同一距離処理後の距離」は、量子化後の距離の幅を同一距離処理することによって生成された距離の幅を示す。例えば、距離X1、距離X3および距離X5を対象とした場合、同一距離処理後の距離の幅のそれぞれは、「2」である。例えば、距離X2および距離X4を対象とした場合、同一距離処理後の距離の幅のそれぞれは、「3」である。なお、同一距離処理の詳細は、後述される。
「第2誤差」は、「同一距離処理後の距離」で示された値から「距離」で示された値への変化量を示す。例えば、距離X2を対象とした場合、「同一距離処理後の距離」で示された値から「距離」で示された値への変化量は、「−0.44(即ち、3−3.44)」である。
図12(b)は、Y軸方向の基準点間データ(図4(b)参照)をグリッドフィッティング処理した後の基準点間データを示す。
「Y軸方向」は、グリッドフィッティングの対象となった複数の距離を示す。具体的には、グリッドフィッティングの対象となった複数の距離の幅は、距離Y1〜距離Y5である。
「距離」は、グリッドフィッティング処理した後の基準点間のY軸方向の距離の幅を示す。例えば、距離Y1の距離の幅は「5.00」である。
「量子化後の距離」は、「距離」に示された値を第2の方法で量子化することによって生成された距離の幅を示す。例えば、距離Y1を第2の方法で量子化することによって生成された距離の幅は、「5」である。なお、第2の方法で量子化することについての詳細は、後述される。
「第1誤差」は、「量子化後の距離」で示された値から「距離」で示された値への変化量を示す。例えば、距離Y2を対象とした場合、「量子化後の距離」で示された値から「距離」で示された値への変化量は、「0.00(即ち、2−2.00)」である。
「同一距離フラグ」は、複数の距離の幅のうち、少なくとも1つの距離と、この少なくとも1つの距離と同一の大きさに調整される他の少なくとも1つの距離の幅とを示す。例えば、値「1」によって示される「同一距離フラグ」は、距離Y1〜距離Y5のうち、距離Y2と距離Y4とが同一の大きさに調整されることを示す。例えば、値「1」によって示される「同一距離フラグ」は、距離Y1〜距離Y5のうち、距離Y2と、距離Y4とが同一の大きさに調整されることを示す。例えば、「×」によって示される「同一距離フラグ」は、距離Y1〜距離Y5のうち、距離Y1、距離Y3および距離Y5のそれぞれと同一の大きさに調整される距離の幅がないことを示す。「同一距離フラグ」によれば、複数の距離の幅のうち、少なくとも1つの距離の幅と、この少なくとも1つの距離の幅に等しいと規定された他の少なくとも1つの距離の幅とを示すことができる。
「同一距離処理後の距離」は、量子化後の距離の幅を同一距離処理することによって生成された距離の幅を示す。例えば、距離Y2および距離Y4を対象とした場合、同一距離処理後の距離の幅のそれぞれは、2である。例えば、距離Y1、距離Y3および距離Y5には、同一距離フラグ「×」が付されているため、距離Y1、距離Y3および距離Y5を対象とした同一距離処理はなされない。従って、距離Y1、距離Y3および距離Y5を対象とした同一距離処理後の距離の幅は、同一距離処理前の距離の幅と不変である。なお、同一距離処理の詳細は、後述される。
「第2誤差」は、「同一距離処理後の距離」で示された値から「距離」で示された値への変化量を示す。例えば、距離Y2を対象とした場合、「同一距離処理後の距離」で示された値から「距離」で示された値への変化量は、「0.00(即ち、2−2.00)」である。
図13は、図7に示された基準点間データをグリッドフィッティング処理した後の基準点間データを示す。
図13(a)は、X軸方向の基準点間データ(図7(a)参照)をグリッドフィッティング処理した後の基準点間データを示す。
「X軸方向」は、グリッドフィッティングの対象となった複数の距離の幅を示す。具体的には、グリッドフィッティングの対象となった複数の距離の幅は、距離X1〜距離X11である。
「距離」は、グリッドフィッティング処理した後の基準点間のX軸方向の距離の幅を示す。例えば、距離X1の距離の幅は「1.00」である。
「量子化後の距離」は、「距離」に示された値を第2の方法で量子化することによって生成された距離の幅を示す。例えば、距離X1を第2の方法で量子化することによって生成された距離の幅は、「1」である。なお、第2の方法で量子化することについての詳細は、後述される。
「第1誤差」は、「量子化後の距離」で示された値から「距離」で示された値への変化量を示す。例えば、距離X2を対象とした場合、「量子化後の距離」で示された値から「距離」で示された値への変化量は、「−0.44(即ち、0−0.44)」である。
「同一距離フラグ」は、上述のように、複数の距離の幅のうち、少なくとも1つの距離と、この少なくとも1つの距離と同一の大きさに調整される他の少なくとも1つの距離の幅とを示す。例えば、値「1」によって示される「同一距離フラグ」は、距離X1〜距離X11のうち、距離X1、距離X3、距離X5、距離X7、距離X9および距離X11が同一の大きさに調整されることを示す。例えば、値「2」によって示される「同一距離フラグ」は、距離X1〜距離X11のうち、距離X2および距離X10が同一の大きさに調整されることを示す。例えば、値「3」によって示される「同一距離フラグ」は、距離X1〜距離X11のうち、距離X4および距離X8が同一の大きさに調整されることを示す。例えば、値「×」によって示される「同一距離フラグ」が付された距離X6は、距離X1〜距離X11のうち、同一の大きさに調整される距離の幅がないことを示す。「同一距離フラグ」によれば、複数の距離の幅のうち、少なくとも1つの距離の幅と、この少なくとも1つの距離の幅に等しいと規定された他の少なくとも1つの距離の幅とを示すことができる。
「同一距離処理後の距離」は、量子化後の距離の幅を同一距離処理することによって生成された距離の幅を示す。例えば、距離X1、距離X3、距離X5、距離X7、距離X9および距離X11を対象とした場合、同一距離処理後の距離の幅のそれぞれは、「1」である。例えば、距離X2および距離X10を対象とした場合、同一距離処理後の距離の幅のそれぞれは、「0」である。例えば、距離X4および距離X8を対象とした場合、同一距離処理後の距離の幅のそれぞれは、「3」である。例えば、距離X6は、距離X1〜距離X11のうち、同一の大きさに調整される距離がない。従って、距離X6を対象とした場合、同一距離処理後の距離の幅は、同一距離処理前の距離の幅と変わらず、「2」である。
「第2誤差」は、「同一距離処理後の距離」で示された値から「距離」で示された値への変化量を示す。例えば、距離Y2を対象とした場合、「同一距離処理後の距離」で示された値から「距離」で示された値への変化量は、「−0.44(即ち、0−0.44)」である。
図13(b)は、Y軸方向の基準点間データ(図7(b)参照)をグリッドフィッティング処理した後の基準点間データを示す。
「Y軸方向」は、グリッドフィッティングの対象となった複数の距離の幅を示す。具体的には、グリッドフィッティングの対象となった複数の距離の幅は、距離Y1〜距離Y11である。
「距離」は、グリッドフィッティング処理した後の基準点間のY軸方向の距離の幅を示す。例えば、距離Y1の距離の幅は「1.00」である。
「量子化後の距離」は、「距離」に示された値を第2の方法で量子化することによって生成された距離の幅を示す。例えば、距離Y1を第2の方法で量子化することによって生成された距離の幅は、「1」である。
「第1誤差」は、「量子化後の距離」で示された値から「距離」で示された値への変化量を示す。例えば、距離Y2を対象とした場合、「量子化後の距離」で示された値から「距離」で示された値への変化量は、「0.44(即ち、3−2.56)」である。
「同一距離フラグ」は、上述のように、複数の距離の幅のうち、少なくとも1つの距離と、この少なくとも1つの距離と同一の大きさに調整される他の少なくとも1つの距離の幅とを示す。例えば、値「1」によって示される「同一距離フラグ」は、距離Y1〜距離Y11のうち、距離Y1、距離Y3、距離Y5、距離Y7、距離Y9および距離Y11が同一の大きさに調整されることを示す。例えば、値「2」によって示される「同一距離フラグ」は、距離Y1〜距離Y11のうち、距離Y2および距離Y4が同一の大きさに調整されることを示す。例えば、値「3」によって示される「同一距離フラグ」は、距離Y1〜距離Y11のうち、距離Y8および距離Y10が同一の大きさに調整されることを示す。例えば、値「×」によって示される「同一距離フラグ」が付された距離Y6は、距離Y1〜距離Y11のうち、同一の大きさに調整される距離の幅がないことを示す。「同一距離フラグ」によれば、複数の距離の幅のうち、少なくとも1つの距離の幅と、この少なくとも1つの距離の幅に等しいと規定された他の少なくとも1つの距離の幅とを示すことができる。
「同一距離処理後の距離」は、量子化後の距離の幅を同一距離処理することによって生成された距離の幅を示す。例えば、距離Y1〜距離Y11のうち、距離Y1、距離Y3、距離Y5、距離Y7、距離Y9および距離Y11を対象とした場合、同一距離処理後の距離の幅のそれぞれは、「1」である。例えば、距離Y1〜距離Y11のうち、距離Y2および距離Y4を対象とした場合、同一距離処理後の距離の幅のそれぞれは、「3」である。例えば、距離Y1〜距離Y11のうち、距離Y8および距離Y10を対象とした場合、同一距離処理後の距離の幅のそれぞれは、「2」である。距離Y6には、同一距離フラグ「×」が付されているため、距離Y6を対象とした同一距離処理はなされない。従って、距離Y6を対象とした同一距離処理後の距離の幅は、同一距離処理前の距離の幅と不変である。
「第2誤差」は、「同一距離処理後の距離」で示された値から「距離」で示された値への変化量を示す。例えば、距離Y2を対象とした場合、「同一距離処理後の距離」で示された値から「距離」で示された値への変化量は、「0.44(即ち、3−2.56)」である。
「調整1回後の距離」は、「量子化後の距離」のうち、「同一距離フラグ」の所定の値が付されたものの距離の幅を狭めた結果を示す。例えば、「同一距離フラグ」の値「2」が付された距離Y2と距離Y4とに対応する「量子化後の距離」の値「3」から「調整1回後の距離」の値「2」に狭められている。なお、量子化された距離の幅を狭める処理の詳細は、後述される。
「第3誤差」は、「調整1回後の距離」で示された値から「距離」で示された値への変化量を示す。例えば、距離Y2を対象とした場合、「調整1回後の距離」で示された値から「距離」で示された値への変化量は、「−0.56(即ち、2−2.56)」である。
「調整済みフラグ」は、量子化された距離の幅を変更する処理によって長さが調整された対象(距離)に対して付される。例えば、距離Y2と距離Y4とに対応する「量子化後の距離」が調整されたため、距離Y2と距離Y4とに対して、値「1」が付されている。
「調整2回後の距離」は、「量子化後の距離」のうち、「同一距離フラグ」の所定の値が付されたものの距離の幅を広げた結果を示す。例えば、「同一距離フラグ」の値「×」が付された距離Y6に対応する「量子化後の距離」の値「1」から「調整2回後の距離」の値「2」に広げられている。なお、量子化された距離の幅を広げる処理の詳細は、後述される。
「第4誤差」は、「調整2回後の距離」で示された値から「距離」で示された値への変化量を示す。例えば、距離Y6を対象とした場合、「調整2回後の距離」で示された値から「距離」で示された値への変化量は、「0.56(即ち、2−1.44)」である。
「調整済みフラグ」は、量子化された距離の幅を変更する処理によって長さが調整された対象(距離)に対して付される。例えば、距離Y6に対応する「量子化後の距離」が距離Y2および距離Y4に対応する「量子化後の距離」に加えて調整されたため、距離Y2および距離Y4に加えて、Y6に対して値「1」が付されている。
以下、図11〜図13を参照してグリッドフィッティング処理手順の詳細をステップごとに説明する。
始めに、図11(a)を参照して、ステップS301〜ステップS310およびステップS330を説明する。
ステップS301:CPU121は、スケーリングによって小数第2位まで求められた複数の基準点間の距離の幅を計算する(図12および図13の「距離」参照)。
ステップS302:CPU121は、スケーリングによって小数第2位まで求められた複数の基準点間の距離の幅に基づいて、目標の距離の幅を示す目標値を求める。
具体的には、CPU121は、スケーリングによって小数第2位まで求められた複数の基準点間の距離のうち、最大のX座標値から最小のX座標値を引いた値を求め、さらに、この値を四捨五入で量子化することによって、X軸方向の目標の距離の幅を示す目標値を求める。CPU121は、スケーリングによって小数第2位まで求められた複数の基準点間の距離のうち、最大のY座標値から最小のY座標値を引いた値を求め、さらに、この値を四捨五入で量子化することによって、Y軸方向の目標の距離の幅を示す目標値を求める。
なお、CPU121は、スケーリングによって小数第2位まで求められた複数の基準点間の距離の幅すべてを加算して、求められた値を四捨五入で量子化することによって、X軸方向の目標の距離の幅を示す目標値を求めることがあり得る。さらに、CPU121は、スケーリングによって小数第2位まで求められた複数の基準点間の距離の幅すべてを加算して、求められた値を四捨五入で量子化することによって、Y軸方向の目標の距離の幅を示す目標値を求めることがあり得る。
四捨五入によって量子化された合計を生成することにより、文字の大きさの統一を図ることが出来る。
なお、量子化する方法として、四捨五入を利用したが、量子化する方法は、四捨五入に限らない。文字を出来るだけ大きく見せる場合は、量子化する方法として、切り上げを利用することがあり得る。文字を出来るだけ小さく見せる場合は、量子化する方法として、切り捨てを利用することがあり得る。量子化する際に所望の閾値を利用することがあり得る。
さらに、目標値は、スケーリングされた複数の基準点間の距離の幅の合計を量子化することによって求められることに限定されない。ユーザは、所望の値を目標値として文字表示装置100に入力することがあり得る。
このように、ステップS302を実行することによって、スケーリングによって小数第2位まで求められた複数の基準点に基づいて求められた値を第1の方法で量子化し、目標値を定めることによって、後述するように、調整すべき複数の値を得ることが出来る。
ステップS303:CPU121は、スケーリングされた複数の基準点間の距離の幅のそれぞれを四捨五入で量子化する。図12および図13に示される例では、スケーリングされた複数の基準点間の距離の幅は、「距離」に示され、量子化された複数の基準点間の距離の幅は、「量子化後の距離」に示される。
なお、量子化は、距離フラグを考慮して行われることがあり得る。距離フラグは、複数の基準点間の距離の幅として最低限必要な距離の幅を示す。例えば、スケーリングされた2つの基準点の間の距離の幅が「2.4」の場合、距離フラグがなければ、四捨五入で量子化された距離の幅は「2」となる。距離フラグが「1」ならば、四捨五入で量子化された距離の幅は「2」となる。距離フラグが「2」ならば、四捨五入で量子化された距離の幅は「2」となる。しかし、距離フラグが「3」ならば、距離フラグを考慮することで、量子化された距離の幅を「3」とする。
距離の幅を量子化する方法として、四捨五入を利用したが、距離の幅を量子化する方法は、四捨五入に限らない。距離の幅を量子化する方法として、切り上げを利用してもよいし、切り捨てを利用してもよい。または距離の幅を量子化する方法として所望の閾値を利用してもよい。
ステップS302で行った目標値を算出する第1の方法における量子化方法とステップS303で求める基準点間の距離の幅を量子化する第2の方法における量子化方法とは同じでもよいし、異なっていてもよい。例えば、量子化する第1の方法として、四捨五入を利用し、量子化する第2の方法として、四捨五入を利用してもよい。文字を出来るだけ大きく見せる場合は、量子化する第1の方法として、切り上げを利用し、量子化する第2の方法として、四捨五入を利用してもよい。
ステップS304:CPU121は、予め決められた同一距離フラグを参照し、同一の値を有する同一距離フラグが付された複数の距離の幅を同じ値に調整する。調整後の距離の幅は、図12および図13に示される例では、「同一距離処理後の距離」によって示される。
図12および図13を参照して説明したように、第2の方法で量子化された距離の中には、少なくとも1つの距離と、前記少なくとも1つの距離の幅とは同じ幅を有するとみなされる他の少なくとも1つの距離とが存在する。同じ幅を有するとみなされる距離とは、「同一距離フラグ」の同じ値によって示されている距離である。
なお、少なくとも1つの距離と他の少なくとも1つの距離とが同一の大きさに調整されるとは、少なくとも1つの距離の幅と他の少なくとも1つの距離の幅とが等しいことでありえる。例えば、距離X1、距離X3、距離X5に対応する「量子化後の距離」はそれぞれ値「2」であり、等しい(図12(a)参照)。
ステップS305:CPU121は、同一距離処理後の距離の幅の合計が第1の方法で量子化された合計(目標値)と同じであるか否かを判定する。
同じである(Yes)と判定された場合には、改めて複数の基準点の位置を調整する必要は無いので、処理は、ステップS327に進む。同じでない(No)と判定された場合には、処理は、S306に進む。同じでない(No)と判定された場合とは、同一距離処理後の距離の幅の合計が第1の方法で量子化された合計より大きい場合、または同一距離処理後の距離の幅の合計が第1の方法で量子化された合計より小さい場合である。
ステップS306:CPU121は、同一距離処理後の距離の幅の合計が第1の方法で量子化された合計(目標値)より小さいか否かを判定する。
小さくない(No)と判定された場合には、処理は、ステップS307に進む。小さい(Yes)と判定された場合には、処理は、ステップS311に進む(図11(c)参照)。
ステップS307:CPU121は、複数の距離に対応する距離フラグの合計が第1の方法で量子化された合計(目標値)より大きいか否かを判定する。
大きい(Yes)と判定された場合には、現状ではこれ以上小さな文字を出力するように基準点間を調整をする事は出来ないとして、処理は、ステップS308に進む。大きくない(No)と判定された場合には、処理は、ステップS319に進む(図11(c)参照)。
距離フラグの合計が目標値より大きい場合には、これ以上複数の基準点間を縮めると文字を表示する際に、文字が潰れて視認性が悪くなるので、処理は、複数の基準点間を縮める調整を断念し、他の方法として省略フラグの有無の確認を行うことで、さらなる基準点間の調整の可能性を探る。省略フラグは、特定軸(X軸、Y軸)に沿った基準点間をグリッドフィッティングにより調整する際に、調整する距離の幅を「0」にできるか否かを示す。さらに、省略フラグの値は、調整する距離の幅を「0」にできる場合には、調整する距離の幅を「0」にする順番を示す。
なお、距離フラグは、特定の軸(X軸およびY軸)に沿った基準点間の距離の幅として最低限必要な距離の幅を有するか否かを示す。さらに、距離フラグは、基準点間の距離の幅として最低限必要な距離の幅がいくらであるかを示す。距離フラグは、スケーリングされた文字を表示する際に視認性を確保するための情報であって、文字が潰れない最小の距離の幅を示す。距離フラグは、スケーリング前の文字情報に予め付与されている(図4および図7参照)。
ステップS308:CPU121は、省略フラグが立っているか否かを判定する。なお、本発明の基準点間の調整は一度のみ可能としているので、既に調整済みの基準点間に対しては、さらに基準点間の調整は行わず省略フラグの確認は不要である。
未だ調整されていない基準点間に省略フラグが立っている場合には、該当する基準点間の距離の幅を「0」として、見かけ上基準点間が無いものとして扱う必要がある。したがって、省略フラグが立っている(Yes)と判定された場合には、処理は、ステップS309に進む。
未だ調整されていない基準点間に省略フラグが立っていない場合には、省略する基準点間がなく、量子化された距離の幅の合計を目標値より小さく調整することができない。したがって、省略フラグが立っていない(No)と判定された場合には、処理は、ステップS330に進む。
ステップS330:CPU121は、スケーリング後の複数のストロークの座標データを四捨五入で量子化することによって、グリッドフィッティング処理を終了する。
ステップS309:CPU121は、未だ基準点間が調整されていない基準点間の距離に対応する複数の省略フラグのうち、順位の高い省略フラグから順に省略フラグの距離の幅を「0」にする。ここで、省略フラグの距離の幅を「0」にするとは、量子化後の基準点間の値を「0」にすることであり、省略フラグを操作することではない。省略フラグの距離の幅を「0」にすることによって、省略可能と判定された基準点間を見た目上「0」に調整し得る。
なお、ステップS309を実行することによって、基準点間の距離の幅を「0」にしたので、距離フラグの値も「0」にする。したがって、ステップS310を実行し、次にステップS305およびステップS306を実行し、次にステップS307を実行する場合、距離フラグの合計値が目標値より小さくなる。その結果、ステップS309を実行することによって、処理は、ステップS307の次にステップS319に進むことが可能になる(図11(b)参照)。
ステップS310:CPU121は、省略処理(ステップS309)によって調整されたものとして、距離フラグの値が「0」にされた基準点間の距離に調整済みフラグを立てる。処理は、再度ステップS305に進む。
省略フラグには、省略する順番があるために、本来順番を守りながらの省略処理を行う必要があるが、既に調整済みフラグが立っている場合にはその基準点間の省略処理を省略するため、順番どおりに省略処理が行われるわけではない。しかし、ステップS305、ステップS306およびステップS307によって実行される判定によって、量子化された基準点間の距離の幅の合計より距離フラグの値の合計の方が大きい場合にこの省略処理を行うので、例外を省き、省略フラグの省略処理は省略フラグの順番どおりに行われる。
次に、図11(b)を参照して、ステップS319〜ステップS326を説明する。CPU121は、第2の方法で得た複数の基準点間を狭めることによって、複数の基準点の距離の合計値が第1の方法で得た目標値を超えないように複数の基準点間を調整するために、ステップS319〜ステップS326を実行する。
ステップS319:CPU121は、調整済みフラグの立っていない基準点間の距離の中から、量子化誤差の切り上げとなる基準点間の距離があるか否かを判定して、量子化誤差の切り上げとなる基準点間の距離がある場合には最大切り上げとなる基準点間を抽出する。
ある(Yes)と判定された場合には、処理は、ステップS320に進む。基準点間を狭める場合に、量子化誤差が大きく変化している基準点間から狭めることによって、文字の表示品位を最善に調整できる。したがって、最大きり上げ幅の基準点間から調整し始める。
ない(No)と判定された場合には、処理は、ステップ327に進む(図11(a)参照)。調整済みフラグの立っていない基準点間の距離がなくなると、これ以上基準点間を調整出来ないからである。
ステップS320:CPU121は、ステップ319を実行することによって抽出した最大切り上げ幅となる基準点間と同じ基準点間の距離のグループを抽出する。複数の基準点間の距離に同一距離フラグが付与されている場合には、複数の基準点間の距離のうち同じ同一距離フラグが立っている基準点間の距離の幅をすべて調整するためである。
ステップS321:抽出された同一距離フラグのグループに含まれる複数の基準点間の距離の幅の全てが、対応する距離フラグの値より1以上であるか否かを判定する。抽出された同一距離フラグのグループに含まれる複数の基準点間の距離の幅を対応する距離フラグの値より小さく出来ないからである。
1以上である(Yes)と判定された場合には、処理は、ステップS322に進む。1以上でない(No)と判定された場合には、処理は、ステップS326に進む。
ステップS326:CPU121は、ステップS319によって抽出されたグループ以外に量子化誤差のきり上げとなる基準点間の距離があるか否かを判定して、量子化誤差のきり上げとなる基準点間の距離がある場合にはステップS320を実行することによって抽出されるだろうグループ以外の量子化誤差の最大切り上げとなる基準点間を抽出する。他の基準点間の中から調整候補を探すためである。
ある(Yes)と判定された場合には、処理は、ステップS320に進む。ない(No)と判定された場合には、処理は、ステップS308に進む(図11(a)参照)。
ステップS322:CPU121は、抽出された基準点間の量子化された距離の値を1だけ小さくする。
ステップS323:CPU121は、調整された基準点間の距離に対応して調整済みフラグを立てて、調整された基準点間を再度調整しないようにする。
ステップS324:CPU121は、抽出された基準点間の距離に同一距離フラグが設定されているか否かを判定する。設定されている(Yes)と判定された場合には、処理は、ステップS325に進む。設定されていない(No)と判定された場合には、処理は、ステップS305に進む(図11(a)参照)。
ステップS325:CPU121は、調整済みフラグが立っていない基準点間の距離の中に同じ同一距離フラグを有する基準点間の距離があるか否かを判定する。
ある(Yes)と判定された場合には、処理は、ステップS322に進む。ない(No)と判定された場合には、処理は、ステップS305に進む。
CPU121は、ステップS322〜ステップS325を繰り返すことによって、同一距離フラグのある基準点間の距離の幅が、全て1だけ狭められるように処理する。そして、この処理が終えれば、次の基準点間の調整が必要か否かの判定のために、処理は、ステップS305に進む。
次に、図11(c)を参照して、ステップS311〜ステップS318を説明する。CPU121は、ステップS311〜ステップS318を実行することによって、第2の方法で得た各基準点間を広げながら、各基準点の距離の幅の合計値が第1の方法で得た目標値を超えることなく、さらに、最小の範囲に近づくように複数の基準点間を調整する。
ステップS311:CPU121は、調整済みフラグの立っていない基準点間の距離の中から、量子化誤差の切り下げとなる基準点間の距離があるか否かを判定して、量子化誤差の切り下げとなる基準点間の距離がある場合には、最大切り下げとなる基準点間を抽出する。
ある(Yes)と判定された場合には、処理は、ステップS312に進む。基準点間を広げる場合に、量子化誤差が大きく変化している基準点間から広げることによって、文字の表示品位を最善に調整できる。したがって、最大きり下げ幅の基準点間から調整を始める。
ない(No)と判定された場合には、処理は、ステップ327に進む(図11(a)参照)。調整済みフラグの立っていない基準点間の距離がなくなると、これ以上基準点間を調整出来ないからである。
ステップS312:CPU121は、ステップS311を実行することによって抽出した最大きり下げ幅となる基準点間と同じ基準点間の距離のグループを抽出する。複数の基準点間の距離に同一距離フラグが付与されている場合には、複数の基準点間の距離のうち同じ同一距離フラグが立っている基準点間の距離の幅をすべて調整するためである。
ステップS313:抽出された同一距離フラグのグループに含まれる複数の基準点間の距離の数が、広げる予定の幅より大きいか否かを判定する。同じ値の同一距離フラグが立っている複数の基準点間の距離のそれぞれを同時に1だけ増加する必要があり、同じ値の同一距離フラグを持つ基準点間の距離の数のみ、基準点間の調整で幅が大きくなる可能性があるからである。
大きい(Yes)と判定された場合には、処理は、ステップS318に進む。大きくない(No)と判定された場合には、処理は、ステップS314に進む。
ステップS318:CPU121は、ステップS312によって抽出されたグループ以外に量子化誤差のきり下げとなる基準点間の距離の幅があるか否かを判定して、量子化誤差のきり下げとなる基準点間の距離の幅がある場合にはステップS312を実行することによって抽出されるだろうグループ以外の量子化誤差の最大きり下げとなる基準点間を抽出する。他の基準点間の中から調整候補を探すためである。
ある(Yes)と判定された場合には、処理は、ステップS312に進む。ない(No)と判定された場合には、処理は、ステップS327に進む(図11(a)参照)。
ステップS314:CPU121は、抽出された基準点間の量子化された距離の幅の値を1だけ大きくする。
ステップS315:CPU121は、調整された基準点間の距離に対応して調整済みフラグを立てて、調整された基準点間を再度調整しないようにする。
ステップS316:CPU121は、抽出された基準点間の距離に同一距離フラグが設定されているか否かを判定する。設定されている(Yes)と判定された場合には、処理は、ステップS317に進む。設定されていない(No)と判定された場合には、処理は、ステップS305に進む(図11(a)参照)。
ステップS317:CPU121は、調整済みフラグが立っていない基準点間の距離の中に同じ同一距離フラグを有する基準点間の距離があるか否かを判定する。
ある(Yes)と判定された場合には、処理は、ステップS314に進む。ない(No)と判定された場合には、処理は、ステップS305に進む。
CPU121は、ステップS314〜ステップS317を繰り返すことによって、同一距離フラグのある基準点間の距離の幅が、全て1だけ広げられるように処理する。そして、この処理が終えれば、次の基準点間の調整が必要か否かの判定のために、処理は、ステップS305に進む。
図11(a)を参照して、ステップS327〜ステップS329を説明する。
ステップS327:CPU121は、文字を構成するブロックの最大座標値と最小座標値とを決める。特定の軸に沿った文字の幅をスケーリングした後にどの座標を基準点にするかを決めるためである。
具体的には、スケーリングされた基準点の最大座標値を四捨五入した結果生じた量子化誤差とスケーリングされた基準点の最小座標値を四捨五入した結果生じた量子化誤差とを比較し、量子化誤差が小さいほうの座標値に基づいて、ブロックの座標値を決定する。文字を構成するブロックの大きさは第1の方法で量子化された合計である。
例えば、スケーリングされた基準点の最大座標値を四捨五入した結果生じた量子化誤差がスケーリングされた基準点の最小座標値を四捨五入した結果生じた量子化誤差より小さい場合は、スケーリングされた基準点の最大座標値がブロックの最大座標値である。ブロックの最小座標値は、ブロックの最大座標値から、文字を構成するブロックの大きさである第1の方法で量子化された合計を引いた値である。
例えば、スケーリングされた基準点の最小座標値を四捨五入した結果生じた量子化誤差がスケーリングされた基準点の最大座標値を四捨五入した結果生じた量子化誤差より小さい場合は、スケーリングされた基準点の最小座標値がブロックの最小座標値である。ブロックの最大座標値は、ブロックの最小座標値に、文字を構成するブロックの大きさである第1の方法で量子化された合計を足した値である。
従って、スケーリングされた基準点の最大座標値を四捨五入した結果生じた量子化誤差がスケーリングされた基準点の最小座標値を四捨五入した結果生じた量子化誤差より小さい場合は、量子化された最大座標値が、表示される文字の基準座標値である。さらに、スケーリングされた基準点の最小座標値を四捨五入した結果生じた量子化誤差がスケーリングされた基準点の最大座標値を四捨五入した結果生じた量子化誤差より小さい場合は、量子化された最小座標値が、表示される文字の基準座標値である。
ステップS328:CPU121は、文字を構成するブロックの最大座標値と文字を構成するブロックの最小座標値と第2の方法で量子化された距離とに基づいて、グリッドフィティング処理後の基準点の座標値を決める。
ステップS329:CPU121は、文字を構成する複数のストロークの基準点以外の座標を決定する。
たとえば、距離a/距離bの値が距離A/距離Bの値に最も近くなるように、グリッドフィッティング処理後の点が決定される。ここで、決定される所定の点に対応し、スケーリングされる前の文字上の点は、スケーリングされる前の基準点のうち、互いに隣接する第1の基準点と第2の基準点との間にある。
ここで、距離Aは、スケーリングされる前の文字上の点と第1の基準点との間の距離である。距離Bは、スケーリングされる前の文字上の点と第2の基準点との間の距離である。距離aは、決定される所定の点とS328で決定されたグリッドフィッティング後の第1の基準点との間の距離である。距離bは、決定される所定の点とS328で決定されたグリッドフィッティング後の第2の基準点との間の距離である。
以下、図11および図12(a)を参照して、グリッドフィッティング処理手順の具体例を説明する。
ステップS301:CPU121は、スケーリングによって小数第2位まで求められた複数の基準点間の距離の幅を計算する。距離X1〜距離X5の幅は、「2.00」、「3.44」、「1.94」、「3.50」および「2.00」である。
ステップS302:CPU121は、距離X1〜距離X5の幅(「2.00」、「3.44」、「1.94」、「3.50」および「2.00」)を加算し、加算値「12.88」を四捨五入で量子化することによって、目標値「13」を求める。
ステップS303:CPU121は、スケーリングされた複数の基準点間の距離の幅のそれぞれを四捨五入で量子化する。距離X1〜距離X5に対応して距離フラグ「1」が割り当てられている(図4(a)参照)ことを考慮して、量子化後の距離の幅は、「2」、「3」、「2」、「4」および「2」である。
ステップS304:CPU121は、距離X1、距離X3および距離X5に付された同一距離フラグと、距離X2および距離X4に付された同一距離フラグとを参照して、距離X1、距離X3および距離X5の幅を「2」に、距離X2および距離X4の幅を「3」に調整する。
ステップS305:CPU121は、同一距離処理後の距離の幅の合計「12」が目標値「13」と同じであるか否かを判定する。同じでない(No)と判定され、処理は、S306に進む。
ステップS306:CPU121は、同一距離処理後の距離の幅の合計「12」が目標値「13」より小さいか否かを判定する。小さい(Yes)と判定され、処理は、ステップS311に進む。
ステップS311:CPU121は、調整済みフラグの立っていない基準点間の距離(距離X1〜距離X5)の中に、量子化誤差の最大切り下げの基準点間の距離(第2誤差「−0.50」を有する距離X4)があるか否かを判定して、最大切り下げとなる基準点間(距離X4)を抽出する。ここで、(Yes)と判定し、処理は、ステップS312に進む。
ステップS312:CPU121は、調整する基準点間の距離のグループ(距離X2と距離X4)を抽出する。
ステップS313:抽出された同一距離フラグのグループに含まれる複数の基準点間の距離の数「2」が、広げる予定の幅「1」より大きいか否かを判定する。大きい(Yes)と判定され、処理は、ステップS318に進む。
ステップS318:CPU121は、ステップS312によって抽出されたグループ以外に量子化誤差の最大きり下げとなる基準点間の距離(第2誤差「0.06」を有する距離X3)があるか否かを判定する。ここで、(Yes)と判定され、処理は、ステップS312に進む。
ステップS312:CPU121は、調整する基準点間の距離のグループ(距離X1、距離X3および距離X5)を抽出する。
ステップS313:抽出された同一距離フラグのグループに含まれる複数の基準点間の距離の数「3」が、広げる予定の幅「1」より大きいか否かを判定する。大きい(No)と判定され、処理は、ステップS318に進む。
ステップS318:ステップS312によって抽出されたグループ以外に量子化誤差の最大きり下げとなる基準点間の距離があるか否かを判定する。ない(No)と判定され、処理は、ステップS327に進む(図11(a)参照)。
以降、CPU121は、ステップS327〜ステップ329を実行し、グリッドフィッティング処理を終了する。
以下、図11および図12(b)を参照して、グリッドフィッティング処理手順の他の具体例を説明する。
ステップS301:CPU121は、スケーリングによって小数第2位まで求められた複数の基準点間の距離の幅を計算する。距離Y1〜距離Y5の幅は、「5.00」、「2.00」、「2.00」、「2.00」および「3.00」である。
ステップS302:CPU121は、距離Y1〜距離Y5の幅(「5.00」、「2.00」、「2.00」、「2.00」および「3.00」)を加算し、加算値「14.00」を四捨五入で量子化することによって、目標値「14」を求める。
ステップS303:CPU121は、スケーリングされた複数の基準点間の距離の幅のそれぞれを四捨五入で量子化する。距離Y1〜距離Y5に対応して距離フラグ「1」が割り当てられている(図4(b)参照)ことを考慮して、量子化後の距離の幅は、「5」、「2」、「2」、「2」および「3」である。
ステップS304:CPU121は、距離Y2および距離Y4に付された同一距離フラグを参照して、距離Y2および距離Y4の幅を「2」に調整する。
ステップS305:CPU121は、同一距離処理後の距離の幅の合計「14」が目標値「14」と同じであるか否かを判定する。同じである(Yes)と判定され、処理は、S327に進む。
以降、CPU121は、ステップS327〜ステップ329を実行し、グリッドフィッティング処理を終了する。
以下、図11および図13(a)を参照して、グリッドフィッティング処理手順の他の具体例を説明する。
ステップS301:CPU121は、スケーリングによって小数第2位まで求められた複数の基準点間の距離の幅を計算する。距離X1〜距離X11の幅は、「1.00」、「0.44」、「1.00」、「2.81」、「1.00」、「1.81」、「1.00」、「2.88」、「1.00」、「0.50」、および「1.00」である。
ステップS302:CPU121は、距離X1〜距離X11の幅を加算し、加算値「14.44」を四捨五入で量子化することによって、目標値「14」を求める。
ステップS303:CPU121は、スケーリングされた複数の基準点間の距離の幅のそれぞれを四捨五入で量子化する。距離X1〜距離X11に対応して距離フラグ「0」または「1」が割り当てられている(図7(a)参照)ことを考慮して、量子化後の距離の幅は、「1」、「0」、「1」、「3」、「1」、「2」、「1」、「3」、「1」、「1」、および「1」である。
ステップS304:CPU121は、距離X1、距離X3、距離X5、距離X7、距離X9および距離X11に付された同一距離フラグを参照して、距離X1、距離X3、距離X5、距離X7、距離X9および距離X11の幅を「1」に調整する。さらに、CPU121は、距離X2および距離X10に付された同一距離フラグを参照して、距離X2および距離X10の幅を「0」に調整する。さらにCPU121は、距離X4および距離X8に付された同一距離フラグを参照して、距離X4および距離X8の幅を「3」に調整する。
ステップS305:CPU121は、同一距離処理後の距離の幅の合計「14」が目標値「14」と同じであるか否かを判定する。同じである(Yes)と判定され、処理は、S327に進む。
以降、CPU121は、ステップS327〜ステップ329を実行し、グリッドフィッティング処理を終了する。
以下、図11および図13(b)を参照して、グリッドフィッティング処理手順の他の具体例を説明する。
ステップS301:CPU121は、スケーリングによって小数第2位まで求められた複数の基準点間の距離の幅を計算する。距離Y1〜距離Y11の幅は、「1.00」、「2.56」、「1.00」、「2.38」、「1.00」、「1.44」、「1.00」、「1.81」、「1.00」、「1.63」および「1.00」である。
ステップS302:CPU121は、距離Y1〜距離Y11の幅を加算し、加算値「15.81」を四捨五入で量子化することによって、目標値「16」を求める。
ステップS303:CPU121は、スケーリングされた複数の基準点間の距離の幅のそれぞれを四捨五入で量子化する。距離Y1〜距離Y11に対応して距離フラグ「1」が割り当てられている(図7(b)参照)ことを考慮して、量子化後の距離の幅は、「1」、「3」、「1」、「2」、「1」、「1」、「1」、「2」、「1」、「2」および「1」である。
ステップS304:CPU121は、距離Y1、距離Y3、距離Y5、距離Y7、距離Y9および距離Y11に付された同一距離フラグを参照して、距離Y1、距離Y3、距離Y5、距離Y7、距離Y9および距離Y11の幅を「1」に調整する。さらに、CPU121は、距離Y2および距離Y4に付された同一距離フラグを参照して、距離Y2および距離Y4の幅を「3」に調整する。さらにCPU121は、距離Y8および距離Y10に付された同一距離フラグを参照して、距離Y8および距離Y10の幅を「2」に調整する。
ステップS305:CPU121は、同一距離処理後の距離の幅の合計「17」が目標値「16」と同じであるか否かを判定する。同じでない(No)と判定され、処理は、S306に進む。
ステップS306:CPU121は、同一距離処理後の距離の幅の合計「17」が目標値「16」より小さいか否かを判定する。小さくない(No)と判定された場合には、処理は、ステップS307に進む。
ステップS307:CPU121は、距離Y1〜距離Y11に対応する距離フラグ「1」の合計「11」が目標値「16」より大きいか否かを判定する(図7(b)参照)。
大きくない(No)と判定された場合には、処理は、ステップS319に進む(図11(c)参照)。
ステップS319:CPU121は、調整済みフラグの立っていない基準点間の距離(距離Y1〜距離Y11)の中に、量子化誤差の最大切り上げの基準点間の距離(第2誤差「0.63」を有する距離Y4)があるか否かを判定して、最大切り上げとなる基準点間(距離Y4)を抽出する。ここで、(Yes)と判定され、処理は、ステップS320に進む。
ステップS320:CPU121は、調整する基準点間の距離のグループ(距離Y2と距離Y4)を抽出する。
ステップS321:抽出された同一距離フラグのグループに含まれる複数の基準点間の距離(距離Y2と距離Y4)の幅(「3」)の全てが、距離Y1〜距離Y11に対応する距離フラグ「1」より1以上であるか否かを判定する(図7(b)参照)。1以上である(Yes)と判定され、処理は、ステップS322に進む。
ステップS322:CPU121は、抽出された基準点間の量子化された距離(距離Y2と距離Y4)の幅の値を1だけ小さくする。距離Y2および距離Y4の幅は、調整によって「2」になる。
ステップS323:CPU121は、距離Y2および距離Y4に対応して調整済みフラグを立てて、距離Y2および距離Y4を再度調整しないようにする。
ステップS324:CPU121は、抽出された基準点間の距離に同一距離フラグが設定されているか否かを判定する。設定されている(Yes)と判定され、処理は、ステップS325に進む。
ステップS325:CPU121は、調整済みフラグが立っていない基準点間の距離の中に同じ同一距離フラグを有する基準点間の距離があるか否かを判定する。ない(No)と判定され、処理は、ステップS305に進む。
ステップS305:CPU121は、調整1回後の距離の幅の合計「15」が目標値「16」と同じであるか否かを判定する。同じでない(No)と判定され、処理は、S306に進む。
ステップS306:CPU121は、調整1回後の距離の幅の合計「15」が目標値「16」より小さいか否かを判定する。小さい(Yes)と判定され、処理は、ステップS311に進む。
ステップS311:CPU121は、調整済みフラグの立っていない基準点間の距離(距離Y1、距離Y3および距離Y5〜距離Y11)の中に、量子化誤差の最大切り下げの基準点間の距離(第2誤差「−0.44」を有する距離Y6)があるか否かを判定して、最大切り下げとなる基準点間(距離Y6)を抽出する。ここで、(Yes)と判定され、処理は、ステップS312に進む。
ステップS312:CPU121は、調整する基準点間の距離のグループ(距離Y6)を抽出する。
ステップS313:抽出された同一距離フラグのグループに含まれる複数の基準点間の距離の数「1」が、広げる予定の幅「1」より大きいか否かを判定する。大きくない(No)と判定され、処理は、ステップS314に進む。
ステップS314:CPU121は、抽出された基準点間の量子化された距離の幅の値を1だけ大きくする。距離Y6の幅は、調整によって「2」になる。
ステップS315:CPU121は、距離Y6に対応して調整済みフラグを立てて、距離Y6を再度調整しないようにする。
ステップS316:CPU121は、抽出された基準点間の距離に同一距離フラグが設定されているか否かを判定する。設定されていない(No)と判定され、処理は、ステップS305に進む(図11(a)参照)。
ステップS323:CPU121は、距離Y2および距離Y4に対応して調整済みフラグを立てて、距離Y2および距離Y4を再度調整しないようにする。
ステップS324:CPU121は、抽出された基準点間の距離に同一距離フラグが設定されているか否かを判定する。設定されている(Yes)と判定され、処理は、ステップS325に進む。
ステップS325:CPU121は、調整済みフラグが立っていない基準点間の距離の中に同じ同一距離フラグを有する基準点間の距離があるか否かを判定する。ない(No)と判定され、処理は、ステップS305に進む。
ステップS305:CPU121は、調整2回後の距離の幅の合計「16」が目標値「16」と同じであるか否かを判定する。同じである(Yes)と判定され、処理は、S327に進む。
以降、CPU121は、ステップS327〜ステップ329を実行し、グリッドフィッティング処理を終了する。
以上、図11〜図13を参照してグリッドフィッティング処理手順の詳細をステップごとに説明した。
図14は、文字「中」の文字データ142に含まれる座標データとこれらの座標データをスケーリングした後の座標データとスケーリング後の座標データをグリッドフィッティングした後の座標データとを示す。「グリッドフィッティング後のX座標」は、グリッドフィッティングした後の座標のうちX座標成分を示す。「グリッドフィッティング後のY座標」は、グリッドフィッティングした後の座標のうちY座標成分を示す。
スケーリングした後の点P1(8.94,15.00)はグリッドフィッティングされることによってグリッドフィッティングした後の点P1(9,15)に変更される。
図15は、文字「晶」の文字データ142に含まれる座標データとこれらの座標データをスケーリングした後の座標データとスケーリングした後の座標データをグリッドフィッティングした後の座標データとを示す。「グリッドフィッティング後のX座標」は、グリッドフィッティングした後の座標のうちX座標成分を示す。「グリッドフィッティング後のY座標」は、グリッドフィッティングした後の座標のうちY座標成分を示す。
スケーリングした後の点P1(13.69,15.88)はグリッドフィッティングされることによってグリッドフィッティングした後の点P1(14,16)に変更される。
以上、図を参照してグリッドフィッティング処理手順の詳細をステップごとに説明した。
図16は、本発明の表示処理手順によって生成された文字「中」を示す描画データを表示デバイス130に表示した例を示す。16ドット×16ドットの表示面に、線幅および線間隔が均一である文字「中」が表示される。
図17は、本発明の表示処理手順によって生成された文字「晶」を示す描画データを表示デバイス130に表示した例を示す。16ドット×16ドットの表示面に、線幅および線間隔が均一である文字「晶」が表示される。
以上、図1〜図17を参照して本発明の実施の形態を説明した。
本発明の実施の形態によって説明された例によれば、CPU121が「複数の基準点を含む文字または図形をスケーリングすることによって、スケーリングされた基準点を生成する第1生成手段」と、「前記スケーリングされた基準点のうち、最大の値を有する最大基準点と最小の値を有する最小基準点との間の距離を量子化することによって、目標値を生成する目標値生成手段」と、「前記スケーリングされた基準点の各基準点間の距離の幅を量子化することによって、量子化された距離を生成する第2生成手段」と、「前記第2生成手段で生成された距離の幅の合計が前記目標値に近づくように、量子化された各基準点間の距離の幅のうち少なくとも1つの距離の幅と他の少なくとも1つの距離の幅とが調整後に等しくなるように基準点間の距離の幅を調整する調整手段」と、「前記調整された距離に合致するように再調整された基準点に基づいて、スケーリングされた文字または図形を表示する表示手段」とに対応する。
しかし、図1〜図17に示される実施の形態は、本発明の文字表示装置の機能の一例を示したに過ぎない。上述した各手段の機能が達成される限りは、任意の構成を有する文字表示装置が本発明の範囲内に含まれ得る。
例えば、上述した各手段は、ハードウェアによって実現されてもよいし、ソフトウェアによって実現されてもよいし、ハードウェアとソフトウェアとによって実現されてもよい。
例えば、文字表示プログラム141は、文字表示装置100の出荷時に、補助記憶装置140に予め格納されていてもよい。
あるいは、文字表示装置100の出荷後に、文字表示プログラム141を補助記憶装置140に格納するようにしてもよい。例えば、ユーザがインターネット上の特定のウェブサイトから文字表示プログラム141を有料または無料でダウンロードし、そのダウンロードされたプログラムを文字表示装置100にインストールするようにしてもよい。文字表示プログラム141がフレキシブルディスク、CD−ROM、DVD−ROMなどのコンピュータ読み取り可能な記録媒体に記録されている場合には、入力装置を用いて文字表示プログラム141をコンピュータにインストールするようにしてもよい。インストールされたプログラムは、補助記憶装置140に格納される。
さらに、例えば、上述した実施の形態では、文字をスケーリングし、スケーリングされた文字を表示する場合を例にとり説明したが、本発明はこれに限定されない。文字に代えて、あるいは文字に加えて、図形をスケーリングし、スケーリングされた図形を表示する場合にも本発明を適用することができる。この場合、文字表示プログラム141に代えて、あるいは文字表示プログラム141に加えて図形表示プログラムを使用するようにし、文字データ142に代えて、あるいは文字データ142に加えて図形データを使用するようにすればよい。図形表示プログラムもまた、文字表示プログラム141と同様のステップを含み得る。文字データと同様に図形データもまた少なくとも1つの基準点を含み得る。
なお、本明細書中で用いられる「文字」は、例えば、ひらがな、カタカナ、漢字、アルファベット、絵文字および数字を含む。更に、本明細書中で用いられる「図形」は、例えば、文字の一部、模様、記号を含む。
図4および図7を参照して説明したように、同一距離フラグが割り付けられる距離は、予め決められており、基準点間データに含まれているが、同一距離フラグが割り付けられる距離が、予め決められていることに限定されない。同一距離フラグの割り付けが同一距離フラグ取得プログラム141dを実行することによって実現し得る。
図18は、本発明の同一距離フラグ取得処理手順を示す。同一距離フラグ取得処理手順は、CPU121が同一距離フラグ取得プログラム141dを実行することによって実現される。
図19は、図5に示された文字「晶」の文字データ142に含まれる基準点間データに同一距離フラグを割り付ける手順を説明するための図である。
「距離」は、基準点間のX軸方向の距離も幅を示す。この距離は、スケーリングされる前の距離である。例えば、距離X1のX軸方向の幅は「16」である。
以下、図18および図19を参照して、本発明の同一距離フラグ取得処理手順を説明する。
ステップS401:距離「i」に初期値「1」を設定し、対象となる距離の数「n」に初期値「N」を設定する。例えば、対象となる距離が距離X1〜距離X11の場合には、n=11である。
ステップS402:距離「i」に既に同一距離フラグが付されているか否かを判定する。同一距離フラグが既に割り付けられているものを対象外にするためである。付されている(Yes)と判定された場合には、処理はステップS411に進む。付されていない(No)と判定された場合には、処理はステップS403に進む。
ステップS403:距離「j」に初期値「i+1」を設定する。
ステップS404:距離jに既に同一距離フラグが付されているか否かを判定する。同一距離フラグが既に割り付けられているものを対象外にするためである。
ステップS405:距離iの幅と距離jの幅との差が所定の大きさ「α」以下か否かを判定する。所定の大きさ「α」以下である(Yes)と判定された場合には、処理は、ステップS406に進む。所定の大きさ「α」以下でない(No)と判定された場合には、処理は、ステップS407に進む。本発明の実施の形態では、α=1とする。
ステップS406:同一距離フラグを付すための候補として距離jを設定する。
ステップS407:「j」をインクリメントする(「j」に「j+1」を代入する)。
ステップS408:「j」が対象となる距離の数「N」より大きいか否かを判定する。大きい(Yes)と判定された場合には、処理はステップS409に進む。大きくない(No)と判定された場合には、処理はステップS404に進む。
ステップS409:同一距離フラグを付すための候補が既に設定されているか否かを判定する。候補が既に設定されている(Yes)と判定された場合には、処理は、ステップS410に進む。候補が設定されていない(No)と判定された場合には、処理は、ステップS411に進む。
ステップS404〜ステップS409を繰り返すことによって、i=1(距離X1が基準)の場合には、同一距離フラグを付すための候補として距離X1、距離X3、距離X5、距離X7、距離X9、距離X11が設定される。i=2(距離X2が基準)の場合には、同一距離フラグを付すための候補として距離X2、距離X10が設定される。i=4(距離X4が基準)の場合には、同一距離フラグを付すための候補として距離X4、距離X8が設定される。i=6(距離X6が基準)の場合には、同一距離フラグを付すための候補として、他に候補がないので距離X6のみが設定される。
図19を参照して説明する場合には、所定の大きさを「3」とすると、幅「7」を有する距離X2と幅「8」を有する距離X10との差が1であるため、同じ値の同一距離フラグが割り付けられる。
ステップS410:同じ値の同一距離フラグを割り付ける。値は、1から順に用いる。
距離X1、距離X3、距離X5、距離X7、距離X9、距離X11には、値「1」である同一距離フラグが割り付けられる。距離X2、距離X10には、値「2」である同一距離フラグが割り付けられる。距離X4、距離X8には、値「3」である同一距離フラグが割り付けられる。このようにして、元々は違う大きさをも含む複数の距離であっても、同じ値の同一距離フラグを割り付けることによって、同じ大きさに調整するグループとしてまとめることができる。
ステップS411:「i」をインクリメントする(「i」に「i+1」を代入する)。
ステップS412:「i」が対象となる距離の数「N」と同じか否かを判定する。同じ(Yes)と判定された場合には、処理は終了する。同じでない(No)と判定された場合には、処理はステップS402に進む。
図18および図19を参照して説明したように、本発明の同一距離フラグ取得プログラムによれば、スケーリングされた基準点間の距離のうち、距離を同じにするものを決定し、同一距離フラグを割り付けることができる。
本発明では、同一距離取得プログラムは同一距離フラグが図1に示される文字データ(142)に予め設定されていない時などに実行されるものであり、図8を参照して説明されたステップS101を実行することによってデータを読み込みの後、実行され、同一距離取得プログラムを実行することによって同一距離フラグを取得の後、ステップS102を実行することによってスケーリングが行われることで、本発明での同一距離フラグの活用を可能にする。
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。