(57)【要約】【課題】携帯電話やＰＤＡなどで使用するサイズの小さなビットマップフォントを自然に変形する。【解決手段】変形の対象となるフォントを行、列に分割し、行、列毎の構成画素パターンに基づいてコストを計算する。フォントの変形が拡大を伴う場合、拡大処理においてコストは線分量を示し、コストの小さい行又は列、即ち線分に近い画素配列を有する行又は列が拡大されにくくする。また、フォントの変形が縮小を伴う場合、縮小処理においてコストは隣接する行、列との類似度を示し、近傍に類似する画素パターンがある行又は列は優先的に縮小の対象となる。実際に変形の対象となるフォントの画素構成に基づいて、変形の対象とする行、列を決定するので、自然な変形フォントが得られる。【選択図】　　　図１
2004126555.tif 000002
【特許請求の範囲】
【請求項１】
フォント変形指示を受け取る手段と、
ビットマップフォントのフォントデータを取得するデータ取得手段と、
前記フォント変形指示がフォントの横方向の変形を含む場合、前記フォントデータの画素構成を縦方向に分析し、分析結果に基づいて前記フォントデータを横方向に拡大又は縮小する横方向変形手段と、
前記フォント変形指示がフォントの縦方向の変形を含む場合、前記フォントデータの画素構成を横方向に分析し、分析結果に基づいて前記フォントデータを縦方向に拡大又は縮小する縦方向変形手段と、を備えることを特徴とするフォント処理装置。
【請求項２】
前記横方向変形手段は、
前記フォントデータを複数の行に分割する分割手段と、
前記行ごとに、画素構成の特徴を示すコストを計算する計算手段と、
前記コストの小さい行から順に、所定数の行について画素の拡大又は縮小処理を行う手段と、を備えることを特徴とする請求項１に記載のフォント処理装置。
【請求項３】
前記横方向変形手段は、
前記フォントデータを複数の行に分割する分割手段と、
前記行ごとに、画素構成の特徴を示すコストを計算する計算手段と、
前記コストの大きい行から順に、所定数の行について画素の拡大又は縮小処理を行う手段と、を備えることを特徴とする請求項１に記載のフォント処理装置。
【請求項４】
前記縦方向変形手段は、
前記フォントデータを複数の列に分割する分割手段と、
前記列ごとに、画素構成の特徴を示すコストを計算する計算手段と、
前記コストの小さい列から順に、所定数の列について画素の拡大又は縮小処理を行う手段と、を備えることを特徴とする請求項１乃至３のいずれか一項に記載のフォント処理装置。
【請求項５】
前記縦方向変形手段は、
前記フォントデータを複数の列に分割する分割手段と、
前記列ごとに、画素構成の特徴を示すコストを計算する計算手段と、
前記コストの大きい列から順に、所定数の列について画素の拡大又は縮小処理を行う手段と、を備えることを特徴とする請求項１乃至３のいずれか一項に記載のフォント処理装置。
【請求項６】
縦方向及び横方向の変形率を含むフォント変形指示を受け取る手段と、
ビットマップフォントのフォントデータを取得するデータ取得手段と、
前記横方向の変形率に応じて、前記フォントデータの横方向の変形処理を行う横方向変形手段と、
前記縦方向の変形率に応じて、前記フォントデータの縦方向の変形処理を行う縦方向変形手段と、を備え、
前記横方向変形手段は、
前記フォントデータを複数の行に分割する手段と、
前記行ごとに、画素構成の特徴を示すコストを計算する第１のコスト計算手段と、
前記コストの小さい行から順に、第１の所定数の行を横方向に拡大又は縮小する手段と、を備え、
前記縦方向変形手段は、
前記フォントデータを複数の列に分割する手段と、
前記列ごとに、画素構成の特徴を示すコストを計算する第２のコスト計算手段と、
前記コストの小さい列から順に、第２の所定数の列を縦方向に拡大又は縮小する手段と、を備えることを特徴とするフォント処理装置。
【請求項７】
縦方向及び横方向の変形率を含むフォント変形指示を受け取る手段と、
ビットマップフォントのフォントデータを取得するデータ取得手段と、
前記横方向の変形率に応じて、前記フォントデータの横方向の変形処理を行う横方向変形手段と、
前記縦方向の変形率に応じて、前記フォントデータの縦方向の変形処理を行う縦方向変形手段と、を備え、
前記横方向変形手段は、
前記フォントデータを複数の行に分割する手段と、
前記行ごとに、画素構成の特徴を示すコストを計算する第１のコスト計算手段と、
前記コストの大きい行から順に、第１の所定数の行を横方向に拡大又は縮小する手段と、を備え、
前記縦方向変形手段は、
前記フォントデータを複数の列に分割する手段と、
前記列ごとに、画素構成の特徴を示すコストを計算する第２のコスト計算手段と、
前記コストの大きい列から順に、第２の所定数の列を縦方向に拡大又は縮小する手段と、を備えることを特徴とするフォント処理装置。
【請求項８】
前記第１の所定数は、前記フォントデータの縦方向及び横方向の画素数と前記横方向の変形率とにより決定され、
前記第２の所定数は、前記フォントデータの縦方向及び横方向の画素数と前記縦方向の変形率とにより決定されることを特徴とする請求項６又は７に記載のフォント処理装置。
【請求項９】
前記コスト計算手段は、前記変形処理が拡大である場合には、前記行又は列ごとに前記画素構成の線分量を示すコストを計算し、前記変形処理が縮小である場合には、前記行又は列ごとに当該行又は列の画素構成と隣接する行又は列の画素構成との類似度を示すコストを計算することを特徴とする請求項６乃至８のいずれか一項に記載のフォント処理装置。
【請求項１０】
前記コスト計算手段は、前記線分量を示すコストを計算する場合には、前記行又は列ごとに、当該行又は列を構成する画素数をコストとして計算し、さらに、当該行又は列の方向に隣接画素を有する画素数を前記コストに加算することを特徴とする請求項９に記載のフォント処理装置。
【請求項１１】
前記コスト計算手段は、前記線分量を示すコストを計算する場合には、前記行又は列ごとに、当該行又は列を構成する画素数を計算し、さらに、当該行又は列の方向に隣接画素を有する画素数を前記当該行又は列を構成する画素数に加算し、加算された結果の逆数をコストとして計算することを特徴とする請求項９に記載のフォント処理装置。
【請求項１２】
前記コスト計算手段は、前記類似度を示すコストを計算する場合には、前記行又は列ごとに、当該行又は列の画素構成と、当該行又は列に隣接する行又は列の画素構成との排他的論理和に基づいてコストを計算することを特徴とする請求項９に記載のフォント処理装置。
【請求項１３】
前記フォントデータは、当該フォントデータの変形処理において縦方向の変形処理と横方向の変形処理を実行すべき順序を示す処理順序情報を含み、
前記処理順序情報に従って、前記横方向の変形処理と前記縦方向の変形処理の実行順序を制御する順序制御手段をさらに備えることを特徴とする請求項６乃至１２のいずれか一項に記載のフォント処理装置。
【請求項１４】
前記請求項１乃至１３のいずれか一項のフォント処理装置と、
前記フォント処理装置により生成されたフォントデータを記憶する記憶手段と、
前記フォント処理装置により生成されたフォントデータを表示する表示部と、を備えることを特徴とする端末装置。
【請求項１５】
フォント変形指示を受け取る工程と、
ビットマップフォントのフォントデータを取得するデータ取得工程と、
前記フォント変形指示がフォントの横方向の変形を含む場合、前記フォントデータの画素構成を縦方向に分析し、分析結果に基づいて前記フォントデータを横方向に拡大又は縮小する横方向変形工程と、
前記フォント変形指示がフォントの横方向の変形を含む場合、前記フォントデータの画素構成を横方向に分析し、分析結果に基づいて前記フォントデータを縦方向に拡大又は縮小する縦方向変形工程と、を有することを特徴とするフォント処理方法。
【請求項１６】
縦方向及び横方向の変形率を含むフォント変形指示を受け取る工程と、
ビットマップフォントのフォントデータを取得するデータ取得工程と、
前記横方向の変形率に応じて、前記フォントデータの横方向の変形処理を行う横方向変形工程と、
前記縦方向の変形率に応じて、前記フォントデータの縦方向の変形処理を行う縦方向変形工程と、を有し、
前記横方向変形工程は、
前記フォントデータを複数の行に分割する工程と、
前記行ごとに、画素構成の特徴を示すコストを計算する第１のコスト計算工程と、
前記コストの小さい行から順に、第１の所定数の行を横方向に拡大又は縮小する工程と、を有し、
前記縦方向変形工程は、
前記フォントデータを複数の列に分割する工程と、
前記列ごとに、画素構成の特徴を示すコストを計算する第２のコスト計算工程と、
前記コストの小さい列から順に、第２の所定数の列を縦方向に拡大又は縮小する工程と、を有することを特徴とするフォント処理方法。
【請求項１７】
縦方向及び横方向の変形率を含むフォント変形指示を受け取る工程と、
ビットマップフォントのフォントデータを取得するデータ取得工程と、
前記横方向の変形率に応じて、前記フォントデータの横方向の変形処理を行う横方向変形工程と、
前記縦方向の変形率に応じて、前記フォントデータの縦方向の変形処理を行う縦方向変形工程と、を有し、
前記横方向変形工程は、
前記フォントデータを複数の行に分割する工程と、
前記行ごとに、画素構成の特徴を示すコストを計算する第１のコスト計算工程と、
前記コストの大きい行から順に、第１の所定数の行を横方向に拡大又は縮小する工程と、を有し、
前記縦方向変形工程は、
前記フォントデータを複数の列に分割する工程と、
前記列ごとに、画素構成の特徴を示すコストを計算する第２のコスト計算工程と、
前記コストの大きい列から順に、第２の所定数の列を縦方向に拡大又は縮小する工程と、を有することを特徴とするフォント処理方法。
【請求項１８】
コンピュータを有する端末装置により実行されるフォント処理プログラムであって、前記コンピュータを、
フォント変形指示を受け取る手段、
ビットマップフォントのフォントデータを取得するデータ取得手段、
前記フォント変形指示がフォントの横方向の変形を含む場合、前記フォントデータの画素構成を縦方向に分析し、分析結果に基づいて前記フォントデータを横方向に拡大又は縮小する横方向変形手段、
前記フォント変形指示がフォントの横方向の変形を含む場合、前記フォントデータの画素構成を横方向に分析し、分析結果に基づいて前記フォントデータを縦方向に拡大又は縮小する縦方向変形手段、として機能させることを特徴とするフォント処理プログラム。
【請求項１９】
コンピュータを有する端末装置により実行されるフォント処理プログラムであって、前記コンピュータを、
縦方向及び横方向の変形率を含むフォント変形指示を受け取る手段、
ビットマップフォントのフォントデータを取得するデータ取得手段、
前記横方向の変形率に応じて、前記フォントデータの横方向の変形処理を行う横方向変形手段、
前記縦方向の変形率に応じて、前記フォントデータの縦方向の変形処理を行う縦方向変形手段として機能させ、
前記横方向変形手段は、
前記フォントデータを複数の行に分割する手段と、
前記行ごとに、画素構成の特徴を示すコストを計算する第１のコスト計算手段と、
前記コストの小さい行から順に、第１の所定数の行を横方向に拡大又は縮小する手段と、を備え、
前記縦方向変形手段は、
前記フォントデータを複数の列に分割する手段と、
前記列ごとに、画素構成の特徴を示すコストを計算する第２のコスト計算手段と、
前記コストの小さい列から順に、第２の所定数の列を縦方向に拡大又は縮小する手段と、を備えることを特徴とするフォント処理プログラム。
【請求項２０】
コンピュータを有する端末装置により実行されるフォント処理プログラムであって、前記コンピュータを、
縦方向及び横方向の変形率を含むフォント変形指示を受け取る手段、
ビットマップフォントのフォントデータを取得するデータ取得手段、
前記横方向の変形率に応じて、前記フォントデータの横方向の変形処理を行う横方向変形手段、
前記縦方向の変形率に応じて、前記フォントデータの縦方向の変形処理を行う縦方向変形手段として機能させ、
前記横方向変形手段は、
前記フォントデータを複数の行に分割する手段と、
前記行ごとに、画素構成の特徴を示すコストを計算する第１のコスト計算手段と、
前記コストの大きい行から順に、第１の所定数の行を横方向に拡大又は縮小する手段と、を備え、
前記縦方向変形手段は、
前記フォントデータを複数の列に分割する手段と、
前記列ごとに、画素構成の特徴を示すコストを計算する第２のコスト計算手段と、
前記コストの大きい列から順に、第２の所定数の列を縦方向に拡大又は縮小する手段と、を備えることを特徴とするフォント処理プログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ビットマップフォントの変形処理に関する。
【０００２】
【背景技術】
携帯電話やＰＤＡ（Ｐｅｒｓｏｎａｌ　Ｄｉｇｉｔａｌ　Ａｓｓｉｓｔａｎｔ）などの装置では文字などの表示にビットマップフォントが使用される。ビットマップフォントは、予め用意された画素の配列パターンにより文字や記号などを表示するものである。ベクトルデータの集合として文字や記号などを表示するアウトラインフォントと異なり、ビットマップフォントは単純な画素の配列パターンであるため、１文字当たりのデータ量が小さい。そのため、表示エリアの画素数が比較的少ない携帯電話やＰＤＡなどにおいては、ビットマップフォントが使用される。
【０００３】
【発明が解決しようとする課題】
表示装置上に文字や記号を表示する場合、文字の変形が要求されることがある。例えば、標準的な縦横比が等しいフォントを、縦長、横長に変形して表示させる要求が生じうる。このような要求は、例えば縦長や横長の文字が見やすいなどというユーザの好みによる場合もある。また、表示装置が有する表示エリアの形状に依存し、又は、表示すべき画像の構成に依存し、主として表示装置の処理上、そのような要求が生じる場合がある。例えば表示エリアが縦長であるので文字も縦長に表示した方が見やすいとか、表示エリア内に文章と一緒に画像を表示するため、画像の表示面積や表示位置との関係で文字の形状を変形させて表示したいなどの要求が生じうる。
【０００４】
携帯電話やＰＤＡなどに使用されるビットマップフォントの場合、１文字のサイズが小さく、文字の太さが１画素で表されることも多い。そのような場合、フォントを変形して表示するために、元の文字サイズと拡大後の文字サイズとの縦横比に基づいて単純な座標変換を行う手法によりビットマップフォントを拡大すると、拡大後の文字に不自然な太さの部分ができてしまうことがある。また、同様の小さなビットマップフォントを上記のような単純な座標変換により縮小すると、縮小後に文字が潰れ、不自然な太さの線ができたり、文字の部分同士が不適切に連結して違う文字に見えてしまうことがある。
【０００５】
本発明は、以上の点に鑑みてなされたものであり、携帯電話やＰＤＡなどで使用するサイズの小さなビットマップフォントを自然に変形することを課題とする。
【０００６】
【課題を解決するための手段】
本発明の１つの観点では、フォント処理装置は、フォント変形指示を受け取る手段と、ビットマップフォントのフォントデータを取得するデータ取得手段と、前記フォント変形指示がフォントの横方向の変形を含む場合、前記フォントデータの画素構成を縦方向に分析し、分析結果に基づいて前記フォントデータを横方向に拡大又は縮小する横方向変形手段と、前記フォント変形指示がフォントの縦方向の変形を含む場合、前記フォントデータの画素構成を横方向に分析し、分析結果に基づいて前記フォントデータを縦方向に拡大又は縮小する縦方向変形手段と、を備える。
【０００７】
また、同様の観点によるフォント処理方法は、フォント変形指示を受け取る工程と、ビットマップフォントのフォントデータを取得するデータ取得工程と、前記フォント変形指示がフォントの横方向の変形を含む場合、前記フォントデータの画素構成を縦方向に分析し、分析結果に基づいて前記フォントデータを横方向に拡大又は縮小する横方向変形工程と、前記フォント変形指示がフォントの横方向の変形を含む場合、前記フォントデータの画素構成を横方向に分析し、分析結果に基づいて前記フォントデータを縦方向に拡大又は縮小する縦方向変形工程と、を有する。
【０００８】
上記のフォント処理装置又は方法は、ビットマップフォントを所定の拡大率又は縮小率で拡大又は縮小することによりフォントを変形する。まず、フォント変形指示を受け取ると、変形の対象となるビットマップフォントのフォントデータを取得する。フォント変形指示が横方向の変形を含む場合、フォントデータを縦方向に分析し、その分析結果に基づいて、フォントデータを横方向に拡大又は縮小する。同様に、フォント変形指示が縦方向の変形を含む場合、フォントデータを横方向に分析し、その分析結果に基づいてフォントデータを縦方向に拡大又は縮小する。これにより、変形の対象となるフォントデータの画素構成に応じて、それぞれ縦方向及び横方向に適切な拡大／縮小処理がなされてフォントが変形されるので、変形処理後のフォントデータが不自然となることを防止できる。
【０００９】
上記のフォント処理装置の一態様では、前記横方向変形手段は、前記フォントデータを複数の行に分割する分割手段と、前記行ごとに、画素構成の特徴を示すコストを計算する計算手段と、前記コストの小さい行又は大きい行から順に、所定数の行について画素の拡大又は縮小処理を行う手段と、を備える。
【００１０】
この態様によれば、フォントデータを構成する画素の行方向（縦方向）の画素構成が数値化されてコストとして算出され、その値に基づいて拡大／縮小処理が行われる。よって、画素構成の分析を単純なコスト計算により行うことができ、迅速な処理が可能となる。
【００１１】
上記のフォント処理装置の他の一態様では、前記縦方向変形手段は、前記フォントデータを複数の列に分割する分割手段と、前記列ごとに、画素構成の特徴を示すコストを計算する計算手段と、前記コストの小さい列又は大きい列から順に、所定数の列について画素の拡大又は縮小処理を行う手段と、を備える。
【００１２】
この態様では、フォントデータを構成する画素の列方向（横方向）の画素構成が数値化されてコストとして算出され、その値に基づいて拡大／縮小処理が行われる。よって、画素構成の分析を単純なコスト計算により行うことができ、迅速な処理が可能となる。
【００１３】
本発明の他の観点では、フォント処理装置は、縦方向及び横方向の変形率を含むフォント変形指示を受け取る手段と、ビットマップフォントのフォントデータを取得するデータ取得手段と、前記横方向の変形率に応じて、前記フォントデータの横方向の変形処理を行う横方向変形手段と、前記縦方向の変形率に応じて、前記フォントデータの縦方向の変形処理を行う縦方向変形手段と、を備え、前記横方向変形手段は、前記フォントデータを複数の行に分割する手段と、前記行ごとに、画素構成の特徴を示すコストを計算する第１のコスト計算手段と、前記コストの小さい行又は大きい行から順に、第１の所定数の行を横方向に拡大又は縮小する手段と、を備え、前記縦方向変形手段は、前記フォントデータを複数の列に分割する手段と、前記列ごとに、画素構成の特徴を示すコストを計算する第２のコスト計算手段と、前記コストの小さい列又は大きい列から順に、第２の所定数の列を縦方向に拡大又は縮小する手段と、を備える。
【００１４】
また、同様の観点によるフォント処理方法は、縦方向及び横方向の変形率を含むフォント変形指示を受け取る工程と、ビットマップフォントのフォントデータを取得するデータ取得工程と、前記横方向の変形率に応じて、前記フォントデータの横方向の変形処理を行う横方向変形工程と、前記縦方向の変形率に応じて、前記フォントデータの縦方向の変形処理を行う縦方向変形工程と、を有し、前記横方向変形工程は、前記フォントデータを複数の行に分割する工程と、前記行ごとに、画素構成の特徴を示すコストを計算する第１のコスト計算工程と、前記コストの小さい行又は大きい行から順に、第１の所定数の行を横方向に拡大又は縮小する工程と、を有し、前記縦方向変形工程は、前記フォントデータを複数の列に分割する工程と、前記列ごとに、画素構成の特徴を示すコストを計算する第２のコスト計算工程と、前記コストの小さい列又は大きい列から順に、第２の所定数の列を縦方向に拡大又は縮小する工程と、を有する。
【００１５】
上記のフォント処理装置又は方法によれば、フォントデータが複数の行に分割され、その行ごとにコストが計算される。また、同様に、フォントデータが複数の列に分割され、その列ごとにコストが計算される。そして、コストに応じて、所定数の行及び列を拡大又は縮小することによりフォントの変形がなされる。
【００１６】
上記のフォント処理装置の一態様では、前記第１の所定数は、前記フォントデータの縦方向及び横方向の画素数と前記横方向の変形率とにより決定され、前記第２の所定数は、前記フォントデータの縦方向及び横方向の画素数と前記縦方向の変形率とにより決定される。よって、フォント変形指示により指定された変形率となるように、必要数の行及び列が拡大／縮小される。
【００１７】
上記のフォント処理装置のさらに他の一態様では、前記コスト計算手段は、前記変形処理が拡大である場合には、前記行又は列ごとに前記画素構成の線分量を示すコストを計算し、前記変形処理が縮小である場合には、前記行又は列ごとに当該行又は列の画素構成と隣接する行又は列の画素構成との類似度を示すコストを計算する。
【００１８】
この態様によれば、フォントの変形のために拡大を行う場合、コストは画素の線分量、即ち、その行を構成する画素が単なる点又は点の集合に近いか、線分に近いかを示す指標となる。そして、コストの小さい順に行又は列を拡大する。よって、点や点の集合に近い画素構成を有する列が優先的に拡大され、線分に近い画素構成を有する列は拡大されにくくなる。また、フォントの変形のために縮小を行う場合、コストは隣接する行の画素構成との類似度を示す。そして、コストの小さい順に行を横方向に拡大する。これにより、画素構成が類似する行が隣接する部分が優先的に縮小されるので、文字全体のバランスがくずれることがなくなる。こうして、自然なフォント変形が実現される。
【００１９】
上記のフォント処理装置のさらに他の一態様では、前記コスト計算手段は、前記線分量を示すコストを計算する場合には、前記行又は列ごとに、当該行又は列を構成する画素数をコストとして計算し、さらに、当該行又は列の方向に隣接画素を有する画素数を前記コストに加算する。
【００２０】
また、上記のフォント処理装置のさらに他の一態様では、前記コスト計算手段は、前記線分量を示すコストを計算する場合には、前記行又は列ごとに、当該行又は列を構成する画素数を計算し、さらに、当該行又は列の方向に隣接画素を有する画素数を前記当該行又は列を構成する画素数に加算し、加算された結果の逆数をコストとして計算する。
【００２１】
また、上記のフォント処理装置のさらに他の一態様では、前記コスト計算手段は、前記類似度を示すコストを計算する場合には、前記行又は列ごとに、当該行又は列の画素構成と、当該行又は列に隣接する行又は列の画素構成との排他的論理和に基づいてコストを計算する。
【００２２】
これらの態様によれば、コスト計算手段は、単純な加算処理によってコストを計算するので、フォント拡大処理を簡素な構成で迅速に行うことができる。
【００２３】
上記のフォント処理装置のさらに他の一態様では、前記フォントデータは、当該フォントデータの変形処理において縦方向の変形処理と横方向の変形処理を実行すべき順序を示す処理順序情報を含み、前記処理順序情報に従って、前記横方向の変形処理と前記縦方向の変形処理の実行順序を制御する順序制御手段をさらに備える。
【００２４】
この態様によれば、変形の対象となるフォントごとに、縦方向の変形処理と横方向の変形処理のどちらを先に行った方がより自然な変形フォントが得られるかが予め決定され、その順序を示す処理順序情報がフォントデータに付属している。よって、フォント処理装置は、その処理順序情報を参照して縦方向の変形処理と横方向の変形処理の実行順序を決定することにより、自然な変形フォントが得られる。
【００２５】
本発明のさらに他の観点では、上記のフォント処理装置と、前記フォント処理装置により生成されたフォントデータを記憶する記憶手段と、前記フォント処理装置により生成されたフォントデータを表示する表示部と、を備える端末装置を構成することができる。当該端末装置は、例えば携帯電話やＰＤＡなどの携帯型端末装置とすることができる。本発明のフォント処理装置により、単純な演算で迅速にフォントの変形ができるので、そのような携帯型端末装置においても自然なフォント変形を行うことができる。
【００２６】
本発明のさらに他の観点では、コンピュータを有する端末装置により実行されるフォント処理プログラムは、前記コンピュータを、フォント変形指示を受け取る手段、ビットマップフォントのフォントデータを取得するデータ取得手段、前記フォント変形指示がフォントの横方向の変形を含む場合、前記フォントデータの画素構成を縦方向に分析し、分析結果に基づいて前記フォントデータを横方向に拡大又は縮小する横方向変形手段、前記フォント変形指示がフォントの横方向の変形を含む場合、前記フォントデータの画素構成を横方向に分析し、分析結果に基づいて前記フォントデータを縦方向に拡大又は縮小する縦方向変形手段、として機能させる。
【００２７】
また、本発明のさらに他の観点では、コンピュータを有する端末装置により実行されるフォント処理プログラムは、前記コンピュータを、縦方向及び横方向の変形率を含むフォント変形指示を受け取る手段、ビットマップフォントのフォントデータを取得するデータ取得手段、前記横方向の変形率に応じて、前記フォントデータの横方向の変形処理を行う横方向変形手段、前記縦方向の変形率に応じて、前記フォントデータの縦方向の変形処理を行う縦方向変形手段として機能させ、前記横方向変形手段は、前記フォントデータを複数の行に分割する手段と、前記行ごとに、画素構成の特徴を示すコストを計算する第１のコスト計算手段と、前記コストの小さい行又は大きい行から順に、第１の所定数の行を横方向に拡大又は縮小する手段と、を備え、前記縦方向変形手段は、前記フォントデータを複数の列に分割する手段と、前記列ごとに、画素構成の特徴を示すコストを計算する第２のコスト計算手段と、前記コストの小さい列又は大きい列から順に、第２の所定数の列を縦方向に拡大又は縮小する手段と、を備える。
【００２８】
上記のフォント処理プログラムを、端末装置内のコンピュータで実行することにより、上記のフォント処理装置を実現することができる。
【００２９】
【発明の実施の形態】
以下、図面を参照して本発明の好適な実施の形態について説明する。
【００３０】
［携帯端末装置の構成］
図１に、本発明の実施形態にかかるビットマップフォントの変形処理を適用した携帯端末装置の概略構成を示す。図１において、携帯端末装置１０は、例えば携帯電話やＰＤＡなど、画像表示エリアが比較的小さい端末装置である。携帯端末装置１０は、表示部１２と、変形フォントメモリ１４と、ＣＰＵ１６と、入力部１８と、プログラムＲＯＭ２０と、フォントＲＯＭ２２と、ＲＡＭ２４とを備える。
【００３１】
表示部２２は、例えばＬＣＤ（Ｌｉｑｕｉｄ　Ｃｒｙｓｔａｌ　Ｄｉｓｐｌａｙ：液晶表示装置）などの軽量、薄型の表示装置とすることができ、表示エリア内にビットマップフォントにより構成される文字を表示する。
【００３２】
入力部１８は、携帯電話であれば各種の操作ボタンなど、ＰＤＡであればタッチペンなどによる接触を検出するタブレットなどにより構成することができ、ユーザが各種の指示、選択を行う際に使用される。入力部１８に対して入力された指示、選択などは、電気信号に変換されてＣＰＵ１６へ送られる。
【００３３】
プログラムＲＯＭ２０は、携帯端末装置１０の各種機能を実行するための各種プログラムを記憶し、特に本実施形態ではビットマップフォントの変形プログラム（以下、「フォント変形プログラム」と呼ぶ。）、ビットマップフォントを利用した文字の表示プログラムなどを記憶している。
【００３４】
フォントＲＯＭ２２は、ビットマップフォントの元データ（「字母データ」とも呼ぶ。）を記憶する。なお、ビットマップフォントの元データは、例えば１６×１６ドットなどの、縦横比が等しいフォント（「正方フォント」とも呼ぶ。）とすることが一般的である。
【００３５】
ＲＡＭ２４は、ビットマップフォントの変形プログラムに従ってビットマップフォントの元データを変形処理する際に作業用メモリとして使用される。一方、変形フォントメモリ１４は、ビットマップフォントの変形プログラムに従う拡大又は縮小処理により作成されたフォント（以下、「変形フォント」とも呼ぶ。）を一時的に記憶するメモリである。変形フォントメモリ１４は、通常、ＲＡＭやフラッシュメモリなどにより構成することができ、携帯端末装置１０が電源オフされるまで記憶内容を保持する。
【００３６】
ＣＰＵ１６は、プログラムＲＯＭ２０内に記憶されている各種プログラムを実行することにより、携帯端末装置１０の各種機能を実行する。特に、本実施形態では、プログラムＲＯＭ２０内に記憶されている文字表示プログラムを読み出して実行することにより、文字を表示部１２上に表示させる。また、同じくプログラムＲＯＭ２０内に記憶されているフォント変形プログラムを読み出して実行することにより、フォントＲＯＭ２２内に記憶されているビットマップフォントの元データを縦方向、横方向に拡大、縮小して変形フォントを生成する。なお、ＣＰＵ１６は、これら以外に各種のプログラムを実行することにより携帯端末装置１０の各種機能を実現するが、それらは本発明とは直接の関連を有しないので、説明を省略する。
【００３７】
［拡大によるフォント変形処理］
次に、本発明の特徴部分であるフォント変形処理について説明する。フォント変形処理は、前述のようにＣＰＵ１６がプログラムＲＯＭ２０内に格納されているフォント変形小プログラムを実行することにより行われる。フォントの変形は、実際にはフォントデータを縦方向又は横方向に拡大又は縮小することにより実現される。特定のフォントの縦方向の拡大率又は縮小率と、横方向の拡大率又は縮小率が一致する場合はフォントの単純な拡大又は縮小となるが、縦方向の拡大率又は縮小率と、横方向の拡大率又は縮小率が異なる場合にフォントの変形となる。以下、フォント変形処理として、フォントの拡大による変形処理と、縮小による変形処理に分けて、順に説明する。
【００３８】
まず、拡大によるフォント変形処理について図２乃至図７を参照して説明する。図２乃至図４は、拡大によるフォント変形処理のメインルーチン及びサブルーチンのフローチャートである。図５乃至図７は、拡大によるフォント変形処理による各工程を説明するための図である。
【００３９】
図２を参照すると、まずＣＰＵ１はフォント変形指示を受け取る（ステップＳ１）。フォント変形指示は、例えばユーザが入力部１８を操作して表示フォントの縦横比の指定、選択や表示モードの指定、選択を行った場合に、入力部１８からの指示に基づいて生成される。なお、ユーザによる指示以外の場合でも、表示部１２上への表示内容に応じてフォントの変形が必要となる場合もある。例えば、表示エリア内に特定の文字データを表示する際に、文字表示プログラムが自動的にフォントの変形を要求する場合もある。フォント変形指示には、縦方向の拡大率と横方向の拡大率とが含まれる。
【００４０】
フォントの変形指示がなされると、ＣＰＵ１は表示対象となるフォントの元データをフォントＲＯＭ２２から読み出し、作業メモリであるＲＡＭ２４へ展開する（ステップＳ２）。次に、ＣＰＵ１は、ステップＳ１で入力されたフォント変形指示が、フォントの横方向の拡大を含んでいるか否かを判定する（ステップＳ３）。フォントの横方向の拡大を含んでいる場合（ステップＳ３；Ｙｅｓ）、ＣＰＵ１は横方向拡大処理を実行して、対象となるフォントをまず横方向に拡大する（ステップＳ４）。なお、ステップＳ３でフォント変形指示が横方向の拡大を含んでいないと判断された場合（ステップＳ３：Ｎｏ）、処理はそのまま次のステップに進む。
【００４１】
次に、ＣＰＵ１は、ステップＳ１で入力されたフォント変形指示が、フォントの縦方向の拡大を含んでいるか否かを判定する（ステップＳ５）。フォントの縦方向の拡大を含んでいる場合（ステップＳ５；Ｙｅｓ）、ＣＰＵ１は縦方向拡大処理を実行して、対象となるフォントを縦方向に拡大する（ステップＳ６）。なお、ステップＳ５でフォント変形指示が縦方向の拡大を含んでいないと判断された場合（ステップＳ５：Ｎｏ）、処理はそのまま次のステップに進む。なお、行方向の拡大率と列方向の拡大率は、それぞれステップＳ１で指定された割合に設定され、通常は両者は異なる。こうして、横方向及び縦方向にフォントの拡大が完了すると、ＣＰＵ１は拡大後のフォントデータを変形フォントとして変形フォントメモリ１４に一時的に保存し（ステップＳ７）、さらに表示部１２上に表示する（ステップＳ８）。こうして、特定のフォントが変形されて表示部１２上に表示される。
【００４２】
次に、ステップＳ４で行われる横方向拡大処理の詳細について図３のフローチャートを参照して説明する。図３において、まずＣＰＵ１は、対象となるフォントを複数の行に分割する（ステップＳ１１）。そして、ＣＰＵ１は、分割により得られた行ごとに、コストを計算する（ステップＳ１２）。ここで、コストとは、フォントを構成する画素の数及び隣接する画素の有無などにより求められる値であり、拡大によるフォント変形処理においては線分量を示す。即ち、コストが大きいほど、その行には点や点の集合ではなく、線分が含まれている度合いが高いことを意味する。
【００４３】
図４に、ステップＳ１２におけるコスト計算処理の詳細を示す。コスト計算処理では、まず、図５（ａ）に示すように、行単位でフォント構成要素の数をカウントする（ステップＳ２１）。図５（ａ）において、各行の下に示した数字（左から、０、４、３、３、・・・）が各行のコストを示している。
【００４４】
次に、図５（ｂ）に示すように、隣接するフォント構成画素を有する画素分の加算を行う（ステップＳ２２）。図５（ｂ）の例では、隣接するフォント構成画素を有するフォント構成画素ごとに、コストに「２」を加算している。こうして、隣接画素分のコストを加算した結果得られる各行のコストが各行の下に示されている。隣接する画素を有する画素についてコストを加算することにより、その行に存在するフォント構成画素が点であるのか、線分に近いのかをある程度区分することができる。即ち、１つの行に含まれるフォント構成画素数が同じであっても、コストが大きい行ほど、その行に含まれるフォント構成画素は線分に近いということが言える。そして、後述のように、コスト値の大きい行、つまり線分に近い行ほど拡大されにくくする。
【００４５】
次に、図６（ａ）に示すように、スペースを考慮した重み付け処理を行う（ステップＳ２３）。具体的には、各行について、両端の画素がスペース（フォント構成画素が存在しない。図５及び６ではスペースで示されている。）である場合には、コスト値を「＋２」する。また、両端の画素の１画素内側の画素がスペースである場合、コスト値を「＋１」する。この処理は、文字としてのバランス及び文字を横方向に並べて文にした場合のバランスの面を考慮している。例えば平仮名の「し」という文字などは、普通に拡大すると左右の空きの部分だけが拡大されてしまい、文字を構成する中央のフォント構成画素はあまり拡大されない。その結果、拡大後の文章として見ると、他の文字は拡大されているが、文字「し」だけはフォント構成部分が十分に拡大されていないため、小さいままに見えてしまう。このような不具合を防止するために、スペースを考慮した重み付けを行うのである。この処理の結果、上下端にスペースを有する行はコスト値が大きくなり、拡大されにくくなる。
【００４６】
次に、同一コスト値を有する行の重み付け処理を行う（ステップＳ２４）。具体的には、ある行について、隣接する行とフォント構成画素のパターンを比較し、隣接する行とフォント構成画素のパターンが同じである行についてはコスト値を「＋２」する。この処理も、文字としてのバランスの面を考慮して行われる。隣接する行のフォント構成画素のパターンが同一であると、これまでのコスト計算においてはコスト値は同じになる。よって、そのコスト値を有する行が後述の拡大処理により拡大対象となると、隣接する行両方が拡大されることになる。その結果、同一の画素パターンを有する行が両方とも拡大されることになり、１つの文字中の一部分のみが必要以上に拡大されてしまうことになる。そこで、隣接する行が同一のパターンを有する場合は、コスト値を増加させて、それらの行が拡大されににくすることにより、１つの文字中の特定箇所のみが偏って拡大されることを防止する。
【００４７】
こうして、コスト計算処理が終了すると、処理は図３に示す横方向拡大処理へ戻る。そして、ＣＰＵ１は対象となるフォントの全ての行についてコスト計算が完了したか否かを判定し（ステップＳ１３）、完了していない場合は全ての行のコスト計算を行う。全ての行についてコスト計算が完了した場合（ステップＳ１３；Ｙｅｓ）、ＣＰＵ１は図７（ａ）に示すように、コストの低い順に行を順序付けする（ステップＳ１４）。図７（ａ）においては、コストの小さい行から順に、Ａ、Ｂ、Ｃ、・・・と順序が付されている。なお、同じコストを有する行が複数ある場合は、文字の中央に近い行から順に上位の順序を付すことにより、拡大する方向が左右方向において偏らないようにする。図７（ａ）の例では、コストが「３」である列が６つあるが、それらについて中央から順に左右に分散するようにＣ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈと順序付けをしている。こうして、文字の中央から左右にバランスよく拡大がなされるように、拡大対象となる順序を付けている。
【００４８】
コストの低い順に各行の順序付けが終了すると、ＣＰＵ１は、ステップＳ１で指定された横方向の拡大率に基づいて、拡大する行の数を決定する（ステップＳ１５）。この拡大率は、今回のフォント拡大処理により、ビットマップフォントの元データを横方向に拡大する割合を指す。前述のように、ステップＳ１においてフォント変形指示がなされる場合、その指示には、縦方向及び横方向の拡大率の情報が含まれている。例えば、ユーザが文字を見やすくするために、文字を縦長に変形することを指示する場合、縦方向の拡大率の方が横方向の拡大率より大きくなるし、文字を横長に変形することを指示する場合、横方向の拡大率の方が縦方向の拡大率より大きくなる。拡大率は、例えば、１２０％、１５０％などの割合として得られる。また、ユーザの指示に拘わらず、携帯端末装置１０の特定の処理によって自動的にフォント変形処理がなされる場合でも、必ず縦方向及び横方向の拡大率は決定される。こうして、横方向の拡大率に基づいて、対象となるフォントの行数のうち、いくつの行を拡大するかを決定する。例えば、拡大の対象となるフォントの行数が１５行（１５ドット）であり、横方向の拡大率が１２０％（１．２倍）と決定された場合、横方向に拡大する行の数は１５×１．２＝１８（行）となり、３つの行だけ拡大することになる。図７（ａ）及び（ｂ）の例はこの場合の例である。
【００４９】
こうして、横方向に拡大する行の数が決定すると、ＣＰＵ１は、拡大処理を実行する（ステップＳ１６）。即ち、コストが小さい行から順に、拡大する行の数だけ拡大を行う。この場合の拡大は、例えば、拡大の対象となる行と同一のフォント画素パターンの行を拡大の対象となる行の隣に挿入することにより行われる。図７（ａ）及び（ｂ）の例では、前述のように拡大する行の数は３行であるので、図７（ａ）に示すコストの小さい行から順に３つの行（コスト順序が「Ａ］、「Ｂ」、「Ｃ」の行）について、同一のフォント構成画素パターンを有する行を挿入する。その結果、図７（ｂ）に示すように、３つの行が挿入されて、全体として横方向に１８行（１８ドット）の拡大文字が得られている。こうして、横方向拡大処理が終了すると、処理は図２に示すメインルーチンへ戻る。
【００５０】
次に、図２のステップＳ６における縦方向拡大処理について説明する。なお、この縦方向拡大処理において対象となるフォントは、横方向への拡大処理後のフォントとなる。よって、図７（ａ）及び（ｂ）の例では、横方向が１８行（ドット）となったフォントに対して行われる。
【００５１】
縦方向拡大処理は、基本的に図３に示す横方向拡大処理と同様の処理を、行毎ではなく、列ごとに行う。即ち、拡大対象となるフォントを列ごとに分割し（ステップＳ１１）、各列についてコスト計算を行い（ステップＳ１２）、コストの低い順に各列について順序付けを行い（ステップＳ１４）、縦方向の拡大率に基づいて拡大対象となる列の数を決定し（ステップＳ１５）、対象となる列に拡大処理を実行する（ステップＳ１６）。なお、図４に示すコスト計算処理においては、縦方向に隣接画素を考慮したコストの重み付け（ステップＳ２２）、スペースを考慮した重み付け（ステップＳ２３）、及び同一コストを有する列の重み付け（ステップＳ２４）を実行する。
【００５２】
以上のように、拡大によるフォント変形処理では、対象となるフォントの構成（フォント構成画素のパターン）に基づいて行、列ごとにコストを計算し、コストに基づいて適切な行、列を拡大する。具体的には、線分に近い行、列は拡大されにくくすることにより、文字中の線分部分が必要以上に拡大されることを防止する（ステップＳ２２）。また、端部にスペースが多い文字については、スペース部分のみが拡大されて文字部分の拡大が不十分になることを防止する（ステップＳ２３）。さらに、同一パターンを有する行、列が隣接する場合には、それらが拡大されにくくして、文字中の特定の部分のみが必要以上に拡大されることを防止する（ステップＳ２４）。これらの処理により、文字を構成する画素パターンを考慮して、拡大後の文字のバランスが不自然とならないようにし、自然なフォントの変形を可能としている。
【００５３】
［縮小によるフォント変形処理］
次に、縮小によるフォント変形処理について説明する。縮小によるフォント変形処理を図８に示す。縮小によるフォント変形処理は、基本的に拡大によるフォント変形処理と同様に行われる。即ち、ＣＰＵ１は、フォント変形指示を受け取ると（ステップＳ４１）、対象となるフォントの元データをフォントＲＯＭ２２から抽出し、作業メモリであるＲＡＭ２４に展開する（ステップＳ４２）。
【００５４】
次に、ＣＰＵ１は、ステップＳ１におけるフォント変形指示が横方向への縮小を伴うか否かを判定し（ステップＳ４３）、横方向への縮小を伴う場合に横方向縮小処理を行う（ステップＳ４４）。さらに、ＣＰＵ１は、ステップＳ１におけるフォント変形指示が縦方向への縮小を伴うか否かを判定し（ステップＳ４５）、縦方向への縮小を伴う場合に縦方向縮小処理を行う（ステップＳ４６）。そして、変形フォントが作成されると、ＣＰＵ１は、作成された変形フォントを変形フォントメモリ１４に記憶する（ステップＳ４７）とともに、表示部１２に表示する（ステップＳ４８）。こうして、縮小によるフォント変形処理がなされる。
【００５５】
次に、縮小によるフォント変形処理における横方向縮小処理について図９を参照して説明する。図９は、横方向縮小処理のフローチャートである。図９に示す横方向縮小処理は、基本的に図３に示す拡大によるフォント変形処理における横方向拡大処理と同様の手順で行われる。即ち、ＣＰＵ１は、対象となるフォントを行単位に分割し（ステップＳ５１）、行ごとにコストを算出し（ステップＳ５２）、全ての行についてコストが得られると（ステップＳ５３；Ｙｅｓ）、コストの低い順に行を順序付けする（ステップＳ５４）。次に、ＣＰＵ１は、横方向の縮小率に基づいて縮小する行の数を決定し（ステップＳ５５）、対象となる行について縮小処理を行う。
【００５６】
このように、縮小によるフォント変形処理における横方向縮小処理は、基本的な流れは拡大によるフォント変形処理における横方向拡大処理と同様である。但し、縮小によるフォント変形処理における横方向縮小処理は、ステップＳ５２におけるコスト計算方法及びステップＳ５６における縮小方法において、拡大によるフォント変形処理の場合と異なる。以下、これについて説明する。
【００５７】
まず、コスト計算について説明する。拡大によるフォント変形処理におけるコストは、線分量、即ち各行又は列に含まれる画素が線分に近いか、ドットに近いかを示す値であった。これに対し、縮小によるフォント変形処理におけるコストは、類似度、即ち各行又は列が、隣接する行又は列にどの程度類似しているかを示す値である。具体的には、ＣＰＵ１は各行に対し、隣の行との排他的論理和（ＸＯＲ）を算出する。排他的論理和の値は、隣接する画素が同じであると「０」となり、隣接する画素が異なると「１」となる。よって、各行に含まれる各フォント構成画素について排他的論理和を求め、その値が「１」となるフォント構成要素の数をその行のコストとする。よって、コストが高いほど、その行と隣接する行とのフォント画素パターンは非類似であり、コストが低いほど、その行と隣接する行とのフォント画素パターンは類似であることになる。こうして、コストは隣接する行との類似度（厳密には、非類似度）を示す値となる。
【００５８】
即ち、ある行のコストが低いということは、その行のフォント画素パターンが隣接する行のフォント画素パターンと類似していることを意味する。よって、類似している画素パターンを有する行を優先的に縮小の対象とすることにより、類似している行を削除する。これは、隣接する行が相互に類似している場合には、それを優先的に削除しても、文字全体に与える影響、違和感は少ないであろうとの発想に基づいている。これにより、自然な縮小が可能となる。
【００５９】
横方向縮小処理が終わると、次に縦方向縮小処理が行われるが（ステップＳ４６）、これは横方向縮小処理と基本的に同様である。対象となるフォントを列単位に分割し（ステップＳ５１）、列ごとにコストを算出し（ステップＳ５２）、全ての列についてコストが得られると（ステップＳ５３；Ｙｅｓ）、コストの低い順に列を順序付けする（ステップＳ５４）。そして、ＣＰＵ１は、縦方向の縮小率に基づいて縮小する列の数を決定し（ステップＳ５５）、対象となる列について縮小処理を行う。
【００６０】
図１０（ａ）〜（ｃ）に縦方向縮小処理の様子を示す。まず、図１０（ａ）に示すように各列についてコスト計算が行われ、次に図１０（ｂ）に示すようにコストの低い順に列の順序付けが行われ、コストが低い列から順に縮小の対象となる。ステップＳ５６の縮小処理においては、例えば図１０（ｃ）に示すように、コストの低い列から順にその行が削除される。図１０（ｃ）の例では、コストの低い３つの列（Ａ、Ｂ、Ｃ）が削除されている。
【００６１】
以上説明したように、本発明の縮小によるフォント変形処理では、対象となるフォントを行方向及び列方向に分割し、それぞれ隣接する行又は列との類似度を考慮して縮小を行う。よって、フォント画素パターンが類似する行又は列が隣接している部分を優先して縮小（行又は列の削除）を行うので、変形後のフォントが不自然となることが少なくなる。
【００６２】
図１１（ａ）及び（ｂ）に、単純な座標変換によるフォント変形処理と、本発明によるフォント変形処理により得られた変形フォント（拡大例と縮小例）例を示す。なお、この例は、説明の便宜上、縦方向と横方向に同一の拡大率、縮小率で変形した例を示している。図からわかるように、単純な座標変換処理による変形フォントでは縦や横のストロークが拡大により２重になったり（「本」という文字の横線、「肌」という文字の右側の縦線など）、斜めの線がギザギザに見えたりしている。また、縮小により、文字の左右のバランスが崩れたり（「本」という文字の左右のバランス）、画素同士が連結して別の文字に見えたり（「肌」という文字の左側が「月」ではなく「目」に見える）している。これに対し、本発明によるフォント変形処理では、そのような不具合は生じず、自然な変形フォントが得られている。
【００６３】
なお、以上説明したフォント変形処理は、表示部１２上に表示すべき文字列が決定された時点で１文字ずつ実行することができる。また、ユーザが表示フォントの縦横比変更などを指定した場合には、フォントＲＯＭ２２内に予め用意されている全ての元データについてフォント変形処理を行ってその結果を変形フォントメモリ１４内に格納してもよい。いずれの場合でも、上述のようにフォント変形処理自体は整数の単純な演算で済むので、処理に必要な時間は非常に短く、ユーザが不快に感じるほどの処理時間を要することはない。
【００６４】
また、上記の説明では、フォントの変形を、拡大によるものと縮小によるものに分けて説明したが、両者を組み合わせて変形フォントを生成することも可能である。例えば、あるフォントを縦方向に拡大、横方向に縮小して縦長フォントを生成したり、縦方向に縮小、横方向に拡大して横長フォントを生成することもできる。その場合には、拡大する方向については前述の拡大によるフォント変形処理を適用し、縮小する方向には縮小によるフォント変形処理を適用すればよい。なお、図２及び図８から明らかなように、縦方向又は横方向の一方のみにフォントを拡大又は縮小して変形フォントを生成することももちろん可能であり、その場合には、拡大又は縮小する方向にのみ処理を行えばよい。
【００６５】
［横方向処理と縦方向処理の順序］
次に、フォント変形処理における横方向拡大／縮小処理と、縦方向拡大／縮小処理の順序について検討する。先に説明したフォント変形処理においては、まず横方向の拡大／縮小処理を行い、次に縦方向の拡大／縮小処理を行っている（即ち、まず横方向に拡大／縮小し、次に縦方向に拡大／縮小している）。しかし、これは１つの例であり、縦方向の拡大／縮小処理を先に行い、次に横方向の拡大／縮小処理を行うことも可能である。そして、いずれが好ましいかは、処理の対象となるフォントの構成に依存する。
【００６６】
図１２（ａ）及び（ｂ）に、同一の画素パターンに対して異なる順序で拡大を行った場合の例を示す。図１２（ａ）の例は、まず縦方向に拡大を行い、次に横方向に拡大を行った例である。図１２（ａ）において、最も左の元データ５０ａにおいて水平方向のコストを計算すると上から２行目が最も小さい。よって、上から２行目を縦方向に１画素分拡大すると真ん中のデータ５０ｂが得られる。次に、データ５０ｂにおいて垂直方向のコストを計算すると左から４行目及び５行目のコストが最も小さい。よって、この一方を横方向に１画素分拡大すると、最も右の拡大後データ５０ｃが得られる。
【００６７】
一方、図１２（ｂ）の例は、まず横方向に拡大を行い、次に縦方向に拡大を行った例である。図１２（ｂ）において、最も左の元データ６０ａにおいて垂直方向のコストを計算すると、左から４行目及び５行目が最も小さい。よって、その一方を横方向に１画素分拡大すると真ん中のデータ６０ｂが得られる。次に、データ６０ｂにおいて水平方向のコストを計算すると、上から１行目及び３行目のコストが最も小さい。よって、上から１行目を縦方向に１画素分拡大すると、最も右の拡大後データ６０ｃが得られる。
【００６８】
このように、元データが同一でも、縦→横の順で拡大するか、横→縦の順で拡大するかによって、結果として得られるデータは異なる。図１２（ａ）及び（ｂ）の例では、元データに対しては図１２（ａ）に示すように縦→横の順で拡大した方が自然に拡大がなされる。よって、全ての文字に対して自然な変形を行うためには、文字ごとに実験的に縦→横、及び横→縦の順で変形処理を行ってどちらの順序で変形処理を行う方が自然な変形フォントが得られるかを予め決めておくことが好ましい。そして、図１２（ｃ）に模式的に示すように、各フォントの元データに対して、フォント変形処理を行う場合に、縦→横の順がよいか、横→縦の順がよいかを示す処理順序情報（例えばフラグなど）を属性データとして付属させることがより好ましい。こうすれば、ＣＰＵ１６は、フォント変形処理の実行時にフォントＲＯＭ２２から読み出したフォントに付属する処理順序情報を参照し、それに示す順序でフォントの変形を行えばよい。なお、同一のフォントであっても、拡大の場合に好ましい処理順序と、縮小の場合に好ましい処理順序とが異なる場合もあるので、拡大を伴う変形処理と、縮小を伴う変形処理について個別に処理順序情報を用意することが好ましい。さらに、拡大率／縮小率によって好ましい処理順序が異なる場合には、拡大率／縮小率ごとに処理順序情報を用意すればよい。
【００６９】
なお、本実施形態においては、コストの小さい行又は列から順に画素の拡大又は縮小処理を行うものとしたが、本発明の適用範囲はこれに限られるものではなく、例えば本実施形態において用いたコストの逆数を取ったものを新しい意味でのコストと定義すれば、コストの大きい行又は列から順に画素の拡大又は縮小処理を行うことにより、本実施形態と同様の効果を得ることができる。
【図面の簡単な説明】
【図１】本発明の実施形態にかかるビットマップフォントの変形処理を適用した携帯端末装置の概略構成を示す。
【図２】本発明によるフォント変形処理のフローチャートである。
【図３】横（縦）方向拡大処理のフローチャートである。
【図４】拡大によるフォント変形処理におけるコスト計算処理のフローチャートである。
【図５】拡大によるフォント変形処理におけるコスト計算処理例を示す図である。
【図６】コスト計算処理の例を示す図である。
【図７】横（縦）方向拡大処理の例を示す図である。
【図８】縮小によるフォント変形処理のフローチャートである。
【図９】横（縦）方向縮小処理のフローチャートである。
【図１０】縮小によるフォント変形処理におけるコスト計算処理例を示す図である。
【図１１】本発明によるフォント変形処理と、単純な座標変換によるフォント変形処理の結果を比較する図である。
【図１２】横方向処理と縦方向処理の処理順序と処理結果との比較、及び、処理順序情報を含むフォントデータのデータ構造例を示す図である。
【符号の説明】
１０　携帯端末装置
１２　表示部
１４　変形フォントメモリ
１６　ＣＰＵ
１８　入力部
２０　プログラムＲＯＭ
２２　フォントＲＯＭ
２４　ＲＡＭ
【図１】
2004126555.tif 000003
【図２】
2004126555.tif 000004
【図３】
2004126555.tif 000005
【図４】
2004126555.tif 000006
【図５】
2004126555.tif 000007
【図６】
2004126555.tif 000008
【図７】
2004126555.tif 000009
【図８】
2004126555.tif 000010
【図９】
2004126555.tif 000011
【図１０】
2004126555.tif 000012
【図１１】
2004126555.tif 000013
【図１２】
2004126555.tif 000014