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