JP2005165160A - スケーラブルフォントの作成方法および表示方法 - Google Patents

スケーラブルフォントの作成方法および表示方法 Download PDF

Info

Publication number
JP2005165160A
JP2005165160A JP2003406725A JP2003406725A JP2005165160A JP 2005165160 A JP2005165160 A JP 2005165160A JP 2003406725 A JP2003406725 A JP 2003406725A JP 2003406725 A JP2003406725 A JP 2003406725A JP 2005165160 A JP2005165160 A JP 2005165160A
Authority
JP
Japan
Prior art keywords
stroke
data
font
font data
strokes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2003406725A
Other languages
English (en)
Inventor
Yutaka Wada
豊 和田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Individual
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to JP2003406725A priority Critical patent/JP2005165160A/ja
Publication of JP2005165160A publication Critical patent/JP2005165160A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Controls And Circuits For Display Device (AREA)

Abstract

【課題】大容量記憶装置を持たない小型の組込み機器にも実装可能な十分に小さいデータ量でスケーラブルフォントデータを作成する方法および表示する方法の提供を課題とする。
【解決手段】スケーラブルフォントデータを作成するにあたり文字のストロークから抽出した論理座標をストローク形状に応じてコード化する。一度コード化したストロークは他の文字のコード化時に再利用できる。コード化されたデータを必要最小限のデータ量で,かつ拡張性を持たせた構造のフォントデータとして格納し,ビットマップ形式のフォントデータと同等以下の小さいデータ量を持ちながら,拡大・縮小しても品質の落ちにくいスケーラブルなフォントデータを作成する。また作成したフォントデータを展開して文字ストロークを再現し,文字を表示する。
【選択図】 図1

Description

