hishidaの開発blog

EBシリーズ(EBPocket,EBWin,EBMac,EBStudio),KWIC Finder,xdoc2txt,読書尚友の開発者ブログ

EBWin/EBPocketのPDIC対応

本家板でも書いたが、EBWin/EBPocketのPDIC対応を行っている。EPWING(JIS X 4081)の根本的な制約の一つに文字コードがJISコードに限られるという問題があり、多言語対応に限界があるため。
PDICUnicode版があって多数の外国語辞書が公開されていること、辞書フォーマットの仕様が公開されているという利点があるので、EBWin/EBPocketで対応することにした。

おおむね動いているのだが、今度はPDIC自身の制限があって、色々苦労している。

  • インデックス項目の並びがコード順である。つまり、A-Zが一通り並んだ後に、a-zが並んでいる。これがために、大文字小文字を同一視した検索が難しい。"google"と"Google"で検索結果が異なるのだ。本家のPDICでもそうなっているので仕方ないのだが。
  • 発音記号がフォントで実現されている。そのフォントのコード位置とUnicodeマッピングを行うか、マッピングせずにフォント指定で表示するかどちらかを選ばねばならない。発音記号フォントもSIL IPA93だけ対応すればいいかと思っていたら、タイ語辞書では全く独自のものが使われている。ちゃんと対応するのは結構手間。
  • PDIC辞書の構造がランダムアクセスに向かない。見出し語が直前語との差分で圧縮されているので、ブロックの先頭から読まないと見出し語が復元できない。
  • DOS時代からあるので、辞書のバージョンの種類が多い。ただし現在ではHyper辞書形式しか流通していないので、DOS用の古い辞書は切り捨てることにした。
  • インデックスが前方一致しかない。またある項目に対してインデックスが一つしかもてない。これは全文検索をサポートすることで代替するしかない。

どちらかというと消極的理由で作業しているので、あまり気合いが入っていないが、そのうちリリースできるだろう。