(57)【要約】【課題】曲線を有する文字を高速で表示することが可能な表示装置が提供される。【解決手段】本発明の表示装置は、線を表示する表示デバイスと、前記表示デバイスを制御する制御部とを備え、制御部が、与えられた第１点、第２点および第３点に対して、前記第１点および前記第２点のうちの少なくとも一方と前記第３点との第１の位置関係を決定し、予め用意された少なくとも１つの線のパターンであって、前記第１点と前記第２点とを通る少なくとも１つの線のパターンの中から、前記決定された第１の位置関係に対応する１つの線のパターンを選択し、前記選択された線のパターンに応じて、前記第１点と前記第２点とを通る線を前記表示デバイスに表示する。【選択図】  図８
2006039780.tif 000002
【特許請求の範囲】
【請求項１】
線を表示する表示デバイスと、
前記表示デバイスを制御する制御部と
を備えた表示装置であって、
前記制御部は、与えられた第１点、第２点および第３点に対して、前記第１点および前記第２点のうちの少なくとも一方と前記第３点との第１の位置関係を決定し、
予め用意された少なくとも１つの線のパターンであって、前記第１点と前記第２点とを通る少なくとも１つの線のパターンの中から、前記決定された第１の位置関係に対応する１つの線のパターンを選択し、
前記選択された線のパターンに応じて、前記第１点と前記第２点とを通る線を前記表示デバイスに表示する、表示装置。
【請求項２】
前記第１の位置関係と前記線のパターンとの対応関係を示すパターン情報を保持する保持部をさらに備え、
前記線のパターンの選択は、前記保持部に保持されている前記パターン情報を参照して行われる、請求項１に記載の表示装置。
【請求項３】
前記第１の位置関係は、前記第１点と前記第２点とを結ぶ第１直線と前記第２点と前記第３点とを結ぶ第２直線との角度に応じて決定される、請求項１に記載の表示装置。
【請求項４】
前記制御部は、前記第１点、前記第２点および第４点に対して、前記第１点および前記第２点のうちの少なくとも一方と前記第４点との第２の位置関係を決定し、
前記制御部は、前記少なくとも１つの線のパターンの中から、前記決定された第２の位置関係に対応する１つの線のパターンを選択し、
前記第２点の周囲には、複数の領域が割り当てられ、
前記第３点と前記第４点とは、前記複数の領域のうちの同じ領域に与えられ、
前記選択された第１の位置関係に対応する１つの線のパターンと前記選択された第２の位置関係に対応する１つの線のパターンとは、同じである、請求項３に記載の表示装置。
【請求項５】
前記第１点は原点に与えられ、前記第２点は第一象限に与えられる、請求項１に記載の表示装置。
【請求項６】
前記第２点の周囲には、複数の領域が割り当てられ、
前記第３点は、前記複数の領域のうちの１つに与えられ、
前記複数の領域のうちの１つの領域と、前記１つの領域とは異なる領域とは、異なった大きさを有する、請求項１に記載の表示装置。
【請求項７】
前記第２点の周囲の一部のみに、複数の領域が割り当てられ、
前記第３点は、前記複数の領域のうちの１つに与えられる、請求項１に記載の表示装置。
【請求項８】
線を表示する表示デバイスを備えた情報表示装置に表示処理を実行させるプログラムであって、
前記表示処理は、
与えられた第１点、第２点および第３点に対して、前記第１点および前記第２点のうちの少なくとも一方と前記第３点との第１の位置関係を決定するステップと、
予め用意された少なくとも１つの線のパターンであって、前記第１点と前記第２点とを通る少なくとも１つの線のパターンの中から、前記決定された第１の位置関係に対応する１つの線のパターンを選択するステップと、
前記選択された線のパターンに応じて、前記第１点と前記第２点とを通る線を前記表示デバイスに表示するステップと
を包含する、プログラム。
【請求項９】
線を表示する表示デバイスを備えた情報表示装置によって読み取り可能な記録媒体であって、
前記記録媒体は、前記情報表示装置に表示処理を実行させるプログラムを記録し、
前記表示処理は、
与えられた第１点、第２点および第３点に対して、前記第１点および前記第２点のうちの少なくとも一方と前記第３点との第１の位置関係を決定するステップと、
予め用意された少なくとも１つの線のパターンであって、前記第１点と前記第２点とを通る少なくとも１つの線のパターンの中から、前記決定された第１の位置関係に対応する１つの線のパターンを選択するステップと、
前記選択された線のパターンに応じて、前記第１点と前記第２点とを通る線を前記表示デバイスに表示するステップと
を包含する、記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、線を表示する表示デバイスと、表示デバイスを制御する制御部とを備えた表示装置、プログラムおよび記録媒体に関する。本発明によって、例えば、低中解像度の表示装置に曲線を有する文字を高速で表示できる。
【背景技術】
【０００２】
アウトラインフォントは、閉曲線の輪郭で文字を表す。このアウトラインフォントは、ベクトルデータに基づいて文字を表示する技術に広く用いられている。アウトラインフォントは、例えば、ＴｒｕｅＴｙｐｅフォントおよびＰｏｓｔＳｃｒｉｐｔフォントである。ＴｒｕｅＴｙｐｅフォントの曲線では、２次のＢ−スプライン曲線が使用される（式１参照）。ＰｏｓｔＳｃｒｉｐｔフォントの曲線では、ベジェ曲線が使用される（式２参照）。
〔式１〕
ｘ＝（１−ｔ）２ｘ１＋２ｔ（１−ｔ）ｘ２＋ｔ２ｘ３
ｙ＝（１−ｔ）２ｙ１＋２ｔ（１−ｔ）ｙ２＋ｔ２ｙ３
０≦ｔ≦１
〔式２〕
ｘ＝（１−ｔ）３ｘ１＋３（１−ｔ）２ｔｘ２＋３（１−ｔ）ｔ２ｘ３＋ｔ３ｘ４
ｙ＝（１−ｔ）２ｙ１＋３ｔ（１−ｔ）２ｔｙ２＋３（１−ｔ）ｔ２ｙ３＋ｔ３ｙ４
０≦ｔ≦１
高解像度の表示装置に文字を表示する場合に、これらのフォントは適している。特に、文字を紙に印刷する場合に、これらのフォントは好適である。なお、式１および式２で表される曲線は、曲線の両端（始点と終点）は通るが、始点と終点との間の点（制御点）は通らない。
【０００３】
ストロークフォントは、厚みを持たないストロークで文字を表す。このストロークフォントは、アウトラインフォントと同様に、ベクトルデータに基づいて文字を表示する技術に広く用いられている。
【０００４】
低中解像度の表示装置に文字を表示する場合に、このフォントは適している。このストロークフォントを表示装置に表示する際には、一般的に、表現すべき線が曲線であるか直線であるかを問わず、複数の点の各々を直線で結ぶことによって、曲線または直線を表現するため、アウトラインフォントに比べて高速に描画できる。
【０００５】
特許文献１は、２点を結ぶ直線を高速に描画する技術を開示する。
【０００６】
この技術は、直線の傾きに基づいて商数列を求める。次に、商数列から制御数列を求め、制御数列に基づいて、直線を高速で描画する。
【０００７】
例えば、直線の傾き７／１８に基づいて商数列｛２，１，１，３｝を求める。次に、商数列｛２，１，１，３｝から制御数列｛１，０，０，１，０，１，０，０，１，０，０，１，０，１，０，０，１，０｝を求める。直線の描画位置をｘ方向に増加する際に、制御行列の値が「１」である場合には、ｙの値を増加して直線を描画し、制御行列の値が「０」である場合には、ｙの値を増加せずに、直線を描画する。
【０００８】
特許文献１には、商数列および制御数列を予め計算しておくことも開示されている。
【０００９】
特許文献２は、曲線を高速に描画する技術を開示する。この技術は、媒介変数に関する値を予め計算し、記憶しておき、曲線をベジェ曲線等で表現する際に、これらの値を用いる。
【００１０】
例えば、式２で媒介変数ｔを１０２４分割した場合、ｔのとりうる値は（０，１／１０２４，２／１０２４，３／１０２４，…，１０２３／１０２４，１０２４／１０２４）となる。ここで、ｔの値とｔ３の値との関係およびｔの値と３（１−ｔ）ｔ２の値との関係を予め計算し、これらの関係をテーブル化しておく。また（１−ｔ）３および３ｔ（１−ｔ）２の計算は、ｔ３の値、３（１−ｔ）ｔ２の値を利用する。このように、特許文献２に開示の技術によれば、高速に、式２で示される計算を処理できる。
【特許文献１】特開平９−１６１０８２号公報
【特許文献２】特開平１−２５５０７６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかし、従来の技術には、以下に示す問題点がある。
【００１２】
中低解像度の表示装置にアウトラインフォントを表示する場合には、線幅のばらつきおよび線の潰れが発生しやすく、文字の品位がよくない。
【００１３】
特許文献２の技術では、複数の点の各々を描画するたびに浮動小数点演算を伴った計算が発生し、表示の高速化に限界がある。一般に、ＣＰＵの浮動小数点演算は、ＣＰＵの整数演算より遅い。
【００１４】
表示装置にストロークフォントを表示する場合には、文字の曲線部分にガタツキが目立つ。ストロークフォントは、文字の曲線部分を直線で表すからである。特に、文字を大きくしていくと、ガタツキが顕著になる。
【００１５】
文字の曲線部分を２次のＢ−スプライン曲線またはベジェ曲線で表現することでは、厚みのないストロークフォントをデザインすることが難しい。線が曲線の両端の間の制御点を通らないからである。制御点をすべて通る曲線補間として、３次スプラインを利用した曲線補間がある。しかし、この補間は、端点に対して制約条件を設ける必要があり、条件付けが難しいという問題がある。また高速化が難しいという問題もある
本発明は、上記問題点に鑑みてなされたものであり、高速に線を描画でき、かつ線を示すデータの記録容量を少なくできる文字図形表示装置、プログラムおよび記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１６】
本発明の表示装置は、線を表示する表示デバイスと、前記表示デバイスを制御する制御部とを備えた表示装置であって、前記制御部は、与えられた第１点、第２点および第３点に対して、前記第１点および前記第２点のうちの少なくとも一方と前記第３点との第１の位置関係を決定し、予め用意された少なくとも１つの線のパターンであって、前記第１点と前記第２点とを通る少なくとも１つの線のパターンの中から、前記決定された第１の位置関係に対応する１つの線のパターンを選択し、前記選択された線のパターンに応じて、前記第１点と前記第２点とを通る線を前記表示デバイスに表示し、これにより、上記目的が達成される。
【００１７】
前記第１の位置関係と前記線のパターンとの対応関係を示すパターン情報を保持する保持部をさらに備え、前記線のパターンの選択は、前記保持部に保持されている前記パターン情報を参照して行われてもよい。
【００１８】
前記第１の位置関係は、前記第１点と前記第２点とを結ぶ第１直線と前記第２点と前記第３点とを結ぶ第２直線との角度に応じて決定されてもよい。
【００１９】
前記制御部は、前記第１点、前記第２点および第４点に対して、前記第１点および前記第２点のうちの少なくとも一方と前記第４点との第２の位置関係を決定し、前記制御部は、前記少なくとも１つの線のパターンの中から、前記決定された第２の位置関係に対応する１つの線のパターンを選択し、前記第２点の周囲には、複数の領域が割り当てられ、前記第３点と前記第４点とは、前記複数の領域のうちの同じ領域に与えられ、前記選択された第１の位置関係に対応する１つの線のパターンと前記選択された第２の位置関係に対応する１つの線のパターンとは、同じでよい。
【００２０】
前記第１点は原点に与えられ、前記第２点は第一象限に与えられてもよい。
【００２１】
前記第２点の周囲には、複数の領域が割り当てられ、前記第３点は、前記複数の領域のうちの１つに与えられ、前記複数の領域のうちの１つの領域と、前記１つの領域とは異なる領域とは、異なった大きさを有してもよい。
【００２２】
前記第２点の周囲の一部のみに、複数の領域が割り当てられ、前記第３点は、前記複数の領域のうちの１つに与えられてもよい。
【００２３】
本発明のプログラムは、線を表示する表示デバイスを備えた情報表示装置に表示処理を実行させるプログラムであって、前記表示処理は、与えられた第１点、第２点および第３点に対して、前記第１点および前記第２点のうちの少なくとも一方と前記第３点との第１の位置関係を決定するステップと、予め用意された少なくとも１つの線のパターンであって、前記第１点と前記第２点とを通る少なくとも１つの線のパターンの中から、前記決定された第１の位置関係に対応する１つの線のパターンを選択するステップと、前記選択された線のパターンに応じて、前記第１点と前記第２点とを通る線を前記表示デバイスに表示するステップとを包含し、これにより、上記目的が達成される。
【００２４】
本発明の記録媒体は、線を表示する表示デバイスを備えた情報表示装置によって読み取り可能な記録媒体であって、前記記録媒体は、前記情報表示装置に表示処理を実行させるプログラムを記録し、前記表示処理は、与えられた第１点、第２点および第３点に対して、前記第１点および前記第２点のうちの少なくとも一方と前記第３点との第１の位置関係を決定するステップと、予め用意された少なくとも１つの線のパターンであって、前記第１点と前記第２点とを通る少なくとも１つの線のパターンの中から、前記決定された第１の位置関係に対応する１つの線のパターンを選択するステップと、前記選択された線のパターンに応じて、前記第１点と前記第２点とを通る線を前記表示デバイスに表示するステップとを包含し、これにより、上記目的が達成される。
【発明の効果】
【００２５】
本発明の表示装置、プログラムおよび記録媒体によれば、第１点と第２点とを通る線の軌道を計算によって求めることなく、第１点と第２点とを通る少なくとも１つの線のパターンの中から、決定された位置関係に対応する１つの線のパターンを選択することによって、第１点と第２点とを通る線を表示できる。したがって、複雑な計算が必要とされる第１点と第２点とを通る線の軌道の計算を行う必要がなく、第１点と第２点とを通る線を高速に表示できる。
【００２６】
本発明では、第１点と第２点とを通る線のパターンと３点の位置関係との対応を示すテーブルを利用して、３点を結ぶ曲線を描画する。したがって、テーブルの読み出しのみで曲線の描画が可能となり、複雑な演算が発生しない。その結果、第１点と第２点とを通る線を高速に描画できる。
【００２７】
さらに、第１点と第２点とを通る直線と第２点と第３点とを通る直線との角度を分類し、テーブル化する。その結果、容量を少なくできる。
【００２８】
さらに、第２点が第１象限にある場合のみ、第１点と第２点とを通る直線と第２点と第３点とを通る直線の角度の分類とテーブル化とを行う。したがって、３点の位置の組み合わせを減らすことができる。その結果、さらに容量を少なくできる。
【発明を実施するための最良の形態】
【００２９】
１．本発明の原理
以下、図を参照して、本発明の原理を説明する。
【００３０】
本発明は、曲線を描画する際に、３点を結ぶ曲線に注目し、第１点と第２点とを通る少なくとも１つの線のパターンの中から、決定された位置関係に対応する１つの線のパターンを選択することによって、第１点と第２点とを通る線を表示できる。第１点と第２点とを通る線の軌跡を計算することなく、第１点と第２点とを通る線のパターンを選択することによって、第１点と第２点とを通る線を高速で表示できる。
【００３１】
また、位置関係と線のパターンとの対応関係を示すパターン情報を保持する保持部をさらに備え、線のパターンの選択は、保持部に保持されているパターン情報を参照して行う。パターン情報をテーブルで表し、このテーブルに基づいて曲線を描画する。
【００３２】
パターン情報をテーブルで表し、これらのテーブルに基づいて曲線を描画する理由を以下に示す。
【００３３】
第１点は、原点（０，０）とする。第２点は、第１点からのｘ方向の距離の増減およびｙ方向の距離の増減が±ｄ以内であるとする。第３点は、第２点からのｘ方向の距離の増減およびｙ方向の距離の増減が±ｄ以内であるとする。
【００３４】
これらの場合には、第１点と第２点との組み合わせは（２ｄ＋１）×（２ｄ＋１）通りである。第２点と第３点の組み合わせも（２ｄ＋１）×（２ｄ＋１）通りである。したがって、３点の組み合わせは、（２ｄ＋１）４通りである。このように、３点の位置の組み合わせは、ｄに応じて劇的に増加する。例えば、ｄ＝５である場合には、１４，６４１通りであるが、ｄ＝１０である場合には、１９４４８１通りであり、ｄ＝２０である場合には、２８２５７６１通りである。文字表示装置に格納可能なデータの容量には限界があるため、３点の位置の組み合わせが多い場合には、これらの組み合わせをテーブルで表し、これらのテーブルを文字表示装置に格納することは、困難である。
【００３５】
上述のように、本発明は、２つの異なった曲線(第１曲線、第２曲線）を表示する場合でも、第１曲線の第１点および第２点と第２曲線の第１点および第２点とが同じであり、第１曲線の第１点と第２点とを通る直線と第１曲線の第２点と第３点とを通る直線との角度と、第２曲線の第１点と第２点とを通る直線と第２曲線の第２点と第３点とを通る直線との角度とが所定の値より近い場合には、第１点と第２点とを通る線のパターンは、同じパターンにしても、第１曲線と第２曲線とを観る者には違和感がないことに着目する。
【００３６】
図１は、３点を通る曲線の一例を示す。
【００３７】
この曲線は、第１点（０，０）、第２点（７，４）、第３点（１０，１０）を通る。図１において、黒塗りの点は、これらの３点であり、ハッチの多い点は、第１点と第２点とを通る線に含まれる点であり、ハッチの少ない点は、第２点と第３点とを通る線に含まれる点である。また第１点と第２点とを通る直線と、第２点と第３点とを通る直線とが示されている。
【００３８】
図２は、３点を通る曲線の別の一例を示す。
【００３９】
この曲線は、第１点（０，０）、第２点（７，４）、第３点（１３，１６）を通る。第１点（０，０）および第２点（７，４）は、図１の第１点および第２点と同じであり、第３点（１３，１６）は、図１の第２点と第３点とを通る直線の延長上の点である。
【００４０】
図１の線のパターンと図２の線のパターンとを比較した場合、第２点と第３点とを通る線のパターンは異なるが、第１点と第２点とを通る線のパターンは同じである。
【００４１】
図３は、３点を通る曲線の更に別の一例を示す。
【００４２】
この曲線は、第１点（０，０）、第２点（７，４）、第３点（１２，１７）を通る。第１点（０，０）および第２点（７，４）は、図２の第１点および第２点と同じであり、第３点（１２，１７）は、図２の第３点の左上の点である。図２の第１点と第２点とを通る直線と第２点と第３点とを通る直線との角度と、図３の第１点と第２点とを通る直線と第２点と第３点とを通る直線との角度は、近くなっている。
【００４３】
図２の線のパターンと図３の線のパターンとを比較した場合、第２点と第３点とを通る線のパターンは異なるが、第１点と第２点とを通る線のパターンは同じである。
【００４４】
図４は、３点を通る曲線の更に別の一例を示す。
【００４５】
この曲線は、第１点（０，０）、第２点（７，４）、第３点（１４，１６）を通る。第１点（０，０）および第２点（７，４）は、図２の第１点および第２点と同じであり、第３点（１４，１６）は、図２の第３点の右下の点である。
【００４６】
図２の線のパターンと図４の線のパターンとを比較した場合、第２点と第３点とを通る線のパターンは異なるが、第１点と第２点とを通る線のパターンは同じである。
【００４７】
図１〜図４を参照して説明したように、異なった曲線を描画する場合に第１点と第２点とを通る線のパターンを同じにしても、曲線を観る者には違和感が生じない。
【００４８】
図５は、３点を通る曲線の更に別の一例を示す。この曲線は、第１点（０，０）、第２点（７，４）、第３点（５，１２）を通る。
【００４９】
図６は、３点を通る曲線の更に別の一例を示す。この曲線は、第１点（０，０）、第２点（７，４）、第３点（１４，６）を通る。
【００５０】
図５および図６で示された第１点（０，０）、第２点（７，４）は、図１〜図４で示された第１点、第２点と同じであるが、第１点と第２点とを通る直線と、第２点と第３点とを通る直線の角度が図１〜図４で示された角度と大きく異なっており、第１点と第２点とを通る線の軌跡は図１〜図４と異なる。
【００５１】
図７は、第２点の周囲に割り当てられた領域１〜領域２８を示す。
【００５２】
領域１〜領域２８は、第２点の周囲の領域を２８等分割することによって割り当てられる。同じ領域に第３点がある場合には、第１点と第２点とを通る線のパターンを同じにすることで、３点の組み合わせを少なくする。例えば、第１曲線では、第３点が領域１内の位置Ａにあり、第２曲線では、第３点が領域１内であって、位置Ａとは異なる位置Ｂにある場合には、第１曲線の第１点と第２点とを通る線のパターンと第２曲線の第１点と第２点とを通る線のパターンとを同じにする。
【００５３】
第２点の周囲に領域１〜領域２８が割り当てられ、第１点が原点（０，０）、第２点が（Ｘ，Ｙ）（Ｘ≦±ｄ、Ｙ≦±ｄ：第１点からのｘ方向の距離およびｙ方向の距離の増減が±ｄ以内）である場合には、第３点の位置は、領域１〜領域２８の何れかである。したがって、３点の組み合わせは、（２ｄ＋１）２×２８通りである。
【００５４】
さらに、第２点が第１象限にある場合のみ、位置関係と線のパターンとの対応関係を示すテーブルを生成し、第２点が第１象限以外の象限にある場合、このテーブルを利用して位置関係と線のパターンとの対応関係を求めることによって、テーブルの数を減らすことが可能である。
【００５５】
第２点が第１象限にある場合のみ、第１点と第２点とを通る直線と第２点と第３点とを通る直線との角度と第１点と第２点とを通る曲線のパターンとの対応関係をテーブルで表す。第２点が第２象限にある場合はｙ軸に対する対称性を考慮し、第２点が第３象限にある場合は原点に対する対称性を考慮し、第２点が第４象限にある場合にはｘ軸に対する対称性を考慮する。この場合、３点の組み合わせは、（ｄ＋１）２×２８通りである。例えば、ｄ＝５である場合には、組み合わせは１００８通り、ｄ＝１０である場合には、組み合わせは３３８８通り、ｄ＝２０である場合には、組み合わせは１２３４８通りであり、これらの組み合わせを表したテーブルを格納するために必要な容量を小さくできる。
【００５６】
なお、第２点の周囲に割り当てる領域は、２８分割に限定されない。分割数は任意である。分割数を増やすとテーブルの容量は増えるが、曲線の品位を上げることが可能である。また均等な分割に限定されない。角度の浅いところでは、細かく分割し、角度が深いところでは荒く分割してもよい。
【００５７】
図２８は、第２点の周囲に割り当てられた領域の一例を示す。
【００５８】
図２８（ａ）は、大きさが異なる複数の領域（分割形態１）を示す。
【００５９】
第２点の周囲には、複数の領域１〜領域８が割り当てられている。第３点は、領域２に与えられている。例えば、領域１と領域４とは異なった大きさである。
【００６０】
図２８（ｂ）は、第２点の周囲の一部のみに割り当てられた領域（分割形態２）を示す。
【００６１】
第２点の周囲には、複数の領域１〜領域５が割り当てられている。しかし、それ以外の部分（斜線部分）には、領域が割り当てられていない。
【００６２】
表示対象に応じて、第２点の周囲の分割形態を選択できる。例えば、漢字を表示する場合には、分割形態１を選択する。カタカナを表示する場合には、分割形態２を選択する。なお、「表示対象」とは、表示デバイスに表示される対象を意味する。例えば、文字（漢字、平仮名、カタカナ、アルファベットなど）、図形、記号である。
【００６３】
以下、図を参照して本発明の実施の形態を説明する。
【００６４】
２．文字表示装置
図８は、本発明の実施の形態の文字表示装置１００の構成を示す。
【００６５】
文字表示装置１００は、例えばパーソナルコンピュータであり得る。パーソナルコンピュータとしては、デスクトップ型、ラップトップ型などの任意のタイプのコンピュータが使用され得る。あるいは、文字表示装置は、ワードプロセッサであってもよい。
【００６６】
さらに、文字表示装置は、表示デバイスを備えた電子機器、情報機器など任意の情報表示端末であり得る。例えば、文字表示装置は、液晶表示デバイスを備えた電子機器、形態情報ツールである携帯情報端末、ＰＨＳを含む携帯電話または一般の電話機／ＦＡＸなどの通信機器であってもよい。
【００６７】
文字表示装置１００は、入力デバイス１０と、線を表示する表示デバイス３０と、表示デバイス３０を制御する制御部２０と、補助記憶装置４０とを含む。
【００６８】
入力デバイス１０は、表示デバイス３０に表示すべき文字を表す情報を制御部２０に入力するために使用される。文字を表す情報は、例えば、文字を認識するコードと文字の大きさを示すサイズ情報とを含む。
【００６９】
入力デバイス１０としては、コードとサイズを入力することが可能な任意のタイプの入力デバイスが使用され得る。キーボード、マウスまたはペン入力装置などの入力デバイスが使用され得る。文字表示装置１００が携帯電話である場合には、通信先の電話番号を指定するための数字キーがコードやサイズを入力するために用いられてもよい。文字表示装置１００がインターネットを含む通信回線に接続するための手段を備えている場合には、その通信回線から受信した電子メールに含まれるメッセージが表示デバイス３０に表示されてもよい。この場合には、その通信回線に接続するための手段が、入力デバイス１０として機能する。
補助記憶装置４０には、文字表示プログラム４１と、プログラムを実行するために必要な文字データ４２、直線テーブル４３および曲線テーブル４４が格納されている。
【００７０】
文字表示プログラム４１は、表示デバイスに出力するサイズに合わせて文字データ４２をスケーリングするスケーリングプログラム４１ａと、スケーリングされた結果を量子化する量子化プログラム４１ｂと、量子化された結果が表示デバイスに表示可能になるように量子化された結果を描画データ化する描画データ化プログラム４１ｃとを含む。
【００７１】
補助記憶装置４０としては、文字表示プログラム４１、文字データ４２、直線テーブル４３および曲線テーブル４４を格納することが可能な任意のタイプの補助記憶装置が使用され得る。補助記憶装置４０において、文字表示プログラム４１、文字データ４２、直線テーブル４３および曲線テーブル４４を格納する記憶媒体としては、任意の記録媒体が使用され得る。例えば、ハードディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＭＯ、ＤＶＤ、ＩＣカードが好適に使用され得る。
【００７２】
なお、文字表示プログラム４１、文字データ４２、直線テーブル４３および曲線テーブル４４は、補助記憶装置４０に備えられた記録媒体に格納されることに限定しない。例えば、文字表示プログラム４１、文字データ４２、直線テーブル４３および曲線テーブル４４は、主メモリ２２に格納されてもよいし、ＲＯＭ（図示せず）に格納されてもよい。ＲＯＭは、例えばマスクＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、フラッシュＲＯＭであり得る。これらのデータをＲＯＭに格納する場合には、そのＲＯＭを交換するだけでいろいろな処理のバリエーションを容易に実現することができる。例えば、ＲＯＭは、文字表示装置が携帯型の情報端末または携帯電話である場合に好適に適用されうる。
【００７３】
さらに、文字表示プログラム４１、文字データ４２、直線テーブル４３および曲線テーブル４４は、上記ディスクやカードなどの記憶装置や半導体メモリなどのようにプログラムやデータを固定的に保持する記憶媒体に保持され得る。文字表示装置がインターネットを含む通信回線に接続するための手段を備えている場合には、その通信回線から文字表示プログラム４１、文字データ４２、直線テーブル４３および曲線テーブル４４の少なくとも一部をダウンロードすることが出来る。この場合、ダウンロードに必要なローダープログラムは、ＲＯＭ（図示せず）に予め格納されていてもよいし、補助記憶装置４０から制御部２０にインストールされてもよい。
【００７４】
制御部２０は、ＣＰＵ２１と主メモリ２２とを含む。
【００７５】
ＣＰＵ２１は、文字表示装置の全体を制御および監視するとともに、補助記憶装置４０に格納されている文字表示プログラム４１を実行する。
【００７６】
主メモリ２２は、入力デバイス１０から入力されたデータおよび出力デバイス３０に表示するためのデータや文字表示プログラム４１を実行するのに必要なデータを一時的に格納する。主メモリ２２は、ＣＰＵ２１によって制御される。
【００７７】
ＣＰＵ２１は、主メモリ２２に格納された各種のデータに基づいて文字表示プログラム４１を実行することにより、描画データを生成する。生成された描画データは、主メモリ２２にいったん格納された後、表示デバイス３０に出力される。描画データが表示デバイス３０に出力されるタイミングは、ＣＰＵ２１によって制御される。
【００７８】
図９は、文字データ４２の一例を示す。具体的には、図９に示された文字データは、文字「大」のベクトルデータであり、２５６メッシュの解像度を有する。図９に示された文字データは、複数の座標データを含む。
【００７９】
ラインＮｏは、文字「大」を構成するラインに付された番号である。Ｘは、文字「大」を構成するライン上の点のＸ座標値を示す。Ｙは、文字「大」を構成するライン上の点のＹ座標値を示す。
【００８０】
文字「大」は、３本のラインでを構成されている。３本のラインの各々は、位置を表す座標データを複数有する。ラインＮｏ１は、（８，１８４）と（２４７，１８４）との２点を結び、ラインＮｏ２は、（１２７，２４６）、（１２７，１８１）、（１０３，１０６）、（６１，４９）および（１１，１４）の５点を結び、ラインＮｏ３は、（１２７，１８１）、（１４４，１２７）、（１７６，７３）、（２０８，４０）および（２４６，１４）を結ぶ。
【００８１】
図１０は、文字データ４２の表示の一例である。具体的には、図９に示された文字データの表示である。
【００８２】
図１１は、直線テーブル４３の一例を示す。直線テーブル４３は、補助記憶装置４０に格納されている（図８参照）。
【００８３】
「ｉｎｄｅｘ」は、テーブルのレコード番号を示し、「（ｄｘ，ｄｙ）」は第１点からのｘ方向の増加分およびｙ方向の増加分を示す。
【００８４】
本実施例では、ｘ方向の増加およびｙ方向の増加は２０以内であるが、ｘ方向の増加およびｙ方向の増加は２０以内に限らない。ｘ方向の増加およびｙ方向の増加は、任意である。
【００８５】
「制御列」は、「０」と「１」とで表される。ｄｘ≧ｄｙの場合には、ｘ方向に１増加した場合のｙの増加分を「０」および「１」で示す。「０」は、ｘ方向に１増加した場合にはｙ方向の増加は０であることを示し、「１」は、ｘ方向に１増加した場合にはｙ方向の増加は１であることを示す。
【００８６】
例えば、（ｄｘ，ｄｙ）＝（１，２）の場合には、制御列は｛０，１｝である。この制御列｛０，１｝は、第１点からｘ方向に１増加した場合には、ｙ方向の増加は０であり、次にｘ方向に１増加した場合には、ｙ方向の増加が１であることを示す。この制御列によって表される線のパターンは、第１点と第２点とを通る線のパターンを示す。
【００８７】
図１２は、曲線テーブル４４の一例を示す。曲線テーブル４４は、補助記憶装置４０に格納されている（図８参照）。
【００８８】
図１３は、制御列が有する値を示す。
【００８９】
「ｉｎｄｅｘ」は、テーブルのレコード番号を示し、「（ｄｘ、ｄｙ）」は第１点からのｘ方向の増加分およびｙ方向の増加分を示す。
【００９０】
本実施例では、ｘ方向の増加およびｙ方向の増加が１５以内であるが、ｘ方向の増加およびｙ方向の増加は１５以内に限らない。ｘ方向の増加およびｙ方向の増加は、任意である。曲線テーブルのｘ方向の増加およびｙ方向の増加の範囲が直線テーブルのｘ方向の増加およびｙ方向の増加の範囲より小さいのは、一般に、文字が有する曲線の２点間の距離は、文字が有する直線の２点間の距離より小さいからである。
【００９１】
「角度」は、第３点が領域１〜２８の何れにあるかを示す（図７参照）。
【００９２】
「制御列」は、「０」〜「７」で表される（図１３参照）。「０」は第２点に対して右への移動を示し、「１」は右上への移動を示し、「２」は上への移動を示し、「３」は左上への移動を示し、「４」は左への移動を示し、「５」は左下への移動を示し、「６」は下への移動を示し、「７」は右下への移動を示す。例えば（ｄｘ，ｄｙ）＝（７，４）で、第３点が領域２にある場合には、制御列は｛０，０，１，０，１，１，１｝である（図１２参照）。この制御列は、第１点からの移動が右、右、右上、右、右上、右上、右上であることを示す。この移動によって表される線のパターンは、３点が第１点（０，０）、第２点（７，４）、第３点（１０，１０）である場合の第１点と第２点とを通る線のパターンを示す（図１参照）。
【００９３】
図１２を参照して説明したように、曲線テーブル４４に含まれる情報は、第２点と第３点との位置関係と線のパターンとの対応関係を示す。この曲線テーブル４４は、予め補助記憶装置４０に用意されている。
【００９４】
なお、曲線テーブル４４に含まれる「制御列」によって表される線のパターンは、曲線に限らない。「制御列」によって表される線のパターンは、直線であり得る。このような制御列は、例えば、｛１，１，１，１｝である。
【００９５】
以上、図１〜図１３および図２８を参照して、本発明の実施の形態の文字表示装置１００を説明した。
【００９６】
例えば、図１〜図１３および図２８の例では、表示デバイス３０が「線を表示する表示デバイス」に対応し、制御部２０が「表示デバイスを制御する制御部」、「与えられた第１点、第２点および第３点に対して、第１点および第２点のうちの少なくとも一方と第３点との第１の位置関係を決定する制御部」、「予め用意された少なくとも１つの線のパターンであって、第１点と第２点とを通る少なくとも１つの線のパターンの中から、決定された第１の位置関係に対応する１つの線のパターンを選択する制御部」および「選択された線のパターンに応じて、第１点と第２点とを通る線を表示デバイスに表示する制御部」に対応する。さらに、直線テーブル４２および曲線テーブル４４を記憶する補助記憶装置４０が「第１の位置関係と線のパターンとの対応関係を示すパターン情報を保持する保持部」に対応する。
【００９７】
しかし、図１〜図１３および図２８に示される実施の形態は、本発明の文字表示装置の機能の一例を示したに過ぎない。上述した各手段の機能が達成される限りは、任意の構成を有する文字表示装置が本発明の範囲内に含まれ得る。
【００９８】
例えば、直線テーブル４２および曲線テーブル４４が表示装置の外部から表示装置に入力されてもよい。例えば、ネットワークを介して表示装置と結ばれた保持部に直線テーブル４２および曲線テーブル４４が保持されている場合には、直線テーブル４２および曲線テーブル４４が表示装置の外部から表示装置に入力される。
【００９９】
例えば、上述した各手段は、ハードウェアによって実現されてもよいし、ソフトウェアによって実現されてもよいし、ハードウェアとソフトウェアとによって実現されてもよい。
【０１００】
例えば、文字表示装置には、文字表示処理手順を実行させるためのプログラム（以下、文字表示処理プログラムという）が格納されている。文字表示処理プログラムは、コンピュータの出荷時に、文字表示装置に含まれるプログラム格納手段に予め格納されていてもよい。
【０１０１】
あるいは、コンピュータの出荷後に、文字表示処理プログラムをプログラム格納手段に格納するようにしてもよい。例えば、ユーザがインターネット上の特定のウェブサイトから文字表示処理プログラムを有料または無料でダウンロードし、そのダウンロードされたプログラムをコンピュータにインストールするようにしてもよい。文字表示処理プログラムがフレキシブルディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭなどのコンピュータ読み取り可能な記録媒体に記録されている場合には、入力装置(例えば、ディスクドライブ装置)を用いて文字表示処理プログラムをコンピュータにインストールするようにしてもよい。インストールされたプログラムは、プログラム格納手段に格納される。
【０１０２】
なお、文字表示処理手順の詳細は、後述される。
【０１０３】
図１〜図１３および図２８を参照して説明したように、本発明の表示装置によれば、第１点と第２点とを通る線の軌道を計算によって求めることなく、第１点と第２点とを通る少なくとも１つの線のパターンの中から、決定された位置関係に対応する１つの線のパターンを選択することによって、第１点と第２点とを通る線を表示できる。したがって、複雑な計算が必要とされる第１点と第２点とを通る線の軌道の計算を行う必要がなく、第１点と第２点とを通る線を高速に表示できる。
【０１０４】
本発明では、第１点と第２点とを通る線のパターンと３点の位置関係との対応を示すテーブルを利用して、３点を結ぶ曲線を描画する。したがって、テーブルの読み出しのみで曲線の描画が可能となり、複雑な演算が発生しない。その結果、第１点と第２点とを通る線を高速に描画できる。
【０１０５】
さらに、第１点と第２点とを通る直線と第２点と第３点とを通る直線との角度を分類し、テーブル化する。その結果、容量を少なくできる。
【０１０６】
さらに、第２点が第１象限にある場合のみ、第１点と第２点とを通る直線と第２点と第３点とを通る直線の角度の分類とテーブル化とを行う。したがって、３点の位置の組み合わせを減らすことができる。その結果、さらに容量を少なくできる。
【０１０７】
３．表示方法
図１４は、文字表示処理手順を示す。ＣＰＵ１２１が文字表示プログラム１４１を実行することによって、文字表示処理が行われる。
【０１０８】
以下、図８および図１４を参照して文字表示処理手順をステップごとに説明する。
【０１０９】
ステップＳ１０１：入力デバイス１０から入力された指示に従って、文字データ４２から指定の文字を表す文字データが読み込まれる。例えば、読み込まれる文字データは、複数の座標データを含む（図９参照）。
【０１１０】
ステップＳ１０２：読み込まれた文字データに含まれた座標データが出力サイズに適合するようにスケーリングされる。出力サイズがｎドットである場合には、座標データ（ｘ，ｙ）は所定の計算によってスケーリングされ、スケール化データ（Ｘ，Ｙ）に変更される。所定の計算は、Ｘ＝（ｎ−１）×ｘ／２５５、Ｙ＝（ｎ−１）×ｙ／２５５である。
【０１１１】
例えば、出力サイズが３６ドットである場合には、座標データ（ｘ，ｙ）（図９参照）は所定の計算によってスケーリングされ、スケール化データ（図２２参照）に変更される。
【０１１２】
ステップＳ１０３：スケール化データは量子化され、量子化データに変更される。例えば、量子化する方法として、四捨五入がある。例えば、座標データ（ｘ，ｙ）（図９参照）が所定の計算によってスケーリングされ、さらに量子化されることによって、量子化データに変更される（図２２参照）。
【０１１３】
なお、量子化する方法は、四捨五入に限定されない。本願と同出願人による出願（特願２００３−１３７９１８号明細書）には、量子化する他の方法が開示されている。開示された方法には、量子化誤差を抑える方法が含まれる。
【０１１４】
ステップＳ１０４：直線テーブル４３および曲線テーブル４４を参照して、量子化データから描画データを求める。
【０１１５】
ステップＳ１０５：描画データに基づいて、イメージを表示デバイス３０に表示する。
【０１１６】
イメージを表示デバイス３０に表示した後、処理は終了する。
【０１１７】
図１５は、ステップＳ１０４で実行される描画データ化処理手順を示す。
【０１１８】
以下、図１５を参照して描画データ化処理手順をステップごとに説明する。
【０１１９】
ステップＳ２０１：量子化データが取り出される。例えば、文字「大」の場合には、呼び出されたラインＮｏに対応する量子化データが取り出される（図２２参照）。最初にラインＮｏ．１が呼び出され、対応する量子化データ（（１，２５）、（３４，２５））が取り出される。次に、ラインＮｏ２が呼び出され、対応する量子化データ（（１７，３４）、（１７，２５）、（１４，１５）、（８，７）、（２，２））が取り出される。最後に、ラインＮｏ．３が呼び出され、対応する量子化データ（（１７，２５）、（２０，１７）、（２４，１０）、（２９，５）、（３４，２））が取り出される。
【０１２０】
ステップＳ２０２：呼び出されたラインＮｏに対応する量子化データに３点以上の座標点が含まれるか否かが判定される。
【０１２１】
３点以上の座標点が含まれると判定された場合（Ｙｅｓ）には、処理は、ステップＳ２０４に進む。３点以上の座標点が含まれないと判定された場合（Ｎｏ）には、処理は、ステップＳ２０３に進む。
【０１２２】
ステップＳ２０３：呼び出されたラインＮｏによって示されるラインが直線で描画されるように描画データが求められる。直線テーブル４３を参照して、量子化データから描画データが求められる。
【０１２３】
ステップＳ２０４：呼び出されたラインＮｏによって示されるラインが曲線で描画されるように描画データが求められる。曲線テーブル４４を参照して、量子化データから描画データが求められる。
【０１２４】
ステップＳ２０５：呼び出すべきラインがあるか否かを判定する。
【０１２５】
呼び出すべきラインがあると判定された場合（Ｙｅｓ）には、処理は、ステップＳ２０１に進む。呼び出すべきラインがないと判定された場合（Ｎｏ）には、処理は終了する。
【０１２６】
図１６は、ステップＳ２０３で実行される直線描画処理手順を示す。
【０１２７】
以下、図１６を参照して直線描画処理手順をステップごとに説明する。
【０１２８】
ステップＳ３０１：与えられた２点の座標点（ｘ１，ｙ１）、（ｘ２，ｙ２）の次の値を求める。ｄｘ←ａｂｓ（ｘ２−ｘ１）によって、ｘ１とｘ２との距離ｄｘを求め、ｄｙ←ａｂｓ（ｙ２−ｙ１）によって、ｙ１とｙ２との距離ｄｙを求める。
【０１２９】
なお、関数ａｂｓ（ｔ）はｔの絶対値を示す。
【０１３０】
さらに、描画位置を示す変数を（ｘ，ｙ）で表した場合、ｘ←ｘ１およびｙ←ｙ１は第１点を描画開始位置に設定する処理を示す。
【０１３１】
ステップＳ３０２：第１点（ｘ，ｙ）を描画データ化する。
【０１３２】
ステップＳ３０３：直線テーブル４３から制御列を取得する。直線テーブルへのアクセスは、次の計算で行われる。
【０１３３】
テーブルの範囲をｎとすると、直線テーブル４３のうちの（（ｎ＋１）×ｄｙ＋ｄｘ＋１）番目の制御列を取得する。本実施例ではテーブルの範囲を２０としているので、（（２０＋１）×ｄｙ＋ｄｘ＋１）番目の制御列を取得する。
【０１３４】
ステップＳ３０４：ｘ１およびｘ２のうちどちらが大きいかを判定する。
【０１３５】
ｘ２がｘ１以上であると判定された場合（Ｙｅｓ）には、処理はステップＳ３０５に進む。ｘ２がｘ１より小さいと判定された場合（Ｎｏ）には、処理はステップＳ３０６に進む。
【０１３６】
ステップＳ３０５：変数ｉｎｃｘに値「１」をセットする。変数ｉｎｃｘによって、ｘ方向の増減が制御される。
【０１３７】
ステップＳ３０６：変数ｉｎｃｘに値「−１」をセットする。変数ｉｎｃｘによって、ｘ方向の増減が制御される。
【０１３８】
ステップＳ３０７：ｙ１およびｙ２のうちどちらが大きいかを判定する。
【０１３９】
ｙ２がｙ１以上であると判定された場合（Ｙｅｓ）には、処理はステップＳ３０８に進む。ｙ２がｙ１より小さいと判定された場合（Ｎｏ）には、処理はステップＳ３０９に進む。
【０１４０】
ステップＳ３０８：変数ｉｎｃｙに値「１」をセットする。変数ｉｎｃｙによって、ｙ方向の増減が制御される。
【０１４１】
ステップＳ３０９：変数ｉｎｃｙに値「−１」をセットする。変数ｉｎｃｙによって、ｙ方向の増減が制御される
ステップＳ３１０：ｄｘおよびｄｙのうちどちらが大きいかを判定する。
【０１４２】
ｄｘがｄｙ以上であると判定された場合（Ｙｅｓ）には、処理はステップＳ３１１に進む。ｄｘがｄｙより小さいと判定された場合（Ｎｏ）には、処理はステップＳ３１４に進む。
【０１４３】
ステップＳ３１１：制御列が終わりか否かが判定される。制御列が終わりであると判定された場合（Ｙｅｓ）には、処理は終了する。制御列が終わりでないと判定された場合（Ｎｏ）には、処理はステップＳ３１２に進む。
【０１４４】
ステップＳ３１２：（ｘ，ｙ）の次の点を計算する。具体的はｘにｘの増減を制御するｉｎｃｘの値を加え（ｘの次の値＝ｘ＋ｉｎｃｘ）、ｙにｙの増減を制御するｉｎｃｙに制御列の値（Δｙ）を掛けた値を加える（ｙの次の値＝ｙ＋ｉｎｃｙ×Δｙ）。
【０１４５】
ステップＳ３１３：（ｘ＋ｉｎｃｘ）および（ｙ＋ｉｎｃｙ×Δｙ）を描画データ化する。具体的には、点（ｘ＋ｉｎｃｘ，ｙ＋ｉｎｃｙ×Δｙ）をプロットする。その後、処理はステップＳ３１１に進む。
【０１４６】
ステップＳ３１４：制御列が終わりか否かが判定される。制御列が終わりであると判定された場合（Ｙｅｓ）には、処理は終了する。制御列が終わりでないと判定された場合（Ｎｏ）には、処理はステップＳ３１５に進む。
【０１４７】
ステップＳ３１５：（ｘ，ｙ）の次の点を計算する。具体的はｘにｘの増減を制御するｉｎｃｘに制御列の値（Δｘ）を掛けた値を加え（ｘの次の値＝ｘ＋ｉｎｃｘ×Δｘ）、ｙにｙの増減を制御するｉｎｃｙの値を加える（ｙの次の値＝ｙ＋ｉｎｃｙ）。
【０１４８】
ステップＳ３１６：（ｘ＋ｉｎｃｘ×Δｘ）および（ｙ＋ｉｎｃｙ）を描画データ化する。具体的には、点（ｘ＋ｉｎｃｘ×Δｘ，ｙ＋ｉｎｃｙ）をプロットする。その後、処理はステップＳ３１４に進む。
【０１４９】
図１７は、ステップＳ２０４で実行される曲線描画処理手順を示す。
【０１５０】
以下、図１７を参照して曲線描画処理手順をステップごとに説明する。
【０１５１】
ステップＳ４０１：与えられた座標点から３点を取り出す。例えば、与えられた座標点が５点（（ａ１，ｂ１）、（ａ２，ｂ２）、（ａ３，ｂ３）、（ａ４，ｂ４）、（ａ５，ｂ５））である場合には、最初の呼び出しでは（ａ１，ｂ１）、（ａ２，ｂ２）、（ａ３，ｂ３）の３点が取り出され、次の呼び出しでは（ａ２，ｂ２）、（ａ３，ｂ３）、（ａ４，ｂ４）が取り出される。このように連続した３点を１点ずつ、ずらしながら取り出す。
【０１５２】
ステップＳ４０２：取り出された３点の座標点（ｘ１，ｙ１）、（ｘ２，ｙ２）、（ｘ３，ｙ３）の次の値を求める。ｄｘ←ａｂｓ（ｘ２−ｘ１）によって、ｘ１とｘ２の距離ｄｘを求め、ｄｙ←ａｂｓ（ｙ２−ｙ１）によって、ｙ１とｙ２との距離ｄｙを求める。
【０１５３】
さらに、描画位置を示す変数を（ｘ，ｙ）で表した場合、ｘ←ｘ１およびｙ←ｙ１は、第３点のうち第１点を描画開始位置に設定する処理を示す。
【０１５４】
ステップＳ４０３：取り出された３点の内、第１点（ｘ，ｙ）を描画データ化する。
【０１５５】
ステップＳ４０４：第１点と第２点とを通る直線と第２点と第３点とを通る直線との角度から角度パターンを求める。
【０１５６】
角度パターンａ＝ｒｏｕｎｄ（（（Θ２−Θ１）×２８）／（２×Π））として計算できる。
【０１５７】
ここで、角度Θ１は、第１点と第２点とを通る直線とｘ軸との角度（Θ１＝ｔａｎ−１（（ｙ２−ｙ１）／（ｘ２−ｘ１）））であり、角度Θ２は、第２点と第３点とを通る直線とｘ軸との角度（Θ２＝ｔａｎ−１（（ｙ３−ｙ２）／（ｘ３−ｘ２）））である。
【０１５８】
関数ｒｏｕｎｄ（ｔ）は、ｔの四捨五入を示す。ｔａｎ−１の計算は処理が複雑であるが、本発明の場合、最終的に２８分割された何れかの角度パターンに当てはめればよいもので、精度の要求は高くない。したがって、ｔａｎ−１の引数を何パターンかに分類したテーブルを用いて、ｔａｎ−１の計算を高速化することも可能である。
【０１５９】
なお、ｔａｎ−１の引数とｔａｎ−１の値との対応を示すテーブルを用いてｔａｎ−１の計算を高速化する手法の詳細は、後述される。
【０１６０】
以上、ステップＳ４０１〜ステップＳ４０４を参照して説明したように、ステップＳ４０１〜ステップＳ４０４を実行することによって、与えられた第１点、第２点および第３点に対して、第１点および第２点のうちの少なくとも一方と第３点との位置関係が決定される。
【０１６１】
ステップＳ４０５：曲線テーブル４４から制御列を取得（選択）する。曲線テーブルへのアクセスは、次の計算で行われる。
【０１６２】
テーブルの範囲をｎ、分割数をｔ、角度パターンをａとすると、曲線テーブル４４のうちの（（ｎ＋１）×ｔ×ｄｙ＋ｔ×ｄｘ＋ａ）番目の制御列を取得する。本実施例ではテーブルの範囲を１５とし、分割数を２８としているので、（（１５＋１）×２８×ｄｙ＋２８×ｄｘ＋ａ）番目の制御列を取得する。
【０１６３】
ステップＳ４０５を参照して説明したように、ステップＳ４０５を実行することによって、第２点と第３点との位置関係と線のパターンとの対応関係を示す情報が含まれた曲線テーブル４４から、所望の線のパターンを示す制御列が選択される。
【０１６４】
ステップＳ４０６：ｘ１およびｘ２のうちどちらが大きいかを判定する。
【０１６５】
ｘ２がｘ１以上であると判定された場合（Ｙｅｓ）には、処理はステップＳ４０７に進む。ｘ２がｘ１より小さいと判定された場合（Ｎｏ）には、処理はステップＳ４０８に進む。
ステップＳ４０７：ｙ１およびｙ２のうちどちらが大きいかを判定する。
【０１６６】
ｙ２がｙ１以上であると判定された場合（Ｙｅｓ）には、処理はステップＳ４０９に進む。ｙ２がｙ１より小さいと判定された場合（Ｎｏ）には、処理はステップＳ４１０に進む。
ステップＳ４０８：ｙ１およびｙ２のうちどちらが大きいかを判定する。
【０１６７】
ｙ２がｙ１以上であると判定された場合（Ｙｅｓ）には、処理はステップＳ４１１に進む。ｙ２がｙ１より小さいと判定された場合（Ｎｏ）には、処理はステップＳ４１２に進む。
【０１６８】
ステップＳ４０９：第１点を原点とした場合に、第２点が第１象限にある場合の第１象限描画をする。
【０１６９】
ステップＳ４１０：第１点を原点とした場合に、第２点が第２象限にある場合の第２象限描画をする。
【０１７０】
ステップＳ４１１：第１点を原点とした場合に、第２点が第３象限にある場合の第３象限描画をする。
【０１７１】
ステップＳ４１２：第１点を原点とした場合に、第２点が第４象限にある場合の第４象限描画をする。
【０１７２】
ステップＳ４１３：フラグがセットされているかを判定する。フラグがセットされていると判定された場合（Ｙｅｓ）には、処理は終了する。フラグがセットされていないと判定された場合（Ｎｏ）には、処理はステップＳ４１４に進む。
【０１７３】
ステップＳ４１４：ステップＳ４０１を実行することによって取得された３点が最後の３点か否かを判定する。
【０１７４】
例えば、曲線描画処理に与えられた座標点が（ａ１，ｂ１）、（ａ２，ｂ２）、（ａ３，ｂ３）、（ａ４，ｂ４）、（ａ５，ｂ５）の５点である場合には、ステップＳ４０１で取り出された３点が最後の３点（ａ３，ｂ３）、（ａ４，ｂ４）、（ａ５，ｂ５）であるか否かを判定する。
【０１７５】
最後の３点であると判定された場合（Ｙｅｓ）には、処理はステップＳ４１５に進む。最後の３点でないと判定された場合（Ｎｏ）には、処理はステップＳ４０１に進む。
【０１７６】
ステップＳ４１５：フラグをセットし、３点を逆にセットする。
【０１７７】
例えば、最後の３点が（ａ３，ｂ３）、（ａ４，ｂ４）、（ａ５，ｂ５）の順にセットされている場合には、最後の３点を（ａ５，ｂ５）、（ａ４，ｂ４）、（ａ３，ｂ３）の順にセットするように変更する。（ａ４，ｂ４）と（ａ５，ｂ５）とが描画されなくなることを防ぐためである。
【０１７８】
順に３点を取り出し処理をする場合（ステップＳ４０１参照）において、描画されるのは、３点の内、第１点と第２点との間であり、第２点と第３点との間は描画されない。最終的に最後の区間（（ａ４，ｂ４）と（ａ５，ｂ５）との間）が描画されないのを防ぐため、最後に点（ａ３，ｂ３）と点（ａ５，ｂ５）とを入れ替え、最後の区間を描画する。
【０１７９】
なお、本実施例では、最後の３点を逆にセットしたが、「ステップ４１４の処理」を「取得された３点がラインの真ん中よりも前か否かを判定する処理」に変更してもよい。この場合には、取得された３点が真ん中より前であると判定された場合には、第１点から正順に３点を取り出し（ステップＳ４０１参照）、取得された３点が真ん中よりも前ではないと判定された場合には、最後の点から逆順に３点を取り出す。
【０１８０】
図２７は、ｔａｎ−１の値とｔａｎ−１の引数との対応を示す。ｔａｎ−１の値は、角度（度）であり、ｔａｎ−１の引数は、ｄｙ／ｄｘである。角度θは、（ｎｏ×３６０）／５６で示される。
【０１８１】
ｔａｎ−１の値とｔａｎ−１の引数との対応を示すテーブルを用いることで、ｔａｎ−１の計算を行う必要はなくなる。但し、ｔａｎ−１の値は、０〜１８０°（第１象限、第２象限のみ）であり、１８０°＜ｔａｎ−１＜３６０に対応するｔａｎ−１の引数は、計算で求める。例えば（０，０）と（１０，５）とを通る直線はｄｙ／ｄｘ＝０．５（ｄｙ＝５、ｄｘ＝１０）であるため、ｎｏ４とｎｏ５の間にあることがわかる。この実施例では小さいほうのｎｏを選ぶとすると、ｎｏ＝４になる。また（０，０）と（−１０，−５）とを通る直線はｄｙ／ｄｘ＝０．５（ｄｙ＝５、ｄｘ＝１０）であるため、ｎｏ＝４になるが、第３象限の値なので２８を加算しｎｏ＝３２とする。つまり、Θ１＝ｔａｎ−１（（ｙ２−ｙ１）／（ｘ２−ｘ１））は、第１点と第２点を通る直線と水平線との角度を求めることに相当するが、精度を下げることが許される場合には、テーブルのｎｏを求めることに置きかえることができる。
【０１８２】
（ｙ２−ｙ１）／（ｘ２−ｘ１））の値をテーブルで求めたものをｎｏ１とし、（ｙ３−ｙ２）／（ｘ３−ｘ２））の値をテーブルで求めたものをｎｏ２とすると、ａ＝ｒｏｕｎｄ（（（Θ２−Θ１）×２８）／（２×Π））の計算は、ａ＝ｒｏｕｎｄ（ａｂｓ（ｎｏ２−ｎｏ１）／２）に置き換えることが出来る。
【０１８３】
以下、図１〜図４を参照して具体的に説明する。
【０１８４】
図１は、（０，０）、（７，４）、（１０，１０）を通る曲線を示す。ｎｏ１の値は４である。（４−０）／（７−０）＝０．５７１だからである。ｎｏ２の値は９である。（１０−４）／（１０−７）＝２だからである。角度パターンａは、３である（ａ＝ｒｏｕｎｄ（ａｂｓ（９−４）／２））。
【０１８５】
図２は、（０，０）、（７，４）、（１３，１６）を通る曲線を示す。ｎｏ１の値は４である。（４−０）／（７−０）＝０．５７１だからである。ｎｏ２の値は９である。（１６−４）／（１３−７）＝２だからである。角度パターンａは、３である（ａ＝ｒｏｕｎｄ（ａｂｓ（９−４）／２））。
【０１８６】
図３は、（０，０）、（７，４）、（１２，１７）を通る曲線を示す。ｎｏ１の値は４である。（４−０）／（７−０）＝０．５７１だからである。ｎｏ２の値は１０である。（１７−４）／（１２−７）＝２．６だからである。角度パターンａは、３である（ａ＝ｒｏｕｎｄ（ａｂｓ（１０−４）／２））。
【０１８７】
図４は、（０，０）、（７，４）、（１４，１６）を通る曲線を示す。ｎｏ１の値は４である。（４−０）／（７−０）＝０．５７１だからである。ｎｏ２の値は１５である。（１４−４）／（６−７）＝−１０だからである。角度パターンａは、６である（ａ＝ｒｏｕｎｄ（ａｂｓ（１５−４）／２））。
【０１８８】
このようなにテーブルを用いる場合には、複雑な三角関数を計算することなく角度パターンを求めることができる。
【０１８９】
図１８は、ステップＳ４０９で実行される第１象限描画処理手順を示す。
【０１９０】
以下、図１８を参照して第１象限描画処理手順をステップごとに説明する。
【０１９１】
ステップＳ５０１：ステップＳ４０５で取得された制御列が終わりか否かを判定する。
【０１９２】
制御列が終わりであると判定された場合（Ｙｅｓ）には、処理は終了する。終わりでないと判定された場合（Ｎｏ）には、処理はステップＳ５０２に進む。
【０１９３】
ステップＳ５０２：制御列の値（値「０」〜「７」：図１３参照）に応じて、処理は分岐する。
【０１９４】
制御値「０」である場合には、処理はステップＳ５０３に進む。制御値「１」である場合には、処理はステップＳ５０４に進む。制御値「２」である場合には、処理はステップＳ５０５に進む。制御値「３」である場合には、処理はステップＳ５０６に進む。制御値「４」である場合には、処理はステップＳ５０７に進む。制御値「５」である場合には、処理はステップＳ５０８に進む。制御値「６」である場合には、処理はステップＳ５０９に進む。制御値「７」である場合には、処理はステップＳ５１０に進む。
【０１９５】
ステップＳ５０３：ｘ方向の値を制御するｘの値を１増加させる。処理はステップＳ５１１に進む。
【０１９６】
ステップＳ５０４：ｘ方向の値を制御するｘの値を１増加させ、ｙ方向の値を制御するｙの値を１増加させる。処理はステップＳ５１１に進む。
【０１９７】
ステップＳ５０５：ｙ方向の値を制御するｙの値を１増加させる。処理はステップＳ５１１に進む。
【０１９８】
ステップＳ５０６：ｘ方向の値を制御するｘの値を１減少させ、ｙ方向の値を制御するｙの値を１増加させる。処理はステップＳ５１１に進む。
【０１９９】
ステップＳ５０７：ｘ方向の値を制御するｘの値を１減少させる。処理はステップＳ５１１に進む。
【０２００】
ステップＳ５０８：ｘ方向の値を制御するｘの値を１減少させ、ｙ方向の値を制御するｙの値を１減少させる。処理はステップＳ５１１に進む。
【０２０１】
ステップＳ５０９：ｙ方向の値を制御するｙの値を１減少させる。処理はステップＳ５１１に進む。
【０２０２】
ステップＳ５１０：ｘ方向の値を制御するｘの値を１増加させ、ｙ方向の値を制御するｙの値を１させる。処理はステップＳ５１１に進む。
【０２０３】
ステップＳ５１１：ステップＳ５０３〜ステップＳ５１０で計算された点（ｘ，ｙ）を描画データ化する。例えば、点（ｘ，ｙ）をプロットする。
【０２０４】
図１９は、ステップＳ４１０で実行される第２象限描画処理手順を示す。
【０２０５】
第２象限は、第１象限に対してｙ軸対称である。したがって、第１象限描画処理手順（図１８参照）との処理手順の違いは、制御値に応じたｘの増減が逆になるだけであるので、ステップＳ６０１〜ステップＳ６１１の説明は省略する。
【０２０６】
図２０は、ステップＳ４１１で実行される第３象限描画処理手順を示す。
【０２０７】
第３象限は、第１象限に対して原点対称である。したがって、第１象限描画処理手順（図１８参照）との処理手順の違いは、制御値に応じたｘの増減およびｙの増減がそれぞれ逆になるだけであるので、ステップＳ７０１〜ステップＳ７１１の説明は省略する。
【０２０８】
図２１は、ステップＳ４１２で実行される第４象限描画処理手順を示す。
【０２０９】
第４象限は、第１象限に対してｘ軸対称である。したがって、第１象限描画処理手順（図１８参照）との処理手順の違いは、制御値に応じたｙの増減が逆になるだけであるので、ステップＳ８０１〜ステップＳ８１１の説明は省略する。
【０２１０】
図２２は、座標データ、スケール化データおよび量子化データを示す。
【０２１１】
ベクトルデータ（図９参照）をスケール処理、量子化処理した結果である。
【０２１２】
図２３は、図２２に示された量子化データに基づいて描画した結果を示す。
【０２１３】
量子化データ（図２２参照）を描画データ化処理（図１５参照）によって描画した結果を示す。曲線描画により、文字が高品位に描画できている。
【０２１４】
図２４は、テーブルの編集処理手順を示す。
【０２１５】
図２５は、表示点を変更した後の線のパターンを示す。
【０２１６】
図２６は、表示点を変更した後の曲線描画テーブルを示す。
【０２１７】
以下、図１、図１２、図２４〜図２６を参照してテーブルの編集処理手順をステップごとに説明する。
【０２１８】
ステップＳ９０１：３点を通る制御列を呼び出し、線のパターンを編集画面に表示する。編集画面に表示された線のパターンは、例えば、図１に示される。２点を通る線のパターンが編集画面に表示されている。
【０２１９】
ステップＳ９０２：表示された線のパターンを画面を見ながら変更する。例えば、図１に示された線のパターンを図２５に示された線のパターンに編集する。
【０２２０】
ステップＳ９０３：変更された線のパターンのうち第１点と第２点とを通る線のパターンのみを制御列で示し、テーブルを書き換える。図１２で示された曲線テーブルの１９９０番目の制御列｛０，０，１，０，１，１，１｝が図２６で示された曲線テーブルの１９９０番目の制御列｛０，１，０，１，０，１，１｝に書き換えられる。
【０２２１】
このように、曲線テーブルの内容は変更可能である。ただし変更結果は、第１点と第２点とを通る直線と第２点と第３点とを通る直線の角度が同じ角度パターンに分割する全ての場合に影響する。
【０２２２】
以上、図１４〜図２１および図２４を参照して本発明の表示手順を説明した。
【０２２３】
例えば、図１４〜図２１および図２４の例では、ステップＳ４０１〜ステップＳ４０４が「与えられた第１点、第２点および第３点に対して、第１点および第２点のうちの少なくとも一方と第３点との第１の位置関係を決定するステップ」に対応し、ステップＳ４０５が「予め用意された少なくとも１つの線のパターンであって、第１点と第２点とを通る少なくとも１つの線のパターンの中から、決定された第１の位置関係に対応する１つの線のパターンを選択するステップ」に対応し、ステップＳ４０９〜ステップＳ４１２が「選択された線のパターンに応じて、第１点と第２点とを通る線を表示デバイスに表示するステップ」に対応する。しかし、図１４〜図２１および図２４の例は、本発明の表示手順の一例を示したに過ぎない。上述した各ステップが実行される限りは、任意のステップを有する表示手順が本発明の範囲に含まれ得る。
【０２２４】
本発明のプログラムおよび記録媒体によれば、第１点と第２点とを通る線の軌道を計算によって求めることなく、第１点と第２点とを通る少なくとも１つの線のパターンの中から、決定された位置関係に対応する１つの線のパターンを選択することによって、第１点と第２点とを通る線を表示できる。したがって、複雑な計算が必要とされる第１点と第２点とを通る線の軌道の計算を行う必要がなく、第１点と第２点とを通る線を高速に表示できる。
【０２２５】
上述した実施の形態では、文字を表示する場合を例にとり説明したが、本発明はこれに限定されない。文字に代えて、あるいは文字に加えて、図形を表示する場合にも本発明を適用することができる。この場合、文字表示プログラム４１に代えて、あるいは文字表示プログラム４１に加えて図形表示プログラムを使用するようにし、文字データ４２に代えて、あるいは文字データ４２に加えて図形データを使用するようにすればよい。図形表示プログラムもまた、文字表示プログラム４１と同様のステップを含み得る。図形には、例えば、文字の一部、模様、記号などが含まれる。
【０２２６】
以上のように、本発明の好ましい実施形態を用いて本発明を例示してきたが、本発明は、この実施形態に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
【産業上の利用可能性】
【０２２７】
本発明の表示装置、プログラムおよび記録媒体によれば、第１点と第２点とを通る線の軌道を計算によって求めることなく、第１点と第２点とを通る少なくとも１つの線のパターンの中から、決定された位置関係に対応する１つの線のパターンを選択することによって、第１点と第２点とを通る線を表示できる。したがって、複雑な計算が必要とされる第１点と第２点とを通る線の軌道の計算を行う必要がなく、第１点と第２点とを通る線を高速に表示できる。
【０２２８】
本発明では、第１点と第２点とを通る線のパターンと３点の位置関係との対応を示すテーブルを利用して、３点を結ぶ曲線を描画する。したがって、テーブルの読み出しのみで曲線の描画が可能となり、複雑な演算が発生しない。その結果、第１点と第２点とを通る線を高速に描画できる。
【０２２９】
さらに、第１点と第２点とを通る直線と第２点と第３点とを通る直線との角度を分類し、テーブル化する。その結果、容量を少なくできる。
【０２３０】
さらに、第２点が第１象限にある場合のみ、第１点と第２点とを通る直線と第２点と第３点とを通る直線の角度の分類とテーブル化とを行う。したがって、３点の位置の組み合わせを減らすことができる。その結果、さらに容量を少なくできる。
【図面の簡単な説明】
【０２３１】
【図１】３点を通る曲線の一例を示す図である。
【図２】３点を通る曲線の別の一例を示す図である。
【図３】３点を通る曲線の更に別の一例を示す図である。
【図４】３点を通る曲線の更に別の一例を示す図である。
【図５】３点を通る曲線の更に別の一例を示す図である。
【図６】３点を通る曲線の更に別の一例を示す図である。
【図７】第２点の周囲に割り当てられた領域１〜領域２８を示す図である。
【図８】本発明の実施の形態の文字表示装置１００の構成を示す図である。
【図９】文字データ４２の一例を示す図である。
【図１０】文字データ４２の表示の一例を示す図である。
【図１１】直線テーブル４３の一例を示す図である。
【図１２】曲線テーブル４４の一例を示す図である。
【図１３】制御列が有する値を示す図である。
【図１４】文字表示処理手順を示すフローチャートである。
【図１５】ステップＳ１０４で実行される描画データ化処理手順を示すフローチャートである。
【図１６】ステップＳ２０３で実行される直線描画処理手順を示すフローチャートである。
【図１７】ステップＳ２０４で実行される曲線描画処理手順を示すフローチャートである。
【図１８】ステップＳ４０９で実行される第１象限描画処理手順を示すフローチャートである。
【図１９】ステップＳ４１０で実行される第２象限描画処理手順を示すフローチャートである。
【図２０】ステップＳ４１１で実行される第３象限描画処理手順を示すフローチャートである。
【図２１】ステップＳ４１２で実行される第４象限描画処理手順を示すフローチャートである。
【図２２】座標データ、スケール化データおよび量子化データを示す図である。
【図２３】図２２に示された量子化データに基づいて描画した結果を示す図である。
【図２４】テーブルの編集処理手順を示すフローチャートである。
【図２５】表示点を変更した後の線のパターンを示す図である。
【図２６】表示点を変更した後の曲線描画テーブルを示す図である。
【図２７】ｔａｎ−１の値とｔａｎ−１の引数との対応を示す図である。
【図２８】第２点の周囲に割り当てられた領域の一例を示す図である。
【符号の説明】
【０２３２】
１０  入力デバイス
２０  制御部
２１  ＣＰＵ
２２  主メモリ
３０  表示デバイス
４０  補助記憶装置
４１  文字表示プログラム
４２  文字データ
４３  直線テーブル
４４  曲線テーブル
１００  文字表示装置１
【図１】
2006039780.tif 000003
【図２】
2006039780.tif 000004
【図３】
2006039780.tif 000005
【図４】
2006039780.tif 000006
【図５】
2006039780.tif 000007
【図６】
2006039780.tif 000008
【図７】
2006039780.tif 000009
【図８】
2006039780.tif 000010
【図９】
2006039780.tif 000011
【図１０】
2006039780.tif 000012
【図１１】
2006039780.tif 000013
【図１２】
2006039780.tif 000014
【図１３】
2006039780.tif 000015
【図１４】
2006039780.tif 000016
【図１５】
2006039780.tif 000017
【図１６】
2006039780.tif 000018
【図１７】
2006039780.tif 000019
【図１８】
2006039780.tif 000020
【図１９】
2006039780.tif 000021
【図２０】
2006039780.tif 000022
【図２１】
2006039780.tif 000023
【図２２】
2006039780.tif 000024
【図２３】
2006039780.tif 000025
【図２４】
2006039780.tif 000026
【図２５】
2006039780.tif 000027
【図２６】
2006039780.tif 000028
【図２７】
2006039780.tif 000029
【図２８】
2006039780.tif 000030