携帯電話,PDA,電子辞書,携帯型音楽・ビデオプレーヤといった携帯情報機器,文字を表示する機能を持つテレビ,ビデオ,ビデオカメラ,デジタルカメラといった家電製品,電光掲示板などの屋外表示装置,カードタイプやペーパータイプといった超薄型軽量機器のように,低解像度の表示装置を搭載し大容量記憶装置を持たない組込み機器にスケーラブルなフォントデータを実装し表示する方法に関する。
携帯電話に代表される低分解能の表示装置しか持たない組込み機器では,表示する文字フォントをビットマップ形式のデータで実装している。ビットマップ形式のフォントは各文字パターンがドットで構成されており,日本語ビットマップフォントで一般的に用いられる16×16ドットフォントでは1文字あたり32バイトのデータ量が必要となる。日本語の文字数はJISコード(JIS X 0208−1990)で定められる少なくとも6,879個であり,これらのデータ量は220,128バイトに達する。ハードディスクなど大容量記憶装置を持たない小型組込み機器にとってこのデータ量はかなりの負担となっている。またビットマップフォントを縮小して表示するとドットが潰れて可読性が低くなったり,拡大して表示するとギザギザして品質が落ちることが知られている。これを防ぐには表示する各サイズ毎にビットマップフォントデータを用意する必要があり,ますますデータ量が増えてしまうという問題があった。
一方,表示する文字の大きさを変えても品質が保たれるフォントはスケーラブルフォントと呼ばれ,現在最もよく用いられているのはアウトライン形式のフォントである。アウトライン形式のフォントは文字パターンの輪郭線の座標を保持し,表示する大きさに応じて座標変換を行って直線や数学的に表現できる曲線で輪郭を繋いでいくフォントである。この形式ではサイズごとにフォントデータを用意しなくても高品質な文字パターンが得られるが,一般的にアウトラインフォントのデータ量は数メガバイトに達し,小型組込み機器に実装することは極めて困難である。
スケーラブルフォントとしてはこの他にストローク形式のフォントがある。ストローク形式のフォントは,文字パターンを筆の運びであるストロークで構成してその座標を保持し,表示する大きさに応じて座標変換を行って直線や曲線で繋いでいくフォントである。保持するデータの対象が輪郭線ではなくストロークの芯線のみであるためアウトライン形式に比べデータ量は少ない。これまでにペンプロッタなどで用いられてきたが,文字の画数が多いとストローク数も増えデータ量が増加しビットマップフォント並みには小さくできなかった。
携帯情報機器やデジタル家電など表示装置を持つ小型の組込み機器が今後一層普及することは間違いなく,ビットマップ形式と同等以下のデータ量で済み,かつ拡大・縮小しても表示品質が落ちにくいスケーラブルなフォントデータの必要性は論をまたない。
従来からスケーラブルフォントのデータ量を圧縮しようとする試みがあった。特許公開平07−121154 ではアウトラインフォントを直線や曲線などの要素に分解しコード化してフォントデータを圧縮している。しかし全ての文字のストロークに対して要素コードを割り当てるため圧縮効果には限りがあった。これに対し特許公開平09−034434や特許公開平09−134156では部首など共通利用できる部品データを一つにまとめることにより圧縮効果をあげている。しかし共通部品をどの程度用意すれば最大の圧縮効率を上げられるかの明快な解決方法はなく,共通部品を増やせばデータ量も増大してしまう問題があった。また従来の圧縮方法は基本的にアウトラインフォント向けのものであり,必ずしも輪郭線が必要のない低解像度の小型組込み機器に適用するには無駄が多かった。輪郭線のないストロークフォントにおける圧縮率の高いデータ形式はこれまでに存在しなかった。
またスケーラブルフォントといえど,12ドット程度まで縮小して表示すると文字が潰れて可読性が低くなる問題があった。この潰れを回避する方法として特許公開2000−231373ではストローク間の距離が近接している場合にはストロークの移動または削除を行っている。ただしこの方法では表示する全ての文字の,それを構成する全てのストロークについて毎回距離計算を行う必要があり,計算処理の負担が無視できないものである。これに対し特許公開平06−266340ではフォントデータにおける全てのストロークに対してレベルを設定し,表示する際はそのレベルに応じて省略するかしないかを決定している。計算処理の負担は軽いものの全てのストロークにレベルデータが必要となり,データ量が増加してしまっている。
本発明はこのような状況を鑑みてなされたものであり,文字サイズに応じた複数のビットマップ形式のフォントやアウトライン形式のフォントを格納するための大容量記憶装置を持たない小型組込み機器にも実装可能なように,ビットマップ形式のフォントと同等以下のデータ量で,縮小しても潰れの発生しにくいスケーラブルなストロークフォントデータの作成方法と表示方法を提供するものである。
大容量記憶装置を持たない小型の組込み機器にも実装可能な十分に小さいデータ量のスケーラブルフォントデータの作成および表示方法を提供することを課題とする。
上記の目的を達成するために,本発明では図1に示すシステム構成でスケーラブルフォントデータを作成し,作成したフォントデータを表示する。フォントデータの作成は図1におけるフォント作成部で行う。フォント作成部はディスプレイ(101),パーソナルコンピュータまたはワークステーション本体(102),キーボード(103),マウスまたはタブレット(104)で構成された標準的なコンピュータ環境である。この環境下で図26に示すフォント作成アプリケーションを用いてフォント作成作業を行う。作成されたフォントデータは図1におけるフォント表示部,すなわち最終的にフォントデータを表示する組込み機器に実装される。フォント表示部はディスプレイ(201),CPU(202),RAM(203),ROM(204),メモリカード(205)で構成された組込み環境である。フォントデータはROM(204)またはメモリカード(205)に実装され,CPU(202)がフォントデータを読み込みRAM(203)を作業領域として使用しディスプレイ(201)に文字パターンを表示する。
フォントデータを作成し,表示する方法は図2に示す処理の流れによって行う。フォント作成部の処理内容は図26に示すフォント作成アプリケーションの内部処理であり,文字パターンを筆の運びであるストロークに分離するステップ(S11),分離したストロークの形状分類と座標値を決定するステップ(S12),他の文字のストロークを再利用できるか調査するステップ(S13),ストロークをコード化して置き換えるステップ(S14),コード化されたデータをフォントデータとして格納するステップ(S15)によって構成される。これらのステップはフォント作成アプリケーションを操作するオペレータによって実行される。フォント表示部の処理内容は図1におけるフォント表示部のROM(204)に実装された文字パターンを表示するドライバソフトウェアの内部処理であり,フォントデータから描画する文字のエレメントデータを取得するステップ(S21),エレメントデータからストロークを論理座標上に再現するステップ(S22),ストロークを実際に表示する物理座標に変換するステップ(S23),文字の太さや書体を考慮しながらストロークを描画するステップ(S24)によって構成される。これらのステップは図1におけるフォント表示部のCPU(202)によって実行される。
上記ステップS11,ステップS12,ステップS13,ステップS14の詳細手順を次に記述する。
図3に示すように文字パターンは筆の運びであるストロークに分解でき,ストロークは基本的に直線および曲線で表すことが可能である。この他に任意文字のストロークの一部または全部を意味する仮想的なストロークを定義する。これは漢字における部首のように複数の文字で同じ形のストロークを再利用するために用いられる。図4に本発明におけるストロークの分類を示す。LINEは斜線を含む直線または長方形または楕円を表すストロークである。CURVEは2次B−スプライン曲線を表すストロークである。CODEは任意の指定する文字のストロークの一部または全部を意味するストロークである。PARTは指定するオフセット位置の文字ストロークの一部または全部を意味するストロークである。NHLINEは複数の水平線を表すストロークである。NVLINEは複数の垂直線を表すストロークである。HINTはストロークを描画する際のヒント情報を表すストロークである。図4におけるエレメント数とはストロークをコード化する際のデータ長を示しており,ストロークは図5のように複数のエレメントデータとしてコード化される。エレメントデータの羅列はレコードと呼称し,レコード中からストロークの区切りを識別するため第1エレメントの最上位ビットは常に1であり,その他は常に0としている。それぞれのストロークは図4の通りエレメント数が決まっているが,図5におけるストローク2のように追加エレメントが存在する場合もある。追加エレメントは直前のストロークと連続した直線を描画するといった,後述する制御を行うために使用される。図6に示すようにストロークは64×64格子の論理座標上に配置されて座標の抽出が行われる。スケーラブルフォントの座標系として64×64格子はアウトラインフォントの場合と比べて少ないが,低解像度向けとしては十分な解像度である。座標上には現在の筆の位置であるカレント座標と呼ぶ位置を定義し,主にストロークの終点を意味する。カレント座標は後述する追加エレメントによる制御に使用される。
LINEストロークは図7のように2つのエレメントでコード化される。第1エレメントで始点論理座標(X1,Y1)を,第2エレメントで終点論理座標(X2,Y2)とストロークの形状Sshapeを定義する。Sshapeが0の場合,始点と終点を結ぶ斜線を含む直線ストロークである。Sshapeが1の場合,始点と終点を端点にもつ長方形を表すストロークである。Sshapeが2の場合,始点と終点を端点にもつ長方形に内接する楕円を意味するストロークである。LINEストロークによってカレント座標は終点論理座標(X2,Y2)に移動する。
CURVEストロークは図8のように3つのエレメントでコード化される。始点と終点および制御点で定められる2次B−スプライン曲線を意味するストロークである。第1エレメントで始点論理座標(X1,Y1)を,第2エレメントで終点論理座標(X2,Y2)を,第3エレメントで制御点論理座標(Xc,Yc)を定義する。制御点の位置は64×64格子の範囲を超える場合があるため,−31〜96の範囲で配置することができるように制御点論理座標コード(Cxc,Cyc)によって制御点論理座標(Xc,Yc)を表現している。すなわちXc=Cxc−31およびYc=Cyc−31の関係が成立する。CURVEストロークによってカレント座標は終点論理座標(X2,Y2)に移動する。
CODEストロークは図9のように3つのエレメントで構成される。始点と終点を端点にもつ長方形内にcodeで指定するJISコード(JIS X 0208−1990)の文字パターンを描画するストロークである。第1エレメントで始点論理座標(X1,Y1)を,第2エレメントで終点論理座標(X2,Y2)と終端省略ストローク数Snumを,第3エレメントで文字コードを定義する。文字を表示するドライバソフトウェアのプログラムサイズを低減し実行速度を上げるために,始点と終点の位置関係は常にX1<X2かつY1<Y2とする。条件を満たさないデータがレコード中に存在した場合,そのCODEストロークは無視される。終端省略ストローク数Snumは図9にあるようにcodeで指定する文字パターンが持つストロークのうち,終わりから数えていくつのストロークを省略するか指定する値であり,0〜7までの値をとり得る。0の場合,全てのストロークを描画し,1の場合最後のストロークのみ描画しない。省略ストローク数が該当文字を構成する全ストローク数より大きくなるデータがレコード中に存在した場合,そのCODEストロークは無視される。またcode値がJISコードの範囲を超える場合も,そのCODEストロークは無視される。なおcodeで指定した文字を構成するストローク中にCODEまたは後述するPARTストロークが存在しても構わないが,指定元の文字コードを示されるとループ状態になるので,その場合は無視すること。CODEストロークはフォントデータ中の任意文字のストロークを直接参照することができるため,漢字における部首データを共通部品データとしてあらかじめ準備しておく必要がなく,フォントデータ量の削減が行える。CODEストロークによってカレント座標は終点論理座標(X2,Y2)に移動する。
PARTストロークは図10のように2つのエレメントで構成される。始点の位置にJISコード表における現在の文字位置から指定数offsetだけ変位した位置に存在するJISコード文字を描画するストロークである。描画する大きさは指定できない。第1エレメントで始点論理座標(X,Y)を,第2エレメントで再利用開始ストローク番号Sstart,再利用ストローク数Snum,文字コード表オフセットoffsetを定義する。再利用開始ストローク番号Sstartはoffsetで指定される文字のストロークのうち,先頭から数えて何番目のストロークから再利用するかを指定する。0番目が先頭ストロークを意味する。再利用ストローク数SnumはSstart番目のストロークからいくつのストロークを再利用するかを指定する。Snum値が0の場合,全てのストロークを再利用することを意味し,再利用ストローク数が該当文字を構成するストローク数より大きい場合,構成ストローク数以上は無視される。offset値による変位の結果,JISコード範囲を超える場合,そのPARTストロークは無視される。なおoffsetで指定した文字を構成するストローク中にPARTまたはCODEストロークが存在しても構わないが,指定元の文字コードを示されるとループ状態になるので,その場合は無視すること。このようにPARTストロークはフォントデータ中の他の文字から大きさを変える必要のない部首のストロークを再利用する場合,CODEストロークよりも少ないエレメント数で実現可能である。PARTストロークによってカレント座標は始点論理座標(X,Y)に移動する。
NHLINEストロークは図11のように2つのエレメントでコード化される。始点の位置から指定する間隔で複数の水平線を描画するストロークである。第1エレメントで始点論理座標(X,Y)を,第2エレメントで水平線の本数Snum,水平線の間隔DY,水平線の長さlengthを定義する。図11のように水平線はX軸の正方向つまり右方向へ描画され,追加される線分はY軸の正方向つまり下方向に描画される。Snum値が0の場合,本数は8本を意味する。NHLINEストロークによってカレント座標は最終水平線の終点座標(X+length,Y+DY×(本数−1))に移動する。
NVLINEストロークは図12のように2つのエレメントでコード化される。始点の位置から指定する間隔で複数の垂直線を描画するストロークである。第1エレメントで始点論理座標(X,Y)を,第2エレメントで垂直線の本数Snum,垂直線の間隔DX,垂直線の長さlengthを定義する。図12のように垂直線はY軸の正方向つまり下方向へ描画され,追加される線分はX軸の正方向つまり右方向に描画される。Snum値が0の場合,本数は8本を意味する。NVLINEストロークによってカレント座標は最終垂直線の終点座標(X+DX×(本数−1),Y+length)に移動する。
HINTストロークは図13のように1つのエレメントでコード化される。ヒント種別hintとヒントデータdataによってストロークに関する補足情報を定義する。ヒント種別は0〜63の64種類定義でき,種別に応じた補足データをヒントデータdataに0から63の範囲で設定できる。hint値が0の場合,ヒント種別は解像度指定を意味しdataにはドットサイズが定義される。解像度指定とはフォントを縮小して表示すると潰れが発生して可読性が低くなる場合に,dataで示すドットサイズ以下に縮小する時は,潰れを発生させないためにフォントレコード中における該当HINTストローク以後のストロークを省略することを意味する。これによってストローク間の距離を計算したり全てのストロークにレベルデータを持たせたりせずに縮小時のストローク省略情報を与えることができるので,表示処理における計算量とフォントデータ量の削減が行える。HINTストロークによってカレント座標は移動しない。
追加エレメントは図5におけるストローク2のように通常のストロークエレメントデータの直後に配置され,直前のストロークに関連した制御を行うための制御コードであり,図14に示すように6種類存在する。OPT_LINEはカレント座標から斜線を含む直線を描画する追加エレメントである。OPT_CURVEはカレント座標から曲線を描画する追加エレメントである。OPT_NCOPYは直前のストロークをコピーする追加エレメントである。OPT_RCOPYは直前のストロークを左右反転してコピーする追加エレメントである。OPT_HAXISは直前のストロークの中点から水平線を描画する追加エレメントである。OPT_VAXISは直前のストロークの中点から垂直線を描画する追加エレメントである。以下に追加エレメントのコード化方法の詳細を説明する。
OPT_LINE追加エレメントは図15のように1つのエレメントでコード化される。直前のストロークによって更新されたカレント座標位置から第1追加エレメントで定義する終点論理座標(X,Y)まで直線を描画する制御エレメントである。OPT_LINE追加エレメントによってカレント座標は終点論理座標(X,Y)に移動する。
OPT_CURVE追加エレメントは図16のように2つのエレメントでコード化される。直前のストロークによって更新されたカレント座標位置を始点座標とし,第1追加エレメントで定義する終点論理座標(X,Y)および第2追加エレメントで定義する制御点論理座標(Xc,Yc)で定められる2次B−スプライン曲線を描画する制御エレメントである。制御点の位置は64×64格子の範囲を超える場合があるため,−31〜96の範囲で配置することができるように制御点論理座標コード(Cxc,Cyc)によって制御点論理座標(Xc,Yc)を表現している。すなわちXc=Cxc−31およびYc=Cyc−31の関係が成立する。OPT_CURVE追加エレメントによってカレント座標は終点論理座標(X,Y)に移動する。
OPT_NCOPY追加エレメントは図17のように1つのエレメントでコード化される。直前に存在するストロークを,そのストロークの始点から第1追加エレメントで定義する相対コピー位置(DX,DY)だけ変位した位置に同じく第1追加エレメントで定義するコピー回数num回だけコピーして描画する制御エレメントである。図17に示す通り,コピーする度に相対位置が(DX,DY)ずつ増加する。num値が0の場合,コピー回数は4回を意味する。OPT_NCOPY追加エレメントによってカレント座標は変わらない。
OPT_RCOPY追加エレメントは図18のように1つのエレメントでコード化される。直前に存在するストロークを,そのストロークの始点から第1追加エレメントで定義する相対コピー位置(DX,DY)だけ変位した位置に同じく第1追加エレメントで定義するコピー回数num回だけ左右反転コピーして描画する制御エレメントである。図18に示す通り,コピーする度に相対位置が(DX,DY)ずつ増加する。num値が0の場合,コピー回数は4回を意味する。OPT_RCOPY追加エレメントによってカレント座標は変わらない。
OPT_HAXIS追加エレメントは図19のように1つのエレメントでコード化される。第1追加エレメントで定義する水平軸線論理X座標Xaと直前に存在するストロークの中点論理Y座標で定める位置から,同じく第1追加エレメントで定義する水平軸線長さlengthだけ水平線を描画する制御エレメントである。図19に示す通り,OPT_HAXIS追加エレメントによって直前のストロークと交差する水平軸線が描画される。直前のストロークの中点論理座標とは,該当ストロークの始点座標とそのストロークによって更新されるカレント座標との中点を意味する。直前のストロークがHINTストロークの場合,さらに前のストロークが適用される。OPT_HAXIS追加エレメントによってカレント座標は(Xa+length,中点Y論理座標)に移動する。
OPT_VAXIS追加エレメントは図20のように1つのエレメントでコード化される。直前に存在するストロークの中点論理X座標と第1追加エレメントで定義する垂直軸線論理Y座標Yaで定める位置から,同じく第1追加エレメントで定義する垂直軸線長さlengthだけ垂直線を描画する制御エレメントである。図20に示す通り,OPT_VAXIS追加エレメントによって直前のストロークと交差する垂直軸線が描画される。直前のストロークの中点論理座標とは,該当ストロークの始点座標とそのストロークによって更新されるカレント座標との中点を意味する。直前のストロークがHINTストロークの場合,さらに前のストロークが適用される。OPT_VAXIS追加エレメントによってカレント座標は(中点X論理座標,Ya+length)に移動する。
上記までが図2におけるステップS11,ステップS12,ステップS13,ステップS14の詳細である。これらのステップは図26に示すフォント作成アプリケーションを使用して行われ,文字パターンをストロークに分離しエレメントデータとしてコード化する処理は,オペレータの操作による7種類のストロークと6種類の追加エレメントを自由に組み合わせて文字パターンを構成することで実現される。この作業は図1のディスプレイ(101)上で目視しながら行うことができ,作成したフォントが様々な大きさに縮小・拡大された場合,実際どのように表示されるかもサンプル表示される。すなわちフォント作成の段階で,縮小表示した場合に潰れが発生するかどうかをあらかじめ確認することができ,潰れが発生する場合にはHINTストロークによって省略情報を与えるか,該当するストロークの存在自体を意図的に省略して可読性の高いフォントを作成することが可能となる。フォント作成アプリケーションはオペレータによって組み合わされたストロークをエレメントデータに変換すると共に,エレメントデータをフォントデータとして格納するステップ(S15)を以下の方法で行う。
全ての文字パターンのストロークをコード化したエレメントデータは図21に示す形式でフォントデータとして格納する。ヘッダはフォントデータの基本情報を格納する。フォントテーブルは8,836文字の各レコード位置情報を格納する。フォントレコードは8,836文字分のエレメントデータを格納する。
フォントデータのヘッダは図22ヘッダ詳細に示す形式でフォントデータの基本情報を格納する32バイトのデータである。識別コードは本発明による方法で作成されたスケーラブルフォントデータを示す0x264cとする。フォント名とバージョンはASCIIコード(JIS X 0201−1976 Roman Set)2文字で格納する。フォントテーブルへのオフセット,フォントレコードへのオフセットは,それぞれフォントデータ先頭から数えたバイト数でそれぞれの位置を格納する。上位アドレスコードとは各文字のエレメントデータがフォントレコードのどの位置に格納されているか計算するために使用される値であり7種類存在する。使用方法は次に述べる。
フォントテーブルは図22テーブル詳細にあるようにJISコード(JIS X 0208−1990)全ての文字を格納できる94区×94文字,すなわち全部で8,836文字のレコード位置情報を格納する17,672バイトのアドレスデータである。図22テーブル詳細のとおりアドレスデータはJISコード順に並んでいる。
各文字のエレメントデータがフォントレコードのどの位置に存在しているかを示すレコードアドレスをフォントデータに格納する方法と展開する方法は図23の通りである。フォント作成部では,エレメントデータの最小単位が2バイトであり,エレメントデータの存在するレコードアドレスが常に偶数であることを利用して,レコードアドレスを2で割り1ビットの圧縮を行う。まずこの値の下位16ビットをフォントテーブルの該当JISコードの位置に格納する。次に16ビット以上の上位ビットは同じ値が連続して冗長性を有するため,次のように圧縮して格納する。すなわちフォントデータをJISコード順に作成していく際に初めて上位ビットが1になった場合は,該当JISコードをフォントヘッダの上位アドレスコード1に格納する。同様に初めて上位ビットが2になった場合は,該当JISコードをフォントヘッダの上位アドレスコード2に格納し,以後同様に上位ビットが7の範囲まで行う。上位ビットが7までであることからレコードアドレスの取り得る範囲は0x7ffffの2倍,つまりフォントレコードの最大容量は1,048,576バイトまでとなる。これはほぼ1メガバイトの容量であり組込み向けフォントデータとしては必要十分な大きさである。フォント表示部では,このように格納されたアドレス情報を次のように展開してレコードアドレスを算出する。すなわち表示するJISコードを元にフォントテーブルからレコードアドレスを2で割った値の下位16ビットを取得する。該当JISコードがフォントヘッダの上位アドレスコード1に格納されているJISコード以上である場合はその値に0x10000を加算する。または上位アドレスコード2の値以上である場合はその値に0x20000を加算する。以後同様に上位ビットを加算する。その後,値を2倍しレコードアドレスを算出する。
ここまでが図2におけるフォント作成部の処理ステップS11からステップS15に関する詳細説明である。これまでに説明したストロークのコード化方法はビット単位まで詳細に説明したものであるが,このコード構造を変更してより詳細な座標系を用いたり,ストローク再利用方法の拡張を行えることは明らかである。またこの方法によって芯線のみのストロークフォントデータを作成できるが,アウトラインフォントなどその他のフォント形式における芯線ストローク情報を作成する際にも適用できることは明らかである。さらに1文字を構成するエレメントデータをランレングス法などの圧縮方法によって圧縮を行えばフォントデータサイズをより小さくできることは明らかである。
上記のように格納されたフォントデータは図1に示すフォント表示部,すなわち組込み機器のROM(204)やメモリカード(205)に実装される。ROM(204)には,格納されたフォントデータから表示したい文字のエレメントデータを取得する処理(ステップS21),エレメントデータからストロークを論理座標上に展開する処理(ステップS22),ストロークを任意の表示位置,表示サイズの物理座標に変換する処理(ステップS23),ディスプレイ(201)に文字パターンを描画する処理(ステップS24),これら一連の処理を行うドライバソフトウェアが搭載される。CPU(202)はRAM(203)を作業領域に使用しながらこのプログラムを実行する。以下にステップS21〜S24までの詳細手順を説明する。
ドライバソフトウェアは格納されたフォントデータのヘッダを確認してフォントテーブルの先頭位置を取得し,表示したい文字のJISコードを元にヘッダおよびテーブルから図23フォント表示部で示した方法でレコードアドレスを算出する。
このアドレスに目的の文字のエレメントデータが配置されているので順次エレメントを走査して,これまでに説明したストロークおよび追加エレメントを論理座標上に展開していく。エレメントの走査はJISコードにおける次の文字のレコードアドレス直前まで行われる。
展開されたストロークの論理座標を表示サイズに応じて物理座標に変換する。この変換は論理座標が64×64格子であることを用いて相似的に行われる。表示サイズの縦横比は必ずしも1:1である必要はない。
物理座標に変換されたストロークを文字パターンのピクセルデータとしてディスプレイ(201)描画,出力する。このとき物理座標の1ピクセルのみでなく隣り合うピクセルを複数セットすることにより,表示する文字の太さを変更できる。また複数セットする際の形状を制御することにより,明朝体やゴシック体などの書体の表現がある程度可能である。
ここまでが図2におけるフォント表示部の処理ステップS21からステップS24に関する詳細説明である。
本発明が提供するスケーラブルフォントの作成方法と表示方法によってビットマップフォントと同等以下のデータ量で拡大・縮小しても品質の落ちにくいスケーラブルフォントを作成し表示することができる。
図1に示すとおり,パーソナルコンピュータまたはワークステーション上でフォントデータを作成する。作成されたフォントデータを組込み機器のROMやメモリカードに実装すると共にフォントデータを展開し描画するドライバソフトウェアも搭載する。組込み機器は接続された表示装置に文字パターンを出力する。
図24に「木」という文字のエレメントデータ化を実施した例を示す。木という文字は図のように1つのLINEストロークおよび1つのOPT_VAXIS追加エレメントと1つのCURVEストロークおよび1つのOPT_RCOPY追加エレメントで構成され,合計14バイトのエレメントデータにコード化できる。
図25に「森」という文字のエレメントデータ化を実施した例を示す。森という文字は図のように「木」という文字の2つのCODEストロークと1つのOPT_NCOPY追加エレメントで構成され,合計14バイトのレコードにコード化できる。
一般に使用される16ドット×16ドットのビットマップフォントデータは1文字あたり32バイトのデータサイズが必要となるため,上記実施例の場合,半分以下のデータサイズでスケーラブルフォントを作成できたことになる。
本発明によって提供されるスケーラブルフォントデータは,データサイズが一般に使用されるビットマップフォントと比較して同等以下であるので,携帯電話,PDA,電子辞書,携帯型音楽・ビデオプレーヤといった携帯情報機器,文字を表示する機能を持つテレビ,ビデオ,ビデオカメラ,デジタルカメラといった家電製品,電光掲示板などの屋外表示装置,カードタイプやペーパータイプといった超薄型軽量機器のように,低解像度の表示装置を搭載し大容量記憶装置を持たない組込み機器に対して全て適用可能である。また日本語に限らず中国語(漢字),韓国語(ハングル)など文字数が数千を超えて構成される言語に対して,本発明の提供するスケーラブルフォントデータの作成方法と表示方法は適用可能である。
システム構成を示した模式図である。 処理の流れを示したフローチャートである。 文字のストロークを示した摸式図である。 ストロークの分類を示した分類表である。 ストロークのエレメントデータ化を示した模式図である。 座標の抽出を示した模式図である。 LINEストロークのエレメントデータを示した模式図である。 CURVEストロークのエレメントデータを示した模式図である。 CODEストロークのエレメントデータを示した模式図である。 PARTストロークのエレメントデータを示した模式図である。 NHLINEストロークのエレメントデータを示した模式図である。 NVLINEストロークのエレメントデータを示した模式図である。 HINTストロークのエレメントデータを示した模式図である。 追加エレメントの分類を示した分類表である。 OPT_LINE追加エレメントのエレメントデータを示した模式図である。 OPT_CURVE追加エレメントのエレメントデータを示した模式図である。 OPT_NCOPY追加エレメントのエレメントデータを示した模式図である。 OPT_RCOPY追加エレメントのエレメントデータを示した模式図である。 OPT_HAXIS追加エレメントのエレメントデータを示した模式図である。 OPT_VAXIS追加エレメントのエレメントデータを示した模式図である。 フォントデータ形式の概要を示した模式図である。 フォントデータ形式の詳細を示した模式図である。 レコードアドレスの格納方法と展開方法を示した模式図である。 コード化実施例「木」を示した模式図である。(実施例1) コード化実施例「森」を示した模式図である。(実施例2) フォント作成アプリケーションを示した模式図である。
符号の説明
101 フォント作成部ディスプレイ
102 パーソナルコンピュータまたはワークステーション本体
103 キーボード入力装置
104 マウスおよびペンタブレット入力装置
201 フォント表示部ディスプレイ
202 CPU(中央演算処理装置)
203 RAM(ランダムアクセスメモリ)
204 ROM(リードオンリーメモリ)
205 メモリカード

