目的
- Windows版を含めて最新の改造版AozoraEpub3を使用したい
- 実行環境毎の問題点を見つけて整理し解消出来るなら手順としてまとめたい
2024/02/19時点の組み合わせ
- RubyInstallerから Ruby+Devkit 3.3.0-1 (x64)
- AozoraEpub Wikiから AozoraEpub3-1.1.1b22Q.zip
- Adoptium公式から jdk_21.0.2+13
- Kindle Previewer3から Windows版
手順通りにインストールした場合
- Adoptium, Oracle, OpenJDK, Amazon, Microsoftを含めてOpenJDK21を使用した場合、EPUB変換時にエラーが発生する <- この解消は不具合スレ 659の10の変更が必要
JDK21を使用した場合に変換エラーとなる箇所の修正
これはnarou.rb 不具合スレ 659の10を参照しnarou.rb側のコードを変更する。
修正内容は以下の通り
- narou-3.8.2フォルダのlibフォルダにある novelconverter.rb の168行目を下記のように修正し保存します
修正前 novelconverter.rb 168行目
java_encoding = "-Dfile.encoding=UTF-8"
修正後
java_encoding = "-Dfile.encoding=UTF-8" +
" -Dstdout.encoding=UTF-8 -Dstderr.encoding=UTF-8" +
" -Dsun.stdout.encoding=UTF-8 -Dsun.stderr.encoding=UTF-8"
novelconverter.rbをメモ帳を含むテキストエディターで開き、上記の修正を反映し上書き保存
再度動作確認
一度ダウンロードしているので変換のみ実行し、完了出来ることを確認
> narou convert n9669bk
ID:0 無職転生 - 異世界行ったら本気だす - の変換を開始
小説状態の調査結果を 調査ログ.txt に出力しました(エラー:0件、警告:43件、INFO:0件)
縦書用の変換が終了しました
AozoraEpub3でEPUBに変換しています.....変換しました
kindlegen実行中................................................変換しました
kindlestrip実行中
[理不尽な孫の手] 無職転生 - 異世界行ったら本気だす -.mobi を出力しました
MOBIファイルを出力しました
ただ表示上の問題はいくつかあり、CSSスタイルが全般的に反映されていない
- 表紙のスタイルが反映されない
- 目次のスタイルが反映されない
- 前書き/後書きのスタイルが反映されない
- 濁点フォントの指定が反映されない
narou.rbの修正その2
改造版と正規版のEPUBファイルの内部構造をチェックすると、正規版はOPSフォルダ以下にスタイルを格納しているのに対し、改造版ではitem以下に格納しているという大きな差分がある。
narou.rbのコードからOPSフォルダへの処理を探すと。init.rbとnovelconverter.rbの二つのファイルでOPSフォルダに対するファイルコピーが処理されている。
init.rb 129~132行目
# ファイルコピー
src = ["AozoraEpub3.ini", "vertical_font.css"]
dst = ["AozoraEpub3.ini", "template/OPS/css_custom/vertical_font.css"]
puts "(次のファイルをコピーor上書きしました)"
novelconverter.rb 88~89行目
DAKUTEN_FROM = ["vertical_font_with_dakuten.css", "DMincho.ttf"]
DAKUTEN_TO = ["template/OPS/css_custom/vertical_font.css", "template/OPS/fonts/DMincho.ttf"]
ひとまず短絡的にOPSの指定をitemへ変更し変換を実行する
結果
-
表紙のスタイルが反映されない -> 改善なし
これはコピー先を修正しても変化がなく、正規版を使用した場合のスタイルを確認するとtitle.xhtmlにstyleタグで直接書き込まれているタイプのようで変化無し -
目次のスタイルが反映されない -> 改善無し
これもコピー先修正では変化がなく、表紙同様にnav.xhtmlのstyle指定が期待通りになっていない。具体的に書くと正規版ではli要素にclass="chapter"と指定されたclass情報が改造版では無い。 -
前書き/後書きのスタイルが反映されない -> 改善無し
このケースではvertical_font.cssが適用されることを期待したのですが、改造版のスタイル情報を参照するとvertical_font.cssはEPUBファイルに同梱されず、参照ファイルにも該当していない。なのでこの処理についてはAozoraEpub3側の処理をチェックする必要あり -
濁点フォント指定が反映されない -> 改善なし
この処理のチェックは、default.enable_dakuten_fontをはいへ設定した状態で n5115cq を変換対象として使用した。結果は以下の通りコピー先のディレクトリが存在しないことで変換時のエラーとなった。
単純にAozoraEpub3側へフォルダーを作ればエラーが解消されそうなだが、narou.rbが想定するCSSスタイルが反映さない問題を解消しないとここだけ解消しても意味がないかも
縦書用の変換が終了しました
C:/Ruby33-x64/lib/ruby/3.3.0/fileutils.rb:2279:in `initialize': No such file or directory @ rb_sysopen - C:/AozoraEpub3/template/item/fonts/DMincho.ttf (Errno::ENOENT)
from C:/Ruby33-x64/lib/ruby/3.3.0/fileutils.rb:2279:in `open'
from C:/Ruby33-x64/lib/ruby/3.3.0/fileutils.rb:2279:in `block in copy_file'
結論
装飾を気にせずテキストがある程度読めるだけでいいという場合、JDK21を使用する場合の修正を反映すれば利用可能。ただ微妙に寂しい感じの見栄えになるのでそれぞれの要因を改めて探して修正手段を考えてみたいと思う。