2014/06/15 - EPUBどうやって実装しよう

土日でEPUBの実装を少し進めた。EPUB自体はzipなのでzipライブラリで読み込める。中身のメタファイルを解析して,XHTMLはXMLライブラリで読める。と思ったら,XHTMLは要素の中にテキストと要素が混在しているため,winrtのElementsではうまく読み込めない。Elements.Valueでは混在した要素のテキストだけが抽出されてしまう。結局DescendantNodesで細かいノードを一つ一つ解析するようにした。

CSSは既に解析する処理を実装済み。オートマトンに要素階層を与えるとスタイルが返ってくるイメージ。多分遅いので改善することになるだろうけど。

あとは画像系はそのまま読み込めるとして,SVGはどうしよう。winrtでは標準で読めないので,WebViewを経由するか,NuGetでライブラリ探してくるか。

動画やJavaScriptはサポートしないとして,そんなものかな。

あとはXAML to HTML Conversion Demoが参考になりそう。標準のXMLパーサーじゃなくてHTMLパーサーを自作しているけど,おそらくXHTMLじゃないからかな。EPUB3.0だけを考えるならXHTMLだけなので,そこまでやらなくてもいいだろう。


なんかEPUBサポートまであと半年くらいかかりそう。winrtでWebKitが使えれば楽なんだろうけど。EPUB以外の改善もあるので,ある程度のところでそっちを先にリリースするかな。今考えているのは以下。

  • パスワードPDF
  • キーボードでの拡大縮小
  • キーボードでのコーナースクロール
  • 「タイトルページの独立」メニューを「見開きを1ページずらす」メニューに変更
  • 関連づけで開いたときに,右開き,左開きを,前回開いた本に合わせる

他にもこの日記にタグとかコメントとか付けられるようにしたいとかいろいろあって,時間が足りなさすぎる。

コメントする