電書協準拠とは言わないけど、電書協のCSSを使うようにかえた。電書協のガイド準拠したらどういう意味があるのかというと、出版社が作っているEPUBと同等のものになるということだ。
今の状態は電書協のCSSは使っているがガイドに逸脱しているところもある。ただ、大抵のEPUB3に対応したリーダーでは読み込みには問題がないだろう。
正直市場に出ているEPUB作成ソフトはあまり「電書協のガイド準拠」のものは少ないと思われる。
AozoraEpub3では以前のではEPUBリーダーに対して専用のEPUBを作っていた。koboならkobo用のEPUB、キンドルならキンドル用のEPUB。それが今回からはワンソース・マルチユースと言わないまでも、大体は動くようになったと思う。
book-style.cssはAozoraEpub3であった元々の注記でしか表現できなかった部分を読み込んでいる。今後このスタイルシート内容や読み込むファイル名は変わる可能性がある。
font.css内の記述をbook-style.cssに移す可能性がある。
単ページ画像のimage.cssは今後、fixed-layout-jp.cssを使ってSVGラッピング化するかもしれない。今はまだ、電書協のスタイルシートの記述ではない。表紙画像はfixed-layout-jp.cssを使ってSVGラッピング化している。表紙画像のサイズのリサイズ機能を削除するかもしれない。
左右中央(扉)は電書協で記述がなかったので、AozoraEpub3のママ書いている。AozoraEpub3ではキンドルだけ別の書き方になっている。
実際どこまでバグが有るかは検証してみないとなんとも言えない。
AozoraEpub3のコードの半分ぐらい読んでみた、そしたら全体の処理の流れを予想することができて、問題箇所の特定がわりとやりやすくなった。残りは画像の処理部分や、外字、フォント、文字コード変換などで手を付けていない。
テンプレートエンジンを利用して、書き換えているのはだいたいわかっていた。書き換え処理をどこで実行しているのかがよくわかってなかった。テンプレートの切り替え処理の判定などがどこに書かれているのか等。だからテンプレートだけでなんとかしようとして複雑なテンプレートになっていた。
Epub3Writer.javaのところで、Velocityを使ってテンプレートを書き換えている。
ただ、どのように情報を渡しているのかが気になっていた。
画像は読み込んだりサイズを調べたり、出力されるファイル名などは。ImageInfoにまとめられているようだ。
固定レイアウトのEPUBの書き出しはEpub3ImageWriter.javaを使っている。SVGとfitを使うかの判定で固定レイアウトの場合は強制的にSVGラッピングに切り替えた。というのもfitが反映されるEPUBリーダーが少ないという問題があった。svgラッピングを使った処理については、ここだけしか使っていない。が、リフローの表紙や、単ページ画像でも使えばいいのではないかと思う。ただ、記述が複雑になりそうだ。
AozoraEpub3Converter.javaが青空文庫注記をhtmlに変換するコアな部分なのだけど、そこをいじると影響範囲が大きいのであまりいじれないでいる。
入力段と出力段の一部分
chuki_tag.txt、chuki_tag_suf.txtに青空文庫の注記をHTMLに変換する内容が書かれている。ここを電書協CSSのクラス名に合うように思いっきり書き換えた。