EB LibraryのJIS X 4081 UTF-8 extension対応版です。
EB Libraryを改造してJIS X 4081 UTF-8 extensionに準拠した書籍を扱えるようにしたものです。
ebu-4.5-20220808.tar.gz EB Library 4.4.3をベースにしたものです。
autotoolsを利用した他のツールと同様に行います。 システム上にはEB Libraryとも共存できますが、関数名等が衝突するので同一のプログラムから両者を同時にリンクするのは困難です。 だたし、UTF-8対応以外に関してはEB Libraryと同様に動作するので、通常は両者を同時にリンクする必要はありません。
configure時に--enable-libdeflateオプションを指定するとzlibの代わりにlibdeflateを使用します。 zlibに比べて書籍をより小さく圧縮できます。
付属するツール類は、接頭語がebからebuに変更されています。例えば、ebzipはebuzipという名前でインストールされます。
通常のEB Libraryを利用する場合とほぼ同様です。 違いは以下の通りです。
ライブラリ名はebからebuに変更されています。 リンカに指定する際には-lebではなく、-lebuと指定してください。
ヘッダーファイルははebuディレクトリ以下に存在しています。
#include <ebu/eb.h>
のようにして読み込んでください。
autotoolsを利用する場合、configure.ac (またはconfigure.in) で指定するマクロはeb_LIB_EB4からeb_LIB_EBUになります。 eb.confに相当するファイルはebu.confとなり、その所在を指定するオプションは--with-ebu-confとなります。 これらを提供するファイルはeb4.m4ではなく、ebu.m4となっています。
また、EB Library with UTF-8 supportを検出できなくてもconfigureスクリプトはエラーで止まりません。 ソースコードからはENABLE_EBUマクロが定義されているかどうかで検出できているか判定できます。
autotoolsを利用して、使用するEB Libraryを自動的に、あるいは明示的に決定できます。 例えば、configure.ac (またはconfigure.in) に以下のように記述します。
eb_LIB_EBU
if test $ENABLE_EBU = no; then
eb_LIB_EB4
fi
eb_LIB_EB4 を指定した場合に加えて、ebu.confの所在を指定する--with-ebu-confオプションと、EB Library with UTF-8 supportの使用を明示する--enable-ebuオプションがconfigureスクリプトで使用できるようになります。
--enable-ebuオプションを指定すると、EB Library with UTF-8 supportを検出できなかった場合はエラーになります。 逆に、--disable-ebuオプションを指定するとあっても使いません。 どちらも指定しなかった場合は、EB Library with UTF-8 supportを優先的に使おうとし、検出できなかった場合はEB Libraryを使用します。 EB Libraryも検出できなかった場合はエラーで止まります。
ヘッダーファイルは、例えば以下のようにして読み込んでください。
#ifdef ENABLE_EBU
#include <ebu/eb.h>
#else
#include <eb/eb.h>
#endif
UTF-8な書籍をeb_bindで結びつけると、eb_character_codeで得られる文字コードの値はEB_CHARCODE_UTF8となります。 UTF-8な書籍に対する検索等では、EUC-JPに代わってUTF-8な文字列を使用します。 テキストの読み込み時もUTF-8な文字列を返します。 ただし、eb_subbook_titleとeb_subbook_title2で得られる文字列はUTF-8な書籍においてもEUC-JPでエンコードされています。
また、テキストの読込時にU+0000からU+007Fの文字があった場合はEB_HOOK_ISO8859_1で指定したフック関数が呼び出されます。 それ以外のテキストにおいては、新設されたフックコードEB_HOOK_UNICODEで指定したフック関数が呼び出されます。 この際、フック関数に渡すargcは1で、argv[0]にはユニコードの文字番号が設定されます。
appendixを作成する場合はcharacter-codeにはUTF-8を指定してください。 外字の代替文字列については動作確認していません。
広辞苑に収録されている色見本に一応対応しました。 ドキュメントはありませんが、ebu/color.c, ebu/readtext.cのコメントおよびeblook 1.6.1+mediaの対応部分のコードを見れば使い方は分かると思います。
2022/08/08 pthread有効時における不具合の修正を取り込んだ。 ただし、pthreadを有効にしたことがなく、未テスト。
2022/04/25 バッファオーバーランを修正した。 オリジナルのEB Library由来のバグ。
2022/04/17 外字イメージをBMPフォーマットで出力する際に、正しくないヘッダが生成されるのを修正する変更を取り込んだ。
2020/04/14 色見本に対応した。
2020/03/10 Debianで報告されている不具合 (#833085) の修正を取り込んだ。
2019/06/30 configure時に--enable-libdeflateオプションを指定するとzlibの代わりにlibdeflateを使用するようにした。
2019/06/27 ebuzipで圧縮レベルを4または5にすると、zlib呼び出し時に圧縮レベルを最大に指定するようにした。
2015/03/01 Debianで報告されている不具合の修正を取り込んだ。 Cygwinでiconvを利用できるようにした。
2013/09/21 使用するautotoolsを更新した。 Winsock2やDOS形式のファイルパスのサポートをconfigureスクリプトで判定するようにした。
2012/07/05 ebuzipによる圧縮をマルチスレッドで行えるようにした。
2011/08/01 EB Libraryと共存できるようにした。 それに伴い、リンク方法や付属するツールのコマンド名等を変更した。
2010/05/22 EB Library 4.4.3をベースにした。 完全一致検索の対応が抜けていたのを修正した。 appendixを扱えるようにした。
2010/01/22 EB Library 4.4.2をベースにした。 テキストフックEB_HOOK_UNICODEを追加した。
2009/04/21 公開。