(57)【要約】【課題】  文字等の生成時の処理時間を増大や線幅の不均一の発生を抑制しつつ、圧縮されたストロークデータを生成することが可能な、ストロークデータ圧縮装置を提供する。【解決手段】  ストロークデータの共通部分を利用することによりデータの圧縮を行うデータ圧縮装置１００は、ストロークデータを格納するためのメモリ８と、ストロークデータを指定されたサイズにスケーリングするサイズ制御部１４と、サイズ制御部でスケーリングした補正後ストロークデータを、描画のためのメッシュ位置にフィッティングする補正を行うフィッティング演算部１６と、補正後ストロークデータから、共通の部品を抽出する共通部品抽出部１８と、共通部品に相当する共通ストロークデータに対するインデックスと、共通部品とを用いて、指定されたストロークデータを取得するデータ取得部２６とを備える。【選択図】図１
2008294756.tif 000002
【特許請求の範囲】
【請求項１】
ストロークデータの共通部分を利用することによりデータの圧縮を行うデータ圧縮装置であって、
前記ストロークデータを格納するための記憶装置と、
前記ストロークデータを指定されたサイズにスケーリングするサイズ制御手段と、
前記サイズ制御手段でスケーリングした補正後ストロークデータを、描画のためのメッシュ位置にフィッティングする補正を行うフィッティング演算手段と、
前記フィッティング演算手段で補正された前記補正後ストロークデータから、共通の部品を抽出する共通部品抽出手段と、
前記共通部品抽出手段で得られた前記共通部品に相当する共通ストロークデータに対するインデックスと、前記共通部品抽出手段で得られた共通部品とを用いて、指定された描画対象に対するストロークデータを取得するデータ取得手段とを備える、データ圧縮装置。
【請求項２】
前記サイズ制御手段は、前記ストロークデータに対応する骨格データの座標値をラスタライズされるサイズのメッシュの位置情報に変換する、請求項１記載のデータ圧縮装置。
【請求項３】
前記フィッティング演算手段は、前記文字サイズ制御手段において求められるメッシュの位置情報をメッシュの端にそろうように骨格データの座標値を補正する、請求項１記載のデータ圧縮装置。
【請求項４】
前記共通部品抽出手段は、前記ストロークデータに対応する骨格データの座標値の比較を行い、同一な座標値が別の骨格に存在する場合は、共通ストロークデータとして前記記憶装置に格納し、前記ストロークデータ一覧において、当該ストロークデータを前記共通ストロークデータの位置を示すインデックスデータに置き換える、請求項１記載のデータ圧縮装置。
【請求項５】
前記共通部品抽出手段は、抽出した共通部品に基づいて、インデックス付きストロークデータと共通ストロークデータとを前記記憶装置に格納し、
前記インデックス付きストロークデータは、前記共通部品抽出手段で抽出された共通ストロークデータと前記共通ストロークデータに対するインデックス、および、共通化できなかったデータとを含み、
前記共通ストロークデータは、前記共通化されたストロークのデータを含む、請求項１記載のデータ圧縮装置。
【請求項６】
演算処理装置と記憶装置とを備えるコンピュータに、ストロークデータの共通部分を利用することによりデータの圧縮を行う処理を実行させるためのストロークデータ圧縮プログラムであって、前記ストロークデータ圧縮プログラムは、
前記記憶装置に格納された前記ストロークデータを指定されたサイズにスケーリングするステップと、
前記スケーリングした補正後ストロークデータを、描画のためのメッシュ位置にフィッティングする補正を行うステップと、
前記補正された前記補正後ストロークデータから、共通の部品を抽出するステップと、
前記共通部品に相当する共通ストロークデータに対するインデックスと、前記共通部品抽出手段で得られた共通部品とを用いて、指定されたストロークデータの生成結果を取得するステップとを、コンピュータに実行させる、ストロークデータ圧縮プログラム。
【請求項７】
演算処理装置と記憶装置とを備えるコンピュータに、ストロークデータの共通部分を利用することによりデータの圧縮を行う処理を実行させるためのストロークデータ圧縮方法であって、
前記演算処理装置が、前記記憶装置に格納された前記ストロークデータを指定されたサイズにスケーリングするステップと、
前記演算処理装置が、前記スケーリングした補正後ストロークデータを、描画のためのメッシュ位置にフィッティングする補正を行うステップと、
前記演算処理装置が、前記補正された前記補正後ストロークデータから、共通の部品を抽出するステップと、
前記演算処理装置が、前記共通部品に相当する共通ストロークデータに対するインデックスと、前記共通部品抽出手段で得られた共通部品とを用いて、指定されたストロークデータの生成結果を取得するステップとを備える、ストロークデータ圧縮方法。
【請求項８】
演算処理装置と記憶装置とを備えるコンピュータに、ストロークデータの共通部分を利用することによりデータの圧縮を行う処理を実行させるためのストロークデータ圧縮プログラムを記録した媒体であって、前記ストロークデータ圧縮プログラムは、
前記記憶装置に格納された前記ストロークデータを指定されたサイズにスケーリングするステップと、
前記スケーリングした補正後ストロークデータを、描画のためのメッシュ位置にフィッティングする補正を行うステップと、
前記補正された前記補正後ストロークデータから、共通の部品を抽出するステップと、
前記共通部品に相当する共通ストロークデータに対するインデックスと、前記共通部品抽出手段で得られた共通部品とを用いて、指定されたストロークデータの生成結果を取得するステップとを、コンピュータに実行させる、ストロークデータ圧縮プログラムを記録した媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はストロークデータを圧縮する装置、方法、プログラムおよびストロークデータを圧縮プログラムを記録したコンピュータ読み取り可能な記録媒体に関し、特にストロークデータとして、文字、図形あるいはこれらを組み合わせたデータに適する、データを圧縮する手法に関する。
【背景技術】
【０００２】
以下、ストロークデータとして文字又は図形データの場合を例として記述する。文字または図形の記述形式として一般的には、ドットパターンで表現するビットマップ形式と、文字をベクトルで表現するベクトル形式がある。文字をビットマップ形式で表したものをビットマップフォント、文字をベクトル形式で表したものをベクトルフォントと呼んでおり、ベクトルフォントには文字の骨格を線で記述するストロークフォントと、文字の輪郭を線で記述するアウトラインフォントがある。
【０００３】
一般的には、ビットマップフォントは携帯電話、ＰＤＡなど低い解像度の表示デバイス向けに用いられており、ベクトルフォントのうちアウトラインフォントは、パーソナルコンピュータやプリンタなど、印刷用途などの高解像度な文字生成を要求する装置向けに広く普及している。
【０００４】
しかし最近では携帯電話、ＰＤＡなどの装置の高機能化により、高精細な表示装置を利用することを前提とした高機能なソフトウエアが搭載されつつある。
【０００５】
そこで携帯電話やＰＤＡの表示用にアウトラインフォントが搭載されつつある。アウトラインフォントは、ビットマップフォントと比べて、さまざまなサイズの文字を生成することが可能な反面、非常に容量が大きくなってしまう。
【０００６】
そこで、携帯電話やＰＤＡの表示用フォントとして、骨格ストロークベースのフォントも開発され、商品に搭載されている。
【０００７】
上記技術は文字を構成するストロークの骨格をベクトルとして表現することにより、輪郭より少ない情報量でさまざまなサイズの文字を生成するものである。
【０００８】
しかしながら、ビットマップデータに比べ、３０ドット前後の小さいサイズの品質は劣ってしまうため、別途ヒントデータと称する補正データが必要となり容量が大幅に増えてしまう。
【０００９】
そのためアウトラインフォントに対して、偏旁の部首部品にわけ、部品単位で共通化を計ることによりフォントデータの容量を圧縮しようという試みも広く行われている。
【００１０】
例えば、特許文献１（特開平０３−１０３８９６号公報）には、アウトラインデータを部首部品にわけ、文字毎に偏旁表をもちそれを共通化し、それぞれの偏旁に対応する、ストローク表、ストローク構造表、プロット表を設けることによりデータ容量の圧縮を実現する技術が開示されている。
【００１１】
図１５は、このような特許文献１に開示されている従来技術の「漢字フォントの階層的ベクトル化方式」を実現するための機能ブロック構成を、後に説明する本願発明との対比を考慮して、この明細書において再構成して示す図である。また、図１６は、特許文献１に開示されている従来手法による漢字フォントの実現例の概念を示す図である。
【００１２】
図１５を参照して、漢字フォントの階層的ベクトル化方式を実行する装置は、メモリ１２１と、メモリ１２１のアウトラインフォントデータから部首部品に分類する共通部品抽出手段１２２と、共通部品抽出手段１２２で分類された偏旁表１２４内の偏旁の部分要素毎にストローク表１２５、ストローク構造表１２６、プロット表１２７のデータを生成するための部品階層化手段１２３とを備える。
【００１３】
偏旁表１２４は、文字毎にどの偏旁の部分要素で構成されているかのインデックスとして機能する。ストローク表１５は、偏旁の部分要素別にそれを構成する各ストローク要素に対応したストローク構造およびここのストローク位置を有する。ストローク構造表１２６は、ストローク要素別にパターンを描くためのプロット店の個数および点間の線分の種類を定義する。プロット表１２７は、ストローク要素別にストローク構造のプロット点の位置を定義するプロット値を有する。
【００１４】
データ取得手段１２８は、偏旁表１２４、ストローク表１２５、ストローク構造表１２６、プロット表１２７から、指定されたフォントを再構成する部品を取得する。
【００１５】
図１６では、圧縮の対象文字を区点表示における７５区３２点〜３５点を例として示す。
【００１６】
この場合は偏として「言」、旁として「干工化牙」が部分要素として分けられ、ここの部品要素毎にストロークに分けられそれぞれのストロークに対して、ストローク構造表、プロット表に分けて、輪郭情報が表現されている。
【００１７】
より詳しくは、偏旁表１２４には、個々の文字別に、それを構成している偏、旁、構え、足等の部分要素（偏旁要素と呼ぶ）に関するストローク表１２５へのポインタが登録されている。
【００１８】
ストローク表１２５には、個々の偏旁要素別に、それを表現するために必要な縦線、横線、左払い、かぎ等のストローク要素に関するストローク構造表２６およびプロット表１２７へのポインタが登録されている。
【００１９】
ストローク構造表１２６には、ある字体（例えば○○明朝体）におけるストローク要素の輪郭を表現するためのプロット点の個数と、プロット点間を結ぶ線分の種類（直線や、スプライン曲線、円弧等の幾何関数曲線）が、ストローク要素別に登録されている。
【００２０】
プロット表１２７には、ストローク要素別に、そのストローク構造で定義された各プロット点の位置（プロット値）が登録されている。ここに示す例では、細字、中字、太字の３種類の線形のフォント用のプロット値が登録されている。
【００２１】
部品データ取得部１２８（テーブル参照部）は、指定された漢字コードによって、偏旁表１２４よりストローク表１２５へのポインタを読出し、このポインタによってストローク構造表１２６およびプロット表１２７へのポインタを読出し、最終的に指定された漢字の指定された線経用のフォントデータを読み出して、描画部（図示せず）に与える。描画部は、与えられたフォントデータに従って文字フォントパターンを描画し、これをディスプレイの画面に表示させる。
【特許文献１】特開平０３−１０３８９６号公報
【発明の開示】
【発明が解決しようとする課題】
【００２２】
ここで、部品データ取得部１２８が、フォントデータを取得する際には、部品要素を取得して重ね合わせて文字を生成しているが、単純な重ね合わせでは、部品要素間のバランスが悪くなる。
【００２３】
しかしながら、一般的にアウトラインデータを部首部品にわけ、文字毎に偏旁表を持ち共通化する方法では、同一の偏旁（例えば言偏）などが全て共通化してしまうことが考えられる。
【００２４】
また、単純に重ね合わせるだけでは、上述のとおり、偏旁のバランスが悪くなってしまい、また偏旁のバランスを調整するように補正すると線の幅の均一性が悪くなってしまうことが考えられる。
【００２５】
特に、３０ドット前後の小さいサイズにおいての品質を改善するためのヒントデータについては、圧縮の対象とすることができないため容量が増加してしまうことが考えられる。
【００２６】
上記従来手法では、アフィン変換を施すことにより、部首部品の変換を行っているとの記載がある。
【００２７】
図１７は、このようなアフィン変換を用いて、文字を生成する処理を説明する概念図である。
【００２８】
図１７に示すような処理を行った場合、処理時間の増大や、線幅の不均一といった問題が生じることが考えられる。
【００２９】
この発明は、上記のような問題点を解決するためになされたものであって、その目的は、文字等の生成時の処理時間を増大や線幅の不均一の発生を抑制しつつ、圧縮されたストロークデータを生成することが可能な、ストロークデータ圧縮装置、ストロークデータ圧縮方法、ストロークデータ圧縮プログラムおよびストロークデータ圧縮プログラムを記録したコンピュータ読取可能な記録媒体を提供することである。
【課題を解決するための手段】
【００３０】
この発明の１つの局面に従うと、ストロークデータの共通部分を利用することによりデータの圧縮を行うデータ圧縮装置であって、ストロークデータを格納するための記憶装置と、ストロークデータを指定されたサイズにスケーリングするサイズ制御手段と、サイズ制御手段でスケーリングした補正後ストロークデータを、描画のためのメッシュ位置にフィッティングする補正を行うフィッティング演算手段と、フィッティング演算手段で補正された補正後ストロークデータから、共通の部品を抽出する共通部品抽出手段と、共通部品抽出手段で得られた共通部品に相当する共通ストロークデータに対するインデックスと、共通部品抽出手段で得られた共通部品とを用いて、指定された描画対象に対するストロークデータを取得するデータ取得手段とを備える。
【００３１】
好ましくは、サイズ制御手段は、ストロークデータに対応する骨格データの座標値をラスタライズされるサイズのメッシュの位置情報に変換する。
【００３２】
好ましくは、フィッティング演算手段は、文字サイズ制御手段において求められるメッシュの位置情報をメッシュの端にそろうように骨格データの座標値を補正する。
【００３３】
好ましくは、共通部品抽出手段は、ストロークデータに対応する骨格データの座標値の比較を行い、同一な座標値が別の骨格に存在する場合は、共通ストロークデータとして記憶装置に格納し、ストロークデータ一覧において、当該ストロークデータを共通ストロークデータの位置を示すインデックスデータに置き換える。
【００３４】
好ましくは、共通部品抽出手段は、抽出した共通部品に基づいて、インデックス付きストロークデータと共通ストロークデータとを記憶装置に格納し、インデックス付きストロークデータは、共通部品抽出手段で抽出された共通ストロークデータと共通ストロークデータに対するインデックス、および、共通化できなかったデータとを含み、共通ストロークデータは、共通化されたストロークのデータを含む。
【００３５】
この発明の他の局面に従うと、演算処理装置と記憶装置とを備えるコンピュータに、ストロークデータの共通部分を利用することによりデータの圧縮を行う処理を実行させるためのストロークデータ圧縮プログラムであって、ストロークデータ圧縮プログラムは、記憶装置に格納されたストロークデータを指定されたサイズにスケーリングするステップと、スケーリングした補正後ストロークデータを、描画のためのメッシュ位置にフィッティングする補正を行うステップと、補正された補正後ストロークデータから、共通の部品を抽出するステップと、共通部品に相当する共通ストロークデータに対するインデックスと、共通部品抽出手段で得られた共通部品とを用いて、指定されたストロークデータの生成結果を取得するステップとを、コンピュータに実行させる。
【００３６】
この発明のさらに他の局面に従うと、演算処理装置と記憶装置とを備えるコンピュータに、ストロークデータの共通部分を利用することによりデータの圧縮を行う処理を実行させるためのストロークデータ圧縮方法であって、演算処理装置が、記憶装置に格納されたストロークデータを指定されたサイズにスケーリングするステップと、演算処理装置が、スケーリングした補正後ストロークデータを、描画のためのメッシュ位置にフィッティングする補正を行うステップと、演算処理装置が、補正された補正後ストロークデータから、共通の部品を抽出するステップと、演算処理装置が、共通部品に相当する共通ストロークデータに対するインデックスと、共通部品抽出手段で得られた共通部品とを用いて、指定されたストロークデータの生成結果を取得するステップとを備える。
【００３７】
この発明のさらに他の局面に従うと、演算処理装置と記憶装置とを備えるコンピュータに、ストロークデータの共通部分を利用することによりデータの圧縮を行う処理を実行させるためのストロークデータ圧縮プログラムを記録した媒体であって、ストロークデータ圧縮プログラムは、記憶装置に格納されたストロークデータを指定されたサイズにスケーリングするステップと、スケーリングした補正後ストロークデータを、描画のためのメッシュ位置にフィッティングする補正を行うステップと、補正された補正後ストロークデータから、共通の部品を抽出するステップと、共通部品に相当する共通ストロークデータに対するインデックスと、共通部品抽出手段で得られた共通部品とを用いて、指定されたストロークデータの生成結果を取得するステップとを、コンピュータに実行させる。
【発明の効果】
【００３８】
本発明によればストロークデータの共通部品を抽出し、サイズ制御部による所望のサイズへのスケーリングとフィッティング演算部による補正を行っているので、共通部品の全体とのバランスがよくなるという効果がある。
【００３９】
また、本発明によれば、サイズ制御部による所望のサイズへのスケーリングとフィッティング演算部による補正を行っているので全体とのバランスを優先した場合に発生する線の幅の均一性を向上することができるという効果がある。
【００４０】
さらに、本発明によれば、微調整のためのヒントデータを必要としないため、小さいサイズの品質を向上しつつ、記憶容量を少なくすることができるという効果がある。
【００４１】
また、本発明によれば、共通ストロークデータに対するインデックスを用い、サイズスケーリングとフィッティング補正を行っているので処理時間が少なくてすむという効果がある。
【発明を実施するための最良の形態】
【００４２】
以下、本発明の構成と動作について図面を参照して説明する。
図１は、本発明のストロークデータ圧縮装置１００の構成を説明するための機能ブロック図である。
【００４３】
図１において、媒体２は、ドライブ装置４を介して、ストロークデータ圧縮装置１００内のメモリ８に読み込まれて格納されるストロークデータ圧縮処理プログラム１０やフォントデータ１１を記録している。
【００４４】
メモリ８が格納するフォントデータ１１は、ストロークデータ圧縮装置１００が圧縮処理を行う対象となるフォントの元データである。ここで、メモリ８は、ハードディスク等の磁気メモリ、フラッシュメモリなどのＩＣメモリ等を利用することができる。メモリ１１として採用するものは、不揮発メモリを基本とするが、対象フォントが少ない場合、あるいは、きわめて高速の読み書きメモリが実現した場合には、揮発性メモリであってもよい。
【００４５】
また、このメモリ１１はデータ圧縮装置の内部に組み込まれたものでもよく、あるいは、ＵＳＢメモリ等のように取り外し可能なものであってもよい。
【００４６】
また、ストロークデータ圧縮装置１００は、プログラム１０に基づいて、ストロークデータ圧縮処理を行う演算処理部２０を備える。
【００４７】
演算処理部２０において、サイズ制御部１４は、指定された所望の文字サイズに対してフォントデータをスケーリングし、フィッティング演算部１６は、スケーリング後のデータをメッシュ位置にフィッティングする処理を行う。さらに、演算処理部２０において、共通部品抽出部１８は、フィッティング演算部１６で補正されたデータから、共通の部品を抽出し、インデックス付きストロークデータ２２と共通ストロークデータ２４とをメモリ８に格納する。
【００４８】
ここで、インデックス付きストロークデータ２２は、共通部品抽出部１８で抽出された共通ストロークデータとこれに対するインデックス、および、共通化できなかったデータとを含んでいる。また、共通ストロークデータ２４は、共通化されたストロークのデータを含む。
【００４９】
また、データ取得部２６は、入力装置６等からの指示により指定されたフォントに対応する、インデックス付きストロークデータおよび共通ストロークデータから所望のデータを取得して、描画部２８に与える。描画部２８は、与えられたフォントデータに従って文字フォントパターンを描画し、これをディスプレイ等の表示部３０の画面に表示させる。
【００５０】
上述したような演算処理部２０の各構成要素は、上記の説明のとおり、ＣＰＵ等の演算処理装置で制御された計算機システムの機能として実現されてもよいし、あるいは、個別のＡＳＩＣや複数の組み合わせのＬＳＩのモジュールであってもよいし、一体化されたモジュールであってもよい。
【００５１】
図２は、本発明のストロークデータ圧縮装置１００の処理の内容を説明するための概念図である。
【００５２】
図２においては、説明を分かりやすくするためストロークデータとして文字フォントデータを用いて説明を行う。これ以外のストロークデータの例に関しては後述する。
【００５３】
図２に示すように、本発明においては、偏旁の区別なくサイズをフィッティングした状態で共通部品を規定する。ここで、ストロークフォントのデータの抽出は、フォントの中の連続線分の中心を通るストロークを表現するストロークデータを、たとえば、一般的な骨格（スケルトン）抽出アルゴリズムや作業者による手修正を含む工程で実現する。
【００５４】
図３は、ストロークフォントとアウトラインの差異を示す概念図である。図３に示すように、漢字の「訐」の場合、ストロークフォントの制御点が１８点であるのに対してアウトラインデータの場合は制御点が４０点必要なことがわかる。
【００５５】
図４は、ストロークデータ圧縮装置１００の行う処理の流れを示すフローチャートである。なお、本発明は、描画対象が文字だけでなく図形（線図）の場合にも適用可能なものであるが、まず、描画対象が文字であるものとして説明を行う。
【００５６】
また、図５は、共通部品抽出部１８の行う処理の前処理としてのサイズ制御部１４およびフィッティング演算部１６の処理の流れを説明するための概念図である。図５の場合、対象文字を「訐」、「訌」として説明する。
【００５７】
図３，図４、図５を参照して、まず、ストロークデータ圧縮処理の対象となるフォントのストロークデータを、図１のメモリ８から抽出し、サイズ制御部１４に対応するデータバッファ１２に読み込む（Ｓ１００）。
【００５８】
次に、サイズ制御部１４では、データバッファ１２のストロークデータに対して、文字サイズに合わせたメッシュ位置に割り付けることを行う（Ｓ１０２）。
【００５９】
図５（ａ）は、メモリ１１に格納されているストロークデータである。図５（ｂ）に示すように、訐を訌に重ねてみても、一部しか重複しないことがわかる。
【００６０】
そこで、図５（ｃ）に示すように、サイズ制御部１４で、生成する文字サイズに応じたメッシュにストロークデータを割り付け、メッシュのエッジに沿うようにデータをスケーリングして補正する。このような補正を行うことにより、結果として、図５（ｄ）に示すように、「訐」の第９ストローク目、「訌」の第１０ストローク目をのぞいて、訐と訌とのストロークデータの共通化を図ることができる。
【００６１】
以下でさらに、文字を例として、具体的な数値を示して、サイズ制御部１４、フィッティング演算部１６の動作について、さらに詳しく説明する。
【００６２】
図６は、「訐」のフィッティング処理の具体例を示す図である。
図６においては、たとえば、２７×２７ドット相当の範囲において、線の幅が約２ドット程度として、文字の一部を生成するものとする。
【００６３】
図６（ａ）は、「訐」の第１ストロークから第３ストロークまでの拡大図で、アウトラインデータの中線を取った図である。ここで中線は自動的に取得してもよくまた、手動で作業者が調整してもよい。
【００６４】
図６（ａ）において、第１ストロークのプロット値は、（２３,２３７）-（１０９,２３７）であり、第２ストロークのプロット値は（１４,１９４）-（１１８,１９４）であり、第３ストロークのプロット値は、（２３-１５６）-（１０９,１５６）である。
【００６５】
図６（ｂ）は、第１〜第３ストロークまでをスケーリングしてメッシュ位置に置いた図である。
【００６６】
ここで、「スケーリング」とは、生成する文字サイズに合わせて元のフォントデータにおける端点の位置を修正し、画素（ドット）に対応したメッシュ位置に割り付けることを意味するものである。
【００６７】
図６（ｂ）において、背景のメッシュの実線は、生成されるサイズの１画素に相当し、破線はその半分を示すものとする。第１ストロークにおいて、縦方向は２行目と３行目の間に配置され、横方向に関しては、左点は３列目、右点は１１列目に配置される。
【００６８】
同様に第２ストロークにおいて、縦方向は７行目、横方向は、左点は２列目、右点は１２列目に配置される。同様に第３ストロークは、縦方向は１１行目、横方向は、左点は３列目、右点は１１列目に配置される。
【００６９】
図６（ｃ）は、フィッティング演算の動作を示す図である。「フィッティング演算」とは、スケーリングされた各端点が、さらにメッシュの真ん中に補正する処理をいい、フィッティング演算部１６がこの処理を行う（Ｓ１０４）。
【００７０】
図６（ｃ）では、第１ストロークの左点は（２３,２３７）から（１９,２３７） に、右点は、（１０９,２３７）から（１０５,２３７）に補正され、第２ストロークの左点は（１４,１９４）から（１０,１９０）に、右点は、（１１８,１９４）から（１１４,１９０）に補正され、第３ストロークの左点は（２３,１５６）から（１９,１５１）に、右点は、（１０９,１５６）から（１０５,１５１）にそれぞれ補正されている。
【００７１】
図６（ｄ）および（ｅ）は、フィッティング補正前およびフィッティング補正後のデータによる文字の生成を示すものであるが、２ドットの線幅のデータを生成すると考えると、フィッティング処理前と処理後で生成結果が一致する。すなわちフィッティングによって文字の品質が劣化することは生じない。
【００７２】
図７は、「訌」のフィッティング処理の具体例を示す図である。
図７（ａ）は、第１ストロークから第３ストロークまでの拡大図で、アウトラインデータの中線を取った図である。
【００７３】
図７（ａ）において、第１ストロークは、（２２,２３７）-（１００,２３７）であり、第２ストロークは（１２,１９４）-（１１０,１９４）、第３ストロークは（２２-１５６）-（１００,１５６）となる。
【００７４】
図７（ｂ）は、第１〜第３ストロークまでをスケーリングしてメッシュ位置に置いた図である。背景の実線は、生成される文字サイズの１画素に相当し、破線はその半分を示すものとする。第１ストロークにおいて、縦方向は２行目と３行目の間に配置され、横方向に関しては、左点は３列目、右点は１１列目に配置される。
【００７５】
同様に第２ストロークにおいて、縦方向は７行目、横方向は、左点は２列目、右点は１２列目に配置される。
【００７６】
同様に第３ストロークは、縦方向は１１行目、横方向は左点は３列目、右点は１１列目に配置される。
【００７７】
図７（ｃ）は、フィッティング演算の動作を示す図であり、各端点がメッシュの境界に補正される様子を示している。
【００７８】
第１ストロークの左点は（２２,２３７）から（１９,２３７）に、右点は、（１００,２３７）から（１０５,２３７）にそれぞれ補正される。第２ストロークの左点は（１２,１９０）から（１０,１９０）に、右点は、（１１０,１９４）から（１１４,１９０）にそれぞれ補正される。第３ストロークの左点は（２２,１５６）から（１９,１５１）に、右点は、（１００,１５６）から（１０５,１５１）にそれぞれ補正されている。
【００７９】
図６（ａ）および図７（ａ）によると、第１〜第３ストロークまでのストロークデータは、「訐」と「訌」との間で数値的に異なっている。
【００８０】
これは、もともとのアウトラインデータが本例で示すよりさらに大きいサイズでのバランスを考慮したものになっていると考えられる。
【００８１】
上記で示すところの、「訐」の第１ストロークの右点位置（１０９,２３７）と比べ、「訌」の第１ストロークの右点位置（１００,２３７）は、少し短くなっている。これは、旁の部分の「干」と「工」の部品との組み合わせバランスを考慮したものであると考えられる。
【００８２】
一方、本例のように２７x２７ドットのサイズで線幅が２ドットとなるように文字を生成する場合には、上記右点位置（１００,２３７）と（１０９,２３７）は差異として顕在化せず、結果的に共通化した影響を受けないことがわかる。
【００８３】
つまり、本手法によれば、品質に影響を与えるような部品共通化は行われないことになる。
【００８４】
図８は、このようにして共通化された「訐」と「訌」との偏の「言」のデータのうち、第１〜第３ストロークを示す図である。
【００８５】
すなわち、共通部品抽出部１８は、フィッティング処理を行ったデータについて、複数の文字等に対する共通の部品を抽出し（Ｓ１０６）、後に詳しく説明するように、共通ストロークの座標値とこれに対するインデックスとの対応表（共通ストロークデータ２４）を作成するとともに（Ｓ１０８）、文字等ごとのストロークデータの一覧表において、文字等ごとの各ストロークに対する共通部品（共通ストローク）を示すインデックスを含めたインデックス付きストロークデータ２２を作成する（Ｓ１１０）。
【００８６】
以上は偏についての説明であったが、次に、旁の形状の異なる場合「訐」「訌」の旁の部分について説明を行う。
【００８７】
図９は、「訐」の旁のフィッティング処理を説明するための図である。
図９（ａ）は、「訐」の旁に該当する「干」の上部の拡大図で、アウトラインデータの中線を取った図である。
【００８８】
ここで水平のストロークをストロークｍとする。ストロークｍの座標値は、（１４６,２３８）-（２４１,２３８）となっている。
【００８９】
図９（ｂ）は、ストロークｍをスケーリングしてメッシュ位置に置いた図である。
ストロークｍにおいて、縦方向は２行目に配置され、横方向に関しては、左点は右から８列目、右点は右から２列目に配置される。
【００９０】
図９（ｃ）は、フィッティング演算の動作を示す図であり、端点がメッシュの境界に補正される様子を示している。
【００９１】
ストロークｍの左点は（１４６,２３８）から（１４２,２３７）に補正され、右点は、（２４１,２３８）から（２３７,２３７）に補正させる。
【００９２】
図９（ｄ）は、補正前のラスタライズ結果を、図９（ｅ）は、補正後のラスタライズ結果を示したものであるが、結果が一致することから、上記の補正によって文字の品質に影響が生じないことがこれでわかる。
【００９３】
一方、図１０は、「訌」の旁のフィッティング処理を説明するための図である。
図１０（ａ）は「訌」の旁に該当する「工」の上部の拡大図でアウトラインデータの中線をとった図である。
【００９４】
ここで水平のストロークをストロークｍ’とする。ストロークｍ’の座標値は、（１３８,２３６）-（２３７,２３６）となっている
図１０（ｂ）は、ストロークｍ’をスケーリングしてメッシュ位置に置いた図である。
【００９５】
ストロークｍ’において、縦方向は２行目に配置され、横方向に関しては、左点は右から８列目、右点は右から２列目に配置される。
【００９６】
図１０（ｃ）は、フィッティング演算の動作を示す図であり、端点がメッシュの境界に補正される様子を示している。
【００９７】
ストロークｍ’の左点は（１３８,２３６）から（１４２,２３７）に補正され、右点は、（２３７,２３６）から（２３７,２３７）に補正させる。
【００９８】
図１０（ｄ）は、補正前のラスタライズ結果を、図１０（ｅ）は、補正後のラスタライズ結果を示したものであるが、結果が一致することから、上記の補正によって文字の品質に影響が生じないことがこれでわかる。
【００９９】
さらに、図１１は、「訝」の旁のフィッティング処理を説明するための図である。
図１１（ａ）は、「訝」の旁に該当する「牙」の上部の拡大図でアウトラインデータの中線をとった図である。
【０１００】
ここでは、水平のストロークをストロークｍ’’とする。ストロークｍ’’の座標値は、（１４５,２３７）-（２３７,２３７）となっている
図１１（ｂ）は、ストロークｍ’’をスケーリングしてメッシュ位置に置いた図である。
【０１０１】
ストロークｍ’’において、縦方向は２行目と３行目の間に配置され、横方向に関しては、左点は右から８列目、右点は右から２列目に配置される。
【０１０２】
図１１（ｃ）は、フィッティング演算の動作を示す図であり、端点がメッシュの境界に補正される様子を示している。
【０１０３】
ストロークｍ’’の左点は（１４５,２３７）から（１４２,２３７）に補正され、右点は、（２３８,２３７）から（２３７,２３７）に補正される。
【０１０４】
図１１（ｄ）は、補正前のラスタライズ結果を、図１１（ｅ）は、補正後のラスタライズ結果を示したものであるが、結果が一致することから、上記の補正によって文字の品質に影響が生じないことがこれでわかる。
【０１０５】
ここで、図９（ｃ）、図１０（ｃ）および図１１（ｃ）において、ストロークｍ,ストロークｍ’およびストロークｍ’’の座標値はともに、（１４２,２３７）-（２３７,２３７）となり共通化することが可能であることがわかる。
【０１０６】
以上の説明によって明らかなように、本発明によれば、偏旁と階層的な圧縮を行う方法に比べ品質に影響を及ぼさず、さらには２つ以上の形状の異なる旁同士でも圧縮の対象となることがわかる。
【０１０７】
図１２は、共通化されたデータとフォントデータを格納するための、インデックス付きストロークデータ２２と、共通ストロークデータ２４の実装例を示す図である。
【０１０８】
ここで、図１２（ａ）は、格納されたインデックス付きストロークデータ２２の構成を、図１２（ｂ）は、格納された共通ストロークデータ２４の構成をそれぞれ示している。
【０１０９】
図１２を参照して、たとえば、７５区３２点（図１２（ａ）において「７５３２」と表示）のデータはストローク番号１〜９およびストローク番号１１が共通ストロークデータに格納される。
【０１１０】
ここで７５区３２点の９ストローク目と、７５区３３点（図１２（ａ）において「７５３３」と表示）の９ストローク目および、７５区３５点（図１２（ａ）において「７５３５」と表示）の９ストローク目は、共通ストロークデータの同一のインデックスを指し示している。
【０１１１】
仮にインデックスのエントリが、２１６以下であるとすると、インデックス付きストロークデータ（図１２（ａ））において、インデックスは２バイトで表現される。線の座標値は、開始点、終了点のＸＹ座標値が格納されているので、それぞれ０〜２５５の範囲であるとすると、線の座標値は４バイトとなる。
【０１１２】
２つの線（ストローク）を共通化した場合は、インデックスが２バイト×２＝４バイト、ストローク情報が４バイトであるので、合計８バイトとなり、共通化しなかった場合の、４バイト×２＝８バイトと同等である。
【０１１３】
ところが、上記の例で、７５区３２点、３３点、３５点の９ストローク目は３つのストロークが共通化されているため、インデックスが、２バイト×３=６バイト、ストローク情報が４バイトで合計１０バイトになる。これに対して、共通化しない場合が１２バイトであり、共通なデータが多くなるほど容量が削減することがわかる。
【０１１４】
データ取得部２６の動作としては、仮に７５区３２点のデータを取得しようとする場合は、１〜９ストローク目においてはそれぞれ該当するインデックス番号を取得する。取得されたインデックス番号と共通ストロークデータから所望の座標値を取得する。
【０１１５】
１０ストローク目においては、座標値にストロークデータが格納されているのでそのまま取得する。さらに１１ストローク目は、インデックス番号を取得し、共通ストロークデータより座標値を取得する。
【０１１６】
そして、このようにしてデータ取得部２６により取得されたストロークデータに基づいて、描画部２８が表示部３０に、対応する文字を表示する。
【０１１７】
以上により、文字の品位を劣化させることなくデータを圧縮することが可能となる。
なお、図１においては、ストロークデータ圧縮装置１００の構成を説明しているが、本件発明のストロークデータ圧縮装置１００によって圧縮されたストロークデータに基づき、表示を行う装置では、予め準備されたインデックス付きストロークデータ２２と、共通ストロークデータ２４とに基づいて、選択を指示された文字等についてのストロークデータをデータ取得部２６が取得して、描画部２８が表示部３０に対して表示する構成とすればよい。
【０１１８】
また、上記実施例では、文字を構成する線分に対して、その中線（骨格）を共通化する説明を行った。
【０１１９】
ただし、同様に、図形の輪郭ストロークに関しても本発明は有効であり、以下に説明する。
【０１２０】
図１３および図１４は、このような図形の輪郭ストロークに対して、本願発明を適用するための手順を説明するための概念図である。
【０１２１】
図１３（ａ）は、「！？」を図形化したデータの例を示し、図１３（ｂ）は「？」の下部の拡大図を示す。
【０１２２】
図１４（ｃ）は、「！！」を図形化したデータの例を示し、図１４（ｄ）は「！！」の右側の「！」の下部の拡大図である。
【０１２３】
図１３（ｂ）および図１４（ｄ）によれば、「？」と「！」の下部は４つの頂点で結ぶ四角形で表されており、図１３（ｂ）において四角形の右側の点の横方向の座標値は、１７２となっておりこれは、上部の図形とそろえた数値である。
【０１２４】
一方、図１４（ｄ）においては、四角形の右側の点の横方向の座標値は、１７１となっておりこれも丈夫の図形とそろえられた数値である。
【０１２５】
このようなデータに対しても、サイズ制御部１４、フィッティング演算部１６を介して数値が補正され、右側の点の横方向の座標値は、１７１にそろえられる。
【０１２６】
つまり、「！？」の右下の点の右側のストロークと、「！！」の右下の点の右側のストロークは、共通部品として抽出され、文字フォントデータの場合と同様圧縮されるのである。
【０１２７】
さらにこれら文字フォントデータや図形データの他にも、記号や、これらのデータの一部やこれらを相互に組み合わせた文様のストロークデータなどにおいても同様に圧縮できる。
【０１２８】
すなわち本発明においてはストロークで表現できる全てのデータに対して、有効な技術であることがわかる。
【図面の簡単な説明】
【０１２９】
【図１】本発明のストロークデータ圧縮装置１００の構成を説明するための機能ブロック図である。
【図２】本発明のストロークデータ圧縮装置１００の処理の内容を説明するための概念図である。
【図３】ストロークフォントとアウトラインの差異を示す概念図である。
【図４】ストロークデータ圧縮装置１００の行う処理の流れを示すフローチャートである。
【図５】共通部品抽出部１８の行う処理の前処理としてのサイズ制御部１４およびフィッティング演算部１６の処理の流れを説明するための概念図である。
【図６】「訐」のフィッティング処理の具体例を示す図である。
【図７】「訌」のフィッティング処理の具体例を示す図である。
【図８】共通化された「訐」と「訌」との偏の「言」のデータのうち、第１〜第３ストロークを示す図である。
【図９】「訐」の旁のフィッティング処理を説明するための図である。
【図１０】「訌」の旁のフィッティング処理を説明するための図である。
【図１１】「訝」の旁のフィッティング処理を説明するための図である。
【図１２】共通化されたデータとフォントデータを格納するための、インデックス付きストロークデータ２２と、共通ストロークデータ２４の実装例を示す図である。
【図１３】図形の輪郭ストロークに対して、本願発明を適用するための手順を説明するための概念図である。
【図１４】図形の輪郭ストロークに対して、本願発明を適用するための手順を説明するための概念図である。
【図１５】従来技術の「漢字フォントの階層的ベクトル化方式」を実現するための機能ブロック構成を示す図である。
【図１６】漢字フォントの実現例の概念を示す図である。
【図１７】アフィン変換を用いて、文字を生成する処理を説明する概念図である。
【符号の説明】
【０１３０】
２  媒体、４  ドライブ装置、６  入力装置、８  メモリ、１０  ストロークデータ圧縮処理プログラム、１１  フォントデータ、１２  データバッファ、１４  サイズ制御部、１６  フィッティング演算部、１８  共通部品抽出部、２０  演算処理部、２２  インデックス付きストロークデータ、２４  共通ストロークデータ、２６  データ取得部、２８  描画部、３０  表示部、１００  ストロークデータ圧縮装置。
【図１】
2008294756.tif 000003
【図２】
2008294756.tif 000004
【図３】
2008294756.tif 000005
【図４】
2008294756.tif 000006
【図１２】
2008294756.tif 000007
【図１３】
2008294756.tif 000008
【図１５】
2008294756.tif 000009
【図１６】
2008294756.tif 000010
【図１７】
2008294756.tif 000011
【図５】
2008294756.tif 000012
【図６】
2008294756.tif 000013
【図７】
2008294756.tif 000014
【図８】
2008294756.tif 000015
【図９】
2008294756.tif 000016
【図１０】
2008294756.tif 000017
【図１１】
2008294756.tif 000018
【図１４】
2008294756.tif 000019