(57)【要約】【課題】量子化によって生じる角度誤差を改善し、高品位に文字や図形を表示装置で表示するよう制御する表示制御装置を提案する。【解決手段】表示制御装置では、１つのストロークの両端の座標値を量子化し（Ｓ３０１０）、量子化前後の上記両端を結ぶ線分の傾き角度θｒ，θｑより、量子化による角度誤差を算出する。また、量子化後の線分の長さを計算する（Ｓ３０３０）。角度誤差がしきい値である４度を超え、線分の長さがしきい値である４を超えている場合（Ｓ３０４０）、その線分の両端点のうち量子化誤差が大きい方を修正対象点とし（Ｓ３０５０）、その点に関する誤差ベクトルの方向に応じて修正候補点を設定する（Ｓ３０６０）。修正候補点が複数ある場合には、各修正候補点について、他の端点と結んだ線分の角度誤差を算出し、修正対象点を最も小さい修正候補点に修正する（Ｓ３０７０，３０８０）。【選択図】図８
2008111954.tif 000002
【特許請求の範囲】
【請求項１】
表示制御処理を実行して、表示デバイスでの表示を制御する制御部を備え、
前記表示制御処理は、
表示対象の図形に含まれる第１線分の両端点の座標値を量子化して、量子化座標値を得るステップと、
前記第１線分の傾きと、前記量子化座標値を持つ２点を両端点とする第２線分の傾きとから、第１角度誤差を算出する第１算出ステップと、
前記第１角度誤差が第１しきい値を超えた場合に、前記第２線分を修正対象として設定する修正対象設定ステップと、
前記第２線分の少なくとも一方の端点を修正対象点として選択する選択ステップと、
前記修正対象点について、対応する前記第１線分の端点の座標値と前記修正対象点の座標値とから誤差方向を算出する誤差方向算出ステップと、
前記修正対象点に対して、前記誤差方向に対応した１つ以上の座標点を修正候補点として設定する修正候補設定ステップと、
前記第１線分の傾きと、前記修正対象点を前記修正候補点に置換えて得られる第３線分の傾きとから、第２角度誤差を算出する第２算出ステップと、
前記第２誤差が前記第１誤差よりも小さい場合に、前記修正候補点の座標値を前記修正対象点の前記量子化座標値とする修正ステップと、
前記量子化座標値に基づいて前記図形の骨格を生成する生成ステップとを含む、表示制御装置。
【請求項２】
前記選択ステップは、
前記両端点について量子化誤差を算出するステップと、
前記両端点について算出された前記量子化誤差を比較するステップとを含み、
前記量子化誤差の大きい方の端点を前記修正対象点として選択する、請求項１に記載の表示制御装置。
【請求項３】
前記修正候補設定ステップは、前記修正対象点に対して、前記修正対象点より前記誤差方向に隣接して存在する１つ以上の座標点を修正候補点として設定する、請求項１に記載の表示制御装置。
【請求項４】
前記修正候補設定ステップにおいて、前記修正候補点として２以上の座標点が設定され、前記修正候補点に複数の修正候補点が含まれる場合、
前記修正ステップは、
前記複数の修正候補点の各々について算出された前記第２角度誤差を比較するステップと、
前記第２角度誤差の最も小さい修正候補点を決定するステップとを含み、
決定された前記第２角度誤差の最も小さい修正候補点の座標値を前記修正対象点の前記量子化座標値とする、請求項１に記載の表示制御装置。
【請求項５】
決定された前記第２角度誤差の最も小さい修正候補点が複数存在する場合、
前記修正ステップは、
複数の、前記第２角度誤差の最も小さい修正候補点の各々について算出された量子化誤差を比較するステップと、
前記量子化誤差の最も小さい修正候補点を決定するステップとをさらに含み、
決定された前記量子化誤差の最も小さい修正候補点の座標値を前記修正対象点の前記量子化座標値とする、請求項４に記載の表示制御装置。
【請求項６】
前記修正対象設定ステップは、前記第１角度誤差が前記第１しきい値を超え、かつ前記第２線分の長さが第２しきい値を超えた場合に、前記第２線分を修正対象として設定する、請求項１に記載の表示制御装置。
【請求項７】
前記修正対象設定ステップは、さらに、前記図形に含まれるストロークの両端点が前記第１線分の両端点である場合に、前記第２線分を修正対象として設定する、請求項１に記載の表示制御装置。
【請求項８】
表示デバイスでの表示を制御する処理をコンピュータに実行させるプログラムであって、
表示対象の図形に含まれる第１線分の両端点の座標値を量子化して、量子化座標値を得るステップと、
前記第１線分の傾きと、前記量子化座標値を持つ２点を両端点とする第２線分の傾きとから、第１角度誤差を算出する第１算出ステップと、
前記第１角度誤差が第１しきい値を超えた場合に、前記第２線分を修正対象として設定する修正対象設定ステップと、
前記第２線分の少なくとも一方の端点を修正対象点として選択する選択ステップと、
前記修正対象点について、対応する前記第１線分の端点の座標値と前記修正対象点の座標値とから誤差方向を算出する誤差方向算出ステップと、
前記修正対象点に対して、前記誤差方向に対応した１つ以上の座標点を修正候補点として設定する修正候補設定ステップと、
前記第１線分の傾きと、前記修正対象点を前記修正候補点に置換えて得られる第３線分の傾きとから、第２角度誤差を算出する第２算出ステップと、
前記第２誤差が前記第１誤差よりも小さい場合に、前記修正候補点の座標値を前記修正対象点の前記量子化座標値とする修正ステップと、
前記量子化座標値に基づいて前記図形の骨格を生成する生成ステップとを実行させる、表示制御プログラム。
【請求項９】
請求項８に記載の表示制御プログラムを記録した、コンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は表示制御装置、表示制御プログラム、および表示制御プログラムを記録した記録媒体に関し、特に、文字や図形を表示装置に表示するよう制御する表示制御装置、表示制御プログラム、および表示制御プログラムを記録した記録媒体に関する。
【背景技術】
【０００２】
任意のサイズの文字を表示するための技術として、ストロークベースの文字表示技術が知られている。ストロークベースの文字表示技術では、文字の骨格を構成する１本以上の線分の端点の座標値を記憶したストロークデータを参照し、出力文字サイズに応じて端点の座標値のスケーリングする。「スケーリング」とは、ある大きさを持つ座標平面上の座標を異なる大きさを持つ座標平面上の座標にマッピングする演算処理を指す。そして、各端点、およびその間の画素を所定の輝度値で表示することによって任意のサイズの文字を表示する。
【０００３】
ストロークベースの文字表示技術はベクトルベースのストロークデータに基づいて文字を生成する。そのため、端点の座標値をスケーリングすることによって、任意のサイズの文字を生成することが容易に可能である。また、回転演算をすることによって、任意の角度だけ回転させて文字を表示することも容易に可能である。
【０００４】
しかしながら、ストロークデータに基づいて文字を画面に表示するためには、画面を構成するドット単位で輝度を制御する必要がある。そのため、スケーリング、回転演算などを行なった端点の座標値に対して量子化を行なわなければならない。「量子化」とは、実数値の小数部を四捨五入などによって切り上げ、または切り捨てることによって、整数化することである。量子化によって端点の座標値が整数化されるとき、小数点以下が切り上げられる、あるいは切り捨てられるなどによって、量子化前後の値に誤差が発生する。この、量子化によって整数化された端点の座標値を、以下、「量子化座標値」と呼ぶ。また、量子化前後の値の差を、以下、「量子化誤差」と呼ぶ。
【０００５】
特に、文字を構成する線分のうち、水平方向の位置を表わすＸ座標値が同一である２点を両端点とする縦線、または垂直方向の位置を表わすＹ座標値が同一である２点を両端点とする横線については、スケーリングのみを行なう場合であれば、縦線の２つの端点のＸ座標値、あるいは横線の２つの端点のＹ座標値が一致するため、量子化誤差によって線の角度が変化することはない。しかしながら、回転演算も行なう場合は、量子化前後で線分の傾きが変化することがあるために縦線、横線の角度が大幅にばらつき、文字の品位が劣化する場合がある。
【０００６】
この、量子化前の線分の傾きと、量子化後の線分の傾きとの差の絶対値は「角度誤差」として定義され、角度誤差が大きいほど量子化誤差によって変化する角度が大きいことが示される。つまり、角度誤差が大きいほど文字の品位が劣化しやすい。
【０００７】
図１２に具体例を挙げて説明する。
図１２（Ａ）は、漢字の「二」の骨格を構成する２本の線分の端点を、表示する文字サイズに合わせてスケーリングし、画面を構成する画素上にマッピングした、ストロークデータの具体例を示す図である。図１２（Ａ）において、線分の端点の実数座標値によって定められる点が黒丸で表わされている。図１２（Ｂ）は、図１２（Ａ）の端点の座標値に対して量子化を行なった後の線分を描画した図である。図１２（Ａ）および図１２（Ｂ）に示されるように、ストロークデータが横線である場合、２つの線分の角度については量子化しても誤差はまったく生じない。
【０００８】
図１２（Ｃ）は、図１２（Ａ）に示されたストロークデータをある角度だけ回転し、画面を構成する画素にマッピングした図である。さらに、図１２（Ｄ）は、図１２（Ｃ）の端点に対して量子化を行なった後の線分を描画した図である。図１２（Ｃ）および図１２（Ｄ）に示されるように、ストロークデータが斜め線である場合、つまり横線でも横線でもない場合、量子化後に各々の線分に、角度の異なった誤差が生じている。そのため、本来平行であるべき２本の線が別々の方向に傾き、文字の品位が劣化している。
【０００９】
以上のような量子化誤差によって生じる角度誤差による品位の劣化を軽減するための技術として、たとえば特開平６−１６１４１９号公報（以下、特許文献１）に開示されている技術などがある。特許文献１に開示された技術においては、アウトラインデータ化された文字をドットデータに変換する際、文字品質に大きく関わる特定角度に近い直線部分について、量子化誤差の値を判定しながら必要に応じて補正することで、ドットパターンでのばらつきを抑えている。
【特許文献１】特開平６−１６１４１９号公報
【特許文献２】特開平３−３８６９１号公報
【特許文献３】特開平２−６８５９３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記特許文献１に開示されている技術では、量子化誤差の大きさが許容範囲を超えた場合に特定の角度に合わせることで、角度のばらつきを軽減しているが、角度そのものの誤差については考慮していない。そのため、この補正によって逆に角度の誤差が大きくなる可能性があるという問題がある。特に、回転処理をした場合に適用するといびつな字形になるおそれがある。
【００１１】
本発明は、このような問題に鑑みてなされたものであって、量子化によって生じる角度誤差を、量子化座標値を適切に修正することで改善し、高品位に文字や図形を表示装置で表示するよう制御する表示制御装置、表示制御プログラム、および表示制御プログラムを記録した記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために、本発明のある局面に従うと、表示制御装置は、表示制御処理を実行して、表示デバイスでの表示を制御する制御部を備え、表示制御処理は、表示対象の図形に含まれる第１線分の両端点の座標値を量子化して、量子化座標値を得るステップと、第１線分の傾きと、量子化座標値を持つ２点を両端点とする第２線分の傾きとから、第１角度誤差を算出する第１算出ステップと、第１角度誤差が第１しきい値を超えた場合に、第２線分を修正対象として設定する修正対象設定ステップと、第２線分の少なくとも一方の端点を修正対象点として選択する選択ステップと、修正対象点について、対応する第１線分の端点の座標値と修正対象点の座標値とから誤差方向を算出する誤差方向算出ステップと、修正対象点に対して、誤差方向に対応した１つ以上の座標点を修正候補点として設定する修正候補設定ステップと、第１線分の傾きと、修正対象点を修正候補点に置換えて得られる第３線分の傾きとから、第２角度誤差を算出する第２算出ステップと、第２誤差が第１誤差よりも小さい場合に、修正候補点の座標値を修正対象点の量子化座標値とする修正ステップと、量子化座標値に基づいて上記図形の骨格を生成する生成ステップとを含む。
【００１３】
このため、量子化座標値を修正することで量子化によって生じる角度誤差を改善することができ、表示装置で高品位に図形を表示するよう制御することができる。
【００１４】
なお、ここで、「量子化」とは、実数値の小数部を四捨五入などによって整数化することである。また、「角度誤差」とは、量子化前の線分の傾きである角度θｒと量子化後の線分の傾きである角度θｑとの差の絶対値、すなわち｜θｒ−θｑ｜を指す。
【００１５】
好ましくは、選択ステップは、両端点について量子化誤差を算出するステップと、両端点について算出された量子化誤差を比較するステップとを含み、量子化誤差の大きい方の端点を修正対象点として選択する。
【００１６】
なお、ここで「量子化誤差」とは、量子化前後の値の誤差を指す。
好ましくは、修正候補設定ステップは、修正対象点に対して、修正対象点より誤差方向に隣接して存在する１つ以上の座標点を修正候補点として設定する。
【００１７】
なお、ここで「誤差方向」とは、量子化座標が量子化前の座標からどの方向に位置するかを指す。たとえば、修正前の量子化座標を始点とし、量子化前の座標点を終点とするベクトルである誤差ベクトルを求めることで、誤差方向は誤差ベクトルの方向として得られる。
【００１８】
好ましくは、修正候補設定ステップにおいて、前記修正候補点として２以上の座標点が設定され、前記修正候補点に複数の修正候補点が含まれる場合、修正ステップは、上記複数の修正候補点の各々について算出された前記第２角度誤差を比較するステップと、第２角度誤差の最も小さい修正候補点を決定するステップとを含み、決定された第２角度誤差の最も小さい修正候補点の座標値を修正対象点の量子化座標値とする。
【００１９】
さらに好ましくは、決定された第２角度誤差の最も小さい修正候補点が複数存在する場合、修正ステップは、複数の、第２角度誤差の最も小さい修正候補点の各々について算出された量子化誤差を比較するステップと、量子化誤差の最も小さい修正候補点を決定するステップとをさらに含み、決定された量子化誤差の最も小さい修正候補点の座標値を修正対象点の前記量子化座標値とする。
【００２０】
好ましくは、修正対象設定ステップは、第１角度誤差が第１しきい値を超え、かつ第２線分の長さが第２しきい値を超えた場合に、第２線分を修正対象として設定する。
【００２１】
また好ましくは、修正対象設定ステップは、さらに、図形に含まれるストロークの両端点が第１線分の両端点である場合に、第２線分を修正対象として設定する。
【００２２】
本発明の他の局面に従うと、表示制御プログラムは、表示デバイスでの表示を制御する処理をコンピュータに実行させるプログラムであって、表示対象の図形に含まれる第１線分の両端点の座標値を量子化して、量子化座標値を得るステップと、第１線分の傾きと、量子化座標値を持つ２点を両端点とする第２線分の傾きとから、第１角度誤差を算出する第１算出ステップと、第１角度誤差が第１しきい値を超えた場合に、第２線分を修正対象として設定する修正対象設定ステップと、第２線分の少なくとも一方の端点を修正対象点として選択する選択ステップと、修正対象点について、対応する第１線分の端点の座標値と修正対象点の座標値とから誤差方向を算出する誤差方向算出ステップと、修正対象点に対して、誤差方向に対応した１つ以上の座標点を修正候補点として設定する修正候補設定ステップと、第１線分の傾きと、修正対象点を修正候補点に置換えて得られる第３線分の傾きとから、第２角度誤差を算出する第２算出ステップと、第２誤差が第１誤差よりも小さい場合に、修正候補点の座標値を修正対象点の量子化座標値とする修正ステップと、量子化座標値に基づいて上記図形の骨格を生成する生成ステップとを実行させる。
【００２３】
本発明のさらに他の局面に従うと、記録媒体はコンピュータ読取可能な記録媒体であって、上記表示制御プログラムを記録する。
【発明の効果】
【００２４】
本発明によれば、表示デバイスを用いて文字や図形を高品位に表示することができる。
【発明を実施するための最良の形態】
【００２５】
以下に、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。
【００２６】
図１は、本発明にかかる表示制御装置の１つの具体例として、本実施の形態にかかる文字表示装置１のハードウェア構成の具体例を示すブロック図である。
【００２７】
本実施の形態にかかる文字表示装置１の具体例としては、たとえば、パーソナルコンピュータが挙げられる。パーソナルコンピュータとしては、デスクトップ型またはラップトップ型などの任意のタイプのコンピュータが使用され得る。あるいは、文字表示装置１は、ワードプロセッサであってもよい。さらに、文字表示装置１は、カラー、またはモノクロ表示が可能な表示デバイスを備えた電子機器や情報機器などの任意の装置であり得る。たとえば、文字表示装置１は、カラー液晶表示デバイスを備えた電子機器や、携帯情報ツールである携帯情報端末や、ＰＨＳ（Personal Handyphone System）を含む携帯電話機や、一般の電話機／ＦＡＸなどの通信機器などであってもよい。
【００２８】
なお、以下の実施の形態においては、表示制御装置として文字表示装置１は文字を表示するための表示デバイス２（図１）と、表示デバイス２での文字の表示を制御する制御部３（図１）とを含むものとしているが、本発明にかかる表示制御装置は、表示デバイスを含まず、有線または無線で接続された表示デバイスに文字や図形などを表示させる制御を行なうための制御装置であってもよく、その場合、本発明にかかる表示制御装置は、本実施の形態において制御部３で表わされる。つまり、その場合、本発明にかかる表示制御装置は、上述のパーソナルコンピュータなどの文字表示装置に含まれるものであってもよい。
【００２９】
また、本実施の形態においては、本発明にかかる表示制御装置が表示装置として文字表示装置における文字の表示を制御するものと表示制御装置であるものとして説明を行なうが、表示装置が表示するものは文字に限定されず、漢字やひらがなやアルファベットや数字などの文字の他、絵文字や画像なども含む、図形であるものとする。つまり、以降の説明においては、「文字」は「図形」の１つの具体例であって、表示の対象が絵文字や画像などであっても同様である。
【００３０】
図１を参照して、本実施の形態にかかる文字表示装置１は、カラー表示可能な表示デバイス２と、表示デバイス２に含まれる複数の画素に対応する複数の輝度値をそれぞれ独立に制御する制御部３とを含む。制御部３には、表示デバイス２と、入力デバイス６と、補助記憶装置７とが接続されており、ＣＰＵ（Central Processing Unit）４と主メモリ５とが含まれる。
【００３１】
制御部３は、主メモリ５から参照される文字表示プログラム１１およびその各種データに基づいて、表示デバイス２の表示画面に含まれる画素の輝度値を設定することにより、文字を表示画面上に表示するように、表示デバイス２を表示制御する。すなわち、制御部３は、表示デバイス２の表示画面上に配列された複数の画素のそれぞれに割り当てられた少なくとも１つの輝度値をそれぞれ独立して制御することにより、入力デバイス６から入力された文字を表わす情報を表示デバイス２に表示制御する。制御部３での表示制御としては、たとえば、表示デバイス２が一般的なカラー液晶表示デバイスある場合、各画素に赤、青、緑に発光するサブピクセルが割り当てられ、各サブピクセルの明るさの度合いを表わす輝度値を制御することで各画素の色が制御され、所望の文字が表示されるケースが考えられる。
【００３２】
制御部３に含まれるＣＰＵ４は、文字表示装置１の全体を制御および監視するとともに、補助記憶装置７に格納されている文字表示プログラム１１を読出して実行する。
【００３３】
制御部３に含まれる主メモリ５は、入力デバイス６から入力されたデータや表示デバイス２に表示するためのデータや文字表示プログラム１１を実行するのに必要なデータを一時的に格納する。主メモリ５は、ＣＰＵ４によってアクセスされ、ＣＰＵ４の作業領域ともなる。
【００３４】
ＣＰＵ４は、主メモリ５に格納された各種のデータに基づいて文字表示プログラム１１を実行することにより、文字パターンを生成する。生成された文字パターンは、主メモリ５に一旦格納された後、表示デバイス２に出力される。文字パターンが表示デバイス２に出力されるタイミングは、ＣＰＵ４によって制御される。
【００３５】
入力デバイス６は、表示デバイス２に表示すべき文字を表わす文字情報を制御部３に入力するために使用される。文字情報は、たとえば、文字を識別する文字コード、文字の大きさを示す文字サイズ、および文字の回転角度を含む。入力デバイス６としては、文字コード、文字の大きさ、および文字の回転角度などを入力することが可能な任意のタイプの入力デバイスが使用され得る。たとえば、キーボードやマウスやペン入力装置などの入力デバイスが入力デバイス６として好適に使用され得る。
【００３６】
補助記憶装置７には、文字表示プログラム１１と、文字の骨格形状を定義するストロークデータ１３とが記録されている。補助記憶装置７としては、文字表示プログラム１１およびストロークデータ１３を格納することが可能な任意のタイプの記憶装置が使用され得る。また、補助記憶装置７において、文字表示プログラム１１およびストロークデータ１３を格納する記録媒体としては任意の記録媒体が使用され得る。たとえば、ハードディスク、ＣＤ−ＲＯＭ（Compact Disk-Read Only Memory）、ＭＯ（Magnet Optical disk）、ＦＤ（Flexible Disk）、ＭＤ（Mini Disk）、ＤＶＤ（Digital Video Disk）、ＩＣ（Integrated Circuit）カード、および光カードなどの記録媒体が好適に使用され得る。
【００３７】
なお、文字表示プログラム１１およびストロークデータ１３は、補助記憶装置７における記録媒体に格納されることに限定されない。たとえば、文字表示プログラム１１およびストロークデータ１３は、主メモリ５に格納されてもよいし、図示されないＲＯＭ（Read Only Memory）に格納されてもよい。ＲＯＭは、たとえば、マスクＲＯＭ、ＥＰＲＯＭ（Erasable Programmable Read Only Memory）、ＥＥＰＲＯＭ（Electronically Erasable and Programmable Read Only Memory）、フラッシュＲＯＭなどであり得る。このＲＯＭ方式の場合には、そのＲＯＭを交換するだけで色々な処理のバリエーションを容易に実現することができる。たとえば、ＲＯＭ方式は、携帯型の端末装置や携帯電話機などに好適に適用され得る。
【００３８】
さらに、文字表示プログラム１１およびストロークデータ１３を格納する記録媒体は、上記ディスクやカードなどの記憶装置や半導体メモリなどのようにプログラムやデータを固定的に担持する媒体以外に、通信ネットワークにおいてプログラムやデータを搬送するために使用される通信媒体のようにプログラムやデータを流動的に担持する媒体であってもよい。文字表示装置１がインターネットを含む通信回線に接続するための手段を備えている場合には、その通信回線から文字表示プログラム１１およびストロークデータ１３をダウンロードすることができる。この場合、ダウンロードに必要なローダプログラムは、ＲＯＭ（図示せず）に予め格納されていてもよいし、補助記憶装置７から制御部３にインストールされてもよい。
【００３９】
図２は、ストロークデータ１３のデータ構造の具体例を示す図である。
ストロークデータは、文字の骨格形状を表わすデータであり、ストロークは、始点と終点とを各１つずつ含む連続した（一筆で描くことのできる）線または曲線を指す。具体的には、図２を参照して、ストロークデータ１３は、文字の種類を区別するための文字コード１６と、１つの文字を構成するストロークの数Ｍ（Ｍは１以上の整数）を示すストローク数１７と、各ストロークに対応するストローク情報１８とを含む。
【００４０】
ストローク情報１８は、ストロークを構成する複数の点の数Ｎ（Ｎは１以上の整数）を示す点数１９と、所定の大きさを持つ座標平面上に定義されるストロークの骨格（芯）上の複数の点の座標をそれぞれ示す複数の座標データ２１とを含む。座標データ２１の数は点数１９に等しいため、Ｎ個の座標データが１つのストロークを構成する座標として格納されていることになる。ストローク情報１８の数はストローク数１７に等しいため、ストロークデータ１３はＭ個のストローク情報１８を含む。本実施の形態では各ストロークは２５６×２５６の大きさを持つ座標平面上に定義されるものとする。すなわち、ストローク情報１８で表わされるストロークの骨格（芯）は、ストローク情報１８に記録されている順番に座標データ２１を取り出し、各座標データ２１が示す各点を線分で結ぶことによって２５６×２５６の大きさを持つ座標平面上に定義される。
【００４１】
図３は、ストロークデータ１３の具体例として、漢字の「木」の骨格形状を表わすストロークデータのデータ構造の具体例を示す図であり、図４はその骨格を座標平面上に表示した具体例を示す図である。
【００４２】
図３を参照して、漢字の「木」の骨格形状を表わすストロークデータには４個のストローク＃１〜＃４が含まれる。より詳しくは、ストローク＃１の骨格は、始点（４，１９２）と終点（２４５，１９２）とを結ぶ直線として定義されている。ストローク＃２の骨格は、始点（１２８，２５５）と終点（１２８，０）とを結ぶ直線として定義されている。ストローク＃３の骨格は、５点（１２１，１９２）、（９７，１４１）、（７２，１０３）、（４１，６９）、および（０，４２）を直線で結んで得られる線として定義されている。ストローク＃４の骨格は、５点（１３５，１９２）、（１５６，１４６）、（１８２，１０７）、（２１３，７２）、および（２５１，４２）を直線で結んで得られる線として定義されている。
【００４３】
図５は、本実施の形態にかかる文字表示装置１で実行される、表示デバイス２に文字を表示させるための文字表示制御処理の具体例を示すフローチャートである。図５のフローチャートで示される処理は、ＣＰＵ４が文字表示プログラム１１を読出して実行することによって実現される。
【００４４】
図５を参照して、始めに、ステップＳ１０００において、ＣＰＵ４は入力デバイス６から入力された文字コード、文字サイズ、文字の回転角度θからなる文字情報を受付ける。たとえば、漢字の「木」を表示デバイス２に表示する場合には、文字コードとして４４５８番（ＪＩＳ区点コード、４４区５８点）が入力される。
【００４５】
文字サイズは、表示される文字の横方向のドット数と縦方向のドット数とによって表現される。なお、本実施の形態における文字サイズは幅、高さとも最大２５６ドットであるものとする。
【００４６】
また、文字を回転する角度は度単位によって表わされるものとし、反時計回りに回転する大きさを表わすものとする。文字の回転は原点を中心に行なう。
【００４７】
次に、ステップＳ１０１０において、ＣＰＵ４は、補助記憶装置７より、上記ステップＳ１０００で入力された文字コードに対応する１文字分のストロークデータ１３を読出し、主メモリ５にコピーする。特に断りのない限り、以降のステップにおけるストロークデータ１３への読出し、および書込みアクセスは、主メモリ５にコピーされたデータに対してなされるものとする。
【００４８】
次に、ステップＳ１０２０において、ＣＰＵ４は、入力された文字サイズに従って、ストロークデータ１３の座標データ２１をスケーリングする。ここで、「スケーリング」とは、ある大きさを持つ座標平面上の座標を異なる大きさを持つ座標平面上の座標にマッピングする演算処理を指す。この処理によって、ストロークデータ１３の座標データ２１のための予め決められた座標系における座標値が、表示デバイス２のための実ピクセル座標系における実数座標値に変換され、ストロークデータ１３の座標データ２１として新たに設定される。なお、本実施の形態では表示デバイス２のための実ピクセル座標系は左下の画素を原点（０，０）とし、上方向をＹ座標の正方向、右方向をＸ座標の正方向として定義する。
【００４９】
次に、ステップＳ１０３０で、ＣＰＵ４は、上記ステップＳ１０００で入力された回転角度θに従って、ストロークデータ１３に含まれるすべての座標データ２１に対して回転演算、および量子化を行ない、結果を座標データ２１に書き戻す。本ステップの詳細な処理は後述する。
【００５０】
次に、ステップＳ１０４０で、ＣＰＵ４はストロークデータ１３から１ストローク分のデータ（ストローク情報１８）を取り出し、ステップＳ１０５０で、取り出した１ストローク分のデータに従ってストロークを描画することで、表示対象の文字の骨格を生成する。ステップＳ１０４０での描画方法は、本発明において特定の方法に限定されず、ストロークデータに従ってストロークを描画するあらゆる方法が採用され得る。
【００５１】
ステップＳ１０６０において１文字に含まれるすべてのストロークについてステップＳ１０４０〜ステップＳ１０５０の処理が完了したか否かが判定され、完了していないと判断された場合には（ステップＳ１０６０でＮＯ）、処理はステップＳ１０４０に戻る。完了していると判断された場合には（ステップＳ１０６０でＹＥＳ）、処理が完了する。
【００５２】
図６は、上記ステップＳ１０３０での処理を示すフローチャートである。
図６を参照して、上記ステップＳ１０３０では、始めに、ステップＳ２０００において、ＣＰＵ４はストロークデータ１３の座標の数１９が２点であるか否かを判定する。その結果、ストロークデータ１３の座標の数１９が２点であると判定された場合（ステップＳ２０００でＹＥＳ）、すなわち、ストロークデータ１３で表わされるストロークがただ１つの線分からなる場合はステップＳ２０３０へ進み、そうでなければ（ステップＳ２０００でＮＯ）ステップＳ２０１０へ進む。
【００５３】
ステップＳ２０１０でＣＰＵ４は、ストロークデータ１３のすべての座標データ２１に対し、入力された回転角度θに従って、回転演算を行ない、演算結果を座標データ２１に書き戻す。ステップＳ２０１０での回転演算は、本発明において特定の演算方法に限定されず、あらゆる方法が採用され得る。たとえば、一般的に知られている回転行列を用いた回転演算などが挙げられる。
【００５４】
ステップＳ２０１０で回転行列を用いた回転演算が行なわれるものとして、具体的に説明する。回転演算前の座標データ２１のＸ座標値およびＹ座標値がそれぞれｘ，ｙであり、回転演算後の座標データ２１のＸ座標値およびＹ座標値がそれぞれＸ，Ｙであるとすると、ステップＳ２０１０でＣＰＵ４は、以下の式（１）によってｘ，ｙの値を用いてＸ，Ｙの値を導出する：
【数１】
2008111954.tif 000003
なお、式（１）中のθは回転角度を表わす。
【００５５】
図７は回転演算前後の座標データ２１を説明する図である。
図７の具体例において、回転角度θは９０度であるとすると、回転演算を行なうことで原点を中心として反時計回りに回転させることになる。図７を参照して、演算対象の点Ｐの座標データ２１が（２，２）である場合、ステップＳ２０１０での回転演算によって、点Ｑの座標（Ｘ，Ｙ）は、式（１）より、
Ｘ＝ｃｏｓ９０°×２−ｓｉｎ９０°×２＝−２
Ｙ＝ｃｉｎ９０°×２＋ｃｏｓ９０°×２＝２
となり、（−２，２）と導出される。
【００５６】
なお、ステップＳ２０１０での回転演算が終了した時点で座標データ２１の値は実数値であり、後述する量子化誤差はない。
【００５７】
ステップＳ２０２０でＣＰＵ４は、ストロークデータ１３のすべての座標データ２１に対し、四捨五入による量子化を行ない、演算結果を座標データ２１に書き戻す。ここで、「量子化」とは、実数値の小数部を四捨五入などによって整数化することである。四捨五入による量子化は、小数点第１位の値が５以上であるときは小数点以下を切り捨てて１を足し、５未満の場合は切り捨てる演算である。座標値を整数化するために小数点以下が切り上げられる、あるいは切り捨てられるなどによって発生する、量子化前後の値の誤差を「量子化誤差」と呼ぶ。または、「丸め誤差」とも称される。ステップＳ２０２０での量子化が終了した時点で、座標データ２１の値は整数値となり量子化誤差が生じる。
【００５８】
一方、ステップＳ２０３０においては、ＣＰＵ４はストロークデータ１３の２点の座標データ２１に対する回転演算、および量子化を行ない、結果をストロークデータ１３の座標データ２１に書き戻す。
【００５９】
以上の手順によって、上記ステップＳ１０３０で、スケーリングを行なった後の座標データ２１に対して回転演算、および量子化がなされる。
【００６０】
図８は、上記ステップＳ２０３０での処理を示すフローチャートである。
図８を参照して、上記ステップＳ２０３０では、始めに、ステップＳ３０００において、ＣＰＵ４はストロークデータ１３の２つの座標データ２１（つまり１つのストロークの両端の座標データ）に対して回転演算を行なう。ここで得られる値は量子化を行なう前の値であり、実数値である。以下、このステップの回転演算によって得られた実数座標値を（Ｘｒ1，Ｙｒ１）および（Ｘｒ２，Ｙｒ２）と表わす。
【００６１】
次に、ステップＳ３０１０でＣＰＵ４は実数座標値（Ｘｒ１，Ｙｒ１）および（Ｘｒ２，Ｙｒ２）に対し、四捨五入による量子化を行ない、量子化された座標値（以下、量子化座標値と称する）を計算する。以下、このステップで得られた後述する修正が行なわれる前の量子化座標値を（Ｘｑ１，Ｙｑ１）および（Ｘｑ２，Ｙｑ２）とする。
【００６２】
次に、ステップＳ３０２０でＣＰＵ４は、上記ステップＳ３０００で得られた実数座標値から、２つの座標点を結ぶ線分の角度θｒを計算する。ここで、角度θｒは始点を（Ｘｒ１，Ｙｒ１）、終点を（Ｘｒ２，Ｙｒ２）とするベクトルがＸ軸の正方向に対してなす角度とする。すなわち、角度θｒは以下の式（２）によって計算される：
θｒ＝ｔａｎ-1｛（Ｙｒ２−Ｙｒ１）÷（Ｘｒ２−Ｘｒ１）｝…式（２）
【００６３】
同様に、ステップＳ３０１０で得られた修正前の量子化座標値から、２つの座標点を結ぶ線分の角度θｑを計算する。ここで、角度θｑは始点を（Ｘｑ１，Ｙｑ１）、終点を（Ｘｑ２，Ｙｑ２）とするベクトルがＸ軸の正方向に対してなす角度とする。すなわち、角度θｑは以下の式（３）によって計算される：
θｑ＝ｔａｎ-1｛（Ｙｑ２−Ｙｑ１）÷（Ｘｑ２−Ｘｑ１）｝…式（３）
【００６４】
次に、ステップＳ３０３０でＣＰＵ４は、上記ステップＳ３０１０で得られた２つの修正前の量子化座標値から、２点を結ぶ線分の長さＬｑ、つまり量子化後の線分の長さを計算する。すなわち、量子化後の線分の長さＬｑは以下の式（４）によって計算される：
Ｌｑ＝√｛（Ｘｑ２−Ｘｑ１）2＋（Ｙｑ２−Ｙｑ１）2｝…式（４）
【００６５】
なお、ここで、算出された量子化前の線分の傾きである角度θｒと量子化後の線分の傾きである角度θｑとの差の絶対値、すなわち｜θｒ−θｑ｜は、「角度誤差」と定義される。
【００６６】
次に、ステップＳ３０４０でＣＰＵ４は、角度誤差、すなわち｜θｒ−θｑ｜が４度を超えており、かつ量子化後の線分の長さＬｑが４を超えているかどうかを判定する。その結果、角度誤差が４度を超えており、長さＬｑが４を超えていると判定された場合には（ステップＳ３０４０でＹＥＳ）、ステップＳ３０５０へ進む。そうでなければ（ステップＳ３０４０でＮＯ）、以降の処理をスキップして修正前の量子化座標を座標データ２１に書き戻し、ステップＳ２０３０の処理を終了する。
【００６７】
角度誤差は上述のように量子化前の線分の傾きである角度θｒと量子化後の線分の傾きである角度θｑとの差の絶対値で定義される値であり、量子化での四捨五入などの切り捨てによって発生する角度の変化を表わしている。つまり、角度誤差は、量子化誤差を反映した値であると言える。そのため、上記ステップＳ３０４０において角度誤差を所定のしきい値（ここでは４度）と比較することで、量子化による量子化誤差が許容以上であるか否かが判定される。
【００６８】
また、画面に出力する線分の長さ、つまり量子化後の線分の長さＬｐが比較的短い場合、量子化誤差による端点間の位置関係の変化の、角度変化への影響が顕著となる。つまり、量子化後の線分の長さＬｐが短いほど、量子化誤差による端点間の位置関係の変化によって角度誤差が大きくなる。また、その逆に、量子化後の線分の長さＬｐが長いほど、量子化誤差の角度変化への影響が抑えられて角度誤差が小さくなる。そのため、上記ステップＳ３０２０で同じ角度誤差が算出された場合であっても、線分の長さＬｐが長い場合、線分の長さＬｐが短い場合に比べて量子化誤差が大きい。そこで、上記ステップＳ３０４０において、角度誤差の比較に加えて、量子化後の線分の長さＬｐを所定のしきい値（ここでは４）と比較することで、量子化誤差が許容以上であるか否かが２段階で判定される。つまり、角度誤差がしきい値以上であっても、量子化後の線分の長さＬｐがしきい値以下である場合には量子化誤差は許容内であると判定され、量子化後の線分の長さＬｐがしきい値を超えている場合には量子化誤差が許容以上となっていると判定される。そして、このような量子化座標を持つ２点を端点とした線分を、修正するための以下の処理の対象とすることができる。
【００６９】
なお、本具体例では、上記ステップＳ３０４０で角度誤差および長さＬｑの値の大きさの判定に用いるしきい値はそれぞれ４度および４としているが、本発明においてここでの判定のしきい値はこれらの値に限定されない。これらのしきい値は、予め文字表示装置１に設定されていてもよいし、処理に応じて操作者などによって設定されてもよい。これらしきい値は文字表示装置１の処理能力や表示される文字の質に対応したものであり、文字表示装置１の処理能力が高い場合や、表示される文字を高品位にする場合にはしきい値をより小さく設定することが好ましい。また、文字表示装置１の処理能力や表示される文字の品位としきい値との対応が予め記憶されており、必要とする処理速度や表示される文字の品位、現在の処理能力等を選択することで、しきい値が設定されるように構成されてもよい。また、文字の表示にあたって、処理速度等の処理能力を優先するのか、表示される文字の品位を高品位にすることを優先するのかをレベルで選択することで、そのレベルに対応したしきい値が設定されるように構成されてもよい。このように構成することで、操作者は、文字表示装置１の処理能力や求める文字の品位に応じたしきい値を設定することができる。
【００７０】
また、本具体例では、ステップＳ３０４０で角度誤差をしきい値と比較し、さらに量子化後の線分の長さＬｐをしきい値と比較することで、上述のような２段階の比較を行なって量子化誤差が許容以上であるか否かが判定されているが、角度誤差を比較するだけの１段階の比較が行なわれてもよい。たとえば予め文字サイズが決まっていて量子化後の線分の長さＬｐが所定範囲に決まっている場合には、長さＬｐの比較を行なわないようにすることで、処理を簡略化することができる。
【００７１】
次に、ステップＳ３０５０でＣＰＵ４は、修正前の量子化座標（Ｘｑ１，Ｙｑ１）および（Ｘｑ２，Ｙｑ２）の各々について量子化誤差の大きさを計算し、量子化誤差が大きい方の量子化座標で表わされる点を、以降のステップにおいて量子化座標値を修正する対象である、修正対象点Ｐとして選択する。
【００７２】
ここで、「量子化誤差の大きさ」とは、量子化前の座標点と、量子化後の座標点との間の距離を表わすものとする。たとえば修正前の量子化座標（Ｘｑ１，Ｙｑ１）の量子化誤差の大きさは、以下の式（５）によって計算される：
√｛（Ｘｑ１−Ｘｒ１）2＋（Ｙｑ１−Ｙｒ１）2｝…式（５）
【００７３】
このように修正対象点Ｐが選択されることで、上述のようにして修正の対象と判定された線分のうち、より量子化誤差の大きい方の端点を修正対象とすることができる。ここでの回転処理の対象となっているストロークデータに含まれる座標データが２つ、つまり回転処理の対象となっているストロークは１つであるため、２つの端点のうち量子化誤差の大きい方を修正することで、２つの端点の各々の量子化誤差の違いを相対的小さくすることができる。そのため、ストローク全体として、元のストロークを量子化することで発生する誤差を小さくすることができる。つまり、そのストロークについての歪みを小さくすることができる。
【００７４】
なお、本具体例では上記ステップＳ３０５０で、２つの量子化座標のうち量子化誤差が大きい方の量子化座標で表わされる点を修正対象点Ｐとして選択するものとしているが、この選択方法は１つの具体例であり、他の方法で選択されてもよい。たとえば、２つの端点の表示位置によって選択されてもよい。また、その他の方法であってもよい。
【００７５】
また、本具体例では、１つのストロークの２つの端点のうちのいずれか一方の点が修正対象点Ｐとして選択されるものとしているが、両端点を修正対象点として以降の処理がなされるように構成されてもよい。
【００７６】
次に、ステップＳ３０６０でＣＰＵ４は修正対象点Ｐの誤差ベクトルを求める。ここで、「誤差ベクトル」とは、修正前の量子化座標を始点とし、量子化前の座標点を終点とするベクトルを指す。たとえば、上記ステップＳ３０５０で（Ｘｑ１，Ｙｑ１）が修正対象点Ｐとして選択された場合は、修正対象点Ｐの誤差ベクトルは（Ｘｑ１，Ｙｑ１）を始点とし、（Ｘｒ１，Ｙｒ１）を終点とするベクトルとして求められる。つまり、誤差ベクトルは、量子化誤差によって、量子化座標が量子化前の座標からどの方向にどれだけの距離離れて位置しているかである、「誤差方向」および「誤差量」を示している。
【００７７】
次に、ＣＰＵ４は、修正対象点Ｐから誤差方向に隣接して存在する３つの座標点を求め、これらを修正対象点Ｐの修正候補点として抽出する。「修正候補点」とは、後のステップで修正対象点Ｐをどの座標に修正するかを決定する際に候補とする座標を指すものとする。ここで、選択した３つの修正候補点の座標値はいずれも整数値であり、表示デバイス２の画素の１つと１対１に対応しているものである。
【００７８】
以下、ステップＳ３０６０で、修正候補点を抽出する方法の具体例について説明する。
始めに、ＣＰＵ４は、誤差ベクトルの方向が、どの方向を向いているのかを分類する。本具体例では、図９に示される範囲Ａ〜範囲Ｈの８つの角度範囲を予め定義しておき、誤差ベクトルの方向がどの角度範囲内にあるかによって分類するものとする。具体的に、誤差ベクトルのｘ軸からの角度をαとしたとき、以下のように分類される：
範囲Ａ：０°≦α＜２２．５°、または３３７．５°＜α＜３６０°、
範囲Ｂ：２２．５°≦α＜６７．５°、
範囲Ｃ：６７．５°≦α＜１１２．５°、
範囲Ｄ：１１２．５°≦α＜１５７．５°、
範囲Ｅ：１５７．５°≦α＜２０２．５°、
範囲Ｆ：２０２．５°≦α＜２４７．５°、
範囲Ｇ：２４７．５°≦α＜２９２．５°、
範囲Ｈ：２９２．５°≦α＜３３７．５°。
【００７９】
そして、ＣＰＵ４は、上記分類結果に基づいて、修正候補点を選択する。本具体例では、予め図１０に示される各分類に対応づけられた修正対象点と修正候補点との位置関係が記憶されており、この位置関係に基づいて、ＣＰＵ４は修正候補点を抽出する。ここで、図１０中の黒で塗りつぶされた矩形領域は修正対象点Ｐ、斜線で塗りつぶされた矩形領域は抽出するべき３つの修正候補点を示している。なお、各矩形マスは表示デバイス２における画素に対応している。
【００８０】
図１０の位置関係が記憶されている場合、具体的には、修正対象点Ｐを（Ｘｑ，Ｙｑ）とすると、誤差ベクトルの方向が範囲Ａに分類された場合は、ＣＰＵ４は、修正候補点を（Ｘｑ＋１，Ｙｑ＋１）、（Ｘｑ＋１，Ｙｑ）、および（Ｘｑ＋１，Ｙｑ−１）と設定する。誤差ベクトルの方向が範囲Ｂに分類された場合は、ＣＰＵ４は、修正候補点を（Ｘｑ＋１，Ｙｑ）、（Ｘｑ＋１，Ｙｑ−１）、および（Ｘｑ，Ｙｑ−１）と設定する。誤差ベクトルの方向が範囲Ｃに分類された場合は、ＣＰＵ４は、修正候補点を（Ｘｑ＋１，Ｙｑ−１）、（Ｘｑ，Ｙｑ−１）、および（Ｘｑ−１，Ｙｑ−１）と設定する。誤差ベクトルの方向が範囲Ｄに分類された場合は、ＣＰＵ４は、修正候補点を（Ｘｑ，Ｙｑ−１）、（Ｘｑ−１，Ｙｑ−１）、および（Ｘｑ−１，Ｙｑ）と設定する。誤差ベクトルの方向が範囲Ｅに分類された場合は、ＣＰＵ４は、修正候補点を（Ｘｑ−１，Ｙｑ−１）、（Ｘｑ−１，Ｙｑ）、および（Ｘｑ−１，Ｙｑ＋１）と設定する。誤差ベクトルの方向が範囲Ｆに分類された場合は、ＣＰＵ４は、修正候補点を（Ｘｑ−１，Ｙｑ）、（Ｘｑ−１，Ｙｑ＋１）、および（Ｘｑ，Ｙｑ＋１）と設定する。誤差ベクトルの方向が範囲Ｇに分類された場合は、ＣＰＵ４は、修正候補点を（Ｘｑ−１，Ｙｑ＋１）、（Ｘｑ，Ｙｑ＋１）、および（Ｘｑ＋１，Ｙｑ＋１）と設定する。誤差ベクトルの方向が範囲Ｈに分類された場合は、ＣＰＵ４は、修正候補点を（Ｘｑ，Ｙｑ＋１）、（Ｘｑ＋１，Ｙｑ＋１）、および（Ｘｑ＋１，Ｙｑ）と設定する。
【００８１】
ステップＳ３０６０でＣＰＵ４は以上のようにして誤差ベクトルを求め、その方向から３つの修正候補点を設定する。
【００８２】
誤差方向を表わした誤差ベクトルは、始点と終点とを結ぶことで容易に算出されるため、ステップＳ３０６０で誤差ベクトルを用いてその方向から修正候補点を設定することで、簡単な計算で修正候補点を得ることができる。
【００８３】
なお、本具体例では、誤差方向を表わす指標として誤差ベクトルを算出してその向きを用いるものとしているが、誤差ベクトルの方向は誤差方向を表わす指標の１つの具体例であって、本発明において誤差方向を表わす指標は誤差ベクトルの方向に限定されない。たとえば、所定の計算式を用いて、量子化座標と量子化前の座標とを代入することで指標を得るように構成されてもよい。
【００８４】
また、本具体例では、図９に示されるような８種類の角度範囲に分類するものとしているが、文字表示装置１の処理能力や表示する文字の品位や表示デバイス２の画素の細かさに応じて、より多い種類の角度範囲に分類されてもよいし、より少ない種類の角度範囲に分類されてもよい。また、角度範囲は、予め図９に示されるように定義されているものとしたが、文字表示装置１の処理能力や表示する文字の品位や表示デバイス２の画素の細かさに応じて使用者が設定するように構成されてもよい。また、言うまでもなく、図９に示された角度範囲は１つの具体例であるため、具体的な数値は示された数値に限定されるものではない。
【００８５】
また、本具体例では、誤差方向の分類結果に応じた修正候補点が図１０に示されるように予め記憶されているものとしているが、修正候補点は、誤差方向が上述のように所定の計算式に代入して得られる指標である場合、その指標を計算式に代入することで得られてもよい。また、本具体例では修正候補点が、誤差方向の分類結果に応じて、３点予め記憶されているものとしているが、記憶されている点数は３点に限定されず、１以上であればよい。また、具体的な位置も、図１０に示された位置に限定されず、誤差方向に隣接するような位置であればよい。文字表示装置１の処理能力や表示する文字の品位や表示デバイス２の画素の細かさに応じて、より多い点数（広い範囲）の修正候補点が記憶されてもよいし、より少ない点数（狭い範囲）の修正候補点が記憶されてもよい。また、修正候補点は、予め図１０に示されるように記憶されているものとしたが、文字表示装置１の処理能力や表示する文字の品位や表示デバイス２の画素の細かさに応じて使用者が設定するように構成されてもよい。
【００８６】
次に、ステップＳ３０７０でＣＰＵ４は、修正候補点を修正対象点Ｐの新たな量子化後の座標点とした場合の、量子化後の線分の角度誤差を、３つの修正候補点についてそれぞれ求める。
【００８７】
たとえば、修正対象点Ｐの座標値が（Ｘｑ１，Ｙｑ１）、もう一方の修正前の量子化座標点の座標値が（Ｘｑ２，Ｙｑ２）である場合に、修正候補点（Ｘｑ’，Ｙｑ’）を修正対象点Ｐの新たな量子化後の座標点とした場合、量子化後の線分の角度θｑ’は、
θｑ’＝ｔａｎ-1｛（Ｙｑ２−Ｙｑ’）÷（Ｘｑ２−Ｘｑ’）｝
となるため、量子化前の線分の角度がθｒとすると、修正された場合の角度誤差は上記θｑ’を用いて、｜θｒ−θｑ’｜として計算できる。
【００８８】
次に、ＣＰＵ４は、これら３つの修正候補点のそれぞれについて算出された角度誤差を比較し、角度誤差が最も小さくなる修正候補点Ｇを導出する。なお、修正候補点Ｇは修正前の角度誤差を小さくするために修正対象点Ｐに置換えられる点であるため、修正後の角度誤差は修正前の角度誤差よりも小さいことが必要である。そのため、ステップＳ３０７０でＣＰＵ４は、３つの修正候補点についてそれぞれ算出された量子化後の線分の角度誤差を、修正前の線分の角度誤差と比較して、修正前の線分の角度誤差以下となっている修正候補点についてのみ、さらに角度誤差を比較するようにしてもよい。または、３つの修正候補点についてそれぞれ算出された量子化後の線分の角度誤差を比較して得られた角度誤差が最も小さくなる修正候補点について、その角度誤差をさらに修正前の線分の角度誤差と比較して、修正前の線分の角度誤差以下となっている場合に、修正対象点Ｐに置換えられる修正候補点Ｇと決定するようにしてもよい。そのとき、修正後の線分の角度誤差が修正前の線分の角度誤差を上回っている場合には、修正対象点Ｐを修正候補点Ｇに修正することで角度誤差は改善されないものとして、修正対象点Ｐの修正が行なわれないようにしてもよい。これは、修正候補点が１点のみ設定された場合にも同様であって、この場合、ステップＳ３０７０では、修正前後の線分の角度誤差を比較することで、修正対象点をその修正候補点で修正することで角度誤差が改善されるか否かが判定されることが好ましい。
【００８９】
そして、ステップＳ３０８０でＣＰＵ４は、上記ステップＳ３０７０で導出された修正候補点Ｇを修正対象点Ｐの修正後の点として設定し、その座標値を、修正対象点Ｐの新たな量子化座標値として座標データ２１に書き戻す。
【００９０】
なお、上記ステップＳ３０５０で１つのストロークの両端点が修正対象点に設定されている場合には、各修正対象点について上記ステップＳ３０５０〜Ｓ３０８０を行なえばよい。
【００９１】
このように角度誤差が最も小さくなる修正候補点Ｇを修正対象点Ｐの新たな量子化座標値とすることで、量子化誤差による量子化後の線分の量子化前の線分からの角度変化を抑えることができる。そのため、量子化によって生じる角度誤差が改善され、量子化誤差を用いずに各端点の量子化誤差が最小となるように修正する処理に比べて、より高品位に文字や図形を表示することができる。
【００９２】
なお、角度誤差が最小である修正候補点が複数ある場合は、量子化誤差が小さい方の修正候補点の座標値を、修正対象点の新たな量子化座標値として座標データ２１に書き戻すことが好ましい。
【００９３】
最後に、ＣＰＵ４は、修正対象点でない端点の座標データ２１の修正前の量子化座標値を、同座標データ２１に書き戻す。
【００９４】
以上の手順によって、上記ステップＳ２０３０で、２つの端点の座標値によって定義された線分が回転演算後、角度に基づいた量子化がなされる。
【００９５】
文字表示装置１においてステップＳ２０３０で上述の回転演算が行なわれることで、（Ｓ２０２０の説明で示しされたような）四捨五入による量子化ではなく、角度誤差の軽減をも考慮して整数化を行なうことができる。
【００９６】
具体例として漢字の「二」に対して上記ステップＳ２０３０の線分用回転処理が実行された場合について説明する。
【００９７】
図１１（Ａ）は、図１２（Ａ）に示された漢字の「二」のストロークデータを４５度回転し、画面を構成する画素上にマッピングした図である。量子化前の実数座標値が黒丸で示されている。ここで、各画素の中心の実数座標値は画素の位置を示す整数座標値と一致するものとする。たとえば、左下の画素の中心の実数座標値は（０，０）であるものとする。また、上記ステップＳ３０００において、漢字の「二」を構成する２つのストロークのうち、上側のストロークの２つの端点の実数座標値が（−０．３，２．９）および（１．９，５．１）、下側のストロークの２つの端点の実数座標値が（０．４，０．８）および（３．６，４．０）と計算されたものとする。
【００９８】
上側のストロークについては上記ステップＳ３０１０により各端点の修正前の量子化座標値が（０，３）および（２，５）と算出される。
【００９９】
上記ステップＳ３０２０で、上記ステップＳ３０００で得られた実数座標値から、２つの座標点を結ぶ線分の角度θｒは４５度と算出され、ステップＳ３０１０で得られた修正前の量子化座標値から、２つの座標点を結ぶ線分の角度θｑは４５度と算出される。よって、上記ステップＳ３０４０において、角度誤差がしきい値である４度を超える条件を満たさないと判定されるため、量子化座標値の修正が行なわれない。
【０１００】
一方、下側のストロークについては上記ステップＳ３０１０により各端点の修正前の量子化座標値は（０，１）および（４，４）と算出される。
【０１０１】
上記ステップＳ３０２０で、上記ステップＳ３０００で得られた実数座標値から、２つの座標点を結ぶ線分の角度θｒは４５度と算出され、ステップＳ３０１０で得られた修正前の量子化座標値から、２つの座標点を結ぶ線分の角度θｑは３６．９度と算出される。さらに、上記ステップＳ３０３０で、上記ステップＳ３０１０で得られた２つの修正前の量子化座標値から、２点を結ぶ線分の長さＬｑは５と算出される。よって、上記ステップＳ３０４０において、角度誤差はしきい値である４度を超え、量子化後の線分の長さＬｑもしきい値である４を超えると判定される。
【０１０２】
上記ステップＳ３０５０では修正前の各点の量子化座標値について以下のように量子化誤差が算出される：
量子化座標値（０，１）：√（０−０．４）2＋（１−０．８）2＝０．４５、
量子化座標値（４，４）：√（４−３．６）2＋（４−４．０）2＝０．４０。
【０１０３】
この結果、量子化誤差が大きい方の量子化座標値（０，１）で表わされる点が修正対象点Ｐとして選択され、ステップＳ３０５０以降の処理によって修正される。もう一方の端点については量子化座標値は修正されないので、（４，４）のままとして座標データ２１に設定される。
【０１０４】
上記ステップＳ３０６０の選択された修正対象点Ｐの誤差ベクトルが（０．４，−０．２）と算出されるので、修正候補点Ｐの誤差ベクトルの方向は図９の範囲Ｈに分類される。そこで、ステップＳ３０６０では、図１０の位置関係に応じた修正候補点をが設定される。なお、図１１（Ａ）の斜線で塗りつぶした画素は修正前の量子化座標値に対応する画素であり、チェック模様で塗りつぶした画素は修正候補点に対応する画素である。すなわち、上記ステップＳ３０６０で、修正候補点は（０，０）、（１，０）、および（１，１）と設定される。
【０１０５】
修正候補点Ｐに対する他方の端点の量子化後の座標値が（４，４）であるので、上記ステップＳ３０７０における各修正候補点を新たな量子化後の座標点とした場合の量子化後の線分の角度誤差は、最小値が０度と算出される。ステップＳ３０７０では、修正候補点（０，０）および（１，１）についての角度誤差が、共に０度と算出されるため、各々の量子化誤差が小さい方が新たな量子化座標値として選択される。修正候補点（０，０）および修正候補点（１，１）についての量子化誤差は、以下のように算出される：
修正候補点（０，０）：√（０−０．４）2＋（０−０．８）2＝０．９、
修正候補点（１，１）：√（１−０．４）2＋（１−０．８）2＝０．６。
【０１０６】
このため、ステップＳ３０７０では、修正候補点（１，１）が修正候補点Ｐの新たな量子化座標値として座標データ２１に設定される。
【０１０７】
以上の結果、得られた座標データ２１の最終的な量子化座標値は図１１（Ｂ）の黒丸で示される値となり、この座標データ２１に基づいた描画の結果は灰色で塗りつぶした矩形で示されるようになる。
【０１０８】
本実施の形態にかかる文字表示装置１において上述の処理が実行されることによって、図１１（Ａ）に示されるようにストロークデータが斜め線である場合、つまり横線でも横線でもない場合、量子化後の各線分の角度誤差を抑えるように量子化座標値が修正されるために、角度誤差が改善され、ストロークデータが描画されて表示された際に、図１１（Ｂ）に示されるように、図１２（Ｄ）に示されたように角度誤差が改善されていない場合に比べて、文字の品位が劣化することを抑えることができる。
【０１０９】
さらに、上述の文字表示処理をコンピュータに実行させるためのプログラムを提供することもできる。このようなプログラムは、コンピュータに付属するフレキシブルディスク、ＣＤ−ＲＯＭ、ＲＯＭ、ＲＡＭおよびメモリカードなどのコンピュータ読取り可能な記録媒体にて記録させて、プログラム製品として提供することもできる。あるいは、コンピュータに内蔵するハードディスクなどの記録媒体にて記録させて、プログラムを提供することもできる。また、ネットワークを介したダウンロードによって、プログラムを提供することもできる。
【０１１０】
なお、本発明にかかるプログラムは、コンピュータのオペレーションシステム（ＯＳ）の一部として提供されるプログラムモジュールのうち、必要なモジュールを所定の配列で所定のタイミングで呼出して処理を実行させるものであってもよい。その場合、プログラム自体には上記モジュールが含まれずＯＳと協働して処理が実行される。このようなモジュールを含まないプログラムも、本発明にかかるプログラムに含まれ得る。
【０１１１】
また、本発明にかかるプログラムは他のプログラムの一部に組込まれて提供されるものであってもよい。その場合にも、プログラム自体には上記他のプログラムに含まれるモジュールが含まれず、他のプログラムと協働して処理が実行される。このような他のプログラムに組込まれたプログラムも、本発明にかかるプログラムに含まれ得る。
【０１１２】
提供されるプログラム製品は、ハードディスクなどのプログラム格納部にインストールされて実行される。なお、プログラム製品は、プログラム自体と、プログラムが記録された記録媒体とを含む。
【０１１３】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０１１４】
【図１】文字表示装置１のハードウェア構成の具体例を示すブロック図である。
【図２】ストロークデータ１３のデータ構造の具体例を示す図である。
【図３】漢字の「木」の骨格形状を表わすストロークデータのデータ構造の具体例を示す図である。
【図４】漢字の「木」の骨格形状を表わすストロークデータの骨格を座標平面上に表示した具体例を示す図である。
【図５】文字表示制御処理の具体例を示すフローチャートである。
【図６】ステップＳ１０３０での処理を示すフローチャートである。
【図７】回転演算前後の座標データ２１を説明する図である。
【図８】ステップＳ２０３０での処理を示すフローチャートである。
【図９】誤差ベクトルの方向の分類範囲の具体例を示す図である。
【図１０】分類範囲と修正候補点との対応関係の具体例を示す図である。
【図１１】文字表示装置１での文字表示処理を具体的に説明する図である。
【図１２】従来行なわれていた文字表示処理を説明する図である。
【符号の説明】
【０１１５】
１  文字表示装置、２  表示デバイス、３  制御部、４  ＣＰＵ、５  主メモリ、６  入力デバイス、７  補助記憶装置、１１  文字表示プログラム、１３  ストロークデータ、１６  文字コード、１７  ストローク数、１８  ストローク情報、１９  点数、２１  座標データ。
【図１】
2008111954.tif 000004
【図２】
2008111954.tif 000005
【図３】
2008111954.tif 000006
【図４】
2008111954.tif 000007
【図５】
2008111954.tif 000008
【図６】
2008111954.tif 000009
【図７】
2008111954.tif 000010
【図８】
2008111954.tif 000011
【図９】
2008111954.tif 000012
【図１０】
2008111954.tif 000013
【図１１】
2008111954.tif 000014
【図１２】
2008111954.tif 000015