(57)【特許請求の範囲】
【請求項１】
Ａビットコードを、前記Ａビットコードを可変長コード化することにより得られる可変長コード化データのメモリ内の記憶位置へマップする装置であって、
（ｉ）  前記Ａビットコード内のＢビットフィールドに応じ、第１の探索表内で、前記Ｂビットフィールドに対応する第１の探索表のエントリにアクセスするための第１の探索論理回路であって、前記第１の探索表のエントリは、複数の第２の探索表のエントリで構成される第２の探索表内の領域を指す表オフセット値と、可変長コードオフセット値と、前記領域内の可変長コード化データの平均サイズ値とを含む第１の探索論理回路と、
（ｉｉ）  前記Ａビットコード内のＣビットフィールドに応じ、前記表オフセット値により示される前記第２の探索表の前記領域内で、前記Ｃビットフィールドに対応する第２の探索表のエントリにアクセスするための第２の探索論理回路であって、前記第２の探索表のエントリは前記Ａビットコードに対する誤差値を含む第２の探索論理回路と、
（ｉｉｉ）  前記記憶位置の前記メモリ内のアドレスを計算する記憶位置計算論理回路であって、
（ａ）  前記可変長コードオフセット値と、
（ｂ）  前記平均サイズ値と前記Ｃビットフィールドに一致した複数のビットを記憶する前記第２の探索表の前記領域内の位置とを乗算する関数と、
（ｃ）  前記第２の探索表のエントリからの前記誤差値と
で計算する記憶位置計算論理回路と、
（ｉｖ）  前記メモリ内の前記アドレスから前記可変長コード化データを読み出す記憶アクセス論理回路とを含むことを特徴とする装置。
【請求項２】
請求項１に記載の装置であって、前記Ａビットコードは文字のＡビットフォント文字コードであることを特徴とする装置。
【請求項３】
請求項２に記載の装置であって、前記可変長コード化データは前記文字のピクセルビットマップを表すことを特徴とする装置。
【請求項４】
請求項１に記載の装置であって、前記第２の探索表の前記領域では前記第２の探索表の複数エントリが前記Ｃビットフィールドによって指定される値に従ってソートされるように、前記第２の探索表の前記領域は、前記Ａビットコード値によって指定される値に従ってソートした一連の第２の探索表のエントリを含むことを特徴とする装置。
【請求項５】
請求項４に記載の装置であって、前記第２の探索表のエントリは、前記第２の探索論理回路によってアクセスされる前記第２の探索表の前記領域内でＮ番目のエントリであることを特徴とする装置。
【請求項６】
請求項５に記載の装置であって、前記関数は、前記Ｎ番目のエントリに対応する値Ｎを掛けた前記平均サイズ値に対応する値を与えることを特徴とする装置。
【請求項７】
請求項６に記載の装置であって、前記アドレスは前記可変長コードオフセット値、前記関数、および前記誤差値の合計に依存するアドレスであることを特徴とする装置。
【請求項８】
請求項７に記載の装置であって、前記アドレスは前記可変長コードデータの前記メモリにおける開始アドレスと、前記可変長コードオフセット値と、前記関数と、前記誤差値の合計であることを特徴とする装置。
【請求項９】
請求項３に記載の装置であって、各ピクセルビットマップは、可変長コード化データの前記メモリ内で複数の可変長コードで表されることを特徴とする装置。
【請求項１０】
請求項１に記載の装置であって、前記可変長コード化データは、ハフマンコード化データであることを特徴とする装置。
【請求項１１】
請求項１に記載の装置であって、Ａ＝Ｂ＋Ｃであることを特徴とする装置。
【請求項１２】
請求項１に記載の装置であって、前記Ｂビットフィールドは前記Ａビットコードの最上位Ｂビットであることを特徴とする装置。
【請求項１３】
請求項１に記載の装置であって、前記Ｃビットフィールドは前記Ａビットコードの最下位Ｃビットであることを特徴とする装置。
【請求項１４】
請求項２に記載の装置であって、前記文字は象形文字であることを特徴とする装置。
【請求項１５】
請求項１に記載の装置であって、前記メモリは集積論理メモリであることを特徴とする装置。
【請求項１６】
請求項１に記載の装置であって、前記第１の探索論理回路、前記第２の探索論理回路、前記記憶位置計算論理回路、および前記記憶アクセス論理回路は、ソフトウェア制御の下で動作するデータ処理論理回路により与えられることを特徴とする装置。
【請求項１７】
Ａビットコードを、前記Ａビットコードを可変長コード化することにより得られる可変長コード化データのメモリ内の記憶位置へマップする装置であって、
（ｉ）  前記Ａビットコード内のＢビットフィールドが第１の探索表内で前記Ｂビットフィールドに対応する第１の探索表のエントリを示すようにする第１の探索表を生成する第１の探索表生成論理回路であって、前記第１の探索表のエントリは、複数の第２の探索表のエントリで構成される第２の探索表内の領域を指す表オフセット値と、可変長コードオフセット値と、前記領域内の可変長データの平均サイズ値とを含む第１の探索表生成論理回路と、
（ｉｉ）  前記Ａビットコード内のＣビットフィールドが前記表オフセット値により示される第２の探索表の前記領域内で前記Ｃビットフィールドに対応する第２の探索表のエントリを示すような前記第２の探索表を生成する第２の探索表生成論理回路であって、前記第２の探索表のエントリは前記Ａビットコードに対する誤差値を含む第２の探索表生成論理回路とを備える装置であって、
（ｉｉｉ）  前記記憶位置の前記メモリ内のアドレスは、
（ａ）  前記可変長コードオフセット値と、
（ｂ）  前記平均サイズ値と前記Ｃビットフィールドに一致した複数のビットを記憶する前記第２の探索表の前記領域内の記憶位置とを乗算する関数と、
（ｃ）  前記第２の探索表のエントリからの前記誤差値と
で計算できることを特徴とする装置。
【請求項１８】
Ａビットコードを、前記Ａビットコードを可変長コード化することにより得られる可変長コード化データのメモリ内の記憶位置へマップする方法であって、
（ｉ）  前記Ａビットコード内のＢビットフィールドに応じ、第１の探索表内で、前記Ｂビットフィールドに対応する第１の探索表のエントリにアクセスするステップであって、前記第１の探索表のエントリは、複数の第２の探索表のエントリで構成される第２の探索表内の領域を指す表オフセット値と、可変長コードオフセット値と、前記領域内の可変長コード化データの平均サイズ値とを含むステップと、
（ｉｉ）  前記Ａビットコード内のＣビットフィールドに応じ、前記表オフセット値により示される前記第２の探索表の前記領域内で、前記Ｃビットフィールドに対応する第２の探索表のエントリにアクセスするステップであって、前記第２の探索表のエントリは前記Ａビットコードに対する誤差値を含むステップと、
（ｉｉｉ）  前記記憶位置の前記メモリ内のアドレスを計算するステップであって、
（ａ）  前記可変長コードオフセット値と、
（ｂ）  前記平均サイズ値と前記Ｃビットフィールドに一致した複数のビットを記憶する前記第２の探索表の前記領域内の位置とを乗算する関数と、
（ｃ）  前記第２の探索表のエントリからの前記誤差値と
で計算するステップと、
（ｉｖ）前記メモリ内の前記アドレスから前記可変長データを読み取るステップとを含むことを特徴とする方法。
【請求項１９】
Ａビットコードを、前記Ａビットコードを可変長コード化することにより得られる可変長コード化データのメモリ内の記憶位置へマップするマッピングデータを生成する方法であって、
（ｉ）  前記Ａビットコード内のＢビットフィールドが第１の探索表内で前記Ｂビットフィールドに対応する第１の探索表のエントリを示すようにする第１の探索表を生成するステップであって、前記第１の探索表のエントリは、複数の第２の探索表のエントリで構成される第２の探索表内の領域を指す表オフセット値と、可変長コードオフセット値と、前記領域内の可変長コード化データの平均サイズ値とを含むステップと、
（ｉｉ）  前記Ａビットコード内のＣビットフィールドが前記表オフセット値により示される第２の探索表の前記領域内で前記Ｃビットフィールドに対応する第２の探索表のエントリを指すような前記第２の探索表を生成するステップであって、前記第２の探索表のエントリは前記Ａビットコードに対する誤差値を含むステップとを含む方法であって、
（ｉｉｉ）  前記記憶位置の前記メモリ内のアドレスは、
（ａ）  前記可変長コードオフセット値と、
（ｂ）  前記平均サイズ値と前記Ｃビットフィールドに一致した複数のビットを記憶する前記第２の探索表の前記領域内の位置とを乗算する関数と、
（ｃ）  前記第２の探索表のエントリからの前記誤差値とで計算できることを特徴とする方法。
【請求項２０】
Ａビットコードを、前記Ａビットコードを可変長コード化することにより得られ、フォントに含まれるすべての象形文字のピクセルビットマップを表すエントロピコード化された可変長コード化データのメモリ内の記憶位置へマップする装置であって、
（ｉ）  前記Ａビットコード内のＢビットフィールドに応じ、第１の探索表内で、前記Ｂビットフィールドに対応する第１の探索表のエントリにアクセスするための第１の探索論理回路であって、前記第１の探索表のエントリは、複数の第２の探索表のエントリで構成される第２の探索表内の領域を指す表オフセット値と、可変長コードオフセット値と、前記領域内の可変長コード化データの平均サイズ値とを含む第１の探索論理回路と、
（ｉｉ）  前記Ａビットコード内のＣビットフィールドに応じ、前記表オフセット値により示される前記第２の探索表の前記領域内で、前記Ｃビットフィールドに対応する第２の探索表のエントリにアクセスするための第２の探索論理回路であって、前記第２の探索表のエントリは前記Ａビットコードに対する誤差値を含む第２の探索論理回路と、
（ｉｉｉ）  前記記憶位置の前記メモリ内のアドレスを計算するための記憶位置計算論理回路であって、
（ａ）  前記可変長コードオフセット値と、
（ｂ）  前記平均サイズ値と前記Ｃビットフィールドに一致した複数のビットを記憶する前記第２の探索表の前記領域内の位置とを乗算する関数と、
（ｃ）  前記第２の探索表のエントリからの前記誤差値と
で計算する記憶位置計算論理回路と、
（ｉｖ）  前記メモリ内の前記アドレスから前記可変長コード化データを読み出す記憶アクセス論理回路とを含み、
象形文字の象形フォントデータを圧縮解除する装置であって、前記象形文字の非圧縮データはＮｘＭピクセルビットマップの形式であり、複数のＰｘＱピクセルビットマップに分割され、
（Ｉ）  複数のエントロピコードをエントロピ復号化するエントロピ復号化部であって、各エントロピコードは前記象形文字について複数のＰｘＱピクセルビットマップを生成するためにＰｘＱピクセルビットマップを表しているエントロピ復号化部と、
（ＩＩ）  前記象形文字の前記ＮｘＭピクセルビットマップを生成するために前記複数のＰｘＱピクセルビットマップを組み合わせる論理回路とを備える圧縮解除する装置をさらに含むことを特徴とする装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データ処理システムにおけるビットマップフォントデータの記憶に関する。
【０００２】
【従来の技術】
データ処理システムにおいて、テキストデータは、通常、一連の文字コードとして記憶する。テキストデータを画面表示または印刷するなどしてユーザに提示する場合は、各文字コードをユーザに提示できる図形に変換する必要がある。この変換では、各文字コードの図形を指定するフォントデータを使用する。あるフォントデータでは、文字のビットマップ表現を各文字コードとして記憶する。このビットマップは、表示または印刷時には、比較的簡単に処理できる。
【０００３】
【発明が解決しようとする課題】
このようなシステムにおける問題は、フォントデータおよびそのフォントデータにアクセスするための関連データの記憶に使用する記憶容量である。使用されるメモリ資源量は、象形文字（中国語、韓国語、日本語など）の場合、特に問題になることがある。これらの文字では、表現しなければならない文字数が膨大であるからである。例えば、中国語の象形文字フォントには、１３，０００の異なった象形文字がある。
【０００４】
したがって、フォントデータを扱うために必要な記憶容量を削減するための手段が強く望まれている。
【０００５】
【課題を解決するための手段】
本発明の一側面では、Ａビットコードを、前記Ａビットコードを表す可変長コードデータのメモリ内の記憶位置へマップする装置であって、
（ｉ）  前記Ａビットコード内のＢビットフィールドに応じ、第１の探索表内の前記Ｂビットフィールドに対応する第１の探索表のエントリにアクセスするための第１の探索論理であって、前記第１の探索表のエントリは、複数の第２の探索表のエントリで構成される第２の探索表内の領域を指す第２の探索表オフセット値と、可変長コードオフセット値と、平均サイズ値とを含む第１の探索論理と、
（ｉｉ）  前記ＡビットコードのＣビットフィールドに応じ、前記第２の探索表オフセット値により示される前記第２の探索表の前記領域内の前記Ｃビットフィールドに対応する第２の探索表のエントリにアクセスするための第２の探索論理であって、前記第２の探索表のエントリは誤差値を含む第２の探索論理と、
（ｉｉｉ）  前記記憶位置の前記メモリ内のアドレスを計算する記憶位置計算論理であって、
（ｉｖ）  前記可変長コードオフセット値と、
（ｖ）  前記平均値と前記Ｃビットフィールドに一致する前記第２の探索表の前記領域内の位置との関数と、
（ｖｉ）  前記誤差値とで計算する記憶位置計算論理と、
（ｖｉｉ）  前記メモリ内の前記アドレスから前記可変長データを読み出す記憶アクセス論理とを含むことを特徴とする装置を提供する。
【０００６】
本発明のこの側面では、文字のピクセルビットマップなどを表す可変長コードデータ形式のデータに関するアクセス関連オーバヘッドを減少させる。ピクセルビットマップを可変長で符号化すると圧縮度は向上するが、この可変長コード化データのどの部分が特定の文字を表しているかを識別することが困難になる。本発明では、第１の探索表と第２の探索表とを使用し、これらの表が必要とする記憶容量を効果的に減少させることで、このような可変長コード化データ部分の識別方法を改善している。特に、本発明では、各文字の推定時の誤差を格納するだけで特定の文字に対応する可変長コード化データ部分を推定できるようにしたため、探索操作に必要な記憶容量全体が減少している。
【０００７】
本発明の選好実施例では、前記第２の探索表の前記領域で前記第２のエントリが前記Ｃビットフィールドに従ってソートされるように、前記第２の探索表の前記領域ではＡビットコード値によりソートした一連の第２の探索表のエントリが含まれている。
【０００８】
Ａビットコード値に従って第２の探索表の領域をソートすると、第２の探索表におけるデータの配列が予測できるようになる。これを利用することで、該当する領域を探索するとき、第２の探索表内の特定のエントリをより効果的に識別できるようになる。
【０００９】
第２の表に追加情報を符号化する場合、探索対象文字と一致するエントリが第２の表の領域内で存在する位置そのものを、全フォントデータ内で対応する可変長コード化データが存在する場所の標識として使用すると、非常に都合が良い。特に、第２の表のエントリが領域内のＮ番目のエントリの場合にフォント文字の可変長コード化データの平均サイズが第１の表から分かれば、これら２つの値を掛け合わせることで可変長コード化データ全体における追加オフセット値が得られ、所望の位置により正確に近づくことができる。
【００１０】
第１の表および第２の表へアクセスするために文字コードを解釈する好ましい方法では、コードの最上位Ｂビットを使用して第１の表を索引し、次に、第１の表を索引して得たエントリが指す第２の表の領域内で、コードの最下位のＣビットを使用して一致するエントリを探索する。
【００１１】
本発明の方法は、通常、様々なフォントタイプに利用できるが、特にフォントが象形文字フォントの場合に役立つ。象形文字には通常相当数の異なった文字が含まれているため、データ記憶要件は重要な問題になる。さらに、文字コード順序には通常は不連続個所が多くあるため、テーブル探索を困難にしている。
【００１２】
フォントデータは様々な方法で記憶できる。例えば、フォントデータはコンピュータハードディスクなどの不揮発性磁気記憶媒体に記憶できる。しかし、本発明が特に適しているシステムとは、フォントデータを集積回路メモリに記憶させるシステムである。このような集積回路メモリは通常は比較的高価であるため、必要量を減少させる方法があれば非常に好都合である。
【００１３】
本発明の技法を実行するために特殊論理回路を使用して必要な各種機能を実行すればよいことはわかっているが、多くの場合、この技法を実現する最善の方法はソフトウェア制御の下で動作するデータ処理論理を使用することである。この制御では、ソフトウェアによりデータ処理論理を構成し、上記の各種論理要素の機能を実行させることができる。
【００１４】
本発明の補足的側面では、Ａビットコードを、前記Ａビットコードを表す可変長コードデータのメモリ内の記憶位置へマップする装置であって、
（ｉ）  前記Ａビットコード内のＢビットフィールドが第１の探索表内の前記Ｂビットフィールドに対応する第１の探索表のエントリを示すようにする第１の探索表を生成する第１の探索表生成論理であって、前記第１の探索表のエントリは、複数の第２の探索表のエントリで構成される第２の探索表内の領域を指す第２の探索表オフセット値と、可変長コードオフセット値と、平均サイズ値とを含む第１の探索表生成論理と、
（ｉｉ）  前記Ａビットコード内のＣビットフィールドが前記第２の探索表のオフセット値により示される第２の探索表の前記領域内の前記Ｃビットフィールドに対応する第２の探索表のエントリを示すような第２の探索表を生成する第２の探索表生成論理であって、前記第２の探索表のエントリは誤差値を含む第２の探索表生成論理とを備える装置であって、
（ｉｉｉ）  前記記憶位置の前記メモリ内のアドレスは、
（ｉｖ）  前記可変長コードオフセット値と、
（ｖ）  前記平均サイズ値と前記Ｃビットフィールドに一致した前記第２の探索表の前記領域内の記憶位置との関数と、
（ｖｉ）  前記誤差値とで計算できることを特徴とする装置を提供する。
【００１５】
本発明の別の側面では、Ａビットコードを、前記Ａビットコードを表す可変長コードデータのメモリ内の記憶位置へマップする方法であって、
（ｉ）  前記Ａビットコード内のＢビットフィールドに応じ、第１の探索表内の前記Ｂビットフィールドに対応する第１の探索表のエントリにアクセスするステップであって、前記第１の探索表のエントリは、複数の第２の探索表のエントリで構成される第２の探索表内の領域を指す第２の探索表オフセット値と、可変長コードオフセット値と、平均サイズ値とを含むステップと、
（ｉｉ）  前記Ａビットコード内のＣビットフィールドに応じ、前記第２の探索表オフセット値により示される前記第２の探索表の前記領域内の前記Ｃビットフィールドに対応する第２の探索表のエントリにアクセスするステップであって、前記第２の探索表のエントリは誤差値を含むステップと、
（ｉｉｉ）  前記記憶位置の前記メモリ内のアドレスを計算するステップであって、
（ｉｖ）  前記可変長コードオフセット値と、
（ｖ）  前記平均サイズ値と前記Ｃビットフィールドに一致した前記第２の探索表の前記領域内の位置との関数と、
（ｖｉ）  前記誤差値とで計算するステップと、
（ｖｉｉ）前記メモリ内の前記アドレスから前記可変長データを読み取るステップとを含むことを特徴とする方法を提供する。
【００１６】
本発明の別の側面では、Ａビットコードを、前記Ａビットコードを表す可変長コードデータのメモリ内の記憶位置へマップするマッピングデータを生成する方法であって、
（ｉ）  前記Ａビットコード内のＢビットフィールドが第１の探索表内の前記Ｂビットフィールドに対応する第１の探索表のエントリを示すようにする第１の探索表を生成するステップであって、前記第１の探索表のエントリは、複数の第２の探索表のエントリで構成される第２の探索表内の領域を指す第２の探索表オフセット値と、可変長コードオフセット値と、平均サイズ値とを含むステップと、
（ｉｉ）  前記Ａビットコード内のＣビットフィールドが前記第２の探索表のオフセット値により示される第２の探索表の前記領域内の前記Ｃビットフィールドに対応する第２の探索表のエントリを指すような前記第２の探索表を生成するステップであって、前記第２の探索表のエントリは誤差値を含むステップとを含む方法であって、
（ｉｉｉ）  前記記憶位置の前記メモリ内のアドレスは、
（ｉｖ）  前記可変長コードオフセット値と、
（ｖ）  前記平均サイズ値と前記Ｃビットフィールドに一致した前記第２の探索表の前記領域内の位置との関数と、
（ｖｉ）  前記誤差値とで計算することを特徴とする方法を提供する。
【００１７】
本発明のさらに別の側面では、象形文字の象形フォントデータを圧縮解除する装置において、前記象形文字の非圧縮データはＮｘＭピクセルビットマップの形式である装置であって、
（ｉ）  複数のエントロピコードをエントロピ復号化するエントロピ復号化部であって、各エントロピコードは前記象形文字について複数のＰｘＱピクセルビットマップを生成するためにＰｘＱピクセルビットマップを表しているエントロピ復号化部と、
（ｉｉ）  前記象形文字の前記ＮｘＭピクセルビットマップを生成するために前記複数のＰｘＱピクセルビットマップを組み合わせる論理とを備えることを特徴とする装置を提供する。
【００１８】
上記で述べたように、通常、象形フォントの文字数は非常に多い。さらに、各個別文字の形状も非常に複雑であるため、正確に表現するためには比較的詳細なビットマップが必要になる。本発明では、象形文字は非常に形状が複雑であるが、実際にはその形にはかなり冗長性があることを認識している。また、文字を小さなタイルに分割すると、ある種のタイルの形状は他の形状より頻繁に現れることも認識している。本発明では、この現象を利用している。そのためには、エントロピ符号化を使用し、頻繁に現れるタイルには短いエントロピコードを与え、頻繁に現れないタイルには長いエントロピコードを与えるように各タイルを表現する。このようにして、文字ビットマップを単純にラスタ走査してその結果得られるビットストリームを圧縮するのに比べ、データ圧縮度を向上させることができる。この目的のためには、ハフマン符号化は特に適したエントロピ符号化である。
【００１９】
ＰｘＱピクセルビットマップタイルについては２ｘ１の縦横比が最も適していることがわかった。１６ｘ１６ピクセルまたは２４ｘ２４ピクセルの個別象形文字ビットマップは、表示可能な詳細度と必要な記憶容量の妥協点である。
【００２０】
上記の説明と同様に、ハフマン復号化部と本発明の圧縮解除（ｄｅｃｏｍｐｒｅｓｓｉｏｎ）技法で要求される組み合わせの論理は、ソフトウェアの制御の下で動作する汎用データ処理装置により提供できることがわかる。
【００２１】
本発明の補足的な側面では、象形文字の象形フォントデータを圧縮する装置において、前記象形文字の非圧縮データはＮｘＭピクセルビットマップの形式である装置であって、
（ｉ）  複数のＰｘＱピクセルビットマップを生成するために前記象形文字の前記ＮｘＭピクセルビットマップを分割する論理と、
（ｉｉ）  前記象形文字を表す複数のエントロピコードを生成するために、前記象形文字の前記複数の各ＰｘＱピクセルビットマップをエントロピコードとしてエントロピ符号化するエントロピ符号化部とを備えることを特徴とする装置を提供する。
【００２２】
本発明の別の側面では、象形文字の象形文字フォントデータを圧縮解除する方法において、前記象形文字の非圧縮データはＮｘＭピクセルビットマップの形式である方法であって、
（ｉ）  複数のエントロピコードをエントロピ復号化するステップであって、各エントロピコードは前記象形文字の複数のＰｘＱピクセルビットマップを生成するためにＰｘＱピクセルビットマップを表しているステップと、
（ｉｉ）  前記象形文字の前記ＮｘＭピクセルビットマップを生成するために前記複数のＰｘＱピクセルビットマップを組み合わせるステップとを備えることを特徴とする方法を提供する。
【００２３】
本発明の別の側面では、象形文字の象形フォントデータを圧縮する方法において、前記象形文字の非圧縮データはＮｘＭピクセルビットマップの形式である方法であって、
（ｉ）  複数のＰｘＱピクセルビットマップを生成するために前記象形文字の前記ＮｘＭピクセルビットマップを分割するステップと、
（ｉｉ）  前記象形文字を表す複数のエントロピコードを生成するために、前記象形文字の前記複数の各ＰｘＱピクセルビットマップをエントロピコードとしてエントロピ符号化するステップとを含むことを特徴とする方法を提供する。
【００２４】
テーブルの索引付けの配置およびエントロピ符号化によるタイリングは別々に使用できるが、両方を組み合わせることでシステムが顕著に改善されることがわかる。
【００２５】
本発明の上記、および他の目的、特徴、および利点は、添付図面と共に参照する以下の詳細な例示実施例の説明から明らかになる。
【００２６】
【実施例】
図１は、象形フォントに含まれるフォント文字を表す文字コード２を図示したものである。この象形文字フォントは中国語の文字フォントで、約１３，０００文字が含まれることがある。このため、２バイト文字コード２が使用される。
【００２７】
文字コード２は、該当する中国語の象形文字６のビットマップを表す可変長コード化データ４にマップすることができる。この可変長コード化データ４を復号化すると（例えば、ハフマン復号化し、コンポーネントタイルにマップし、組み合わせて文字を構成すると）、表現される中国語の象形文字６を表示したり印刷したりできる。
【００２８】
象形文字を表すピクセルビットマップデータが可変長でコード化されている場合、システムは、特定の文字コード６に対応する特定のデータ４がこの可変長コード化データストリーム内のどの部分にあるか、を判別しなければならない。図２は、このマッピングを実行する技法を図示したものである。
【００２９】
２バイト文字コード２は、フォントに含まれるすべての象形文字のピクセルビットマップを表すハフマンコード化データ１０のストリーム内に現れる開始位置８にマップする必要がある。該当する特定の文字の可変長コード化データ４は、可変長コード化データ１０全体の一部を構成している。
【００３０】
処理の第1ステージでは、文字コード２（Ａビット文字コード）の上位９ビット（Ｂビットフィールド）を使用し、表１を索引する。表１は５１２個のエントリが入ったテーブルで、各行には６バイトのデータが含まれている。したがって、文字コード２の上位９ビットを使用し、表１内の１行のエントリを直接索引できる。
【００３１】
表１で索引された行の最初の２バイトにはオフセット値ＴＢ２Ｏｆｆが入っていて、第２のテーブル表２内の位置を指している。表１の行に含まれる次の３バイトにはハフマンオフセット値ＨｕｆｆＯｆｆが入っていて、ハフマンコード化データ１０のストリーム内で最初に使用するオフセット値を指している。表１の索引行の最後のバイトは、表１内の当該行に対応する最上位９ビットに該当する象形文字の平均サイズ値ＡｖＳｚである。
【００３２】
表２のオフセット値ＴＢ２Ｏｆｆは、最上位９ビットの値に対応する表２内の領域１８の開始位置１４を指すために使用されている。表２のエントリは、２バイトの行で構成されている。２バイト行の最初の７ビットは、文字コード２の対応する最下位７ビットである７ＬＳＢと対応させるために使用されている。表２の残りの９ビットは、符号付き誤差値Ｅｒｒである。
【００３３】
表２における開始位置１４がわかれば、表２の次の領域の開始位置も表１の次のエントリから読み取ることができる。これにより、一致するエントリが見つかる表２内の範囲がわかる。次に、この範囲でバイナリ探索を行う。これは、文字コード２の最下位７ビットと探索する範囲の中間点である表２のエントリの最上位７ビットとを比較することで行う。この中間点エントリが一致することもあり、また、テストする現在の中間点より一致エントリが上または下であることが判別される。中間点が一致しない場合は、識別された領域の上または下の新しい中間点を使用して次のテストを行う。一致する個所が見つかるまでこの処理を継続するか、または該当するコードに対応する有効なエントリが表２にはないことが判別される。
【００３４】
また、表２の開始点１４から表２のエントリを下方に探索し、文字コード２の最下位７ビットがエントリの最上位７ビットと一致するエントリを見つける。
【００３５】
一致する表２内のエントリが、Ｎ番目の行になる。表２のエントリの内、ある文字コードの最上位９ビットに対応する各領域内で、考えられる有効なすべての文字コードを最下位７ビットの順序でソートしておくこともできる。文字コード２に対応する行が表２で見つかったら、その行の誤差値Ｅｒｒを読み取ることができる。
【００３６】
ハフマンコード化データストリーム１０がメモリに記憶されていてアドレスＨｕｆｆＤａｔａＳｔａｒｔがその開始位置であれば、文字コード２に対応するデータの位置を決めるために、まず、ハフマンオフセット値ＨｕｆｆＯｆｆを開始アドレスに加算して、おおまかな第１レベルの位置決めを行なう。これにより位置１６が指される。その位置から、文字コード２の最上位９ビットが同じ文字のハフマンコード化データが記憶されている。また表１では、これら最上位９ビットの文字コードの平均サイズ値ＡｖＳｚもわかる。したがって、表２を探索して領域１８のＮ行目が文字コードの最下位７ビットに一致する行であることがわかったら、アドレス１６に（ＡｖＳｚ＊Ｎ）を加算して、データ４の開始アドレスの大まかな第２レベルの位置決めを行いアドレス２０を入手する。最終アドレス８は、表２から読み取った文字コード２の誤差値Ｅｒｒをアドレス２０に加算することで入手できる。
【００３７】
図３は、図２に示した処理を図示したフロー図である。ステップ２２では、文字コード２の最上位９ビットを使用して表１で探索操作を実行し、表１内の行を索引する。
【００３８】
ステップ２４では、表２のオフセット値ＴＢ２Ｏｆｆ、ハフマンオフセット値ＨｕｆｆＯｆｆ、および平均サイズ値ＡｖＳｚを、表１内で索引された行からすべて読み取る。
【００３９】
ステップ２６では、ＴＢ２Ｏｆｆで示される位置から表２の探索を開始し、文字コード２の最下位７ビットに一致するエントリを見つける（表１で示された領域の最上位から始まるＮ番目）。
【００４０】
ステップ２７では、表２で有効な一致エントリが見つかったかどうかをテストする。有効な一致エントリが見つからなかった場合は、処理は異常終了する。
ステップ２８では、ステップ２６で見つけたＮ番目のエントリから誤差値Ｅｒｒを読み取る。
【００４１】
ステップ３０では、ハフマンコード化可変長データのアドレスを計算する。これは、ハフマンデータストリーム１０のメモリ内の開始アドレスＨｕｆｆＤａｔａＳｔａｒｔに、値ＨｕｆｆＯｆｆ、（ＡｖＳｚ＊Ｎ）とＥｒｒとを加算して行なう。この計算で得られた値は、文字コード２のハフマンコード化データ４の開始位置８を指している。
【００４２】
ステップ３２では、計算されたアドレスからハフマンコード化データ４を読み取る。
ステップ３４では、ハフマンコード化データ４を圧縮解除し、文字の象形文字ビットマップ表現６を取り出す。
【００４３】
図４は、象形文字６を表すＮｘＭビットマップ３６を示している。この例では、ビットマップは１６ｘ１６ピクセルビットマップである。高解像度システムでは、２４ｘ２４のピクセルビットマップを使用することがある。
【００４４】
ピクセルビットマップ３６は、３２個の４ｘ２ピクセルタイル３８で構成されている。これらの各タイルには２５６種類が考えられるため、８ビットコードを使用すれば固有に識別できる。
【００４５】
本発明は、一部のタイルパターンは他のパターンに比較し、共通部分が非常に多い点を利用している。したがって、タイル３８を表す８ビットコードをハフマンコードで置き換え、頻繁に現れるタイルに短いハフマンコードを割り当てることができる。このようにして、象形文字のピクセルビットマップフォントデータを効率的に圧縮できる。
【００４６】
図５は、象形文字の圧縮処理を示すフロー図である。ステップ４０では、１６ｘ１６ピクセルビットマップを４ｘ２ピクセルで構成する３２個のタイルに分割する。ステップ４２では、０から２５５の範囲の対応するコードをこれらの各タイルに割り当てる。ステップ４４では、０から２５５の範囲の３２個の値をフォント全体のハフマン符号化表を使用してハフマンコード化し、対応するハフマンコードストリームを生成する。このハフマンコードストリームは、１６ｘ１６のピクセルビットマップ３６の可変長コード化表現である。
【００４７】
図６は、象形文字のピクセルビットマップについてハフマンコード化したフォントデータの圧縮解除処理を示すフロー図である。ステップ４６では、ハフマンコードのストリームを圧縮解除し、０から２５５の範囲の３２個の値のストリームを生成する。これらの各８ビット値は、４ｘ２のピクセルタイルの特定のピクセルパターンに対応する。ステップ４８では、これらのピクセルパターンを探索し、事前設定順序に組み合わせる（例えば、水平ラスタ順序で、各行に４つのタイルを含む８行の水平線で構成する）。これにより１６ｘ１６のピクセルビットマップ３６が組み合わされ、ステップ５０で取り出すことができる（つまり、表示または印刷）。
【００４８】
図７は、上記の技法を実現するために使用できる典型的なデータ処理システムを示したものである。共通バス５２は、中央処理装置５４、ランダムアクセスメモリ５６、読取専用メモリ５８、および表示ドライバ回路６０をリンクしている。液晶表示パネルなどの表示装置６２は、表示ドライバ回路６０により駆動される。
【００４９】
動作を説明すると、読取専用メモリ５８に格納されたソフトウェアを中央処理装置５４で実行し、上記の技法を実現できる。図７で説明したシステムを動作させ、上記で説明した各種論理要素の役割を実行させる。
【００５０】
読取専用メモリ５８には、ハフマンコード化されたフォントデータ１０、第１のテーブルである表１、および第２のテーブルである表２も記憶させる。
【００５１】
象形文字のピクセルビットマップ３６は中央処理装置５４により復号化されると、表示ドライバ回路６０へ送ることができる。次に、この回路が必要な信号を表示装置６２へ送信し、象形文字６をユーザに表示する。
【００５２】
本発明の実施例を貼付図面を参照して詳細に例示したが、本発明はこれらの実施例に限定されず、以下の請求項の範囲で定義する本発明の範囲と主旨から逸脱しない限り、当業者により各種変更および変形が可能である。
【図面の簡単な説明】
【図１】図１は、フォント文字コード、そのフォント文字コードの可変長コード化データ、およびそのフォント文字データの表示表現の関係を示す図である。
【図２】図２は、Ａビットフォント文字のピクセルビットマップを表す可変長コード化データを含むメモリ内で、そのフォント文字を記憶位置へマップする技法を示す図である。
【図３】図３は、図２のシステムの動作を示すフロー図である。
【図４】図４は、ハフマンコード化する前の象形文字ビットマップとそのタイル分割を示す図である。
【図５】図５は、象形文字の圧縮処理を示すフロー図である。
【図６】図６は、象形文字の圧縮解除処理を示すフロー図である。
【図７】図７は、図１〜図６で説明した技法を実行する汎用データ処理システムを示す図である。
【符号の説明】
２  文字コード
１０  ハフマンコード化フォントデータ
５２  共通バス
５４  中央処理装置
５６  ランダムアクセスメモリ
５８  読取専用メモリ
６０  表示ドライバ回路
６２  表示装置
【図１】
0004361640.tif 000002
【図２】
0004361640.tif 000003
【図３】
0004361640.tif 000004
【図４】
0004361640.tif 000005
【図５】
0004361640.tif 000006
【図６】
0004361640.tif 000007
【図７】
0004361640.tif 000008