(57)【特許請求の範囲】
【請求項１】
ドットマトリクスで表現されるドットマトリクスフォント文字のセットを含むドットマトリクスフォントデータを圧縮するための、コンピュータによって実行される方法であって、以下の（ａ）〜（ｅ）のステップを含むことを特徴とするコンピュータによるドットマトリクスフォントデータの圧縮方法。
（ａ）前記各ドットマトリクスフォント文字を、横型イメージパターンを含む横型イメージ、縦型イメージパターンを含む縦型イメージ及び残余イメージパターンを含む残余イメージに分割するステップ；
（ｂ）前記セット中の前記横型イメージパターンに対してハフマン符号化を適用して前記横型イメージパターンに対する圧縮横型符号を生成するステップ；
（ｃ）前記セット中の前記縦型イメージパターンに対してハフマン符号化を適用して前記縦型イメージパターンに対する圧縮縦型符号を生成するステップ；
（ｄ）前記セット中の前記残余イメージパターンに対してハフマン符号化を適用して前記残余イメージパターンに対する圧縮残余符号を生成するステップ；
（ｅ）各文字について、前記圧縮横型符号、前記圧縮縦型符号、前記圧縮残余符号を選択的に結合し、前記ドットマトリクスフォント文字の圧縮された形を表すビット列を生成するステップ：
【請求項２】
前記ビット列を生成する前記ステップ（ｅ）が、さらに、
一つの前記ドットマトリクスフォント文字中の前記横型イメージパターンに対して、ドットマトリクス中の前記横型イメージパターンの縦位置を特定する縦位置符号を生成し、該縦位置符号と前記文字中の横型イメージパターンに対する前記圧縮横型符号とを結合するステップと、
一つの前記ドットマトリクスフォント文字中の前記縦型イメージパターンに対して、ドットマトリクス中の前記縦型イメージパターンの水平位置を特定する横位置符号を生成し、該横位置符号と前記文字中の縦型イメージパターンに対する前記圧縮縦型符号とを結合するステップと、
一つの前記ドットマトリクスフォント文字中の前記残余イメージパターンに対して、前記ドットマトリクスフォント文字中の前記残余イメージパターンに対する圧縮残余符号を定義する残余ハフマンテーブルを特定するテーブルＩＤコードを生成し、前記テーブルＩＤコードと前記残余イメージパターンに対する前記圧縮残余符号とを結合するステップと、
を含むことを特徴とする請求項１に記載のコンピュータによるドットマトリクスフォントデータの圧縮方法。
【請求項３】
前記セット中の前記残余イメージパターンに対して前記ハフマン符号化を適用する前記ステップ（ｄ）が、さらに以下の（ｄ１）及び（ｄ２）のステップを含むことを特徴とする請求項１に記載のコンピュータによるドットマトリクスフォントデータの圧縮方法。
（ｄ１）一つのドットマトリクスフォント文字の残余イメージを構成する残余イメージパターンが確実に同じグループに入るように維持しつつ、該グループの各々が同様の数の残余イメージパターンを含むように前記セット中の前記残余イメージパターンを複数のグループに分類するステップ；
（ｄ２）前記残余イメージパターンの各グループに対して前記ハフマン符号化法を適用して前記グループに対する前記圧縮残余符号を生成し、前記複数のグループに対する前記圧縮残余符号を定義する複数の残余ハフマンテーブルをそれぞれ生成するステップ：
【請求項４】
前記セット中の前記残余イメージパターンを複数のグループに分類するステップ（ｄ１）が、以下の（ｄ１１）及び（ｄ１２）のステップを含むことを特徴とする請求項３に記載のコンピュータによるドットマトリクスフォントデータの圧縮方法。
（ｄ１１）一つのドットマトリクスフォント文字の一つの残余イメージを構成する前記残余イメージパターンをコード語によって表し、複数の残余イメージを表す複数のコード語をそれぞれ生成するステップ；
（ｄ１２）前記コード語に基づいて、前記セット中の前記残余イメージパターンを複数のグループに分類するステップ：
【請求項５】
一つのドットマトリクスフォント文字の一つの残余イメージを構成する前記残余イメージパターンをコード語によって表す前記ステップ（ｄ１１）が、
前記ドットマトリクス中のドット位置の番号を選択するステップと、
ドットマトリクスフォント文字の一つの残余イメージを構成する前記残余イメージパターンに対して、前記ドットマトリクスの選択されたドット位置のどれが前記残余イメージによって占有されているかを表すドット位置ビットシーケンスを生成するステップと、
前記ドット位置ビットシーケンスに基づいてコード語を生成するステップと、
を含むことを特徴とする請求項４に記載のコンピュータによるドットマトリクスフォントデータの圧縮方法。
【請求項６】
前記コード語に基づいて、前記セット中の前記残余イメージパターンを複数のグループに分類する前記ステップ（ｄ１２）が、
前記コード語を表す第１の軸と、前記コード語ごとの残余イメージパターンの個数を表す第２の軸によってヒストグラムを形成するステップと、
前記ヒストグラムの量子化を行い、前記残余イメージパターンを複数の同じサイズのグループに分類するステップと、
を含むことを特徴とする請求項４に記載のコンピュータによるドットマトリクスフォントデータの圧縮方法。
【請求項７】
前記複数のグループの各々に含まれている前記残余イメージパターンの個数が同じである請求項３に記載のコンピュータによるドットマトリクスフォントデータの圧縮方法。
【請求項８】
前記複数のグループの各々に含まれている前記残余イメージパターンの個数が１００個より少ないことを特徴とする請求項３に記載のコンピュータによるドットマトリクスフォントデータの圧縮方法。
【請求項９】
前記残余イメージパターンが分類されたグループの数が２ｎ（ｎは正の整数）である請求項３に記載のコンピュータによるドットマトリクスフォントデータの圧縮方法。
【請求項１０】
前記圧縮横型符号、前記圧縮縦型符号、前記圧縮残余符号を選択的に結合し、前記ドットマトリクスフォント文字の圧縮された形を表すビット列を生成する前記ステップ（ｅ）が、
一つの前記ドットマトリクスフォント文字中の前記横型イメージパターンに対して、ドットマトリクス中の前記横型イメージパターンの縦位置を特定する縦位置符号を生成し、該縦位置符号と前記文字中の横型イメージパターンに対する前記圧縮横型符号とを結合するステップと、
一つの前記ドットマトリクスフォント文字中の前記縦型イメージパターンに対して、ドットマトリクス中の前記縦型イメージパターンの水平位置を特定する横位置符号を生成し、該横位置符号と前記文字中の縦型イメージパターンに対する前記圧縮縦型符号とを結合するステップと、
一つの前記ドットマトリクスフォント文字中の前記残余イメージパターンに対して、前記ドットマトリクスフォント文字中の前記残余イメージパターンに対する圧縮残余符号を定義する残余ハフマンテーブルを特定するテーブルＩＤコードを生成し、前記テーブルＩＤコードと前記残余イメージパターンに対する前記圧縮残余符号とを結合するステップと、
を含むことを特徴とする請求項３に記載のコンピュータによるドットマトリクスフォントデータの圧縮方法。
【請求項１１】
一組のドットマトリクスフォント文字を含むドットマトリクスフォントデータの圧縮／解凍システムであって、該システムは、
解凍されるべき一組の圧縮ドットマトリクスフォント文字を受け入れるための記憶装置と、
前記記憶装置に接続されたプロセッサとを備えるとともに、
前記プロセッサは、前記圧縮されたドットマトリクスフォント文字の各々について、以下の（ａ）〜（ｄ）を実行する手段を備えていることを特徴とするドットマトリクスフォントデータの圧縮／解凍システム。
（ａ）横型イメージパターンの所定の縦位置と横型のハフマンテーブルに基づいて、前記横型イメージパターンを復元する手段；
（ｂ）縦型イメージパターンの所定の水平位置と縦型のハフマンテーブルに基づいて、前記縦型イメージパターンを復元する手段；
（ｃ）残余イメージパターンを定義する残余ハフマンテーブルのＩＤコードを決定し、決定された前記残余ハフマンテーブルに基づいて前記残余イメージパターンを復元する手段；
（ｄ）前記復元された横型イメージパターン、縦型イメージパターン及び残余イメージパターンを結合する手段：
【請求項１２】
前記記憶装置が圧縮される一組の非圧縮ドットマトリクスフォント文字を受け入れ、
前記プロセッサが前記非圧縮ドットマトリクスフォント文字の各々に対して、以下の（ｅ）〜（ｉ）を実行する手段をさらに備えていることを特徴とする請求項１１に記載のドットマトリクスフォントデータの圧縮／解凍システム。
（ｅ）前記の各非圧縮ドットマトリクスフォント文字を横型イメージパターンを含む横型イメージ、縦型イメージパターンを含む縦型イメージ及び残余イメージパターンを含む残余イメージに分割する手段；
（ｆ）前記横型イメージパターンに対する圧縮横型符号を生成するために前記横型イメージパターンに対してハフマン符号化を適用する手段；
（ｇ）前記縦型イメージパターンに対する圧縮縦型符号を生成するために前記縦型イメージパターンに対してハフマン符号化を適用する手段；
（ｈ）前記残余イメージパターンに対する圧縮残余符号を生成するために前記残余イメージパターンに対してハフマン符号化を適用する手段；
（ｉ）前記各ドットマトリクスフォント文字について、前記圧縮横型符号、前記圧縮縦型符号及び前記圧縮残余符号を選択的に結合し、前記ドットマトリクスフォント文字の圧縮された形を表すビット列を生成する手段：
【請求項１３】
コンピュータに読み込まれたときに、一組の圧縮されたドットマトリクスフォント文字を含む圧縮ドットマトリクスフォントデータを解凍する以下の（ａ）〜（ｄ）のステップを前記コンピュータに実行させるコンピュータ実行可能な命令を格納したコンピュータ読み取り可能な記録媒体。
（ａ）前記一組の圧縮されたドットマトリクスフォント文字を受け入れるステップ；
（ｂ）横型ハフマンテーブル、縦型ハフマンテーブル及び１又はそれ以上の残余ハフマンテーブルを検索するステップ；
（ｃ）検索されるべき前記横型ハフマンテーブル、前記縦型ハフマンテーブル及び前記残余ハフマンテーブルをサーチして、前記各文字の横型イメージパターン、縦型イメージパターン及び残余イメージパターンをそれぞれ取得するステップ；
（ｄ）得られた各文字の前記横型イメージパターン、前記縦型イメージパターン及び前記残余イメージパターンを結合して、元のオリジナルの前記ドットマトリクスフォント文字を復元するステップ：
【請求項１４】
前記横型ハフマンテーブル、前記縦型ハフマンテーブル及び１又はそれ以上の前記残余ハフマンテーブルを検索する前記ステップ（ｂ）が、前記コンピュータの外部にある他の機器から前記横型ハフマンテーブル、前記縦型ハフマンテーブル及び１又はそれ以上の前記残余ハフマンテーブルを受信するものである、請求項１３に記載のコンピュータ実行可能な命令を格納したコンピュータ読み取り可能な記録媒体。
【請求項１５】
前記横型ハフマンテーブル、前記縦型ハフマンテーブル及び１又はそれ以上の前記残余ハフマンテーブルを検索する前記ステップ（ｂ）が、前記コンピュータの内部にある記憶装置に格納されている前記横型ハフマンテーブル、前記縦型ハフマンテーブル及び１又はそれ以上の前記残余ハフマンテーブルを検索するものである、請求項１３に記載のコンピュータ実行可能な命令を格納したコンピュータ読み取り可能な記録媒体。
【請求項１６】
前記一組の圧縮されたドットマトリクスフォント文字を受け入れる前記ステップ（ａ）が、前記圧縮ドットマトリクスフォント文字をビット列の形で受け入れるものであり、該ビット列が、
前記ドットマトリクスフォント文字における前記横型イメージパターンの縦方向の位置を特定する縦位置符号と、
前記ドットマトリクスフォント文字の中の前記横型イメージパターンに対する圧縮横型符号と、
前記ドットマトリクスフォント文字における前記縦型イメージパターンの水平方向の位置を特定する横位置符号と、
前記ドットマトリクスフォント文字の中の前記縦型イメージパターンに対する圧縮縦型符号と、
前記ドットマトリクスフォント文字における前記残余イメージパターンに対する圧縮残余符号を定義する前記残余ハフマンテーブルを特定するテーブルＩＤコードと、
前記ドットマトリクスフォント文字の中の前記残余イメージパターンに対する前記圧縮残余符号とを含むとともに、
前記ステップ（ｂ）が、前記テーブルＩＤコードによって特定される前記残余ハフマンテーブルを検索するものであり、
前記ステップ（ｄ）が、前記縦位置符号によって特定される縦位置における前記得られた横型イメージパターン、前記横位置符号によって特定される横位置における前記得られた縦型イメージパターン及び前記テーブルＩＤコード特定される前記残余ハフマンテーブルに含まれる前記得られた残余イメージパターンを結合し、各文字に対して元のオリジナルのドットマトリクスフォント文字を復元することを特徴とする請求項１３に記載のコンピュータ実行可能な命令を格納したコンピュータ読み取り可能な記録媒体。
【請求項１７】
コンピュータに読み込まれたときに、圧縮ドットマトリクスフォントデータを解凍する処理を前記コンピュータに実行させるコンピュータ実行可能な命令を格納したコンピュータ読み取り可能な記録媒体であって、
前記命令は、ビット列によって表された一組の圧縮ドットマトリクスフォント文字を含み、
前記ビット列は、
ドットマトリクスフォント文字における横型イメージパターンの縦方向の位置を特定する縦位置符号と、
前記ドットマトリクスフォント文字の中の前記横型イメージパターンに対する圧縮横型符号と、
前記ドットマトリクスフォント文字における縦型イメージパターンの水平方向の位置を特定する横位置符号と、
前記ドットマトリクスフォント文字の中の前記縦型イメージパターンに対する圧縮縦型符号と、
前記ドットマトリクスフォント文字における残余イメージパターンに対する圧縮残余符号を定義する残余ハフマンテーブルを特定するテーブルＩＤコードと、
前記ドットマトリクスフォント文字の中の前記残余イメージパターンに対する前記圧縮残余符号と、を含むことを特徴とするコンピュータ実行可能な命令を格納したコンピュータ読み取り可能な記録媒体。
【請求項１８】
前記命令が、さらに、
前記横型イメージパターンに対する前記圧縮横型符号を定義する横型ハフマンテーブルと、
前記縦型イメージパターンに対する前記圧縮縦型符号を定義する縦型ハフマンテーブルと、
前記残余イメージパターンに対する前記圧縮残余符号を定義する前記残余ハフマンテーブルと、を含むことを特徴とする請求項１７に記載のコンピュータ実行可能な命令を格納したコンピュータ読み取り可能な記録媒体。
【請求項１９】
前記命令が、さらに、
複数のグループに分類された前記残余イメージパターンに対する前記圧縮残余符号をそれぞれ定義する複数の前記残余ハフマンテーブルを含むことを特徴とする請求項１８に記載のコンピュータ実行可能な命令を格納したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ圧縮及び解凍に関するものであり、特に、ドットマトリクスフォントデータの圧縮及び解凍のための方法及びシステムに関する。
【背景技術】
【０００２】
ドットマトリクスフォントデータを圧縮する方法は、損失（劣化）がないようにすべきである。すなわち、圧縮されたものは、それが解凍される際に、元のオリジナルのドットマトリクスフォントイメージに戻らなければならないということである。いくつかの無損失なフォントデータ圧縮技術は、エントロピー符号化法（entropy  coding）を採用している。エントロピー符号化の理論によれば、ｎ個のイメージパターン（１〜ｎ）の組において、比較的頻繁に出現するイメージパターンには短いビット長の符号が割り当てられ、一方、頻度が少なく出現するイメージパターンには長いビット長の符号が割り当てられる。このように、１組の中の複数のイメージパターンに割り当てられる符号のビット長の平均は、次の式１で与えられる。
【数１】
0005225420.tif 000002
ここに、ｌ（子文字のエル）は符号のビット長、Ｐは組の中におけるイメージパターンの出現確率であるが、ｌｉはｉ番目のイメージパターンの符号ビット長を意味し、Ｐｉはｉ番目のイメージパターンの出現確率を意味する。なお、Ｐｉは以下の式２を満足する。
【数２】
0005225420.tif 000003
ドットマトリクスフォントデータにおいて、各文字はマトリクスの中の（黒く塗られた）ドットの集合体として定義される。たとえば、漢字は図１（Ａ）に示すように、１６×１６のマトリクス中のドットの集合体として定義される。図１（Ａ）は、１６×１６のマトリクス中にある、上側の直線部２０ａと下側の二股に分かれた部分２０ｂを含む一つの文字２０を示している。
【０００３】
普通、アジアフォントは多くの文字から成る。たとえば、明朝体のフォントは１３，１０８個の文字を含んでいる。エントロピー符号化法をドットマトリクスアジアフォントデータの圧縮に適用する目的のために、アジア文字をイメージパターンとして扱うことは、各セット内の文字数が膨大なため、実行不可能である。従って、各ドットマトリクス文字をマトリクスの複数の行（又は列）に分割し、各行（又は列）を一つのイメージパターンとして扱うことで可能となる。例えば、図１（Ａ）において、１６×１６のマトリクスは、１６個の行（１〜１６）に分割可能であり、各行は１６個のピクセルを含んでいる。図示した例では、第１行は７番目と８番目のピクセルが黒く塗られており、「0000001100000000」で表されるイメージパターンを構成する。ここで、「１」はアクティブ化された（黒く塗られた）ピクセルを表し、「０」は非アクティブ（白いままの）ピクセルを表している。２番目から１６番目までの行についても、同様の方法で表すことができ、各文字は１６個のイメージパターンの集合体として表すことができる。番号が異なる二つのイメージパターン及び／又はアクティブ化ピクセル（ドット）の分布が異なる二つのイメージパターンは、二つの異なるイメージパターンを構成する。従って、１６×１６のマトリクスの例では、各文字は１〜１６のイメージパターンから成る。例えば、図１（Ａ）の文字２０の上部の直線部２０ａのように、一つの文字が、複数の行にわたって繰り返し現れる一つのイメージパターンによって構成されていてもよい。以下、「イメージパターン」というときは、特に同じイメージパターンが複数回繰り返されるものとして特徴付けられる場合を除き、異なる複数のイメージパターンを含むものを意味するものとする。
【０００４】
ｍ個の１６×１６ドットマトリクス文字を含む１組の文字セットを考えると、その組にはｎ個のイメージパターンが含まれている。各文字における１６個のイメージパターンが互いにすべて異なっていると仮定すると、ｎ＝ｍ×１６となる。このような極端な場合は、その組における各イメージパターンが出現する確率は、各イメージパターンに対しては等しい。すなわち、その組におけるすべてのドットマトリクス文字はランダムに生成されると考えられる。もちろん、このような極端な場合では、圧縮された文字の組は、オリジナルのドットマトリクスフォントデータのビットスペース、すなわち、１６×１６×ｍの量と同じだけのビットスペースを必要とするので、圧縮しないこと（非圧縮）も可能である。
しかしながら、このような極端な場合は現実には起こらない。ドットマトリクスフォントデータはランダムには生成されないからである。むしろ、ドットマトリクスフォントデータは、例えば、アジア文字の基本的な部首（辺や旁）を構成するイメージパターンは、他のイメージパターンよりも頻繁に出現するというような規則に従って生成される。
従って、普通、一組の文字セット中におけるドットマトリクスフォントイメージパターンの出現頻度は、正規分布（又はガウス分布）として表される。
【０００５】
理論的には、２ｋ×２ｋ（ｋは正の整数）のマトリクスのサイズを持つドットマトリクスフォント文字のセットは、その組の中の複数のイメージパターンに割り当てられた符号の平均ビット長が２ｋよりも短く（すなわち、２ｋ×ｇ；０＜ｇ＜１）なるように圧縮することが可能である。圧縮比は１：ｇとして定義される。すなわち、オリジナルのまま格納するのに必要な１バイトに対して、圧縮後に必要とするのはｇバイトということである。
通常は、エントロピー符号化は、この技術分野でよく知られたハフマン符号化法で実行される。ハフマン符号化法は以下の（１）〜（５）のステップを含む。すなわち、
（１）一組の中の各イメージパターンの出現確率を計算するステップ；
（２）出現確率の高い方から順に、イメージパターンの順序を並べ変えるステップ；
（３）出現確率が最低のものと、その次に低いものを合体させて新たなノードとし、そのノードに両者の出現確率の和を割り当て、（２）のステップを繰り返して、ハフマンツリーを構築するステップ；
（４）ハフマンツリーを根から葉の方へ辿り、出現確率の高いイメージパターンには短いビット長の符号を割り当て、出現確率の低いイメージパターンには長いビット長の符号を割り当てるステップ；
（５）圧縮された符号（短いビット長又は長いビット長を持つ符号）と、その符号と対応するイメージパターンとを記録したハフマンテーブルを生成するステップ：
ハフマン符号化法によって得られた符号の平均ビット長は、エントロピー符号化法の平均ビット長に近いものになる。
【０００６】
しかしながら、ハフマン符号化法を用いた無劣化フォントデータ圧縮の有効性は、ツリーの大きさにかなり依存する。すなわち、ツリーのサイズが大きくなるほど、その性能は悪くなる。換言すれば、ハフマンツリーのサイズはかなり小さく保たれなければならないということである。図１（Ｂ）を見ると、曲線２１は理想的な分布関数の曲線を表しており、横軸は異なるイメージパターンを示しており、縦軸は、その組における各イメージパターン出現数すなわち、各イメージパターンの出現確率を表している。曲線２１は、出現頻度が高いイメージパターンが中央の縦軸の上あるいはその付近にプロットされ、一方、出現頻度が低いイメージパターンは、曲線の両側に向かってプロットされ、一般的な釣鐘状の曲線に沿って分布する理想的な形状をなす。
【０００７】
図１（Ｂ）によると、三角形２２が示されているが、曲線２１の頂点２１ａと、曲線２１と横軸との交点である２１ｂ及び２１ｃとを結んでいる。三角形２２は、正規分布の形状を記述するために使用される。一般には、鋭角三角形は良い圧縮結果を示している。なぜならば、出現確率の高いイメージパターンが三角形２２の中心線（すなわち、正規分布の中央値）上又はその周りに集中しており、ハフマンツリーを構成するイメージパターンの全体数（種類）が少ないからである。
一方、図１（Ｂ）中の平たい三角形２４によって表される平たい曲線２３は、良い圧縮結果をもたらさない。上述の、一組の中のすべてのイメージパターンの出現確率が等しいような極端な場合では、三角形２４は水平線になってしまう（三角形がつぶれてしまう。）。
この場合、フォントデータを圧縮しても何も意味がないし、ハフマン符号化は全く効果がない。
【０００８】
一つの実験結果によると、ハフマン符号化を１６×１６のドットマトリクスの明朝体のセット（１３，１０８個）に直接適用した場合、図１（Ｂ）の三角形２４のような平たい三角形になることが分かった。これは、一組（セット）の中に膨大な数のイメージパターンが存在していることを意味しており、ドットマトリクス中の各行（又は列）は一つのイメージパターンを構成すると考えられ、これらのイメージパターンの大部分は、ほぼ同じ出現確率を有する。イメージパターンの数が多くなれば当然にハフマンツリーも大きくなり、従って、圧縮結果も非常に悪くなる。この実験結果は、フォント市場、特にアジアフォント市場において、現在、ドットマトリクスフォントデータの圧縮／解凍のための製品がなぜ提供されないのか、その理由を説明している。従って、ドットマトリクスフォントデータ、特に、多くの文字を含むアジアンドットマトリクスフォントデータの実用的な圧縮／解凍のための方法及びシステムが求められている。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、上述のような事情に鑑み為されたものであり、ドットマトリクスフォントデータの圧縮及び解凍のための方法及びシステムを提供することを目的とするものである。
【課題を解決するための手段】
【００１０】
ここでは、本発明の様々な態様（aspect）を述べているが、［特許請求の範囲］の範囲を限定することを意図したものではない。
本発明の一つの態様によれば、ドットマトリクスフォント文字（ドットマトリクスで表現された文字）のセットを含むドットマトリクスフォントデータを圧縮するためのコンピュータによって実行される方法が提供される。この方法によれば、各ドットマトリクスフォント文字は横型イメージパターンを含む横型イメージ、縦型イメージパターンを含む縦型イメージ、及び残余イメージパターンを含む残余イメージに分割される。次に、ハフマン符号化がそれぞれ、横型イメージパターン、縦型イメージパターン及び残余イメージパターンに対して適用される。特に、ハフマン符号化は、セット中の横型イメージパターンに対する圧縮符号を生成するために横型イメージパターンに対して適用される。通常は、生成された（横型イメージパターンの）圧縮符号と、その符号が表す対応する横型イメージパターンは、横型用のハフマンテーブルに格納される。同様に、生成された（縦型イメージパターンの）圧縮符号と、その符号が表す対応する縦型イメージパターンは、縦型用のハフマンテーブルに格納される。さらに、生成された（残余イメージパターンの）圧縮符号と、その符号が表す対応する残余イメージパターンは、残余ハフマンテーブルに格納される。その後、圧縮された横型符号、圧縮された縦型符号、圧縮された残余符号は、選択的に結合されて、ドットマトリクスフォント文字の圧縮された形を表すビット列が生成される。
【００１１】
本発明の他の態様によれば、特に、そのセット中に大量の残余イメージパターンが存在しているときは、その残余イメージパターンは複数のグループに区分けされるが、一つのドットマトリクスフォント文字に属する残余イメージパターンは確実に同じグループに入るように保持される。一般には、結果として形成された複数のグループは、同じ又は似たような数の残余イメージパターンを含んでいる。次に、ハフマン符号化が残余イメージパターンの各グループに対して適用され、そのグループに対する圧縮された残余符号が生成され、複数のグループについて圧縮された残余符号を定義する複数の残余ハフマンテーブルがそれぞれ生成される。
【００１２】
本発明の一つの態様によれば、ドットマトリクスフォント文字の圧縮された形を表すビット列は、一般的には、３つの構成要素を含む。第１の要素は文字の横型イメージパターンに対するものであり、ドットマトリクスにおける横型イメージパターンの縦方向の位置を特定する縦位置符号と、文字の横型イメージパターンに対する圧縮された横型符号とを含むものである。第２の要素は、文字の縦型イメージパターンに対するものであり、ドットマトリクスにおける縦型イメージパターンの水平方向の位置を特定する横位置符号と、文字の縦型イメージパターンに対する圧縮された縦型符号とを含むものである。第３の要素は、文字の残余イメージパターンに対するものであり、複数の残余ハフマンテーブルのうちのどれが文字中の残余イメージパターンに対する圧縮残余符号を定義するのかを特定するテーブルＩＤコードと、残余イメージパターンに対する圧縮された残余符号とを含むものである。
【００１３】
本発明のさらに別の態様によると、一組の圧縮ドットマトリクスフォント文字を含むドットマトリクスフォントデータを解凍するためのシステムが提供される。このシステムは、解凍されるべき一組の圧縮されたドットマトリクスフォント文字を受け入れるように構成された記憶装置と、記憶装置に接続され、受け入れた圧縮ドットマトリクスフォント文字を解凍するように構成されたプロセッサとを備えている。
特に、このシステムは、以下の（ａ）〜（ｄ）を行うように構成されている。
（ａ）横型イメージパターンの所定の縦位置と横型のハフマンテーブルに基づいて、文字の横型イメージパターンを復元すること；
（ｂ）縦型イメージパターンの所定の水平位置と縦型のハフマンテーブルに基づいて、文字の縦型イメージパターンを復元すること；
（ｃ）残余イメージパターンを定義する残余ハフマンテーブルのＩＤコードを決定し、決定された残余ハフマンテーブルに基づいて残余イメージパターンを復元すること；
（ｄ）復元された横型、縦型及び残余のイメージパターンを結合すること：
【００１４】
本発明のまたさらに別の態様によれば、一組の非圧縮ドットマトリクスフォント文字を圧縮するためのシステムが提供される。このシステムは、圧縮されるべき一組の非圧縮ドットマトリクスフォント文字を受け入れるように構成された記憶装置と、記憶装置に接続され、受け入れた非圧縮ドットマトリクスフォント文字を圧縮するように構成されたプロセッサとを備えている。
【００１５】
本発明の他の態様によれば、コンピュータに読み込まれたときに、一組の圧縮されたドットマトリクスフォント文字を含む圧縮ドットマトリクスフォントデータを解凍する以下の（ａ）〜（ｄ）のステップをコンピュータに実行させるコンピュータ実行可能な命令を格納したコンピュータ読み取り可能な記録媒体が提供される。すなわち、そのステップとは以下の通りである。
（ａ）一組の圧縮されたドットマトリクスフォント文字を受け入れるステップ；
（ｂ）横型ハフマンテーブル、縦型ハフマンテーブル及び１又はそれ以上の残余ハフマンテーブルを検索するステップ；
（ｃ）検索される横型、縦型及び残余ハフマンテーブルをサーチして、各文字の横型イメージパターン、縦型イメージパターン及び残余イメージパターンを取得するステップ；
（ｄ）得られた各文字の横型イメージパターン、縦型イメージパターン及び残余イメージパターンを結合して、元のオリジナルのドットマトリクスフォント文字を復元するステップ：
【００１６】
本発明の他の態様によれば、コンピュータに読み込まれたときに、圧縮ドットマトリクスフォントデータの解凍をコンピュータに実行させるコンピュータ実行可能な命令を格納したコンピュータ読み取り可能な記録媒体が提供される。コンピュータ実行可能な命令は、それぞれビット列の形をした、一組の圧縮ドットマトリクスフォント文字を含んでいる。
ビット列は、以下の（１）〜（６）の符号（コード）を含んでいる。
（１）一つの文字に含まれる横型イメージパターンの縦位置を特定する縦位置符号；
（２）その文字の横型イメージパターンに対する圧縮された横型符号；
（３）一つの文字に含まれる縦型イメージパターンの水平位置を特定する横位置符号；
（４）その文字の縦型イメージパターンに対する圧縮された縦型符号；
（５）文字に含まれる残余イメージパターンに対する圧縮残余符号を定義する残余ハフマンテーブルを特定するテーブルＩＤコード；
（６）文字の残余イメージパターンに対する圧縮残余符号：
【図面の簡単な説明】
【００１７】
【図１】（Ａ）は１６×１６のドットマトリクスで表した漢字のドットマトリクスフォント文字を示す図である。（Ｂ）はドットマトリクスイメージパターンの理想的な、及び非理想的な正規分布曲線を表すものである。（Ｃ）は本発明の様々な方法やシステムを実行するのに適したコンピュータシステムを示す図である。
【図２】（Ａ）はドットマトリクスフォント文字を示しており、それは、横型イメージパターン（Ｂ）、縦型イメージパターン（Ｃ）及び残余イメージパターン（Ｄ）を含む３つの部分に分割される。
【図３】本発明の一つの実施態様によるドットマトリクスフォントデータを圧縮する方法を示すフローチャートである。
【図４】（Ａ）〜（Ｃ）は正規分布の形を意味する３つの三角形を表している。各三角形は、それぞれ、本発明の一つの実施例による、一組のドットマトリクスフォント文字中の横型イメージパターン、縦型イメージパターン及び残余イメージパターンにハフマン符号化法を適用した結果得られたものである。
【図５】本発明の一つの実施例による、一組のドットマトリクスフォント文字中の残余イメージパターンを分類して複数のグループに分ける方法を表すフローチャートである。
【図６】ドットマトリクスフォント文字の各残余イメージのドット位置のビットシーケンスを形成するために、ドットマトリクス中のドット位置の数字を選択する方法を表したものである。
【図７】残余イメージパターンを分類して複数のグループにするために、ドット位置のビットシーケンスを用いてドットマトリクスフォント文字の各残余イメージに対するコード語を生成する方法を示すものである。
【図８】ヒストグラムを用いて、残余イメージパターンを分類して複数のグループに分ける方法を示すものである。
【図９】圧縮されたドットマトリクスフォント文字のサンプルデータフォーマットを表したものである。
【図１０】図９のデータフォーマットに従った、図２（Ａ）のドットマトリクスフォント文字の圧縮データを表すサンプルビット列を示すものである。
【図１１】横型ハフマンテーブル、縦型ハフマンテーブル及び残余ハフマンテーブルからの読み出しデータの例であり、これは、それぞれ図２（Ｂ）〜（Ｄ）の横型イメージ、縦型イメージ及び残余イメージに対応している。
【図１２】本発明の実施例による、圧縮ドットマトリクスフォントデータを解凍して元のドットマトリクスフォントデータに戻す方法を表すフローチャートである。
【図１３】本発明の方法及びシステムの様々な態様を実行するのに適したコンピュータシステムのブロック図である。
【発明を実施するための形態】
【００１８】
図１（Ｃ）は、本発明の様々な圧縮／解凍の方法及びシステムが実行可能な、一般的なコンピュータシステムを示している。出力機器２ａ（たとえばディスプレイ）、入力機器２ｂ（たとえばキーボード、マウス）及び適当なドライブ機構２ｃ（たとえば、ＤＶＤ／ＣＤ−ＲＯＭドライブ、ＵＳＢフラッシュメモリドライブ等）を含む汎用コンピュータ１ａは、本発明の様々な方法を完全に実行するか、若しくは様々なシステムを協働させることができる。ネットワークやメインフレームベースのシステムのような他のタイプのコンピュータシステムも使用可能であることは、当業者に自明である。一般に、コンピュータ１ａは、例えばドライブ機構２ｃを介して非圧縮のドットマトリクスフォントデータを受け取り、本発明の圧縮方法を、受け取ったデータに適用し、圧縮されたドットマトリクスフォントデータを生成する。コンピュータ１ａは、たとえば、コンピュータ読み取り可能な記録媒体に格納された圧縮されたドットマトリクスフォントデータを出力する。また、コンピュータ１ａは圧縮されたドットマトリクスフォントデータを受け取り、受け取ったデータに本発明に係る解凍方法を適用して、解凍された（オリジナルの）ドットマトリクスフォントデータを生成する。次に、コンピュータ１ａは、例えば出力機器２ａに表示するために、解凍されたドットマトリクスフォントデータを出力する。
【００１９】
図３は、本発明の一実施形態による、ドットマトリクスフォントデータの圧縮方法のフローチャートを示したものである。ステップＳ４１では、一組のドットマトリクスフォント文字を含むドットマトリクスフォントデータが（コンピュータに）受け入れられる。以下の説明において、１３，１０８個の明朝体の１６×１６のドットマトリクス漢字フォント文字が、本発明の様々な実施例として使用される。しかしながら、本発明がアジアドットマトリクスフォント文字及び非アジアドットマトリクスフォント文字の両方を含む他のタイプのドットマトリクスフォント文字にも同様に適用可能であることはいうまでもない。
ステップＳ４２において、図２（Ａ）に示す文字２８のようなドットマトリクスフォント文字は３つの要素に分割される。すなわち、一又はそれ以上の横型イメージパターン（又は横型ストローク）２５を含む図２（Ｂ）の横型ストロークイメージ、一又はそれ以上の縦型イメージパターン（又は縦型ストローク）２６を含む図２（Ｃ）の縦型ストロークイメージ、及び、たとえばドットマトリクスの複数の行にわたって形成される一又はそれ以上の残余イメージパターン２７ａ〜２７ｉを含む図２（Ｄ）の残余イメージである。図２（Ｄ）の残余イメージは、図２（Ａ）のオリジナルのドットマトリクスフォント文字イメージから、図２（Ｂ）及び（Ｃ）の横型及び縦型のストロークイメージを除くことによって得られる。
【００２０】
特に、例えば図２（Ｂ）は６個の横型ストロークを示しているが、これには４種類の横型イメージパターンが含まれている。なぜなら、３個の横型ストローク２５は同じ横型イメージパターンであるからである。横型ストロークは１行の中の４以上の連続した（黒く塗られた）ドットとして認識されるが、「ストローク」として認識されるドット数の閾値は「４」に限られるものではなく、「３」でも「５以上」でも構わない。
図２（Ｃ）は３個の縦型ストロークを示しているが、これには２種類の縦型イメージパターンが含まれている。なぜなら、２個の縦型ストローク２６は同じ縦型イメージパターンであるからである。縦型ストロークは１列の中の４以上の連続した（黒く塗られた）ドットとして認識されるが、「縦型ストローク」として認識されるドット数の閾値は「４」に限られるものではない。実験結果によれば、横型ストローク又は縦型ストロークとして認識するための連続した（黒く塗られた）ドット数の最小値が長くなればなるほど、認識される横型又は縦型イメージパターンの数は少なくなり、それに応じて残余イメージパターンの数が増える。圧縮効率を上げるためには、ハフマンツリーに含まれるイメージパターンの合計数は少なく保たれるべきであるので、横型又は縦型ストロークとして認識されるドット数の閾値をユーザーが選択的（又は実験的）に設定することにより、生成される横型／縦型イメージパターン及び／又は残余イメージパターンの数が多くなり過ぎないようにするための、図１（Ｃ）のコンピュータ１ａ上で使用されるユーザーインタフェースソフトウェアツールが提供される。
【００２１】
本発明の一つの態様（aspect）によれば、ハフマンツリーが１００個以下のイメージパターンしか含んでいなければ、データの効果的な圧縮を達成するには十分であるといえる。
図２（Ｄ）は、１６×１６のドットマトリクスの各行を構成する９種類の残余イメージパターン２７ａ〜２７ｉを表している。９個の残余イメージパターン２７ａ〜２７ｉはそれぞれ互いに異なっているが、最初の残余イメージパターン２７ａ（１行がすべて空白の１６個のドットで構成されている。）は８つの異なった行において繰り返し現れる。
図２（Ｂ）〜（Ｄ）のイメージを結合あるいは重ね合わせることによって、図２（Ａ）の元のドットマトリクスフォント文字ができる。ステップＳ４２は一組の中の各ドットマトリクスフォント文字に対して実行され、全体として３つのイメージパターンの組ができる。すなわち、横型イメージパターンの組、縦型イメージパターンの組及び残余イメージパターンの組である。上述の例では、２ｋ×２ｋのマトリクス中の各行を構成するように残余イメージパターンが取られる。あるいは、２ｋ×２ｋのマトリクス中の各列を構成するように残余イメージパターンが取られる。またさらに、残余パターンは同じサイズのｋ×ｋのマトリクス（全部で４個の残余イメージパターン）が構成されるようにしてもよいし、ｋ／２×ｋ／２のマトリクス（全部で１６個の残余イメージパターン）でもよい。
【００２２】
ステップＳ４３において、ハフマン符号化は横型イメージパターンに対して適用され、横型イメージパターンに対する圧縮された横型符号が生成される。特に、ハフマン符号化が横型イメージパターンに適用されるときは、まず初めに一組の中の各横型イメージパターンの出現確率が計算される。次に、横型イメージパターンは出現確率が高い順から順に並べ替えられる。次に、出現確率の低い方から高い方に向かって、二つの隣接する横型イメージパターンが合体されて新たなノードになり、出現確率に従って並べ替えるステップが、すべての横型イメージパターンが合体されて単一のノードになるまで繰り返される。その結果、横型ハフマンツリーができる。次に、ツリーの経路（パス）がルート（根）からリーフ（葉）の方向にトレースされ、高い出現確率を有する横型イメージパターンには短いビット長の符号が割り当てられ、低い出現確率を有する横型イメージパターンには長いビット長の符号が割り当てられる。生成された圧縮横型符号と、その符号が表す対応する横型イメージパターンは、横型ハフマンテーブルに記録される（図１１参照）。
【００２３】
図４（Ａ）は、一組の中の横型イメージパターンの正規分布曲線の形を表す三角形４８を示している。示された例では、その組には全部で２９５個の横型イメージパターンが含まれており、その出現確率は、鋭角三角形４８で表されるようなほぼ理想的な正規分布曲線に従って分布している。図３に戻ると、ステップＳ４４では、ハフマン符号化法は縦型イメージパターンにも適用され、縦型イメージパターンに対する圧縮された縦型符号が生成される。特に、ハフマン符号化が縦型イメージパターンに適用されるときは、まず初めに一組の中の各縦型イメージパターンの出現確率が計算される。次に、縦型イメージパターンは出現確率が高い順から順に並べ替えられる。次に、出現確率の低い方から高い方に向かって、二つの隣接する縦型イメージパターンが合体されて新たなノードになり、出現確率に従って並べ替えるステップが、すべての縦型イメージパターンが合体されて単一のノードになるまで繰り返される。その結果、縦型ハフマンツリーができる。次に、ツリーの経路（パス）がルート（根）からリーフ（葉）の方向にトレースされ、高い出現確率を有する縦型イメージパターンには短いビット長の符号が割り当てられ、低い出現確率を有する縦型イメージパターンには長いビット長の符号が割り当てられる。生成された圧縮縦型符号と、その符号が表す対応する縦型イメージパターンは、縦型ハフマンテーブルに記録される。
【００２４】
図４（Ｂ）は、一組の中の縦型イメージパターンの正規分布曲線の形を表す三角形４９を示している。示された例では、その組には全部で２７７個の縦型イメージパターンが含まれており、その出現確率は、鋭角三角形４９で表されるようなほぼ理想的な正規分布曲線に従って分布している。図３に戻って、ステップＳ４５では、ハフマン符号化法は残余イメージパターンにも適用され、残余イメージパターンに対する圧縮された残余符号が生成される。
【００２５】
図４（Ｃ）は、一組の中の残余イメージパターンの正規分布曲線の形を表す三角形５０を表している。図示した例では、トータルで５７１８個の残余イメージパターンが含まれており、その出現確率の分布は図４（Ａ）及び図４（Ｂ）の三角形４８及び４９と比較すると、かなりフラットである。このフラットな形状は、ほとんどの残余イメージパターンが似たような出現確率を有しており、従って、圧縮結果もかなり劣ることを意味している。好ましくは、ハフマンツリーに含まれている残余イメージパターンのトータル数は、その正規分布が鋭角三角形になるように、すなわち、その出現確率が、中心軸の周りに集中している高確率のイメージパターンと、分布曲線の両端に向かって現れる低確率のイメージパターンとの間で著しく異なるようなやり方で減らすべきである。
【００２６】
従って、本発明の一つの態様（aspect）によれば、図３のステップＳ４５ａにおいて、残余イメージパターンは複数のグループに区分けされ、ステップＳ４５ｂでは、ハフマン符号化法が残余イメージパターンの各グループに対して個々に適用され、複数のグループに対してそれぞれ残余ハフマンテーブルが生成される。このように、複数の残余ハフマンツリーのそれぞれに組み込まれる残余イメージパターンの数は論理的に少なくなり、それゆえ、複数の残余ハフマンツリーのそれぞれに対する正規分布形状は理想的な釣鐘状になる。本発明の様々な実施形態によれば、残余イメージパターンは区分けされて多くのグループに分けられ、一つの文字を形成する残余イメージパターンが確実に同じグループになるようにして、その結果、同じ文字を形成するすべての残余イメージパターンに対する圧縮残余符号が単一の残余ハフマンツリーに含まれるようになる。
【００２７】
本発明の別の実施形態によれば、各グループのサイズ、すなわち、各グループに分類された残余イメージパターンの数は、全く同数か実質的に同数であり、その結果、複数の残余ハフマンツリーは実質的に同じ性能を有する。
【００２８】
図５は、本発明の一つの実施形態による、一組の中の残余イメージパターンを分類して複数のグループに分ける方法のフローチャートを表したものである。ステップＳ５１では、２ｋ×２ｋのドットマトリクスの中のドット位置（dot  locations）の数ｓを選択する。たとえば、１６×１６のドットマトリクスにおいて、ｓ＝２０とする。図６（Ａ）及び図６（Ｂ）を参照すると、一例として、１６×１６のドットマトリクス中に２０個のドット位置５８（図では“×”で表示されている。）が選択される。図６（Ａ）の例では、ドットマトリクス５６がまず５つのエリア（１）〜（５）に分割される。次に、図６（Ｂ）に示すように、５つの各エリアの中に４個のドット位置を選択する（合計２０個のドット位置ができる。）。
図６（Ｃ）及び図６（Ｄ）は、１６×１６のドットマトリクス５６の中に２０個のドット位置５８を選択する他の例を示したものである。この例では、ドットマトリクス５６がまず４つのエリア（１）〜（４）に分割される。次に、図６（Ｄ）に示すように、４つの各エリアの中に５個のドット位置を選択する（合計２０個のドット位置ができる。）。選択されたドット位置は順序付けられて（in a sequence）配列される。
【００２９】
次に、図２（Ｄ）に示すように、一つの文字全体の各残余イメージについて、一連の選択されたドット位置のどれが残余イメージによって占有されているかを表すドット位置ビットシーケンスが形成される。すなわち、残余イメージが順序付けられた２０個のドット位置を占有しているか、あるいは一致しているかを判定する。つまり、残余イメージがドット位置を占有していれば、そのビットを“１”とし、占有していなければ、そのビットを“０”とする。図７は、ドットマトリクス５６から選択された２０のドット位置の占有／非占有状態を示すドット位置ビットシーケンスの例を示したものである。このドット位置ビットシーケンスの例は「11000101111100000011」であるが、これはドットマトリクスから選択された２０のドット位置のうちの１０のドット位置が残余イメージによって占有されていることを意味している。すなわち、ビット列のうちの１番目、２番目、６番目、８番目〜１２番目、１９番目及び２０番目のドット位置が占有されているということである。さらに図７を参照すると、ドット位置ビットシーケンスは、１６進法によるコード語として表現できることが分かる。すなわち、この例では「Ｃ９Ｆ０３」となる。特に、ドット位置ビットシーケンスの２０のビットは、４個ずつのビットからなる５つのグループに分けられ、二進法の４ビットは１６進数（０〜Ｆ）に変換され、それらが合わせられて５つの記号から成るコード語が形成される。１６進表記のコード語を使用することは単なる表現上の目的であり、ドット位置ビットシーケンスがコード語として使用され、あるいは、ドット位置ビットシーケンスがコード語生成のために他の表記／形式に変換され得ることは、当業者にとって自明のことである。いずれにしても、コード語は、１又はそれ以上の残余イメージパターンから成る一つの残余イメージを表示するために、ドット位置ビットシーケンスに基づいて生成される。
【００３０】
各残余イメージ全体について一つのコード語が生成されるので、ドットマトリクスフォント文字の一つの残余イメージを形成するすべての残余イメージパターンには同じコード語が割り当てられる。従って、ステップＳ５３における実施例では、同じドットマトリクスフォント文字に属する残余イメージパターンは、同じコード語に基づいて、同じグループになるように維持される。また、類似のコード語を持つ残余イメージどうしは、類似したトポグラフィーを共有しているものと思われ、従って、その中に含まれる類似の残余イメージパターンも共有していると思われる。
【００３１】
ステップＳ５５では、図８（Ａ）を参照すると、横軸が残余イメージパターンのコード語を表し、縦軸が、複数のコード語のそれぞれに対して同じコード語を持つ残余イメージパターンの数を表すヒストグラムが形成されている。
ステップＳ５７では、ヒストグラム上で、残余イメージパターンを２ｎ個（ｎは自然数）のグループに一様に分類するための最高の量子化が実行される。再び図８（Ａ）及び（Ｂ）を参照すると、図８（Ａ）のヒストグラムは、まず、直線（１）に沿って二つのグループに分割され、次に、二つのグループのそれぞれが直線（２）に沿って分割され、合計４つのグループになる。そして、４つのグループのそれぞれが直線（３）に沿ってさらに分割され、合計８つのグループに分けられる。すなわち、図８（Ｂ）のバイナリツリーのトップからボトムまでの順序に従って、ヒストグラムのエリアは二つの等しいサブエリアに分割される。
【００３２】
ステップＳ５９において、同じサブエリアに分類される残余イメージパターンは一つのグループにまとめられる。従って、ドットマトリクスフォント文字セット中の残余イメージパターンは、多くの（２ｎ個の）グループに分類され、各グループは同一、若しくは実質的に同一な数（かなり少ない）の残余イメージパターンを含んでいる。
【００３３】
図３に戻ると、ステップＳ４５ｂでは、ハフマン符号化は多くの残余イメージパターンのグループごとに適用され、それぞれのグループに対して残余ハフマンテーブルが得られる。特に、ハフマン符号化の残余イメージパターンへの適用は、一つのグループ内の各残余イメージパターンの出現確率をまず求めることから始められる。次に、残余イメージパターンは出現確率の高い方から低い方へ順に並べ替えられる。その後、低い方から高い方へ、二つの隣り合う残余イメージパターンが合体されて新たなノードとなり、出現確率に従って並べ替えるステップが、すべての残余イメージパターンが合体されて単一のルート（根）になるまで繰り返され、残余ハフマンツリーが生成される。そして、高い出現確率を持つ残余イメージパターンに対しては短いビット長の符号が割り当てられ、低い出現確率を持つ残余イメージパターンに対しては長いビット長の符号が割り当てられながら、ツリーのパス（経路）が根（ルート）から葉（リーフ）へとトレースされる。
生成された圧縮残余符号と、その符号が表す（対応する）残余イメージパターンが、そのグループに対する残余ハフマンテーブルの中に格納される（図１１参照）。同じプロセスが残余イメージパターンの複数の（２ｎ個の）グループのそれぞれに対して繰り返され、グループ中の対応する残余イメージパターンに対する圧縮残余符号をそれぞれ定義する複数の（２ｎ個の）残余ハフマンテーブルが得られる。２ｎ個の残余ハフマンテーブルが生成されるとき、各残余ハフマンテーブルは１から２ｎまでの値の範囲のテーブルＩＤコードによって識別されることに注意されたい。
【００３４】
図３を参照すると、最後にステップＳ４６において、生成された様々なハフマンテーブル（横型ハフマンテーブル、縦型ハフマンテーブル、１又はそれ以上（２ｎ）の残余ハフマンテーブルを含む。）は、圧縮されたドットマトリクスフォント文字を定義するのに使用される。
横型、縦型及び残余のハフマンテーブルを生成する、図３のステップＳ４３、４４及び４５を実行する順序は、上述の例には限定されず、他の順序でもよいし、また、同時でもよいことは当業者に自明なことである。
【００３５】
また、上述の実施例では一つの横型ハフマンテーブルと、一つの縦型ハフマンテーブルが生成されているが、本発明はこれに限られたものではなく、例えば、一つの文字セット中の横型及び／又は縦型イメージパターンの数があまりに多くなるときは、２又はそれ以上の横型及び／又は縦型のハフマンテーブルを生成しても構わない。
【００３６】
本発明の様々な実施形態によれば、ドットマトリクスフォント文字の圧縮された形式は図９のようなデータフォーマットを有している。すなわち、図１０に示すようなビット列で表される。示した例では、図１０のビット列は、図２（Ａ）のドットマトリクスフォント文字２８の圧縮された形である。
【００３７】
図９は本発明の様々な実施形態による圧縮されたドットマトリクスフォント文字のデータフォーマットを示している。参照符号７１は圧縮された横型イメージを指しており、ドットマトリクスフォント文字中の横型イメージパターンの縦方向の位置を特定する縦位置符号７１ａと、それに続いて、その文字に含まれる横型イメージパターンを表す１又はそれ以上の圧縮された横型符号７１−１，・・・，７１−ｘを含んでいる。さらに、図１０を参照すると、それは図２（Ａ）の文字２８に対する圧縮されたビット列のサンプルを示したものであるが、圧縮された横型イメージ７１は縦位置符号７１ａ（0100101010100100）を含んでいる。ここに、ビット“１”は、その縦位置に横型イメージパターンが存在していることを示し、ビット“０”は、その縦位置に横型イメージパターンが存在しないことを示している。従って、この特別の縦位置符号７１ａは、その文字が、図２（Ｂ）に示すように、ドットマトリクスの上から第２、５、７、９、１１及び１４行目に横型イメージパターン（横型ストローク）を含んでいることを示している。すなわち、この文字を構成する横型イメージパターンは６個あるということである。６個の圧縮横型符号７１−１〜７１−６はそれぞれ、これら６個の横型イメージパターンを表している。特に、図１１を参照すると、図示された例では、第１の圧縮横型符号７１−１は「001010」、第２の圧縮横型符号７１−２は「110100」、第３から第５までの圧縮横型符号７１−３〜７１−５は、すべて同じ「11010110」（図２（Ｂ）に３度現れる同じ横型ストローク２５に対応）であり、第６の圧縮横型符号７１−６は「000010」である。ハフマン符号化法においては、どの圧縮符号も他の圧縮符号の接頭語（符号の最初の部分）になることはないため、これらの６個の圧縮横型符号は出現した順に、すなわち、図１０に示すように、ドットマトリクスの第２行から第１４行まで連続して配列しても問題がない。次に、解凍するときは、まず横型イメージパターンの縦位置が縦位置符号７１ａによって特定される。
【００３８】
次に、横型ハフマンテーブル（図１１参照）が参照されて６つの圧縮横型符号７１−１〜７１−６が読み出され、読み出された横型圧縮符号７１−１〜７１−６にそれぞれ対応する６つの横型イメージパターンが復元されて、指定された６つの縦位置に配置される。
本発明に係る解凍方法を、図１２を参照しつつ以下に詳細に説明する。
【００３９】
さらに図９を参照すると、参照符号７３は圧縮された縦型イメージを指しており、ドットマトリクスフォント文字中の縦型イメージパターンの水平方向の位置を特定する横位置符号７３ａと、それに続いて、その文字に含まれる縦型イメージパターンを表す１又はそれ以上の圧縮された縦型符号７３−１，・・・，７３−ｙを含んでいる。さらに、図１０を参照すると、圧縮された縦型イメージ７３は横位置符号７３ａ（0100000010000100）を含んでいるが、これはこの文字が図２（Ｃ）に示すように、ドットマトリクスの左から第２、９及び１４列目に縦型イメージパターン（縦型ストローク）を含んでいることを示している。すなわち、この文字を構成する縦型イメージパターンは３個あるということである。３個の圧縮縦型符号７３−１〜７３−３はそれぞれ、これら３個の縦型イメージパターンを表している。特に、図１１を参照すると、図示された例では、第１の圧縮縦型符号７３−１は「0101」、第２の圧縮縦型符号７３−２は「1011011」、第３の圧縮縦型符号７３−３は、「0101」であり、第１の圧縮縦型符号７３−１と同じである（図２（Ｃ）において同じ縦型ストローク２６が２回出現していることに対応している。）。これらの３個の圧縮縦型符号は出現した順に、すなわち、図１０に示すように、ドットマトリクスの第２列から第１４列まで連続して配列してもよい。次に、解凍するときは、まず縦型イメージパターンの横位置が横位置符号７３ａによって特定される。
【００４０】
次に、縦型ハフマンテーブル（図１１参照）が参照されて３つの圧縮縦型符号７３−１〜７３−３が読み出され、読み出された縦型圧縮符号７３−１〜７３−３にそれぞれ対応する３つの縦型イメージパターンが復元されて、指定された３つの横位置に配置される。
上述の図示した例では、縦位置符号７１ａと横位置符号７３ａの長さは、１６×１６ドットマトリクスのサイズに応じて２バイト（１６ビット）である。もちろん、縦位置符号７１ａと横位置符号７３ａの長さはこれに限定されるものではなく、各アプリケーションにおいて使用されるドットマトリクスのサイズに合わせて変更してもよい。
さらに、図９を参照すると、参照符号７５は圧縮された残余イメージを指しており、ドットマトリクスフォント文字中の残余イメージパターンを定義する残余ハフマンテーブルを指定する残余ハフマンテーブルＩＤコード７５ａと、それに続いて、その文字に含まれる残余イメージパターンを表す１又はそれ以上の圧縮された残余符号７５−１，・・・，７５−ｚを含んでいる。さらに、図１０を参照すると、圧縮された残余イメージ７５は、ｎビットの残余ハフマンテーブルＩＤコード７５ａ「001010100111」を含んでいる。上述の通り、本発明の様々な実施形態によれば、残余イメージパターンは２ｎ個のグループに分類される。従って、残余ハフマンテーブルＩＤコード７５ａは、２ｎ個の残余ハフマンテーブルのそれぞれを識別するためにｎビットで構成されている。
【００４１】
さらに、図１１を参照すると、圧縮された残余イメージ７５は、残余ハフマンテーブルＩＤコード７５ａに加えて、１６個の圧縮残余符号７５−１〜７５−１６を含んでいる。
すなわち、これらは、(1)00,  (2)00,  (3)10101,  (4)111100,  (5)00,  (6)00,  (7)11111,  (8)010010,  (9)10110,  (10)110001,  (11)110011,  (12)011011,  (13)00,  (14)00,  (15)00,  (16)00である。これらの圧縮残余符号は、それぞれ対応する残余イメージパターンを表している。圧縮残余符号“00”が、図２（Ｄ）の残余イメージの中の８つの空白の行（例：２７ａ）に対応して、８回出現していることに注意されたい。
これらの１６個の圧縮残余符号７５−１〜７５−１６は、残余ハフマンテーブルＩＤコード７５ａによって特定される残余ハフマンテーブルの中に含まれる。これは一つの文字に属する残余イメージパターンは同じグループに分類され、そのグループに対して一つの残余ハフマンテーブルが作られるからである。圧縮横型符号や縦型符号と同様に、これらの１６個の圧縮残余符号は、図１０に示すように、出現した順に、すなわち、例えば図２（Ｄ）の１６×１６のドットマトリクスの第１行から１６行までのように、連続して配列してもよい。換言すれば、これらの１６個の圧縮残余符号は、図２（Ｄ）に示すように、ドットマトリクスの一番上の行から一番下までの行に現れる１６個の残余イメージパターンに対応するものである。
【００４２】
次に、解凍するときは、まず、参照されるべき残余ハフマンテーブルが、残余ハフマンテーブルＩＤコード７５ａによって特定される。次に、特定された残余ハフマンテーブル（図１１参照）が参照されて圧縮残余符号（たとえば、１６×１６のドットマトリクスの場合における１６個の圧縮残余符号）が順番に読み出され、読み出された圧縮残余符号にそれぞれ対応する残余イメージパターンが復元されて、ドットマトリクスの中に順に配置される。
図２（Ａ）のドットマトリクスフォント文字２８の圧縮形である図１０の圧縮ビット列に含まれるトータルのビット数は、２０．２５バイトである。オリジナルのドットマトリクスフォント文字２８に必要とされるビット数は、１６×１６で３２バイト（２５６ビット）となるので、この例における圧縮比は、１：０．６３２８となる。
【００４３】
図１２は、本発明の一つの実施形態に係る、圧縮されたドットマトリクスフォントデータを解凍してオリジナルのドットマトリクスフォントデータに戻す方法を表したフローチャートである。一般に、解凍のプロセス（手順）は、圧縮のプロセスの逆になる。ステップＳ８１において、圧縮されたドットマトリクスフォント文字は、例えば、図１０に示すようなビット列の形で（システムに）受け入れられる。ステップＳ８２において、その文字に含まれるすべての横型イメージパターンの縦位置が、縦位置符号７１ａに基づいて決定される。ステップＳ８３において、圧縮横型符号７１−１〜７１−ｘに対応する横型イメージパターンが横型ハフマンテーブルを参照して復元され、所定の縦位置に配置される（図２（Ｂ）参照）。同様に、ステップＳ８４において、その文字に含まれるすべての縦型イメージパターンの水平位置が、横位置符号７３ａに基づいて決定される。ステップＳ８５において、圧縮縦型符号７３−１〜７３−ｙに対応する縦型イメージパターンが、縦型ハフマンテーブルを参照して復元され、指定された横位置に配置される（図２（Ｃ）参照）。ステップＳ８６では、参照されるべき残余ハフマンテーブルが残余ハフマンテーブルＩＤコード７５ａに基づいて特定される。ステップＳ８７において、圧縮された残余符号７５−１〜７５−ｚに対応する残余イメージパターンが、特定された残余ハフマンテーブルを参照して復元され、順にドットマトリクス中に配置される（図２（Ｄ）参照）。最後に、ステップＳ８８において、復元された横型イメージパターン、縦型イメージパターン及び残余イメージパターンが組み合わされてオリジナルのドットマトリクスフォント文字になる（図２（Ａ）参照）。
【００４４】
図１３は、本発明に係るドットマトリクスフォントの圧縮及び／又は解凍のための様々な方法の実行又はそのためのシステムを実現するのに適したシステムのブロック図である。システム１ａは、図１（Ｃ）に示すような汎用コンピュータであって、プロセッサ３ａ、Ｉ／Ｏインタフェース４ａ、出力機器２ａ（例えば、ディスプレイ）、入力機器２ｂ（例えば、キーボード、マウス等）、Ｉ／Ｏインタフェース４ａと通信する他の機器２ｄ、及び記憶装置９０を含み、それらはすべてバスラインを介して互いに接続されている。
入力／出力（Ｉ／Ｏ）インタフェース４ａは、無線又は有線でネットワーク上にある他の機器２ｄと通信を行うために使用され、オリジナルの（非圧縮の）又は圧縮されたドットマトリクスフォントデータを他の機器から受信したり、又は、圧縮若しくは解凍したドットマトリクスフォントデータを他の機器に転送／伝送を行ったりするものである。
Ｉ／Ｏインタフェース４ａは、コネクタ等の回路素子を含み、必要なプロトコルを用いて使用するように構成されている。Ｉ／Ｏインタフェース４ａはさらに、プロセッサ３ａを入力機器２ｂと出力機器２ａとに接続している。
【００４５】
記憶装置９０は、一般には、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）及び不揮発性の大容量記憶デバイスを含んでいる。図示した実施例では、記憶装置９０は、オペレーティングシステム（ＯＳ）９１、圧縮モジュール９３、ハフマンテーブル９５及び解凍モジュール９７を具備している。これらの各要素は、特定の機能を実行するためのハードウェア及びソフトウェアの集合／組み合わせから成り立っている。特に、圧縮モジュール９３は、プロセッサ３ａと協働して、上述の本発明の様々な実施形態に従ってドットマトリクスフォント文字を圧縮するように作られている。同様に、解凍モジュール９７は、プロセッサ３ａと協働して、上述の本発明の様々な実施形態に従って圧縮ドットマトリクスフォント文字を解凍するように作られている。圧縮モジュール９３によって生成されたハフマンテーブル９５は、解凍モジュール９７による使用のために記憶装置９０に格納されているか、又は、本発明に従って圧縮されたドットマトリクスフォントデータを解凍するのに使用するために他の機器に伝送／転送してもよい。特に、圧縮モジュール９３は、ドットマトリクスデータの圧縮後、圧縮されたドットマトリクスフォントデータを、生成したハフマンテーブル９５及び圧縮されたドットマトリクスフォントデータを解凍するためのコンピュータ実行可能命令とをパッケージにしてコンピュータ読み取り可能なファイルにする。このパッケージファイルは、次に、Ｉ／Ｏインタフェース４ａを介して他の機器に伝送／転送される。
【００４６】
本発明のシステムの構成は図１３に示したものには限られず、他の異なる構成でも実施可能であることは当業者に自明であろう。例えば、システム１ａの様々な要素（又はコンポーネント）によって実行される機能のいくつかは、単一の要素によって実行できるように組み合わせてもよいし、単一の要素によって実行される機能またはルーチンを、複数の要素によって実行できるように分割してもよい。
【００４７】
上述の通り、圧縮モジュール９３によって生成された一組の圧縮ドットマトリクスフォント文字はコンピュータ読み取り可能なファイルとして保存されるが、それはコンピュータ読み取り可能な有形の媒体に格納してもよいし、コンピュータ読み取り可能な無形の媒体を介して伝送してもよい。もし、ファイルの受け手が、圧縮されたドットマトリクスフォント文字を解凍するために必要なハフマンテーブルを持っているか、それを使用することができるならば、そのファイルの中に様々なハフマンテーブルを含んでいる必要はない。
一方、もし、受け手が必要なハフマンテーブルを使用できない場合は、そのファイルはこれらのハフマンテーブルを含んでいるべきである。同様に、もしファイルの受け手が解凍のために必要なコンピュータプログラムを使用することができなければ、そのファイルは、解凍のためのコンピュータ実行可能な命令を含むコンピュータプログラムをさらに含んでいなければならない。
【００４８】
一組のドットマトリクスフォント文字を圧縮する方法は、上述のように、全自動で行われるが、その一方で、アプリケーションによってはいくらかの人手の介在があっても構わない。例えば、前述の通り、横型又は縦型のストロークであると認識するための連続したアクティブ（黒く塗られた）ドットの数の閾値を調整するには、人手によることが望ましいことがある。特に、横型／縦型イメージパターン及び／又は残余イメージパターンの数が多くなりすぎないように、コンピュータ１ａの入力機器２ｂ及び出力機器２ａを用いて、ユーザーが横型又は縦型のストロークであると認識するための連続したアクティブドットの数の閾値の設定を実験的に確かめるということがある。この目的のためのユーザーインタフェースソフトウェアツールは、記憶装置９０の中にある圧縮モジュール９３の中に含めるようにしてもよい。
【００４９】
上述の様々な実施形態はさらに別の実施形態を提供するために組み合わせることが可能である。上述の詳細な説明に照らせば、実施形態に対してこれらの変更を加えることは可能である。一般に、請求項において用いられている用語は、権利範囲を明細書の詳細な説明に開示された特定の実施例に限定するものに解釈されるべきではなく、請求項の権利範囲に含まれるすべての均等物をも含むように解釈されるべきである。従って、請求項の内容は開示された実施例には限定されない。
【図１】
0005225420.tif 000004
【図２】
0005225420.tif 000005
【図３】
0005225420.tif 000006
【図４】
0005225420.tif 000007
【図５】
0005225420.tif 000008
【図６】
0005225420.tif 000009
【図７】
0005225420.tif 000010
【図８】
0005225420.tif 000011
【図９】
0005225420.tif 000012
【図１０】
0005225420.tif 000013
【図１１】
0005225420.tif 000014
【図１２】
0005225420.tif 000015
【図１３】
0005225420.tif 000016