(57)【特許請求の範囲】
【請求項１】
外部からの要求に応じてランダムアクセスされる可変長フォント圧縮データを含むフォントセット圧縮データを記録した記憶媒体であって、
前記フォントセット圧縮データは、所定個数のフォントの可変長フォント圧縮データを連結して固定長に分割した各データを配列したフォント圧縮データユニットを複数有するとともに、前記複数のフォント圧縮データユニットの先頭アドレスを格納するアドレスヘッダを有し、
前記複数のフォント圧縮データユニットの各々は、前記可変長フォント圧縮データの各々の当該フォント圧縮データユニット内での相対位置を示す情報を格納するユニット内ヘッダを有することを特徴とする記憶媒体。
【請求項２】
前記ユニット内ヘッダの相対位置を示す情報は、当該フォント圧縮データユニットにおいて、当該ユニット内の基準点から前記可変長フォント圧縮データの各々の先頭ビットまでの相対距離を示す固定長の距離データからなることを特徴とする請求項１に記載の記憶媒体。
【請求項３】
前記ユニット内ヘッダの相対位置を示す情報は、当該フォント圧縮データユニットにおいて、前記可変長フォント圧縮データの各々の符号長を示す符号長データからなることを特徴とする請求項１に記載の記憶媒体。
【請求項４】
請求項１に記載の記憶媒体に記録されたフォントセット圧縮データの可変長フォント圧縮データにランダムアクセスするための方法であって、
アクセス対象である可変長フォント圧縮データが属するフォント圧縮データユニットに対応したアドレスを前記アドレスヘッダから読み出し、読み出したアドレスにより先頭アドレスが指定されたフォント圧縮データユニットにおけるユニット内ヘッダに基づいて、当該フォント圧縮データユニットにおけるアクセス対象である可変長フォント圧縮データの位置を求め、その位置からアクセス対象である可変長フォント圧縮データを取り出すことを特徴とする可変長フォント圧縮データのランダムアクセス方法。
【請求項５】
請求項１に記載の記憶媒体に記録されたフォントセット圧縮データの可変長フォント圧縮データを復号化するデコーダであって、
アクセス対象である可変長フォント圧縮データが属するフォント圧縮データユニットに対応したアドレスを前記アドレスヘッダから読み出し、読み出したアドレスにより先頭アドレスが指定されたフォント圧縮データユニットにおけるユニット内ヘッダに基づいて、当該フォント圧縮データユニットにおけるアクセス対象である可変長フォント圧縮データの位置を求め、その位置からアクセス対象である可変長フォント圧縮データを取り出すことを特徴とするデコーダ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、各種のフォントの集まりであるフォントセットの圧縮データのデータ構造およびアクセス方法に関する。
【背景技術】
【０００２】
パーソナルコンピュータやゲーム機等、表示器を備えた多くの電子機器は、ＲＯＭ（Read Only
Memory）等の記憶媒体に記憶された各種のフォントのフォント圧縮データの中から所望のフォントのフォント圧縮データを読み出して復号化し、表示器に表示させる機能を有している。ここで、表示対象となるフォントは膨大な数になるため、１フォントセットのフォント圧縮データの集合体であるフォントセット圧縮データのデータ量が膨大にならないように、フォントセット圧縮データの圧縮率を高めることが求められる。また、任意のフォントを表示させるために、フォントセット圧縮データのデータ構造は、任意のフォント圧縮データに容易にランダムアクセスすることが可能なデータ構造であることが求められる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−１６６１４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
任意のフォント圧縮データに対するランダムアクセスを容易にするための方法として、フォントセット圧縮データにおける各フォントのフォント圧縮データを固定長にする方法が考えられる。特許文献１は、画像データの圧縮に関するものではあるが、圧縮対象である画像を矩形ブロックに分割し、各々の矩形ブロックについて得られるコードストリームを全て同一の固定符号長とすることにより、各々の矩形ブロックの符号データへのランダムアクセスを可能にする技術を開示している。この矩形ブロックについての圧縮符号化方法を１フォントセットの各フォントの圧縮符号化方法に適用すれば、全てのフォントのフォント圧縮データを同一の固定符号長にすることができ、各フォント圧縮データへのランダムアクセスが容易になる。しかし、この矩形ブロックについての圧縮符号化方法は非可逆圧縮アルゴリズム（特許文献１の実施形態ではウェーブレット変換を用いた圧縮符号化）によるものである。個々のフォントデータをこのような非可逆圧縮アルゴリズムにより圧縮してフォント圧縮データを生成した場合、フォント圧縮データを復号化することにより得られるフォントの品質が低下するという問題が発生する。また、非可逆圧縮アルゴリズムにより生成するフォント圧縮データを固定符号長とする場合、復号化されるフォントの品質の低下という代償を払っているにも拘わらず、１フォントセット圧縮データ全体としての圧縮率を十分に高めることができないという問題がある。一方、フォントデータを可逆圧縮アルゴリズムにより圧縮してフォント圧縮データを生成した場合、フォント圧縮データの復号化により得られるフォントを高品質なものにすることができる。しかし、各フォントのフォント圧縮データは符号長が不揃いになり、任意のフォント圧縮データへのランダムアクセスが困難になるという問題がある。ここで、任意のフォント圧縮データへのランダムアクセスを容易にするため、例えば図４に例示するように、記憶媒体内において各フォントのフォント圧縮データが格納されている記憶領域のアドレスを示すアドレスデータを記憶媒体に別途記憶させる、という方法も考えられる。しかし、この方法を採用した場合、記憶媒体に格納するフォントセット圧縮データ全体としての符号量が大きくなるという問題がある。
【０００５】
この発明は、以上説明した事情に鑑みてなされたものであり、一群の可変長のフォント圧縮データの中の任意のフォント圧縮データへのランダムアクセスが容易となり、かつ、フォントセット圧縮データ全体としての符号量を小さくすることができる技術的手段を提供することを目的とする。
【課題を解決するための手段】
【０００６】
この発明は、複数のフォント圧縮データユニットと、前記複数のフォント圧縮データユニットの先頭アドレスを各々示す複数のアドレスデータを含むアドレスヘッダとを具備し、前記複数のフォント圧縮データユニットの各々は、所定個数のフォントのフォント圧縮データを連結して固定長に分割した各データを配列してなることを特徴とするフォントセット圧縮データのデータ構造を提供する。
【０００７】
このデータ構造は、アドレスヘッダに設けるアドレスデータの個数がフォント圧縮データユニットと同数であれば済むので、フォントセット圧縮データの符号量を少なくすることができる利点がある。
【０００８】
フォントセット圧縮データがこのようなデータ構造を有する場合、次のような方法により、任意のフォント圧縮データへのランダムアクセスが可能になる。すなわち、アクセス対象であるフォント圧縮データが属するフォント圧縮データユニットに対応したアドレスデータを前記アドレスヘッダから読み出し、読み出したアドレスデータにより先頭アドレスが指定されたフォント圧縮データユニットからフォント圧縮データを順次読み出して復号化し、アクセス対象であるフォント圧縮データが読み出されて復号化されるまで、フォント圧縮データユニットからのフォント圧縮データの読み出しおよびその復号化を継続することを特徴とするフォント圧縮データへのランダムアクセス方法である。
【０００９】
好ましい態様において、前記複数のフォント圧縮データユニットの各々は、前記所定個数のフォントのフォント圧縮データの各々の当該フォント圧縮データユニット内での相対位置を示す情報を含むユニット内ヘッダを有する。ここで、各フォントのフォント圧縮データのフォント圧縮データユニット内での相対位置を示す情報は、各フォントのフォント圧縮データのフォントセット圧縮データ内での位置を示すアドレスデータよりも少ないビット数で表現可能である。従って、このデータ構造によれば、フォントセット圧縮データの全体の符号量を少なくすることができる。
【００１０】
フォントセット圧縮データがこのようなデータ構造を有する場合、次のような方法により、任意のフォント圧縮データへのランダムアクセスが可能になる。すなわち、アクセス対象であるフォント圧縮データが属するフォント圧縮データユニットに対応したアドレスデータを前記アドレスヘッダから読み出し、読み出したアドレスデータにより先頭アドレスが指定されたフォント圧縮データユニットにおけるユニット内ヘッダに基づいて、当該フォント圧縮データユニットにおけるアクセス対象であるフォント圧縮データの位置を求め、その位置からアクセス対象であるフォント圧縮データを取り出すことを特徴とするフォント圧縮データへのランダムアクセス方法である。
【００１１】
このランダムアクセス方法は、先に述べたランダムアクセス方法に比べ、不要な復号化処理を実行しなくて済むので、アクセス対象であるフォント圧縮データを読み出すのに要する演算量および所要時間が少なくて済むという利点がある。
【図面の簡単な説明】
【００１２】
【図１】この発明の第１実施形態によるフォントセット圧縮データのデータ構造を示す図である。
【図２】この発明の第２実施形態によるフォントセット圧縮データのデータ構造を示す図である。
【図３】この発明の第３実施形態によるフォントセット圧縮データのデータ構造を示す図である。
【図４】上記各実施形態との比較例であるフォントセット圧縮データのデータ構造を示す図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照し、この発明の一実施形態について説明する。
【００１４】
＜第１実施形態＞
図１はこの発明の第１実施形態であるフォントセット圧縮データのデータ構造を示す図である。図１ではこのフォントセット圧縮データがメモリに記憶された状態が示されている。この例においてメモリは１アドレス当たり１バイトの記憶容量を有している。
【００１５】
本実施形態において、フォントセット圧縮データは、アドレスヘッダ１とフォント圧縮データ部２とにより構成されており、図１に示すように、アドレスヘッダ１、フォント圧縮データ部２の順にメモリに記憶されている。フォント圧縮データ部２は、複数のフォント圧縮データユニットＦＤＵｋ（ｋ＝０、１、２、…）の集合体である。この例では、フォント圧縮データ部２は、８００個のフォント圧縮データユニットＦＤＵｋ（ｋ＝０〜７９９）により構成されている。
【００１６】
アドレスヘッダ１は、メモリ内における各フォント圧縮データユニットＦＤＵｋ（ｋ＝０〜７９９）の先頭アドレスを示すアドレスデータＦＤＵＡｋ（ｋ＝０〜７９９）の集合体である。各アドレスデータＦＤＵＡｋ（ｋ＝０〜７９９）は、固定長（この例では２バイト）のデータであり、メモリの２アドレスに１個ずつ記憶される。フォント圧縮データユニットＦＤＵｋ（ｋ＝０〜７９９）の各々は、距離ヘッダ２１と、これに続く複数のフォントのフォント圧縮データ２２とにより構成されている。この例では、１０フォント分のフォント圧縮データ２２が１つのフォント圧縮データユニットＦＤＵｋに含まれる。従って、この例ではフォントセット圧縮データ全体として、１０×８００＝８０００フォント分のフォント圧縮データ２２を含んでいる。
【００１７】
１つのフォント圧縮データユニットＦＤＵｋに含まれる１０フォント分のフォント圧縮データ２２は、符号長（ビット数）がフォントにより区々な可変長のデータである。これら１０フォント分のフォント圧縮データ２２は、図示のように、互いに隙間なく連結された後、１バイトの固定長に分割され、各々１バイトの記憶容量を有する連続したアドレスに格納される。ここで、１０フォント分のフォント圧縮データ２２の全体としての符号長が１バイトの整数倍でない場合には、最後のフォント圧縮データ２２の後に必要個数のビット“０”が補充されて、総符号長が１バイトの整数倍とされる。すなわち、１個のフォント圧縮データユニットＦＤＵｋにおいて生じうるビットロスは、最大７ビットである。距離ヘッダ２１は、１０フォント分のフォントのフォント圧縮データの各々のフォント圧縮データユニットＦＤＵｋ内での相対位置を示す情報を含むユニット内ヘッダとしての役割を果たすヘッダである。さらに詳述すると、距離ヘッダ２１は、１０フォント分のフォント圧縮データ２２の各々の先頭ビットについて、フォント圧縮データユニットＦＤＵｋ内の最初のフォントのフォント圧縮データ２２の先頭ビットからの距離（ビット数）を各々示す１０個の距離データＤＬｋ（ｋ＝０〜９）により構成されている。ここで、各距離データＤＬｋ（ｋ＝０〜９）は、特定ビット長の固定長データであり、メモリ内の１アドレスに１個ずつ記憶される。
【００１８】
次に、以上説明したデータ構造を有するフォントセット圧縮データの中の所望のフォントのフォント圧縮データ２２にランダムアクセスするための方法について説明する。以下では、フォントセット圧縮データが示す１フォントセットを構成する各フォントには連番（以下、フォント番号という）が付与されており、メモリ内の所望のフォントのフォント圧縮データ２２にアクセスする際には、そのフォントのフォント番号Ｍが指示されるものとする。また、フォントセット圧縮データのフォント圧縮データ部２内には、フォント番号順に各フォントのフォント圧縮データ２２が記憶されているものとする。
【００１９】
（１）まず、フォント番号Ｍを１フォント圧縮データユニット当たりのフォント数（この例では１０）で割ったときの商Ｎ１と余りＪ１を求める。
（２）次にＮ１番目のフォント圧縮データユニットの先頭アドレスを示すアドレスデータＦＤＵＡｋ（ｋ＝Ｎ１）をアドレスヘッダ１から読み出す。
（３）次にメモリ内のＦＤＵＡｋ（ｋ＝Ｎ１）番地の距離ヘッダ２１の中の距離データＤＬｋ（ｋ＝Ｊ１）を読み出す。
（４）次に距離データＤＬｋ（ｋ＝Ｊ１）を８（＝１バイト）で割って、その商Ｎ２および余りＪ２を求める。
（５）次に下記式（１）に従って、アドレスＡＤを算出する。
ＡＤ＝ＦＤＵＡｋ（ｋ＝Ｎ１）＋距離ヘッダ２１のアドレス数＋Ｎ２    ……（１）
（６）このアドレスＮ２における第Ｊ２ビットがフォント番号Ｍに対応したフォント圧縮データの先頭ビットである。そこで、このアドレスＮ２における第Ｊ２ビットから始まるフォント番号Ｍに対応したフォント圧縮データを取り出す。
以上のように、本実施形態によれば、少ない演算量で、所望のフォントのフォント圧縮データをメモリから読み出すことができる。また、本実施形態において、フォントセット圧縮データ毎に設ける距離データは、前掲図４のデータ構造においてフォントセット圧縮データ内での各フォント圧縮データの位置を示すアドレスデータに比べてビット数を少なくすることができる。従って、本実施形態によれば、フォントセット圧縮データ全体としての符号量を小さくすることができる。
【００２０】
＜第２実施形態＞
図２は、この発明の第２実施形態によるフォントセット圧縮データのデータ構造を示す図である。上記第１実施形態では、フォント圧縮データユニットＦＤＵｋ（ｋ＝０〜７９９）の各々にユニット内ヘッダとして距離ヘッダ２１を設けた。本実施形態は、この距離ヘッダ２１に代えて、符号長ヘッダ２１ａをユニット内ヘッダとして設けたものである。この符号長ヘッダ２１ａは、フォント圧縮データユニットＦＤＵｋに含まれる１０フォント分のフォント圧縮データ２２の各々の符号長を示す１０個の符号長データＦＣＤＬｋ（ｋ＝０〜９）により構成されている。ここで、各符号長データＦＣＤＬｋ（ｋ＝０〜９）は、特定ビット数の固定長データであり、メモリ内の１アドレスに１個ずつ記憶される。
【００２１】
このようなデータ構造を有するフォントセット圧縮データの中の所望のフォントのフォント圧縮データ２２にランダムアクセスするための方法について説明する。
（１）まず、所望のフォントのフォント番号Ｍを１フォント圧縮データユニット当たりのフォント数（この例では１０）で割ったときの商Ｎ１と余りＪ１を求める。
（２）次にＮ１番目のフォント圧縮データユニットの先頭アドレスを示すアドレスデータＦＤＵＡｋ（ｋ＝Ｎ１）をアドレスヘッダ１から読み出す。
（３）次にメモリ内のＦＤＵＡｋ（ｋ＝Ｎ１）番地から始まる連続したＪ１個の番地に記憶された符号長データＦＣＤＬｋ（ｋ＝０〜Ｊ１−１）を読み出して加算し、加算結果Ａを求める。なお、Ｊ１＝０の場合はＡ＝０とする。この加算結果Ａは、フォント圧縮データユニットＦＤＵＡｋ（ｋ＝Ｎ１）において、先頭のフォント圧縮データ２２からアクセス対象であるフォント圧縮データ２２の手前のフォント圧縮データまでの全フォント圧縮データの符号長を示す。
（４）次に加算結果Ａを８（＝１バイト）で割って、その商Ｎ２および余りＪ２を求める。
これ以降の処理は上記第１実施形態と同様である。
本実施形態においても、少ない演算量で、所望のフォントのフォント圧縮データをメモリから読み出すことができる。
【００２２】
＜第３実施形態＞
図３はこの発明の第３実施形態であるフォントセット圧縮データのデータ構造を示す図である。本実施形態によるフォントセット圧縮データは、上記第１実施形態によるフォントセット圧縮データの各フォント圧縮データユニットＦＤＵｋ（ｋ＝０〜７９９）から距離ヘッダ２１を除去したデータ構造となっている。
【００２３】
次に、図３に示すフォントセット圧縮データの中の所望のフォントのフォント圧縮データ２２にランダムアクセスするための方法について説明する。本実施形態では、次の手順により所望のフォント番号Ｍのフォントのフォント圧縮データ２２にアクセスすることができる。
【００２４】
（１）フォント番号Ｍを１フォント圧縮データユニット当たりのフォント数（この例では１０）で割ったときの商Ｎ１と余りＪ１を求める。
（２）Ｎ１番目のフォント圧縮データユニットの先頭アドレスを示すアドレスデータＦＤＵＡｋ（ｋ＝Ｎ１）をアドレスヘッダ１から読み出す。
（３）メモリ内のＦＤＵＡｋ（ｋ＝Ｎ１）番地から始まる連続した記憶領域からデータを順次読み出し、Ｊ１個のフォント圧縮データ２２の復号化を終えるまで、データの読み出しと、読み出したデータの復号化を継続する。最後に復号化したフォント圧縮データ２２がフォント番号Ｍのフォント圧縮データである。
【００２５】
本実施形態によれば、所望のフォントのフォント圧縮データを復号化するためにＲＯＭにアクセスする回数が上記第１および第２実施形態よりも増えるが、フォントセット圧縮データ全体としての符号量を上記第１および第２実施形態よりも少なくすることができる。
【００２６】
＜他の実施形態＞
以上、この発明の一実施形態を説明したが、この発明には、他にも各種の実施形態が考えられる。例えば次の通りである。
【００２７】
（１）上記各実施形態では、１フォント圧縮データユニット当たりのフォント数を１０としたが、１フォント圧縮データユニット当たりのフォント数は任意に定めればよい。例えば１フォントセットが８０００フォントからなる場合、１フォント圧縮データユニット当たりのフォント数は、２フォント以上４０００フォント以下の範囲から選択可能である。
【００２８】
（２）上記各実施形態において、１フォント圧縮データユニット当たりのフォント数を示すデータをフォントセット圧縮データの一部として追加してもよい。
【００２９】
（３）この発明の実施の態様として、上記各実施形態に開示されたデータ構造を有するフォントセット圧縮データを記憶したＲＯＭ等の記憶媒体を製造し、または販売する態様があり得る。
【００３０】
（４）この発明の実施の態様として、上記各実施形態によるフォント圧縮データへのランダムアクセス方法をコンピュータに実行させるためのプログラムとして実施する態様もあり得る。また、他の態様として、上記各実施形態によるランダムアクセス方法に従って、要求されたフォントのフォント圧縮データをメモリから読み出し、その復号化を行うデコーダ（復号化装置）として実施する態様もあり得る。ここで、デコーダは、上記ランダムアクセス方法に従ったランダムアクセス処理およびフォント圧縮データの復号化処理をコンピュータに実行させる復号化プログラムがインストールされたＲＯＭと、このＲＯＭ内のプログラムを実行するプロセッサとにより構成してもよく、上記復号化プログラムに従って実行される処理と同じ処理を実行する電子回路により構成してもよい。また、デコーダは単体の製品としてもよく、他の装置とともに大規模な製品の中に組み込んでもよい。
【符号の説明】
【００３１】
１……アドレスヘッダ、２……フォント圧縮データ部、ＦＤＵｋ（ｋ＝０〜７９９……フォント圧縮データユニット、２１……距離ヘッダ、２１ａ……符号長ヘッダ、２２……フォント圧縮データ。
【図１】
0005625923.tif 000002
【図２】
0005625923.tif 000003
【図３】
0005625923.tif 000004
【図４】
0005625923.tif 000005