(57)【要約】【課題】大容量記憶装置を持たない小型の組込み機器にも実装可能な十分に小さいデータ量でスケーラブルフォントデータを作成する方法および表示する方法の提供を課題とする。【解決手段】スケーラブルフォントデータを作成するにあたり文字のストロークから抽出した論理座標をストローク形状に応じてコード化する。一度コード化したストロークは他の文字のコード化時に再利用できる。コード化されたデータを必要最小限のデータ量で，かつ拡張性を持たせた構造のフォントデータとして格納し，ビットマップ形式のフォントデータと同等以下の小さいデータ量を持ちながら，拡大・縮小しても品質の落ちにくいスケーラブルなフォントデータを作成する。また作成したフォントデータを展開して文字ストロークを再現し，文字を表示する。【選択図】  図１
2005165160.tif 000002
【特許請求の範囲】
【請求項１】
文字ストロークから論理座標を抽出し，得られた座標群とストローク形状および既に他の文字においてコード化された任意のストローク情報と表示の際のヒント情報を組み合わせてコード化する，スケーラブルフォントデータを作成する方法。
【請求項２】
請求項１記載の方法で作成されたフォントデータから文字ストロークを展開し文字パターンを表示する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
携帯電話，ＰＤＡ，電子辞書，携帯型音楽・ビデオプレーヤといった携帯情報機器，文字を表示する機能を持つテレビ，ビデオ，ビデオカメラ，デジタルカメラといった家電製品，電光掲示板などの屋外表示装置，カードタイプやペーパータイプといった超薄型軽量機器のように，低解像度の表示装置を搭載し大容量記憶装置を持たない組込み機器にスケーラブルなフォントデータを実装し表示する方法に関する。
【背景技術】
【０００２】
携帯電話に代表される低分解能の表示装置しか持たない組込み機器では，表示する文字フォントをビットマップ形式のデータで実装している。ビットマップ形式のフォントは各文字パターンがドットで構成されており，日本語ビットマップフォントで一般的に用いられる１６×１６ドットフォントでは１文字あたり３２バイトのデータ量が必要となる。日本語の文字数はＪＩＳコード（ＪＩＳ Ｘ ０２０８−１９９０）で定められる少なくとも６，８７９個であり，これらのデータ量は２２０，１２８バイトに達する。ハードディスクなど大容量記憶装置を持たない小型組込み機器にとってこのデータ量はかなりの負担となっている。またビットマップフォントを縮小して表示するとドットが潰れて可読性が低くなったり，拡大して表示するとギザギザして品質が落ちることが知られている。これを防ぐには表示する各サイズ毎にビットマップフォントデータを用意する必要があり，ますますデータ量が増えてしまうという問題があった。
【０００３】
一方，表示する文字の大きさを変えても品質が保たれるフォントはスケーラブルフォントと呼ばれ，現在最もよく用いられているのはアウトライン形式のフォントである。アウトライン形式のフォントは文字パターンの輪郭線の座標を保持し，表示する大きさに応じて座標変換を行って直線や数学的に表現できる曲線で輪郭を繋いでいくフォントである。この形式ではサイズごとにフォントデータを用意しなくても高品質な文字パターンが得られるが，一般的にアウトラインフォントのデータ量は数メガバイトに達し，小型組込み機器に実装することは極めて困難である。
【０００４】
スケーラブルフォントとしてはこの他にストローク形式のフォントがある。ストローク形式のフォントは，文字パターンを筆の運びであるストロークで構成してその座標を保持し，表示する大きさに応じて座標変換を行って直線や曲線で繋いでいくフォントである。保持するデータの対象が輪郭線ではなくストロークの芯線のみであるためアウトライン形式に比べデータ量は少ない。これまでにペンプロッタなどで用いられてきたが，文字の画数が多いとストローク数も増えデータ量が増加しビットマップフォント並みには小さくできなかった。
【０００５】
携帯情報機器やデジタル家電など表示装置を持つ小型の組込み機器が今後一層普及することは間違いなく，ビットマップ形式と同等以下のデータ量で済み，かつ拡大・縮小しても表示品質が落ちにくいスケーラブルなフォントデータの必要性は論をまたない。
【０００６】
従来からスケーラブルフォントのデータ量を圧縮しようとする試みがあった。特許公開平０７−１２１１５４ ではアウトラインフォントを直線や曲線などの要素に分解しコード化してフォントデータを圧縮している。しかし全ての文字のストロークに対して要素コードを割り当てるため圧縮効果には限りがあった。これに対し特許公開平０９−０３４４３４や特許公開平０９−１３４１５６では部首など共通利用できる部品データを一つにまとめることにより圧縮効果をあげている。しかし共通部品をどの程度用意すれば最大の圧縮効率を上げられるかの明快な解決方法はなく，共通部品を増やせばデータ量も増大してしまう問題があった。また従来の圧縮方法は基本的にアウトラインフォント向けのものであり，必ずしも輪郭線が必要のない低解像度の小型組込み機器に適用するには無駄が多かった。輪郭線のないストロークフォントにおける圧縮率の高いデータ形式はこれまでに存在しなかった。
【０００７】
またスケーラブルフォントといえど，１２ドット程度まで縮小して表示すると文字が潰れて可読性が低くなる問題があった。この潰れを回避する方法として特許公開２０００−２３１３７３ではストローク間の距離が近接している場合にはストロークの移動または削除を行っている。ただしこの方法では表示する全ての文字の，それを構成する全てのストロークについて毎回距離計算を行う必要があり，計算処理の負担が無視できないものである。これに対し特許公開平０６−２６６３４０ではフォントデータにおける全てのストロークに対してレベルを設定し，表示する際はそのレベルに応じて省略するかしないかを決定している。計算処理の負担は軽いものの全てのストロークにレベルデータが必要となり，データ量が増加してしまっている。
【０００８】
本発明はこのような状況を鑑みてなされたものであり，文字サイズに応じた複数のビットマップ形式のフォントやアウトライン形式のフォントを格納するための大容量記憶装置を持たない小型組込み機器にも実装可能なように，ビットマップ形式のフォントと同等以下のデータ量で，縮小しても潰れの発生しにくいスケーラブルなストロークフォントデータの作成方法と表示方法を提供するものである。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
大容量記憶装置を持たない小型の組込み機器にも実装可能な十分に小さいデータ量のスケーラブルフォントデータの作成および表示方法を提供することを課題とする。
【課題を解決するための手段】
【００１０】
上記の目的を達成するために，本発明では図１に示すシステム構成でスケーラブルフォントデータを作成し，作成したフォントデータを表示する。フォントデータの作成は図１におけるフォント作成部で行う。フォント作成部はディスプレイ（１０１），パーソナルコンピュータまたはワークステーション本体（１０２），キーボード（１０３），マウスまたはタブレット（１０４）で構成された標準的なコンピュータ環境である。この環境下で図２６に示すフォント作成アプリケーションを用いてフォント作成作業を行う。作成されたフォントデータは図１におけるフォント表示部，すなわち最終的にフォントデータを表示する組込み機器に実装される。フォント表示部はディスプレイ（２０１），ＣＰＵ（２０２），ＲＡＭ（２０３），ＲＯＭ（２０４），メモリカード（２０５）で構成された組込み環境である。フォントデータはＲＯＭ（２０４）またはメモリカード（２０５）に実装され，ＣＰＵ（２０２）がフォントデータを読み込みＲＡＭ（２０３）を作業領域として使用しディスプレイ（２０１）に文字パターンを表示する。
【００１１】
フォントデータを作成し，表示する方法は図２に示す処理の流れによって行う。フォント作成部の処理内容は図２６に示すフォント作成アプリケーションの内部処理であり，文字パターンを筆の運びであるストロークに分離するステップ（Ｓ１１），分離したストロークの形状分類と座標値を決定するステップ（Ｓ１２），他の文字のストロークを再利用できるか調査するステップ（Ｓ１３），ストロークをコード化して置き換えるステップ（Ｓ１４），コード化されたデータをフォントデータとして格納するステップ（Ｓ１５）によって構成される。これらのステップはフォント作成アプリケーションを操作するオペレータによって実行される。フォント表示部の処理内容は図１におけるフォント表示部のＲＯＭ（２０４）に実装された文字パターンを表示するドライバソフトウェアの内部処理であり，フォントデータから描画する文字のエレメントデータを取得するステップ（Ｓ２１），エレメントデータからストロークを論理座標上に再現するステップ（Ｓ２２），ストロークを実際に表示する物理座標に変換するステップ（Ｓ２３），文字の太さや書体を考慮しながらストロークを描画するステップ（Ｓ２４）によって構成される。これらのステップは図１におけるフォント表示部のＣＰＵ（２０２）によって実行される。
【００１２】
上記ステップＳ１１，ステップＳ１２，ステップＳ１３，ステップＳ１４の詳細手順を次に記述する。
【００１３】
図３に示すように文字パターンは筆の運びであるストロークに分解でき，ストロークは基本的に直線および曲線で表すことが可能である。この他に任意文字のストロークの一部または全部を意味する仮想的なストロークを定義する。これは漢字における部首のように複数の文字で同じ形のストロークを再利用するために用いられる。図４に本発明におけるストロークの分類を示す。ＬＩＮＥは斜線を含む直線または長方形または楕円を表すストロークである。ＣＵＲＶＥは２次Ｂ−スプライン曲線を表すストロークである。ＣＯＤＥは任意の指定する文字のストロークの一部または全部を意味するストロークである。ＰＡＲＴは指定するオフセット位置の文字ストロークの一部または全部を意味するストロークである。ＮＨＬＩＮＥは複数の水平線を表すストロークである。ＮＶＬＩＮＥは複数の垂直線を表すストロークである。ＨＩＮＴはストロークを描画する際のヒント情報を表すストロークである。図４におけるエレメント数とはストロークをコード化する際のデータ長を示しており，ストロークは図５のように複数のエレメントデータとしてコード化される。エレメントデータの羅列はレコードと呼称し，レコード中からストロークの区切りを識別するため第１エレメントの最上位ビットは常に１であり，その他は常に０としている。それぞれのストロークは図４の通りエレメント数が決まっているが，図５におけるストローク２のように追加エレメントが存在する場合もある。追加エレメントは直前のストロークと連続した直線を描画するといった，後述する制御を行うために使用される。図６に示すようにストロークは６４×６４格子の論理座標上に配置されて座標の抽出が行われる。スケーラブルフォントの座標系として６４×６４格子はアウトラインフォントの場合と比べて少ないが，低解像度向けとしては十分な解像度である。座標上には現在の筆の位置であるカレント座標と呼ぶ位置を定義し，主にストロークの終点を意味する。カレント座標は後述する追加エレメントによる制御に使用される。
【００１４】
ＬＩＮＥストロークは図７のように２つのエレメントでコード化される。第１エレメントで始点論理座標（Ｘ１，Ｙ１）を，第２エレメントで終点論理座標（Ｘ２，Ｙ２）とストロークの形状Ｓｓｈａｐｅを定義する。Ｓｓｈａｐｅが０の場合，始点と終点を結ぶ斜線を含む直線ストロークである。Ｓｓｈａｐｅが１の場合，始点と終点を端点にもつ長方形を表すストロークである。Ｓｓｈａｐｅが２の場合，始点と終点を端点にもつ長方形に内接する楕円を意味するストロークである。ＬＩＮＥストロークによってカレント座標は終点論理座標（Ｘ２，Ｙ２）に移動する。
【００１５】
ＣＵＲＶＥストロークは図８のように３つのエレメントでコード化される。始点と終点および制御点で定められる２次Ｂ−スプライン曲線を意味するストロークである。第１エレメントで始点論理座標（Ｘ１，Ｙ１）を，第２エレメントで終点論理座標（Ｘ２，Ｙ２）を，第３エレメントで制御点論理座標（Ｘｃ，Ｙｃ）を定義する。制御点の位置は６４×６４格子の範囲を超える場合があるため，−３１〜９６の範囲で配置することができるように制御点論理座標コード（Ｃｘｃ，Ｃｙｃ）によって制御点論理座標（Ｘｃ，Ｙｃ）を表現している。すなわちＸｃ＝Ｃｘｃ−３１およびＹｃ＝Ｃｙｃ−３１の関係が成立する。ＣＵＲＶＥストロークによってカレント座標は終点論理座標（Ｘ２，Ｙ２）に移動する。
【００１６】
ＣＯＤＥストロークは図９のように３つのエレメントで構成される。始点と終点を端点にもつ長方形内にｃｏｄｅで指定するＪＩＳコード（ＪＩＳ Ｘ ０２０８−１９９０）の文字パターンを描画するストロークである。第１エレメントで始点論理座標（Ｘ１，Ｙ１）を，第２エレメントで終点論理座標（Ｘ２，Ｙ２）と終端省略ストローク数Ｓｎｕｍを，第３エレメントで文字コードを定義する。文字を表示するドライバソフトウェアのプログラムサイズを低減し実行速度を上げるために，始点と終点の位置関係は常にＸ１＜Ｘ２かつＹ１＜Ｙ２とする。条件を満たさないデータがレコード中に存在した場合，そのＣＯＤＥストロークは無視される。終端省略ストローク数Ｓｎｕｍは図９にあるようにｃｏｄｅで指定する文字パターンが持つストロークのうち，終わりから数えていくつのストロークを省略するか指定する値であり，０〜７までの値をとり得る。０の場合，全てのストロークを描画し，１の場合最後のストロークのみ描画しない。省略ストローク数が該当文字を構成する全ストローク数より大きくなるデータがレコード中に存在した場合，そのＣＯＤＥストロークは無視される。またｃｏｄｅ値がＪＩＳコードの範囲を超える場合も，そのＣＯＤＥストロークは無視される。なおｃｏｄｅで指定した文字を構成するストローク中にＣＯＤＥまたは後述するＰＡＲＴストロークが存在しても構わないが，指定元の文字コードを示されるとループ状態になるので，その場合は無視すること。ＣＯＤＥストロークはフォントデータ中の任意文字のストロークを直接参照することができるため，漢字における部首データを共通部品データとしてあらかじめ準備しておく必要がなく，フォントデータ量の削減が行える。ＣＯＤＥストロークによってカレント座標は終点論理座標（Ｘ２，Ｙ２）に移動する。
【００１７】
ＰＡＲＴストロークは図１０のように２つのエレメントで構成される。始点の位置にＪＩＳコード表における現在の文字位置から指定数ｏｆｆｓｅｔだけ変位した位置に存在するＪＩＳコード文字を描画するストロークである。描画する大きさは指定できない。第１エレメントで始点論理座標（Ｘ，Ｙ）を，第２エレメントで再利用開始ストローク番号Ｓｓｔａｒｔ，再利用ストローク数Ｓｎｕｍ，文字コード表オフセットｏｆｆｓｅｔを定義する。再利用開始ストローク番号Ｓｓｔａｒｔはｏｆｆｓｅｔで指定される文字のストロークのうち，先頭から数えて何番目のストロークから再利用するかを指定する。０番目が先頭ストロークを意味する。再利用ストローク数ＳｎｕｍはＳｓｔａｒｔ番目のストロークからいくつのストロークを再利用するかを指定する。Ｓｎｕｍ値が０の場合，全てのストロークを再利用することを意味し，再利用ストローク数が該当文字を構成するストローク数より大きい場合，構成ストローク数以上は無視される。ｏｆｆｓｅｔ値による変位の結果，ＪＩＳコード範囲を超える場合，そのＰＡＲＴストロークは無視される。なおｏｆｆｓｅｔで指定した文字を構成するストローク中にＰＡＲＴまたはＣＯＤＥストロークが存在しても構わないが，指定元の文字コードを示されるとループ状態になるので，その場合は無視すること。このようにＰＡＲＴストロークはフォントデータ中の他の文字から大きさを変える必要のない部首のストロークを再利用する場合，ＣＯＤＥストロークよりも少ないエレメント数で実現可能である。ＰＡＲＴストロークによってカレント座標は始点論理座標（Ｘ，Ｙ）に移動する。
【００１８】
ＮＨＬＩＮＥストロークは図１１のように２つのエレメントでコード化される。始点の位置から指定する間隔で複数の水平線を描画するストロークである。第１エレメントで始点論理座標（Ｘ，Ｙ）を，第２エレメントで水平線の本数Ｓｎｕｍ，水平線の間隔ＤＹ，水平線の長さｌｅｎｇｔｈを定義する。図１１のように水平線はＸ軸の正方向つまり右方向へ描画され，追加される線分はＹ軸の正方向つまり下方向に描画される。Ｓｎｕｍ値が０の場合，本数は８本を意味する。ＮＨＬＩＮＥストロークによってカレント座標は最終水平線の終点座標（Ｘ＋ｌｅｎｇｔｈ，Ｙ＋ＤＹ×（本数−１））に移動する。
【００１９】
ＮＶＬＩＮＥストロークは図１２のように２つのエレメントでコード化される。始点の位置から指定する間隔で複数の垂直線を描画するストロークである。第１エレメントで始点論理座標（Ｘ，Ｙ）を，第２エレメントで垂直線の本数Ｓｎｕｍ，垂直線の間隔ＤＸ，垂直線の長さｌｅｎｇｔｈを定義する。図１２のように垂直線はＹ軸の正方向つまり下方向へ描画され，追加される線分はＸ軸の正方向つまり右方向に描画される。Ｓｎｕｍ値が０の場合，本数は８本を意味する。ＮＶＬＩＮＥストロークによってカレント座標は最終垂直線の終点座標（Ｘ＋ＤＸ×（本数−１），Ｙ＋ｌｅｎｇｔｈ）に移動する。
【００２０】
ＨＩＮＴストロークは図１３のように１つのエレメントでコード化される。ヒント種別ｈｉｎｔとヒントデータｄａｔａによってストロークに関する補足情報を定義する。ヒント種別は０〜６３の６４種類定義でき，種別に応じた補足データをヒントデータｄａｔａに０から６３の範囲で設定できる。ｈｉｎｔ値が０の場合，ヒント種別は解像度指定を意味しｄａｔａにはドットサイズが定義される。解像度指定とはフォントを縮小して表示すると潰れが発生して可読性が低くなる場合に，ｄａｔａで示すドットサイズ以下に縮小する時は，潰れを発生させないためにフォントレコード中における該当ＨＩＮＴストローク以後のストロークを省略することを意味する。これによってストローク間の距離を計算したり全てのストロークにレベルデータを持たせたりせずに縮小時のストローク省略情報を与えることができるので，表示処理における計算量とフォントデータ量の削減が行える。ＨＩＮＴストロークによってカレント座標は移動しない。
【００２１】
追加エレメントは図５におけるストローク２のように通常のストロークエレメントデータの直後に配置され，直前のストロークに関連した制御を行うための制御コードであり，図１４に示すように６種類存在する。ＯＰＴ＿ＬＩＮＥはカレント座標から斜線を含む直線を描画する追加エレメントである。ＯＰＴ＿ＣＵＲＶＥはカレント座標から曲線を描画する追加エレメントである。ＯＰＴ＿ＮＣＯＰＹは直前のストロークをコピーする追加エレメントである。ＯＰＴ＿ＲＣＯＰＹは直前のストロークを左右反転してコピーする追加エレメントである。ＯＰＴ＿ＨＡＸＩＳは直前のストロークの中点から水平線を描画する追加エレメントである。ＯＰＴ＿ＶＡＸＩＳは直前のストロークの中点から垂直線を描画する追加エレメントである。以下に追加エレメントのコード化方法の詳細を説明する。
【００２２】
ＯＰＴ＿ＬＩＮＥ追加エレメントは図１５のように１つのエレメントでコード化される。直前のストロークによって更新されたカレント座標位置から第１追加エレメントで定義する終点論理座標（Ｘ，Ｙ）まで直線を描画する制御エレメントである。ＯＰＴ＿ＬＩＮＥ追加エレメントによってカレント座標は終点論理座標（Ｘ，Ｙ）に移動する。
【００２３】
ＯＰＴ＿ＣＵＲＶＥ追加エレメントは図１６のように２つのエレメントでコード化される。直前のストロークによって更新されたカレント座標位置を始点座標とし，第１追加エレメントで定義する終点論理座標（Ｘ，Ｙ）および第２追加エレメントで定義する制御点論理座標（Ｘｃ，Ｙｃ）で定められる２次Ｂ−スプライン曲線を描画する制御エレメントである。制御点の位置は６４×６４格子の範囲を超える場合があるため，−３１〜９６の範囲で配置することができるように制御点論理座標コード（Ｃｘｃ，Ｃｙｃ）によって制御点論理座標（Ｘｃ，Ｙｃ）を表現している。すなわちＸｃ＝Ｃｘｃ−３１およびＹｃ＝Ｃｙｃ−３１の関係が成立する。ＯＰＴ＿ＣＵＲＶＥ追加エレメントによってカレント座標は終点論理座標（Ｘ，Ｙ）に移動する。
【００２４】
ＯＰＴ＿ＮＣＯＰＹ追加エレメントは図１７のように１つのエレメントでコード化される。直前に存在するストロークを，そのストロークの始点から第１追加エレメントで定義する相対コピー位置（ＤＸ，ＤＹ）だけ変位した位置に同じく第１追加エレメントで定義するコピー回数ｎｕｍ回だけコピーして描画する制御エレメントである。図１７に示す通り，コピーする度に相対位置が（ＤＸ，ＤＹ）ずつ増加する。ｎｕｍ値が０の場合，コピー回数は4回を意味する。ＯＰＴ＿ＮＣＯＰＹ追加エレメントによってカレント座標は変わらない。
【００２５】
ＯＰＴ＿ＲＣＯＰＹ追加エレメントは図１８のように１つのエレメントでコード化される。直前に存在するストロークを，そのストロークの始点から第１追加エレメントで定義する相対コピー位置（ＤＸ，ＤＹ）だけ変位した位置に同じく第１追加エレメントで定義するコピー回数ｎｕｍ回だけ左右反転コピーして描画する制御エレメントである。図１８に示す通り，コピーする度に相対位置が（ＤＸ，ＤＹ）ずつ増加する。ｎｕｍ値が０の場合，コピー回数は4回を意味する。ＯＰＴ＿ＲＣＯＰＹ追加エレメントによってカレント座標は変わらない。
【００２６】
ＯＰＴ＿ＨＡＸＩＳ追加エレメントは図１９のように１つのエレメントでコード化される。第１追加エレメントで定義する水平軸線論理Ｘ座標Ｘａと直前に存在するストロークの中点論理Ｙ座標で定める位置から，同じく第１追加エレメントで定義する水平軸線長さｌｅｎｇｔｈだけ水平線を描画する制御エレメントである。図１９に示す通り，ＯＰＴ＿ＨＡＸＩＳ追加エレメントによって直前のストロークと交差する水平軸線が描画される。直前のストロークの中点論理座標とは，該当ストロークの始点座標とそのストロークによって更新されるカレント座標との中点を意味する。直前のストロークがＨＩＮＴストロークの場合，さらに前のストロークが適用される。ＯＰＴ＿ＨＡＸＩＳ追加エレメントによってカレント座標は（Ｘａ＋ｌｅｎｇｔｈ，中点Ｙ論理座標）に移動する。
【００２７】
ＯＰＴ＿ＶＡＸＩＳ追加エレメントは図２０のように１つのエレメントでコード化される。直前に存在するストロークの中点論理Ｘ座標と第１追加エレメントで定義する垂直軸線論理Ｙ座標Ｙａで定める位置から，同じく第１追加エレメントで定義する垂直軸線長さｌｅｎｇｔｈだけ垂直線を描画する制御エレメントである。図２０に示す通り，ＯＰＴ＿ＶＡＸＩＳ追加エレメントによって直前のストロークと交差する垂直軸線が描画される。直前のストロークの中点論理座標とは，該当ストロークの始点座標とそのストロークによって更新されるカレント座標との中点を意味する。直前のストロークがＨＩＮＴストロークの場合，さらに前のストロークが適用される。ＯＰＴ＿ＶＡＸＩＳ追加エレメントによってカレント座標は（中点Ｘ論理座標，Ｙａ＋ｌｅｎｇｔｈ）に移動する。
【００２８】
上記までが図２におけるステップＳ１１，ステップＳ１２，ステップＳ１３，ステップＳ１４の詳細である。これらのステップは図２６に示すフォント作成アプリケーションを使用して行われ，文字パターンをストロークに分離しエレメントデータとしてコード化する処理は，オペレータの操作による７種類のストロークと６種類の追加エレメントを自由に組み合わせて文字パターンを構成することで実現される。この作業は図１のディスプレイ（１０１）上で目視しながら行うことができ，作成したフォントが様々な大きさに縮小・拡大された場合，実際どのように表示されるかもサンプル表示される。すなわちフォント作成の段階で，縮小表示した場合に潰れが発生するかどうかをあらかじめ確認することができ，潰れが発生する場合にはＨＩＮＴストロークによって省略情報を与えるか，該当するストロークの存在自体を意図的に省略して可読性の高いフォントを作成することが可能となる。フォント作成アプリケーションはオペレータによって組み合わされたストロークをエレメントデータに変換すると共に，エレメントデータをフォントデータとして格納するステップ（Ｓ１５）を以下の方法で行う。
【００２９】
全ての文字パターンのストロークをコード化したエレメントデータは図２１に示す形式でフォントデータとして格納する。ヘッダはフォントデータの基本情報を格納する。フォントテーブルは８，８３６文字の各レコード位置情報を格納する。フォントレコードは８，８３６文字分のエレメントデータを格納する。
【００３０】
フォントデータのヘッダは図２２ヘッダ詳細に示す形式でフォントデータの基本情報を格納する３２バイトのデータである。識別コードは本発明による方法で作成されたスケーラブルフォントデータを示す０ｘ２６４ｃとする。フォント名とバージョンはＡＳＣＩＩコード（ＪＩＳ Ｘ ０２０１−１９７６ Ｒｏｍａｎ Ｓｅｔ）２文字で格納する。フォントテーブルへのオフセット，フォントレコードへのオフセットは，それぞれフォントデータ先頭から数えたバイト数でそれぞれの位置を格納する。上位アドレスコードとは各文字のエレメントデータがフォントレコードのどの位置に格納されているか計算するために使用される値であり７種類存在する。使用方法は次に述べる。
【００３１】
フォントテーブルは図２２テーブル詳細にあるようにＪＩＳコード（ＪＩＳ Ｘ ０２０８−１９９０）全ての文字を格納できる９４区×９４文字，すなわち全部で８，８３６文字のレコード位置情報を格納する１７，６７２バイトのアドレスデータである。図２２テーブル詳細のとおりアドレスデータはＪＩＳコード順に並んでいる。
【００３２】
各文字のエレメントデータがフォントレコードのどの位置に存在しているかを示すレコードアドレスをフォントデータに格納する方法と展開する方法は図２３の通りである。フォント作成部では，エレメントデータの最小単位が２バイトであり，エレメントデータの存在するレコードアドレスが常に偶数であることを利用して，レコードアドレスを２で割り１ビットの圧縮を行う。まずこの値の下位１６ビットをフォントテーブルの該当ＪＩＳコードの位置に格納する。次に１６ビット以上の上位ビットは同じ値が連続して冗長性を有するため，次のように圧縮して格納する。すなわちフォントデータをＪＩＳコード順に作成していく際に初めて上位ビットが１になった場合は，該当ＪＩＳコードをフォントヘッダの上位アドレスコード１に格納する。同様に初めて上位ビットが２になった場合は，該当ＪＩＳコードをフォントヘッダの上位アドレスコード２に格納し，以後同様に上位ビットが７の範囲まで行う。上位ビットが７までであることからレコードアドレスの取り得る範囲は０ｘ７ｆｆｆｆの２倍，つまりフォントレコードの最大容量は１，０４８，５７６バイトまでとなる。これはほぼ１メガバイトの容量であり組込み向けフォントデータとしては必要十分な大きさである。フォント表示部では，このように格納されたアドレス情報を次のように展開してレコードアドレスを算出する。すなわち表示するＪＩＳコードを元にフォントテーブルからレコードアドレスを２で割った値の下位１６ビットを取得する。該当ＪＩＳコードがフォントヘッダの上位アドレスコード１に格納されているＪＩＳコード以上である場合はその値に０ｘ１００００を加算する。または上位アドレスコード２の値以上である場合はその値に０ｘ２００００を加算する。以後同様に上位ビットを加算する。その後，値を２倍しレコードアドレスを算出する。
【００３３】
ここまでが図２におけるフォント作成部の処理ステップＳ１１からステップＳ１５に関する詳細説明である。これまでに説明したストロークのコード化方法はビット単位まで詳細に説明したものであるが，このコード構造を変更してより詳細な座標系を用いたり，ストローク再利用方法の拡張を行えることは明らかである。またこの方法によって芯線のみのストロークフォントデータを作成できるが，アウトラインフォントなどその他のフォント形式における芯線ストローク情報を作成する際にも適用できることは明らかである。さらに1文字を構成するエレメントデータをランレングス法などの圧縮方法によって圧縮を行えばフォントデータサイズをより小さくできることは明らかである。
【００３４】
上記のように格納されたフォントデータは図１に示すフォント表示部，すなわち組込み機器のＲＯＭ（２０４）やメモリカード（２０５）に実装される。ＲＯＭ（２０４）には，格納されたフォントデータから表示したい文字のエレメントデータを取得する処理（ステップＳ２１），エレメントデータからストロークを論理座標上に展開する処理（ステップＳ２２），ストロークを任意の表示位置，表示サイズの物理座標に変換する処理（ステップＳ２３），ディスプレイ（２０１）に文字パターンを描画する処理（ステップＳ２４），これら一連の処理を行うドライバソフトウェアが搭載される。ＣＰＵ（２０２）はＲＡＭ（２０３）を作業領域に使用しながらこのプログラムを実行する。以下にステップＳ２１〜Ｓ２４までの詳細手順を説明する。
【００３５】
ドライバソフトウェアは格納されたフォントデータのヘッダを確認してフォントテーブルの先頭位置を取得し，表示したい文字のＪＩＳコードを元にヘッダおよびテーブルから図２３フォント表示部で示した方法でレコードアドレスを算出する。
【００３６】
このアドレスに目的の文字のエレメントデータが配置されているので順次エレメントを走査して，これまでに説明したストロークおよび追加エレメントを論理座標上に展開していく。エレメントの走査はＪＩＳコードにおける次の文字のレコードアドレス直前まで行われる。
【００３７】
展開されたストロークの論理座標を表示サイズに応じて物理座標に変換する。この変換は論理座標が６４×６４格子であることを用いて相似的に行われる。表示サイズの縦横比は必ずしも１：１である必要はない。
【００３８】
物理座標に変換されたストロークを文字パターンのピクセルデータとしてディスプレイ（２０１）描画，出力する。このとき物理座標の１ピクセルのみでなく隣り合うピクセルを複数セットすることにより，表示する文字の太さを変更できる。また複数セットする際の形状を制御することにより，明朝体やゴシック体などの書体の表現がある程度可能である。
【００３９】
ここまでが図２におけるフォント表示部の処理ステップＳ２１からステップＳ２４に関する詳細説明である。
【発明の効果】
【００４０】
本発明が提供するスケーラブルフォントの作成方法と表示方法によってビットマップフォントと同等以下のデータ量で拡大・縮小しても品質の落ちにくいスケーラブルフォントを作成し表示することができる。
【発明を実施するための最良の形態】
【００４１】
図１に示すとおり，パーソナルコンピュータまたはワークステーション上でフォントデータを作成する。作成されたフォントデータを組込み機器のＲＯＭやメモリカードに実装すると共にフォントデータを展開し描画するドライバソフトウェアも搭載する。組込み機器は接続された表示装置に文字パターンを出力する。
【実施例１】
【００４２】
図２４に「木」という文字のエレメントデータ化を実施した例を示す。木という文字は図のように１つのＬＩＮＥストロークおよび１つのＯＰＴ＿ＶＡＸＩＳ追加エレメントと１つのＣＵＲＶＥストロークおよび１つのＯＰＴ＿ＲＣＯＰＹ追加エレメントで構成され，合計１４バイトのエレメントデータにコード化できる。
【実施例２】
【００４３】
図２５に「森」という文字のエレメントデータ化を実施した例を示す。森という文字は図のように「木」という文字の２つのＣＯＤＥストロークと１つのＯＰＴ＿ＮＣＯＰＹ追加エレメントで構成され，合計１４バイトのレコードにコード化できる。
【００４４】
一般に使用される１６ドット×１６ドットのビットマップフォントデータは１文字あたり３２バイトのデータサイズが必要となるため，上記実施例の場合，半分以下のデータサイズでスケーラブルフォントを作成できたことになる。
【産業上の利用可能性】
【００４５】
本発明によって提供されるスケーラブルフォントデータは，データサイズが一般に使用されるビットマップフォントと比較して同等以下であるので，携帯電話，ＰＤＡ，電子辞書，携帯型音楽・ビデオプレーヤといった携帯情報機器，文字を表示する機能を持つテレビ，ビデオ，ビデオカメラ，デジタルカメラといった家電製品，電光掲示板などの屋外表示装置，カードタイプやペーパータイプといった超薄型軽量機器のように，低解像度の表示装置を搭載し大容量記憶装置を持たない組込み機器に対して全て適用可能である。また日本語に限らず中国語（漢字），韓国語（ハングル）など文字数が数千を超えて構成される言語に対して，本発明の提供するスケーラブルフォントデータの作成方法と表示方法は適用可能である。
【図面の簡単な説明】
【００４６】
【図１】システム構成を示した模式図である。
【図２】処理の流れを示したフローチャートである。
【図３】文字のストロークを示した摸式図である。
【図４】ストロークの分類を示した分類表である。
【図５】ストロークのエレメントデータ化を示した模式図である。
【図６】座標の抽出を示した模式図である。
【図７】ＬＩＮＥストロークのエレメントデータを示した模式図である。
【図８】ＣＵＲＶＥストロークのエレメントデータを示した模式図である。
【図９】ＣＯＤＥストロークのエレメントデータを示した模式図である。
【図１０】ＰＡＲＴストロークのエレメントデータを示した模式図である。
【図１１】ＮＨＬＩＮＥストロークのエレメントデータを示した模式図である。
【図１２】ＮＶＬＩＮＥストロークのエレメントデータを示した模式図である。
【図１３】ＨＩＮＴストロークのエレメントデータを示した模式図である。
【図１４】追加エレメントの分類を示した分類表である。
【図１５】ＯＰＴ＿ＬＩＮＥ追加エレメントのエレメントデータを示した模式図である。
【図１６】ＯＰＴ＿ＣＵＲＶＥ追加エレメントのエレメントデータを示した模式図である。
【図１７】ＯＰＴ＿ＮＣＯＰＹ追加エレメントのエレメントデータを示した模式図である。
【図１８】ＯＰＴ＿ＲＣＯＰＹ追加エレメントのエレメントデータを示した模式図である。
【図１９】ＯＰＴ＿ＨＡＸＩＳ追加エレメントのエレメントデータを示した模式図である。
【図２０】ＯＰＴ＿ＶＡＸＩＳ追加エレメントのエレメントデータを示した模式図である。
【図２１】フォントデータ形式の概要を示した模式図である。
【図２２】フォントデータ形式の詳細を示した模式図である。
【図２３】レコードアドレスの格納方法と展開方法を示した模式図である。
【図２４】コード化実施例「木」を示した模式図である。（実施例１）
【図２５】コード化実施例「森」を示した模式図である。（実施例２）
【図２６】フォント作成アプリケーションを示した模式図である。
【符号の説明】
【００４７】
１０１  フォント作成部ディスプレイ
１０２  パーソナルコンピュータまたはワークステーション本体
１０３  キーボード入力装置
１０４  マウスおよびペンタブレット入力装置
２０１  フォント表示部ディスプレイ
２０２  ＣＰＵ（中央演算処理装置）
２０３  ＲＡＭ（ランダムアクセスメモリ）
２０４  ＲＯＭ（リードオンリーメモリ）
２０５  メモリカード
【図１】
2005165160.tif 000003
【図２】
2005165160.tif 000004
【図３】
2005165160.tif 000005
【図４】
2005165160.tif 000006
【図５】
2005165160.tif 000007
【図６】
2005165160.tif 000008
【図７】
2005165160.tif 000009
【図８】
2005165160.tif 000010
【図９】
2005165160.tif 000011
【図１０】
2005165160.tif 000012
【図１１】
2005165160.tif 000013
【図１２】
2005165160.tif 000014
【図１３】
2005165160.tif 000015
【図１４】
2005165160.tif 000016
【図１５】
2005165160.tif 000017
【図１６】
2005165160.tif 000018
【図１７】
2005165160.tif 000019
【図１８】
2005165160.tif 000020
【図１９】
2005165160.tif 000021
【図２０】
2005165160.tif 000022
【図２１】
2005165160.tif 000023
【図２２】
2005165160.tif 000024
【図２３】
2005165160.tif 000025
【図２４】
2005165160.tif 000026
【図２５】
2005165160.tif 000027
【図２６】
2005165160.tif 000028