catdumpでCATALOGSファイルを作成するには、まず、テキストファイル形式のカタログファイルを作成する必要がある。
テキストファイルのカタログファイルは、このページに参考例がある。
とはいえ、ただの例なので、自分の辞書CDがどのような構成になっているのかを知る必要がある。
普通にCDを見てみると、ファイルの構成はこのようになっている。
$ tree xxx xxx ├── README.FreeBSD ├── README.LINUX ├── TRANS.TBL └── chujiten ├── TRANS.TBL ├── data │ ├── TRANS.TBL │ └── honmon └── gaiji ├── TRANS.TBL ├── gai16f00 ├── gai16h00 ├── gai24f00 ├── gai24h00 ├── gai30f00 ├── gai30h00 ├── gai48f00 └── gai48h00 3 directories, 15 files(xxxはCDのマウントポイント)
"chujiten/data/honmon"が辞書データそのものだろう。
前回ビルドしたepwutil内にあるbookinfoで見てみると以下のように表示された。
$ bookinfo dict/chujiten/data/honmon ; 電子ブック/EPWING 書籍管理情報 (generated by bookinfo v1.0) 対象書籍ファイル = dict/chujiten/data/honmon 情報所在ブロック = 1 書籍構成要素数 = 13 予備領域1(書籍種別/保護情報) = 2000H 書籍種別: 英和辞典 保護情報: 表示許可, 印刷許可, テキスト引用許可, 図版引用許可, カラー図版引用禁止, 動画引用禁止, 大量引用禁止 INDEX情報の取扱法 = 02H (INDEX情報は有効) ID 名称 先頭 サイズ INDEX情報 予備3/4 *00 本文 34398 44941 00/0000 *91 前方一致表記形インデックス 4244 4236 .a....... 00/0000 *71 後方一致表記形インデックス 8 4236 .a....... 00/0000 *02 著作権表示 7 1 00/0000 *01 メニュー 26941 1 00/0000 FF 複合検索 *** 1969 00/0000 FF 複合検索 *** 33305 00/0000 FF 複合検索 *** 16261 00/0000 FF 複合検索 *** 5 00/0000 FF 複合検索 *** 23 00/0000 *05 前方一致表記形見出し 26946 3726 00/0000 *07 後方一致表記形見出し 30672 3726 00/0000 D8 PCM音声 79339 83391 00/0000 表示方法の初期値情報: 有効無効フラグ = 01H (初期値情報は有効) 一覧表表示 = 00H (直接本文表示) 本文表示法 = 00H (検索結果を項目単位に連続して表示) 書籍ファイルサイズ = 318MB マーク部分のサイズ = 119MB文字のサイズと文字のバイト数が合わないので、ズレズレ表示になっているが、読めなくはない。
CDが壊れているかもと思っていたが、辞書データは使えるようだ。
このページの例を参考に、上記情報とディレクトリ構成を元に、catalogs.txtという名前で、以下のようなテキストファイルを作成した。
[Catalog] FileName = catalogs Type = EPWING1 Books = 1 [Book] BookType = 2000 Title = "新英和・和英中辞典" Directory = "chujiten" InfoBlock = 0001 ZenGaiji = "gai16f00gai24f00gai30f00gai48f00" HanGaiji = "gai16h00gai24h00gai30h00gai48h00"このテキストファイルは、UTF-8で書いている。
ソースコードやMakefileを読めば解るが、Unix系でのcatdumpは、EUC-JPを期待した作りになっている(WindowsではShift_JIS)。
そのためEUC−JPに変換しなければならない。
以下のようにして、変換する。
$ nkf -e catalogs.txt > catalogs.euc一応、確認。
$ nkf -g catalogs.euc EUC-JPよしよし。
これを使ってバイナリのCATALOGSを作成する。
$ catdump -u catalogs.euc CATALOGS
これでカタログファイルはできたけど、相手はCDROMだ。書き込むことはできない。
壊れているとはいえ勝手にコピーしてしまうのも問題だ。
こういうときは、overlayマウント(unionマウントとも言う)してしまおう。
いくつか方法はあるが、以前からoverlayfsを使っているので、それを使う。
デフォルトではoverlayfs用のカーネルモジュールが読み込まれていないので、モジュールを読み込む。
$ sudo modprobe overlayつぎに、読み書きディレクトリ、作業ディレクトリ、マウントポイントを用意する。
$ mkdir rw wk dictそして、overlayマウントする(xxxにCDがマウントされているものとする)。
$ sudo mount -t overlay overlay dict/ -o lowerdir=xxx,upperdir=rw,workdir=wkこれで、dict/を通してxxx/をアクセスでき、書き込みもできるようになる。
dict/へ作成したCATALOGSファイルをコピーする。
$ cp CATALOGS dict/これで、多くの辞書アプリでアクセス可能になる。
試しに、eblookで見てみよう。以下のようにしてインストールする。
$ sudo apt install eblookインストール後、overlayマウントしたマウントポイントを指定して起動する。
以下は、英単語"english"をひいたときの様子。
$ eblook dict/ eblook> list 1. chujiten 新英和・和英中辞典 eblook> select 1 eblook> search english 1. 37402:692 English eblook> content english Invalid entry number: english eblook> content 1 <gaiji=ha123>En・glish /<gaiji=ha137><gaiji=ha22f>gl<gaiji=ha228><gaiji=ha22d>/→<gaiji=za339> <gaiji=za34e><gaiji=za323> 1 イングランドの; 《俗に》 イギリスの,英国の. 2 イングランド人の; 《俗に》 イギリス人の,英国人の. 3 英語の.<reference>→<gaiji=za33a></reference=53513:1184> <gaiji=za34e><gaiji=za321> 1 <gaiji=za32f> 英語.<reference>→<gaiji=za33a></reference=53513:1284> 2 [the 〜; 複数扱い] a イングランド人; 《俗に》 イギリス人,英国人 (cf. the Scots,the Welsh,the Irish). b 英軍. <gaiji=ha126>古期英語 ‘of the race of Angles' の意; ⇒ENGLAND<gaiji=ha127> <prev><reference><gaiji=ha123>En・gland /<gaiji=ha137><gaiji=ha22f>gl<gaiji=ha226>nd/→<gaiji=za339></reference=37401:1782></prev> <next><reference><gaiji=ha155>nglish br<gaiji=ha168>akfast</reference=37402:1602></next> eblook> quit外字が<gaiji=xxxxx>のように表示されて読みにくいが、動作しているのはわかる。
GUIアプリのebviewで表示すると、発音記号その他外字も表示される。
外字の大きさが、文字と合っていないのが少し気になる…。
メニューから、ツール->オプションで、「設定項目」から「外部プログラム」を選んで、「音声再生プログラム」を"aplay %f"にすると、音声も再生できるようになる。
これでネットにつながらなくても、電子辞書が使える。
0 件のコメント:
コメントを投稿