Claims (2)

  1. 文字ストロークから論理座標を抽出し,得られた座標群とストローク形状および既に他の文字においてコード化された任意のストローク情報と表示の際のヒント情報を組み合わせてコード化する,スケーラブルフォントデータを作成する方法。
  2. 請求項1記載の方法で作成されたフォントデータから文字ストロークを展開し文字パターンを表示する方法。
JP2003406725A 2003-12-05 2003-12-05 スケーラブルフォントの作成方法および表示方法 Pending JP2005165160A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2003406725A JP2005165160A (ja) 2003-12-05 2003-12-05 スケーラブルフォントの作成方法および表示方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003406725A JP2005165160A (ja) 2003-12-05 2003-12-05 スケーラブルフォントの作成方法および表示方法

Publications (1)

Publication Number Publication Date
JP2005165160A true JP2005165160A (ja) 2005-06-23

Family

ID=34728988

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003406725A Pending JP2005165160A (ja) 2003-12-05 2003-12-05 スケーラブルフォントの作成方法および表示方法

Country Status (1)

Country Link
JP (1) JP2005165160A (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010102274A (ja) * 2008-10-27 2010-05-06 Lim Corp Ltd 携帯端末のフォント表示システム
JP2010224514A (ja) * 2009-03-24 2010-10-07 Arphic Technology Co Ltd フォントの筆画を調整する方法
JP2014026541A (ja) * 2012-07-27 2014-02-06 Canon Inc 画像形成装置及び仮想マシンプログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010102274A (ja) * 2008-10-27 2010-05-06 Lim Corp Ltd 携帯端末のフォント表示システム
JP2010224514A (ja) * 2009-03-24 2010-10-07 Arphic Technology Co Ltd フォントの筆画を調整する方法
JP2014026541A (ja) * 2012-07-27 2014-02-06 Canon Inc 画像形成装置及び仮想マシンプログラム

Similar Documents

Publication Publication Date Title
US5832530A (en) Method and apparatus for identifying words described in a portable electronic document
EP0115584B1 (en) Image producing apparatus and methods of processing image-representing signals for use by such apparatus
JPH0493894A (ja) 文字処理方法および装置
JPH09134157A (ja) ヒント付け方法及びフォントファイル構成方法
JPH06149212A (ja) 文字生成方法及びその装置
JPH06328785A (ja) 文字生成方法及びその装置
CN103489268B (zh) 一种用于pos平台的阿拉伯语显示方法
JP3037854B2 (ja) 文字生成方法及びその装置
JP2005165160A (ja) スケーラブルフォントの作成方法および表示方法
JPH06344601A (ja) 出力装置および出力方法
JPH07181945A (ja) 文字ドットデータの圧縮方法
JPH06222747A (ja) フォント圧縮装置及びフォント復元装置
JP2562458B2 (ja) コンピュータシステム用文字発生方法
JPH0934434A (ja) 文字生成装置
JP2000165634A (ja) 画像デ―タをメモリに蓄積する装置及び方法
JP2854344B2 (ja) ミクストモード文書の表示方法
JP2972466B2 (ja) ドットパターンの圧縮方法及び装置と出力方法及び装置
JPH05127648A (ja) アウトラインフオントデータの圧縮装置
JP3221493B2 (ja) ドット文字フォントの圧縮・伸長方法およびそれらの制御装置
KR900009182B1 (ko) 표시방법 및 표시장치
JP4381483B2 (ja) 文字情報処理装置及び文字情報処理方法
CN113806278A (zh) 可以任意更改矢量字库的字库芯片处理方法及字库芯片
JP3102979B2 (ja) 罫線変換機能を持つ文書情報処理装置
JPH02287739A (ja) メモリアクセス方法
JPH08194458A (ja) 文字処理装置