(57)【特許請求の範囲】
【請求項１】
水平方向Ｘドット、垂直方向Ｙドットからなるビットマップフォントを水平方向４ドット、垂直方向１ドットからなるサブブロックに分割するサブブロック分割処理と、
前記サブブロック分割処理により得られた全サブブロックの中から、全てのドットがビットマップフォントにおける文字の背景色を示す特定ドット値を有するサブブロックを探索する第１のサブブロックデータ探索処理と、
前記サブブロック分割処理により得られた各サブブロックが前記第１のサブブロックデータ探索処理により探索されたか否かを示す判定データを出力する第１の符号化処理と、
前記サブブロック分割処理により得られた各サブブロックのうち前記第１のサブブロックデータ探索処理により探索されなかったサブブロックの中から、特定の２ドットが前記特定ドット値を有する旨の４種類の条件のいずれかを満たすサブブロックを探索し、探索した各サブブロックについて、前記４種類の条件のうち当該サブブロックが満たす条件を示す条件符号を出力する第２のサブブロックデータ探索処理と、
前記第１のサブブロックデータ探索処理により探索されなかったサブブロックであって、前記４種類の条件のいずれかを満たすサブブロックについて、当該サブブロックにおける前記特定の２ドット以外のドットのドット値を当該ドットの周辺ドットのドット値から予測符号化する第２の符号化処理と、
前記第１のサブブロックデータ探索処理により探索されなかったサブブロックであって、前記４種類の条件のいずれも満たさないサブブロックについて、当該サブブロックの各ドットのドット値を当該ドットの周辺ドットのドット値から予測符号化する第３の符号化処理と
を具備することを特徴とするビットマップフォントの圧縮符号化方法。
【請求項２】
前記第２のサブブロックデータ探索処理では、３ドットが前記特定ドット値を有するために前記４種類の条件のうち２種類の条件を満たすサブブロックが発生した場合に、前記２種類の条件の各々について、前記３ドットのうち当該条件において前記特定の２ドットとならないドットの予測符号化を前記第２の符号化処理において行った場合に発生する予測誤差を算出し、予測誤差の少ない条件を選択して前記条件符号を出力することを特徴とする請求項１に記載のビットマップフォントの圧縮符号化方法。
【請求項３】
水平方向Ｘドット、垂直方向Ｙドットからなるビットマップフォントを水平方向４ドット、垂直方向１ドットからなるサブブロックに分割した各サブブロックについて、全てのドットがビットマップフォントにおける文字の背景色を示す特定ドット値を有するサブブロックに該当するか否かを示す判定データと、
全てのドットが前記特定ドット値を有するサブブロックに該当しない各サブブロックに各々対応した各サブブロック符号データとを具備し、
各サブブロックに対応した各サブブロック符号データは、特定の２ドットが前記特定ドット値を有する旨の４種類の条件のいずれかを満たすサブブロックに当該サブブロックが該当するか否かを示すフラグ符号を含み、
特定の２ドットが前記特定ドット値を有する旨の４種類の条件のいずれかを満たすサブブロックに当該サブブロックが該当することを示すフラグ符号を含む各サブブロック符号データは、当該サブブロックが満たす条件を示す条件符号と、前記特定の２ドット以外のドットのドット値を当該ドットの周辺ドットのドット値から予測符号化することにより生じた第１の予測誤差とを含み、
特定の２ドットが前記特定ドット値を有する旨の４種類の条件のいずれかを満たすサブブロックに当該サブブロックが該当しないことを示すフラグ符号を含む各サブブロック符号データは、当該サブブロックの各ドットのドット値を当該ドットの周辺ドットのドット値から予測符号化することにより生じた第２の予測誤差とを含むことを特徴とするデータ構造を有するビットマップフォントの圧縮符号化データを復号化する方法において、
水平方向Ｘドット、垂直方向Ｙドットからなるビットマップフォントを水平方向４ドット、垂直方向１ドットからなるサブブロックに分割した各サブブロックのうち、全てのドットがビットマップフォントにおける文字の背景色を示す特定ドット値を有することを前記判定データが示すサブブロックについて、当該サブブロックの各ドットのドット値を特定ドット値とする第１のドット値復元処理と、
前記各サブブロックのうち、全てのドットが前記特定ドット値を有することを前記判定データが示さないサブブロックの各ドットのドット値を前記サブブロック符号データに基づいて復元する処理であって、
（ａ）特定の２ドットが前記特定ドット値を有する旨の４種類の条件のいずれかを満たすサブブロックに当該サブブロックが該当することを示す前記フラグ符号を前記サブブロック符号データが含む場合に、当該サブブロック符号データに含まれる前記条件符号が示す条件に従って、当該サブブロックにおける前記特定の２ドットを求め、前記特定の２ドットのドット値を前記特定ドット値とする一方、当該サブブロックにおける前記特定の２ドット以外の各ドットのドット値の各予測値を各ドットの周辺ドットのドット値を用いて各々算出し、各予測値に当該サブブロック符号データに含まれる各ドットに対応した前記第１の予測誤差を各々加算することにより、各ドットのドット値を復号化する第２のドット値復元処理と、
（ｂ）特定の２ドットが前記特定ドット値を有する旨の４種類の条件のいずれかを満たすサブブロックに当該サブブロックが該当しないことを示す前記フラグ符号をサブブロック符号データが含む場合に、当該サブブロックの各ドットのドット値の各予測値を各ドットの周辺ドットのドット値を用いて各々算出し、各予測値に当該サブブロック符号データに含まれる各ドットに対応した前記第２の予測誤差を各々加算することにより、各ドットのドット値を復号化する第３のドット値復元処理と
を具備することを特徴とするビットマップフォントの圧縮符号化データの復号化方法。
【請求項４】
水平方向Ｘドット、垂直方向Ｙドットからなるビットマップフォントを水平方向４ドット、垂直方向１ドットからなるサブブロックに分割した各サブブロックについて、全てのドットがビットマップフォントにおける文字の背景色を示す特定ドット値を有するサブブロックに該当するか否かを示す判定データと、
全てのドットが前記特定ドット値を有するサブブロックに該当しない各サブブロックに各々対応した各サブブロック符号データとを具備し、
各サブブロックに対応した各サブブロック符号データは、特定の２ドットが前記特定ドット値を有する旨の４種類の条件のいずれかを満たすサブブロックに当該サブブロックが該当するか否かを示すフラグ符号を含み、
特定の２ドットが前記特定ドット値を有する旨の４種類の条件のいずれかを満たすサブブロックに当該サブブロックが該当することを示すフラグ符号を含む各サブブロック符号データは、当該サブブロックが満たす条件を示す条件符号と、前記特定の２ドット以外のドットのドット値を当該ドットの周辺ドットのドット値から予測符号化することにより生じた第１の予測誤差とを含み、
特定の２ドットが前記特定ドット値を有する旨の４種類の条件のいずれかを満たすサブブロックに当該サブブロックが該当しないことを示すフラグ符号を含む各サブブロック符号データは、当該サブブロックの各ドットのドット値を当該ドットの周辺ドットのドット値から予測符号化することにより生じた第２の予測誤差とを含むことを特徴とするデータ構造を有するビットマップフォントの圧縮符号化データを復号化する処理をコンピュータに実行させるプログラムにおいて、
水平方向Ｘドット、垂直方向Ｙドットからなるビットマップフォントを水平方向４ドット、垂直方向１ドットからなるサブブロックに分割した各サブブロックのうち、全てのドットがビットマップフォントにおける文字の背景色を示す特定ドット値を有することを前記判定データが示すサブブロックについて、当該サブブロックの各ドットのドット値を特定ドット値とする第１のドット値復元処理と、
前記各サブブロックのうち、全てのドットが前記特定ドット値を有することを前記判定データが示さないサブブロックの各ドットのドット値を前記サブブロック符号データに基づいて復元する処理であって、
（ａ）特定の２ドットが前記特定ドット値を有する旨の４種類の条件のいずれかを満たすサブブロックに当該サブブロックが該当することを示す前記フラグ符号を前記サブブロック符号データが含む場合に、当該サブブロック符号データに含まれる前記条件符号が示す条件に従って、当該サブブロックにおける前記特定の２ドットを求め、前記特定の２ドットのドット値を前記特定ドット値とする一方、当該サブブロックにおける前記特定の２ドット以外の各ドットのドット値の各予測値を各ドットの周辺ドットのドット値を用いて各々算出し、各予測値に当該サブブロック符号データに含まれる各ドットに対応した前記第１の予測誤差を各々加算することにより、各ドットのドット値を復号化する第２のドット値復元処理と、
（ｂ）特定の２ドットが前記特定ドット値を有する旨の４種類の条件のいずれかを満たすサブブロックに当該サブブロックが該当しないことを示す前記フラグ符号をサブブロック符号データが含む場合に、当該サブブロックの各ドットのドット値の各予測値を各ドットの周辺ドットのドット値を用いて各々算出し、各予測値に当該サブブロック符号データに含まれる各ドットに対応した前記第２の予測誤差を各々加算することにより、各ドットのドット値を復号化する第３のドット値復元処理と
をコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、フォントを構成する各ドットの濃度を４ビットで表現したビットマップフォントの圧縮符号化および復号化を行うための技術に関する。
【背景技術】
【０００２】
この種のビットマップフォントの圧縮符号化アルゴリズムに関する文献として、特許文献１および２がある。特許文献１に開示された圧縮符号化アルゴリズムは、ビットマップフォントを複数の矩形のブロック（実施形態では８ドット×８ドット（図４参照））に分割し、複数のブロックが同一のビットマップデータである場合には最初に読み出したブロックのビットマップデータのみを記録し、それ以降のブロックは上記ビットマップデータの格納領域を示すアドレスのみを記録する、というものである。特許文献２に開示された圧縮符号化アルゴリズムは、漢字フォントデータを構成する漢字構成要素データ（漢字を構成する辺、冠、構え等を表すデータ）の過去における統計的な利用頻度に基づき、データ圧縮対象の漢字フォントデータの中から基準漢字フォントデータを選択して設定し、この設定された基準漢字フォントデータに基づき、データ圧縮対象の漢字フォントデータをデータ圧縮処理する、というものである。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−２２２７４７号公報
【特許文献２】特開２００５−１２２１５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
さて、文字等の画像を表示する装置として、フレームバッファ方式の画像表示装置とラインバッファ方式の画像表示装置がある。前者のフレームバッファ方式の画像表示装置は、１画面分の画像データを記憶するフレームバッファを有し、垂直走査周期毎にこのフレームバッファ内の画像データを表示する装置である。このフレームバッファ方式の画像表示装置において、ある画面に文字フォントを表示させる場合、その画面を表示する垂直走査周期に間に合うように、表示対象の文字フォントの圧縮符号化データを復号化してフレームバッファに書き込めばよい。従って、文字フォントの圧縮符号化アルゴリズムに関する制約は少ない。しかし、このフレームバッファ方式の画像表示装置は、フレームバッファとして大容量のＲＡＭ（Random Access Memory）が必要であり、コスト高になるとともに、ＲＡＭが雑音の影響を受けた場合に表示画面が乱れるという問題がある。
【０００５】
後者のラインバッファ方式の画像表示装置は、１ライン分の画像データを記憶するラインバッファを有し、水平走査周期毎にこのラインバッファ内の画像データを表示する装置である。このラインバッファ方式の画像表示装置は、ラインバッファの記憶容量が少なくて済むので、フレームバッファ方式の画像表示装置において発生するコスト高および雑音混入の問題は発生しない。
【０００６】
しかし、このラインバッファ方式の画像表示装置に文字フォントを表示させるためには、各水平走査周期において表示対象となる文字フォントの各ラインを１ラインずつラインバッファに書き込む必要がある。一方、上述した特許文献１、２に開示された圧縮符号化アルゴリズムは、高い圧縮率が得られるものの、各圧縮符号化アルゴリズムにより得られた圧縮符号化データから文字フォントを１ラインずつ復号化することができない。従って、これらの圧縮符号化アルゴリズム（ランレングス圧縮）は、ラインバッファ方式の画像表示装置には適さない。ここで、予測符号化アルゴリズムにより圧縮符号化データを生成した場合、この圧縮符号化データから文字フォントを１ラインずつ復号化することが可能である。しかし、このような圧縮符号化アルゴリズムでは十分な圧縮率が得られないという問題がある。以上のように、従来、高い圧縮率が得られ、かつ、ラインバッファ方式の画像表示装置に適したビットマップフォントの圧縮符号化アルゴリズムは提供されていなかった。
【０００７】
この発明は、以上説明した事情に鑑みてなされたものであり、ビットマップフォントの圧縮符号化データの圧縮率を高くし、かつ、圧縮符号化データからビットマップフォントを１ラインずつ復号化することを可能にする技術的手段を提供することを目的とする。
【課題を解決するための手段】
【０００８】
この発明は、水平方向Ｘドット、垂直方向Ｙドットからなるビットマップフォントを水平方向４ドット、垂直方向１ドットからなるサブブロックに分割するサブブロック分割処理と、前記サブブロック分割処理により得られた全サブブロックの中から、全てのドットがビットマップフォントにおける文字の背景色を示す特定ドット値を有するサブブロックを探索する第１のサブブロックデータ探索処理と、前記サブブロック分割処理により得られた各サブブロックが前記第１のサブブロックデータ探索処理により探索されたか否かを示す判定データを出力する第１の符号化処理と、前記サブブロック分割処理により得られた各サブブロックのうち前記第１のサブブロックデータ探索処理により探索されなかったサブブロックの中から、特定の２ドットが前記特定ドット値を有する旨の４種類の条件のいずれかを満たすサブブロックを探索し、探索した各サブブロックについて、前記４種類の条件のうち当該サブブロックが満たす条件を示す条件符号を出力する第２のサブブロックデータ探索処理と、前記第１のサブブロックデータ探索処理により探索されなかったサブブロックであって、前記４種類の条件のいずれかを満たすサブブロックについて、当該サブブロックにおける前記特定の２ドット以外のドットのドット値を当該ドットの周辺ドットのドット値から予測符号化する第２の符号化処理と、前記第１のサブブロックデータ探索処理により探索されなかったサブブロックであって、前記４種類の条件のいずれも満たさないサブブロックについて、当該サブブロックの各ドットのドット値を当該ドットの周辺ドットのドット値から予測符号化する第３の符号化処理とを具備することを特徴とするビットマップフォントの圧縮符号化方法を提供する。
【０００９】
この発明によれば、文字の背景を構成するサブブロックを示す判定データが発生される。また、文字の背景を構成するサブブロックに該当しないサブブロックのうち上記４種類の条件のいずれかを満たすサブブロックは、その条件の種類を示す条件符号が発生され、その条件において特定ドット値を有することが求められていない２ドットが予測符号化される。また、文字の背景を構成するサブブロックに該当しないサブブロックのうち上記４種類の条件のいずれをも満たさないサブブロックは、４ドットが予測符号化される。従って、この発明によれば高い圧縮率が得られる。
【００１０】
この発明に係る圧縮符号化方法により得られる圧縮符号化データは次のデータ構造を有する。すなわち、水平方向Ｘドット、垂直方向Ｙドットからなるビットマップフォントを水平方向４ドット、垂直方向１ドットからなるサブブロックに分割した各サブブロックについて、全てのドットがビットマップフォントにおける文字の背景色を示す特定ドット値を有するサブブロックに該当するか否かを示す判定データと、全てのドットが前記特定ドット値を有するサブブロックに該当しない各サブブロックに各々対応した各サブブロック符号データとを具備し、各サブブロックに対応した各サブブロック符号データは、特定の２ドットが前記特定ドット値を有する旨の４種類の条件のいずれかを満たすサブブロックに当該サブブロックが該当するか否かを示すフラグ符号を含み、特定の２ドットが前記特定ドット値を有する旨の４種類の条件のいずれかを満たすサブブロックに当該サブブロックが該当することを示すフラグ符号を含む各サブブロック符号データは、当該サブブロックが満たす条件を示す条件符号と、前記特定の２ドット以外のドットのドット値を当該ドットの周辺ドットのドット値から予測符号化することにより生じた第１の予測誤差とを含み、特定の２ドットが前記特定ドット値を有する旨の４種類の条件のいずれかを満たすサブブロックに当該サブブロックが該当しないことを示すフラグ符号を含む各サブブロック符号データは、当該サブブロックの各ドットのドット値を当該ドットの周辺ドットのドット値から予測符号化することにより生じた第２の予測誤差とを含むことを特徴とするビットマップフォントの圧縮符号化データのデータ構造である。
【００１１】
また、この発明は、このデータ構造を有するビットマップフォントの圧縮符号化データを復号化する方法として、次の復号化方法を提供する。すなわち、水平方向Ｘドット、垂直方向Ｙドットからなるビットマップフォントを水平方向４ドット、垂直方向１ドットからなるサブブロックに分割した各サブブロックのうち、全てのドットがビットマップフォントにおける文字の背景色を示す特定ドット値を有することを前記判定データが示すサブブロックについて、当該サブブロックの各ドットのドット値を特定ドット値とする第１のドット値復元処理と、前記各サブブロックのうち、全てのドットが前記特定ドット値を有することを前記判定データが示さないサブブロックの各ドットのドット値を前記サブブロック符号データに基づいて復元する処理であって、
（ａ）特定の２ドットが前記特定ドット値を有する旨の４種類の条件のいずれかを満たすサブブロックに当該サブブロックが該当しないことを示す前記フラグ符号を前記サブブロック符号データが含む場合に、当該サブブロック符号データに含まれる前記条件符号が示す条件に従って、当該サブブロックにおける前記特定の２ドットを求め、前記特定の２ドットのドット値を前記特定ドット値とする一方、当該サブブロックにおける前記特定の２ドット以外の各ドットのドット値の各予測値を各ドットの周辺ドットのドット値を用いて各々算出し、各予測値に当該サブブロック符号データに含まれる各ドットに対応した前記第１の予測誤差を各々加算することにより、各ドットのドット値を復号化する第２のドット値復元処理と、
（ｂ）特定の２ドットが前記特定ドット値を有する旨の４種類の条件のいずれかを満たすサブブロックに当該サブブロックが該当しないことを示す前記フラグ符号をサブブロック符号データが含む場合に、当該サブブロックの各ドットのドット値の各予測値を各ドットの周辺ドットのドット値を用いて各々算出し、各予測値に当該サブブロック符号データに含まれる各ドットに対応した前記第２の予測誤差を各々加算することにより、各ドットのドット値を復号化する第３のドット値復元処理とを具備することを特徴とするビットマップフォントの圧縮符号化データの復号化方法である。
【００１２】
この復号化方法によれば、ライン単位で、第１〜第２のドット値復元処理を実行させることが可能である。従って、この復号化方法をラインバッファ方式の画像表示装置に適用し、上記データ構造を有するビットマップフォントの圧縮符号化データを１ラインずつ復号化し、ラインバッファ方式の画像表示装置の表示画面にビットマップフォントを表示させることができる。
【図面の簡単な説明】
【００１３】
【図１】この発明の一実施形態によるビットマップフォントの圧縮符号化方法を実行するための圧縮符号化プログラムおよび同圧縮符号化プログラムの実行により得られたビットマップフォントの圧縮符号化データの復号化を行う復号化プログラムの構成を示す図である。
【図２】同圧縮符号化プログラムにおけるサブブロック分割処理および第１のサブブロックデータ探索処理の内容を示す図である。
【図３】同圧縮符号化プログラムにおける特定ドット値の決定方法を示す図である。
【図４】同圧縮符号化プログラムにおける第１のサブブロックデータ探索処理の内容を示す図である。
【図５】同圧縮符号化プログラムにおけるランレングス符号化処理の内容を示す図である。
【図６】同圧縮符号化プログラムにおける第２のサブブロックデータ探索処理の内容を示す図である。
【図７】同圧縮符号化プログラムにおける第２のサブブロックデータ探索処理の実行例を示す図である。
【図８】同圧縮符号化プログラムにおける予測符号化アルゴリズムを示す図である。
【図９】同圧縮符号化プログラムにおいて４種類の条件のいずれかを満たすサブブロックについて実施される予測符号化処理を説明する図である。
【図１０】同圧縮符号化プログラムにおける第１のサブブロックデータ探索処理において、３ドットが特定ドット値を有する場合の対処方法を説明する図である。
【図１１】同圧縮符号化プログラムの実行により得られるビットマップフォントの圧縮符号化データのデータ構造を示す図である。
【発明を実施するための形態】
【００１４】
以下、図面を参照し、この発明の一実施形態について説明する。図１（ａ）は、この発明の一実施形態によるビットマップフォントの圧縮符号化方法を実行するための圧縮符号化プログラムの構成を示す図である。また、図１（ｂ）は同プログラムの実行により得られた圧縮符号化データを復号化してビットマップフォントを再現する復号化プログラムの構成を示す図である。
【００１５】
本実施形態によるビットマップフォントの圧縮符号化プログラムは、図１（ａ）に示すサブブロック分割処理１０１と、第１のサブブロックデータ探索処理１０２と、１／４データ変換処理１０３およびランレングス符号化処理１０４と、第２のサブブロックデータ探索処理１０５と、予測符号化処理１０６およびエントロピー符号化処理１０７と、予測符号化処理１０８およびエントロピー符号化処理１０９とをコンピュータに実行させるプログラムである。
【００１６】
サブブロック分割処理１０１は、図２（ａ）に示すように、水平方向Ｘドット、垂直方向Ｙドットからなるビットマップフォントを水平方向４ドット、垂直方向１ドットからなるサブブロックに分割する処理である。本実施形態におけるビットマップフォントは、１ドットの濃度を示すドット値を４ビットにより表現したビットマップフォントである。
【００１７】
第１のサブブロックデータ探索処理１０２は、サブブロック分割処理１０１により得られた全サブブロックの中から全てのドットが特定ドット値を有するサブブロックを探索する処理である。ここで、特定ドット値は、ビットマップフォントにおいて文字の背景部分に位置するドットのドット値である。図３（ａ）に示すようにビットマップフォントにおける文字の背景色が白である場合、特定ドット値は背景色・白を示すドット値“１１１１”＝「１５」となり、図３（ｂ）に示すようにビットマップフォントにおける文字の背景色が黒である場合、特定ドット値は背景色・黒を示すドット値“００００”＝「０」となる。図２（ｂ）に示す例では、文字の背景が白であり、第１のサブブロックデータ探索処理１０２において４ドットのドット値が全て特定ドット値「１５」であるサブブロックが探索されている。以下では、ビットマップフォントにおける文字の背景色が白であり、特定ドット値が「１５」である場合について説明する。
【００１８】
１／４データ変換処理１０３およびランレングス符号化処理１０４は、サブブロック分割処理１０１により得られた各サブブロックについて、第１のサブブロックデータ探索処理１０２により探索されたサブブロックに該当するか否かを示す判定データを出力する第１の符号化処理を構成している。
【００１９】
図４（ａ）は１／４データ変換処理１０３の処理内容を例示するものである。図４（ａ）左側において、サブブロック分割処理１０１により得られた各サブブロックを各々示す各矩形のうち左下がり斜線の施された各矩形は、第１のサブブロックデータ探索処理１０２により探索されたサブブロック、すなわち、全てのドットが特定ドット値を有するサブブロックを示す。また、白抜きの矩形は、第１のサブブロックデータ探索処理１０２により探索されなかったサブブロック、すなわち、特定ドット値を有しないドットを含むサブブロックを示す。１／４データ変換処理１０３では、この第１のサブブロックデータ探索処理１０２の探索結果を示す情報として、元のビットマップフォント（Ｘドット×Ｙドット）の１／４のサイズのデータを作成する。具体的には、サブブロック分割処理１０１により得られた各サブブロックについて、第１のサブブロックデータ探索処理１０２により探索されたサブブロックをビット“１”により示し、第１のサブブロックデータ探索処理１０２により探索されなかったサブブロックをビット“０”により示すデータ（ビットマップ）を生成する（図４（ａ）右側参照）。この１／４データ変換処理１０３により得られた（１／４）Ｘ×Ｙのデータ（ビットマップ）がランレングス符号化処理１０４の処理対象となる。図４（ｂ）において、右下がり斜線が施された領域は、サブブロック分割処理１０１により得られた各サブブロックのうち第１のサブブロックデータ探索処理１０２により探索されなかったサブブロックを示す。これらのサブブロックが第２のサブブロックデータ探索処理１０５の処理対象となる。
【００２０】
ランレングス符号化処理１０４は、１／４データ変換処理１０３により得られた（１／４）Ｘ×Ｙのビットマップにおいて、水平方向に“０”の連続する回数をカウントするとともに、“１”の連続する回数をカウントし、各カウント値を符号化して判定データとして出力する処理である。このランレングス符号化処理１０４では、ライン単位で、“０”の連続回数および“１”の連続回数のカウントを行う。図５はランレングス符号化処理１０４の処理内容を例示するものである。図５において、上から第１ラインおよび第２ラインは、“１”が４回連続するので、ＯＲＬ＝「４」が各々ランレングス符号ＲＬＣ（図１（ａ）参照）として出力される。第３ラインおよび第４ラインは、“１”が１回、“０”が２回、“１”が１回連続するので、ＯＲＬ＝「１」、ＺＲＬ＝「２」、ＯＲＬ＝「１」が各々ランレングス符号ＲＬＣとして出力される。なお、各ラインのランレングス符号ＲＬＣの先頭には、それに続くデータが“０”の連続回数を示すのか、“１”の連続回数を示すのかを示す１ビットのフラグが付加される。
【００２１】
次に第２のサブブロックデータ探索処理１０５について説明する。この第２のサブブロックデータ探索処理１０５は、サブブロック分割処理１０１により得られた各サブブロックのうち第１のサブブロックデータ探索処理１０２により探索されなかったサブブロックの中から、特定の２ドットが特定ドット値を有する旨の４種類の条件のいずれかを満たすサブブロックを探索し、探索した各サブブロックについて、４種類の条件のうち当該サブブロックが満たす条件を示す情報を符号化する処理である。さらに詳述すると、第２のサブブロックデータ探索処理１０５では、図６に示すように、第１のサブブロックデータ探索処理１０２により探索されなかったサブブロック（特定ドット値を有しないドットを少なくとも１個含むサブブロック）を構成するドットを左から順にＳＢ０、ＳＢ１、ＳＢ２、ＳＢ３とした場合において、特定の２ドットが特定ドット値「１５」を有する旨の複数の条件、具体的には下記４条件のいずれかを満たすサブブロックを探索する。
条件１：ＳＢ０、ＳＢ１が特定ドット値「１５」を有する。
条件２：ＳＢ１、ＳＢ２が特定ドット値「１５」を有する。
条件３：ＳＢ０、ＳＢ３が特定ドット値「１５」を有する。
条件４：ＳＢ２、ＳＢ３が特定ドット値「１５」を有する。
【００２２】
図６において、ドットＸ、Ｙは、条件１〜４において特定ドット値「１５」を有することが求められる２ドット以外の２ドットであり、「０」〜「１５」の範囲のドット値を有する。すなわち、上記条件１〜４は、特定の２ドットが特定ドット値「１５」を有することを要求するものであり、特定の２ドット以外のドットが特定ドット値「１５」を有しないことを要求するものではない。従って、３ドットＳＢ０、ＳＢ１、ＳＢ３が特定ドット値「１５」を有する場合には上記条件１および２の両方を満たし、３ドットＳＢ１、ＳＢ２、ＳＢ３が特定ドット値「１５」を有する場合には上記条件２および４の両方を満たすこととなる。後述する予測符号化処理１０６では、第２のサブブロックデータ探索処理１０５により探索された各サブブロックにおいて、ドットＸ、Ｙとなった各ドットが予測符号化の対象となる。
【００２３】
図７（ａ）および（ｂ）は、第２のサブブロックデータ探索処理１０５の実行結果を例示する図である。図７（ａ）において、左下がり斜線の施された領域は、第１のサブブロックデータ探索処理１０２により探索され、既に符号化されたサブブロックを示す。右下がり斜線の施された領域は、第１のサブブロックデータ探索処理１０２により探索されず、かつ、第１のサブブロックデータ探索処理１０２により探索されなかったサブブロック（上記条件１〜４のいずれも満たさなかったサブブロック）を示す。白抜き領域は、第１のサブブロックデータ探索処理１０２により探索されず、かつ、第２のサブブロックデータ探索処理１０５により探索されたサブブロック（上記条件１〜４のいずれかを満たしたサブブロック）を示す。第２のサブブロックデータ探索処理１０５では、図７（ｂ）に示すように、第２のサブブロックデータ探索処理１０５において探索されたサブブロックについて１ビットのフラグ符号ＦＣ＝“１”を、探索されなかったサブブロックについて１ビットのフラグ符号ＦＣ＝“０”を出力する。
【００２４】
また、第２のサブブロックデータ探索処理１０５では、探索されたサブブロックが上記条件１〜４のいずれを満たすかを示す２ビットの条件符号ＣＣを出力する。満たす条件と条件符号ＣＣの関係は次の通りである。
条件１を満たす場合        ＣＣ＝“００”
条件２を満たす場合        ＣＣ＝“０１”
条件３を満たす場合        ＣＣ＝“１０”
条件４を満たす場合        ＣＣ＝“１１”
【００２５】
なお、３ドットが特定ドット値を有するサブブロックは、上述のように上記条件１および２の両方または上記条件２および４の両方を満たすが、この場合には、いずれか１種類の条件を選択し、選択した条件に対応した条件符号ＣＣを出力する。この場合の条件の選択方法については後述する。
【００２６】
予測符号化処理１０６およびエントロピー符号化処理１０７は、第１のサブブロックデータ探索処理１０２により探索されなかったサブブロックであって、上記条件１〜４のいずれかを満たすサブブロックについて、当該サブブロックにおける上記特定の２ドット以外のドットのドット値を符号化する第２の符号化処理を構成している。
【００２７】
図８は予測符号化処理１０６により実行する予測符号化アルゴリズムを示す図である。この予測符号化アルゴリズムは、予測符号化対象のドット値をＸｄとした場合に、その左隣のドット値Ｘａ、上隣のドット値Ｘｂ、左上隣のドット値Ｘｃを参照ドット値とし、図８に示すように、これらの参照ドット値Ｘａ、Ｘｂ、Ｘｃのドット値に基づいてドット値Ｘｄの予測値Ｍｘを算出する。具体的には、ドット値Ｘａ、Ｘｂ、Ｘｃの最大値がＸｃである場合において、Ｘａ＞Ｘｂであれば予測値ＭｘをＸｂとし、Ｘａ＜Ｘｂであれば予測値ＭｘをＸａとする。また、ドット値Ｘａ、Ｘｂ、Ｘｃの最小値がＸｃである場合において、Ｘｂ＜Ｘａであれば予測値ＭｘをＸａとし、Ｘｂ＞Ｘａであれば予測値ＭｘをＸｂとする。また、ドット値Ｘｃが参照ドット値Ｘａ、Ｘｂ、Ｘｃの最大値でも最小値でもない場合、Ｘａ＋Ｘｂ−Ｘｃを予測値Ｍｘとする。そして、予測符号化アルゴリズムでは、予測符号化対象ドット値Ｘｄと予測値Ｍｘとの差分である予測誤差を出力する。
【００２８】
予測符号化処理１０６の処理対象は、第１のサブブロックデータ探索処理１０２により探索されず、かつ、第２のサブブロックデータ探索処理１０５により探索されたサブブロックである。
【００２９】
図９左上では、図７（ｂ）と同様、第１のサブブロックデータ探索処理１０２により探索され、既に符号化されたサブブロックが左下がり斜線で示され、第２のサブブロックデータ探索処理１０２により探索されたサブブロックにビット“１”が付され、第２のサブブロックデータ探索処理１０２により探索されなかったサブブロックにビット“０”が付されている。これらのうちビット“１”が付されているサブブロックを構成する４ドットのうち上記ドットＸ、Ｙが予測符号化処理１０６における予測符号化対象ドットとなる。
【００３０】
図９において太線で囲った領域内の下側のサブブロックに着目すると、このサブブロックを構成する４ドットＳＢ０、ＳＢ１、ＳＢ２、ＳＢ３のうちドットＳＢ０がドットＸまたはＹに該当する場合と、ドットＳＢ１がドットＸまたはＹに該当する場合と、ドットＳＢ２がドットＸまたはＹに該当する場合と、ドットＳＢ３がドットＸまたはＹに該当する場合とがあり得る。
【００３１】
ここで、ドットＳＢ０がドットＸまたはＹに該当する場合には、その左隣ドットＦ、上隣ドットＢ、左上隣ドットＡを参照ドットとしてドットＳＢ０の予測符号化を行う。また、ドットＳＢ１がドットＸまたはＹに該当する場合には、その左隣ドットＳＢ０、上隣ドットＣ、左上隣ドットＢを参照ドットとしてドットＳＢ１の予測符号化を行う。また、ドットＳＢ２がドットＸまたはＹに該当する場合には、その左隣ドットＳＢ１、上隣ドットＤ、左上隣ドットＣを参照ドットとしてドットＳＢ２の予測符号化を行う。また、ドットＳＢ３がドットＸまたはＹに該当する場合には、その左隣ドットＳＢ２、上隣ドットＥ、左上隣ドットＤを参照ドットとしてドットＳＢ３の予測符号化を行う。
【００３２】
エントロピー符号化処理１０７では、各種の予測誤差をその出現頻度に応じた符号長のハフマン符号に対応付けるハフマンテーブルを参照することにより、予測符号化処理１０６により得られた予測誤差をハフマン符号に変換し、予測誤差のハフマン符号ＤＣとして出力する。この例では、小さな値の予測誤差ほど、符号長の短いハフマン符号ＤＣに変換されるようにハフマンテーブルが作成されている。
【００３３】
次に図１０（ａ）〜（ｄ）を参照し、第２のサブブロックデータ探索処理１０５においてサブブロックにおける３ドットが特定ドット値「１５」を有する場合の対処方法について説明する。図１０（ａ）に示すドットＳＢ０、ＳＢ１、ＳＢ２、ＳＢ３からなるサブブロックにおいて、３ドットＳＢ０、ＳＢ１、ＳＢ２が特定ドット値「１５」を有する場合、図１０（ｂ）に示すように、条件１および２の両方を満たす。この場合、条件１を満たす旨の条件符号ＣＣを発生するか条件２を満たす旨の条件符号ＣＣを発生するかが問題となる。ここで、条件２を満たす旨の条件符号ＣＣ＝“０１”を発生する場合にはドットＳＢ０がドットＸとなり、条件１を満たす旨の条件符号ＣＣ＝“００”を発生する場合にはドットＳＢ２がドットＸとなる。そこで、図１０（ｃ）に示すように、ドットＳＢ０を予測符号化対象ドットＸとし、参照ドットＦ、Ｂ、Ａを用いて予測符号化したときの予測誤差と、図１０（ｄ）に示すように、ドットＳＢ２を予測符号化対象ドットＸとし、参照ドットＳＢ１、Ｄ、Ｃを用いて予測符号化したときの予測誤差とを比較し、前者の予測誤差が小さければ条件２を選択し、後者の予測誤差が小さければ条件１を選択し、選択した条件を示す条件符号ＣＣを発生する。なお、図示は省略したが、３ドットＳＢ１、ＳＢ２、ＳＢ３が特定ドット値「１５」を有する場合、条件２および４の両方を満たす場合の対処方法も同様である。以上のように予測誤差が小さくなる条件を選択して条件符号を発生するので、予測誤差をエントロピー符号化したときのハフマン符号ＤＣのデータ量を減らすことができる。
【００３４】
次に予測符号化処理１０８およびエントロピー符号化処理１０９は、第１のサブブロックデータ探索処理１０２により探索されなかったサブブロックであって、上記条件１〜４のいずれも満たさないサブブロックについて、当該サブブロックの各ドットのドット値を符号化する第３の符号化処理を構成している。さらに詳述すると、予測符号化処理１０８では、第２のサブブロックデータ探索処理１０５において探索されなかったサブブロックを構成する各ドットＳＢ０、ＳＢ１、ＳＢ２、ＳＢ３の各々の予測符号化を行い、予測誤差を各々出力する。予測符号化のアルゴリズムは、前掲図８を参照して説明した通りである。エントロピー符号化処理１０９では、エントロピー符号化処理１０７において用いられるものと同様なハフマンテーブルを参照し、予測符号化処理１０８により得られた予測誤差をハフマン符号に変換し、予測誤差のハフマン符号ＤＣとして出力する。
【００３５】
以上の処理が実行されることにより、１個のビットマップフォントを圧縮符号化した符号データが得られる。そして、フォントセットを構成する各ビットマップフォントについて以上の圧縮符号化処理が実行され、この結果得られる全てのビットマップフォントの符号データがＲＯＭ（Read Only Memory）等の記憶媒体に格納される。
【００３６】
図１１は本実施形態において圧縮符号化され、記憶媒体に記憶された１フォント分の圧縮符号化データのデータ構造を例示するものである。１フォント分の圧縮符号化データは、その先頭に符号長データＣＬを有する。この符号長データは、当該圧縮符号化データの全体の符号長（ビット数）を示すデータである。この符号長データＣＬの後には上述した判定データとしてのランレングス符号ＲＬＣが配置される。このランレングス符号ＲＬＣは、サブブロック分割処理１０１により得られた各サブブロックの各々について４ドットの全てが特定ドット値を有する旨の条件を満たすか否かを示すビット列をランレングス符号化したものである。
【００３７】
この判定データであるランレングス符号ＲＬＣの後には、４ドットの全てが特定ドット値を有する旨の条件を満たさない各サブブロックに各々対応したサブブロック符号データが、ビットマップフォントにおいて各サブブロック（図９において“０”または“１”が付された各サブブロック）をラスタスキャン順に走査したときの各サブブロックの出現順序に従って配列されている。このサブブロック符号データには、２種類の形態がある。第１のサブブロック符号データは、第２のサブブロックデータ探索処理１０５において探索されたサブブロックの符号データであり、第２のサブブロックデータ探索処理１０５において探索された旨の１ビットのフラグ符号ＦＣ＝“１”と、上記条件１〜４のうち当該サブブロックが満たすと判断された条件を示す２ビットの条件符号ＣＣと、上述したドットＸについての予測誤差のハフマン符号ＤＣとドットＹについての予測誤差のハフマン符号ＤＣとからなる。第２のサブブロック符号データは、第２のサブブロックデータ探索処理１０５において探索されなかったサブブロックの符号データであり、第２のサブブロックデータ探索処理１０５において探索されなかった旨の１ビットのフラグ符号ＦＣ＝“０”と、当該サブブロックを構成する４ドットＳＢ０、ＳＢ１、ＳＢ２、ＳＢ３の各々についての予測誤差のハフマン符号ＤＣからなる。
以上が本実施形態による圧縮符号化データのデータ構造の詳細である。
【００３８】
本実施形態の効果を確認するため、ＩＳＯ−２０２２−ＪＰに規定する日本語７３３８文字のフォントセット、ＧＢ２３１２に規定する中国語７７０８文字のフォントセットの各々について、ビットマップフォントのサイズを１６×１６から４８×４８までの各サイズに切り換え、本実施形態による圧縮符号化処理を実行し、圧縮符号化データの圧縮率を求めた。この結果、日本語のフォントセットの場合、フォントサイズが１６×１６のときの平均圧縮率は２２．３７％、４８×４８のときの平均圧縮率は２５．８％となった。また、中国語のフォントセットの場合、フォントサイズが１６×１６のときの平均圧縮率は５４．８４％、４８×４８のときの平均圧縮率は２９．５５％となった。このように、本実施形態によれば、日本語の場合でも中国語の場合でも高い圧縮率が得られることが分かった。
【００３９】
次に図１（ｂ）を参照し、ビットマップフォントの圧縮符号化データの復号化方法を実行するための復号化プログラムについて説明する。本実施形態による復号化プログラムは、図１１に示すデータ構造の圧縮符号化データを記憶媒体から読み出し、同圧縮符号化データを復号化することにより、外部のデバイスから指示された文字コードに対応したビットマップフォントを再生するものである。
【００４０】
図１（ｂ）に示すように、本実施形態による復号化プログラムは、ビットマップ生成処理２０１と、第１のドット値復元処理２０２と、第２のドット値復元処理２０３と、第３のドット値復元処理２０４と、起動制御処理２０５とを有する。
【００４１】
ビットマップ生成処理２０１では、１フォント分の圧縮符号化データの中から判定データであるランレングス符号ＲＬＣを読み出して、ランレングス復号化処理２０１Ａにより復号化し、ビットマップ２０１Ｂを生成する。このビットマップ２０１Ｂは、前掲図４（ａ）の右側に示す内容のものであり、水平方向４ドット、垂直方向１ドットからなる各サブブロックについて、全てのドットがビットマップフォントにおける文字の背景色を示す特定ドット値「１５」を有するサブブロックに該当するか否かを示すビットの集合体である。
【００４２】
起動制御処理２０５では、ビットマップ２０１Ｂをラスタスキャン順に１ビットずつ走査する。そして、走査においてビット“１”が現れた場合には、第１のドット値復元処理２０２を起動し、ビットマップフォントにおける当該ビットに対応したサブブロックの位置を第１のドット値復元処理２０２に通知する。
【００４３】
これにより第１のドット値復元処理２０２では、全てのドットが特定ドット値を有するサブブロックの各ドットのドット値を復元する。すなわち、水平方向Ｘドット、垂直方向Ｙドットからなるビットマップフォントの中から起動制御処理２０５により通知されたサブブロックを選択し、この選択したサブブロックにおける４ドットのドット値を全て特定ドット値「１５」にする。
【００４４】
ビットマップ２０１Ｂの走査においてビット“０”が現れた場合、起動制御処理２０５では、ランレングス符号ＲＬＣの後に続くサブブロック符号データの列の中からサブブロック符号データを１サブブロック分ずつ読み出すとともに、第２のドット値復元処理２０３または第３のドット値復元処理２０４の一方を起動する。そして、起動した第２のドット値復元処理２０３または第３のドット値復元処理２０４に対して、読み出したサブブロック符号データを引き渡すとともに、走査において現れたビット“０”に対応したサブブロックのビットマップフォント内での位置を通知する。
【００４５】
ここで、第２のドット値復元処理２０３または第３のドット値復元処理２０４のいずれが起動されるかは、読み出されたサブブロック符号データに含まれるフラグ符号ＦＣの内容に応じて決定される。すなわち、サブブロック符号データに含まれるフラグ符号ＦＣが“１”である場合は、第２のドット値復元処理２０３が起動され、サブブロック符号データに含まれるフラグ符号ＦＣが“０”である場合は、第３のドット値復元処理２０４が起動される。
【００４６】
第２のドット値復元処理２０３に引き渡されるサブブロック符号データは、フラグ符号ＦＣの他、条件符号ＣＣと、２個のドットＸおよびＹの予測誤差のハフマン符号ＤＣを含んでいる。第２のドット値復元処理２０３では、引き渡されたサブブロック符号データに基づいて、通知されたサブブロックの各ドットのドット値を復元する。より詳しくは次の通りである。
【００４７】
まず、サブブロック符号データに含まれる条件符号ＣＣが示す条件に従って、通知されたサブブロックにおける特定の２ドットのドット値を特定ドット値「１５」とする。次に、ドットＸ、Ｙの予測誤差のハフマン符号ＤＣをエントロピー復号化処理２０３ＡによりドットＸ、Ｙの予測誤差に復号化する。次に予測復号化処理２０３Ｂにより予測誤差からドットＸ、Ｙのドット値を復号化する。
【００４８】
ここで、前掲図６、図８および図９を参照し、この予測復号化処理２０３Ｂについて説明する。条件符号ＣＣが“００”である場合、当該サブブロックには条件１が適用されているため、ドットＳＢ２およびドットＳＢ３がドットＸおよびＹである（図６参照）。この場合、図９においてドットＳＢ２の周辺ドットであるドットＳＢ１、Ｄ、Ｃの各ドット値に基づいてドットＳＢ２の予測値を算出し（図８参照）、この予測値にドットＸの予測誤差を加算することにより、ドットＳＢ２のドット値を算出する。また、図９においてドットＳＢ３の周辺ドットであるドットＳＢ２、Ｅ、Ｄの各ドット値に基づいてドットＳＢ３の予測値を算出し（図８参照）、この予測値にドットＹの予測誤差を加算することにより、ドットＳＢ３のドット値を算出する。このようにして算出したドットＸ、Ｙの各ドット値をビットマップフォントにおける該当する各ドットのドット値とする。条件符号ＣＣの示す条件が条件２〜３である場合も同様である。
【００４９】
第３のドット値復元処理２０４に引き渡されるサブブロック符号データは、フラグ符号ＦＣの他、４個のドットＳＢ０、ＳＢ１、ＳＢ２、ＳＢ３の予測誤差のハフマン符号ＤＣを含んでいる。第３のドット値復元処理２０４では、ドットＳＢ０、ＳＢ１、ＳＢ２、ＳＢ３の予測誤差のハフマン符号ＤＣをエントロピー復号化処理２０４ＡによりドットＳＢ０、ＳＢ１、ＳＢ２、ＳＢ３の予測誤差に復号化する。次に予測復号化処理２０４Ｂにより各予測誤差を用いてドットＳＢ０、ＳＢ１、ＳＢ２、ＳＢ３の各ドット値を算出する。このようにして算出したドットＳＢ０、ＳＢ１、ＳＢ２、ＳＢ３の各ドット値を、ビットマップフォントにおける通知されたサブブロックの各ドットのドット値とする。各ドット値の復号化の方法は、予測復号化処理２０３Ｂと同様である。
【００５０】
以上の処理により、ビットマップフォントの各ドットのドット値がラスタスキャン順に復元される。従って、本実施形態による復号化プログラムによれば、ラインバッファ方式の画像表示装置において、ビットマップフォントの各ドットのドット値を１ラインずつ復号化して表示することができる。
【００５１】
＜他の実施形態＞
以上、この発明の一実施形態を説明したが、この発明には、他にも各種の実施形態が考えられる。
【００５２】
（１）例えば上記実施形態では、この発明による圧縮符号化方法を実行するための圧縮符号化プログラムと、この発明による復号化方法を実行するための復号化プログラムを開示した。しかし、この発明は、同圧縮符号化方法に従ってビットマップフォントの圧縮符号化を行うエンコーダ（圧縮符号化装置）または同復号化方法に従って圧縮符号化データの復号化を行うデコーダ（復号化装置）として実施してもよい。ここで、エンコーダやデコーダは、上記圧縮符号化プログラムまたは復号化プログラムがインストールされたＲＯＭと、このＲＯＭ内のプログラムを実行するプロセッサとにより構成してもよく、上記圧縮符号化プログラムまたは復号化プログラムに従って実行される処理と同じ処理を実行する電子回路により構成してもよい。また、エンコーダやデコーダは単体の製品としてもよく、他の装置とともに大規模な製品の中に組み込んでもよい。例えばラインバッファ方式の画像表示装置を実現するための画像ＬＳＩの回路の一部として、上記デコーダを実現する態様が考えられる。
【００５３】
（２）上記実施形態では、第１の符号化処理において、１／４データ変換処理１０３により得られたデータをランレングス符号化処理１０４により符号化して出力したが、１／４データ変換処理１０３により得られたデータを第１のサブブロックデータ探索処理により探索されたか否かを示すデータとしてそのまま出力してもよい。
【符号の説明】
【００５４】
１０１……サブブロック分割処理、１０２……第１のサブブロックデータ探索処理、１０３……１／４データ変換処理、１０４……ランレングス符号化処理、１０５……第２のサブブロックデータ探索処理、１０６，１０８……予測符号化処理、１０７，１０８……エントロピー符号化、２０１……ビットマップ生成処理、２０２……第１のドット値復元処理、２０３……第２のドット値復元処理、２０４……第３のドット値復元処理、２０５……起動制御処理、２０１Ａ……ランレングス復号化処理、２０３Ｂ，２０４Ｂ……予測復号化処理、２０３Ａ，２０４Ａ……エントロピー復号化処理。
【図１】
0005552945.tif 000002
【図２】
0005552945.tif 000003
【図３】
0005552945.tif 000004
【図４】
0005552945.tif 000005
【図５】
0005552945.tif 000006
【図６】
0005552945.tif 000007
【図７】
0005552945.tif 000008
【図８】
0005552945.tif 000009
【図９】
0005552945.tif 000010
【図１０】
0005552945.tif 000011
【図１１】
0005552945.tif 000012