前に述べたように、EB ライブラリは、電子ブック (EB, EBG, EBXA, EBXA-C, S-EBXA) と EPWING 形式の CD-ROM 書籍に対応しています。
EB ライブラリは、これらの CD-ROM 書籍に対して、次の処理を行うことが できます。
この章では、EB ライブラリの概要に関して、あらかじめ知っておいて頂いた ほうが良いと思われるその他の事柄について、何点か説明します。
EB ライブラリには、いくつかのヘッダファイルが用意されています。
appendix.h
binary.h
eb.h
error.h
font.h
text.h
これ以外にもいくつかのファイルがインストールされますが、上に挙げた ヘッダファイルから読み込まれるもので、アプリケーションプログラムが 直接読み込む必要はありません。
アプリケーションプログラムは、EB ライブラリを使う際にこのヘッダファイル をファイルの先頭付近で読み込みます。
#include <eb/eb.h> #include <eb/error.h>
eb.h
ではなく、eb/eb.h
を読み込むようにして下さい。
EB ライブラリでは、CD-ROM 書籍内のデータを文字列にしてアプリケーション に渡す際の文字コードを規定しています。
EBG (海外の電子ブック) については、データが ISO 8859-1 (ラテン文字 1、 ただし制御文字を除く) で書かれているため、データのやり取りも ISO 8859-1 で行います。 ただし、外字だけは 2 バイトで表現し、0x0101 〜 0x1efe の領域を使用します。 (外字領域の下位 16 ビットは 0x01 〜 0xfe の範囲を使用します。)
EBG, EBXA-C を除いた電子ブック、および EPWING については、データが JIS X 0208 (日本語のかな漢字) で書かれており、JIS X 0208 を 0x2121 〜 0x7e7e にマッピングし、0xa121 〜 0xfe7e を外字領域にしています (下図)。
上位8ビット 00 21 7e a1 fe 00┌──┬─────┬──┬─────┬┐ │ │ │ │ ││ 21├──┼─────┼──┼─────┼┤ │ │ │ │ ││ │ │JIS X│ │ 外字 ││ │ │0208 │ │ ││ │ │ │ │ ││ 7e├──┼─────┼──┼─────┼┤ 下位8ビット │ │ │ │ ││ a1├──┼─────┼──┼─────┼┤ │ │ │ │ ││ │ │ │ │ ││ │ │ │ │ ││ │ │ │ │ ││ fe├──┼─────┼──┼─────┼┤ └──┴─────┴──┴─────┴┘
EB ライブラリでは JIS X 0208 部分を日本語 EUC (EUC-JP) にエンコード して、アプリケーションとのやり取りも日本語 EUC で行います。 したがって、JIS X 0208 部分は 0xa1a1 〜 0xfefe にマッピングされます。
EBXA-C (中日・日中辞書の電子ブック) については、データが JIS X 0208 (日本語のかな漢字) と GB 2312 (中国語の簡体字) で書かれており、 JIS X 0208 を 0x2121 〜 0x7e7e にマッピング、 GB 2312 を 0x21a1 〜 0x7efe にマッピングし、 0xa121 〜 0xfe7e を外字領域にしています (下図)。
上位8ビット 00 21 7e a1 fe 00┌──┬─────┬──┬─────┬┐ │ │ │ │ ││ 21├──┼─────┼──┼─────┼┤ │ │ │ │ ││ │ │JIS X│ │ 外字 ││ │ │0208 │ │ ││ │ │ │ │ ││ 7e├──┼─────┼──┼─────┼┤ 下位8ビット │ │ │ │ ││ a1├──┼─────┼──┼─────┼┤ │ │ │ │ ││ │ │GB │ │ ││ │ │2312 │ │ ││ │ │ │ │ ││ fe├──┼─────┼──┼─────┼┤ └──┴─────┴──┴─────┴┘
EB ライブラリでは、アプリケーションとのやり取りに使う文字コードは、 日本語 EUC および中国語 EUC (EUC-ZH) です。 したがって、そのままでは JIS X 0208 と GB 2312 が 0xa1a1 〜 0xfefe に マッピングされ、衝突してしまいます。 この問題をどう回避するのかは、アプリケーション側で決める必要があります (詳しくは、「フックと文字コードの関係」 を参照のこと)。
電子ブック、EPWING ともに、外字については、アプリケーション側でどう 扱うかを決める必要があります。 外字について詳しくは 「外字」 を参照のこと。
EB ライブラは、データを圧縮して収録した書籍を扱うことができます。 今のところ、次の 4 種類の圧縮方法に対応しています。
ebzip
圧縮形式ebzip
コマンドを使うと、この形式で圧縮した書籍を作れます。
データの伸長は EB ライブラリ側で自動的に行われるため、 アプリケーションプログラムからは、アクセスしている書籍が圧縮されているか どうか分かりません。 アプリケーションプログラムは、書籍が圧縮されているかどうかで処理を変える 必要はありません。
バージョン 4.0 から、EB ライブラリは他のホストの書籍にアクセスできる ようになりました。
遠隔アクセスの処理はすべて EB ライブラリ側で行われますので、 アプリケーションプログラムは、書籍が自分のホスト上にあるかどうかで、 EB ライブラリの呼び出し手順を変える必要はありません。
ただし、他のホストからアクセスすると、処理速度は非常に遅くなります。 そのため、効率良く処理できるよう、アプリケーションの処理方法を工夫すべき 状況が生じることはあるかも知れません。
アプリケーションプログラムのコンパイルに用いるコンパイラには、 ANSI (ANSI X3.159-1989, ISO/IEC 9899-1990) 対応のものを対象としています。 また、システムには POSIX.1 (IEEE Std. 1003.2-1990, ISO/IEC 9945-1:1990) 準拠ないし互換のものを対象としています。
永らく EB ライブラリでは、古いコンパイラや UNIX 系システムへの対応も それなりに行われていましたが、バージョン 4.1 からは対応を打ち切っています。 特に ANSI 対応のコンパイラは必須ですので、ご注意ください。