EB Library with UTF-8 support

EB LibraryのJIS X 4081 UTF-8 extension対応版です。

EB Library with UTF-8 support

EB Libraryを改造してJIS X 4081 UTF-8 extensionに準拠した書籍を扱えるようにしたものです。

for your download

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に変更されています。例えば、ebzipebuzipという名前でインストールされます。

リンク方法

EB Libraryと置き換えて使う

通常のEB Libraryを利用する場合とほぼ同様です。 違いは以下の通りです。

EB Libraryもサポートする

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_titleeb_subbook_title2で得られる文字列はUTF-8な書籍においてもEUC-JPでエンコードされています。

また、テキストの読込時にU+0000からU+007Fの文字があった場合はEB_HOOK_ISO8859_1で指定したフック関数が呼び出されます。 それ以外のテキストにおいては、新設されたフックコードEB_HOOK_UNICODEで指定したフック関数が呼び出されます。 この際、フック関数に渡すargc1で、argv[0]にはユニコードの文字番号が設定されます。

appendixを作成する場合はcharacter-codeにはUTF-8を指定してください。 外字の代替文字列については動作確認していません。

UTF-8 support以外の拡張

色見本への対応

広辞苑に収録されている色見本に一応対応しました。 ドキュメントはありませんが、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 公開。

written by Kazuhiro Ito (mailto: mailto)

楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル