Open happynow opened 8 months ago
下記の案をもとに修正してPRしてみました。#420
下記のようにメインの book-style.css
の最後に Narou.rb のCSSファイルの内容を追記する。
こうすれば Narou.rb のスタイル定義が最後になり同じセレクタなら優先的に使われる。
book-style.css
@charset "UTF-8";
@import "style-reset.css";
@import "style-standard.css";
@import "style-advance.css";
@import "aozora.css";
@import "font.css";
@import "text.css";
‥ Aozora のスタイル定義 ‥
/*** [START] Narou.rb embedded custom style ***/
‥ Narou.rb のスタイル定義を追記 ‥
/*** [END] Narou.rb embedded custom style ***/
また追記方式なら、Aozoraが資材を改訂してもNarou.rbの資材をそのまま使える可能性が高くなる。
現行でも chuki_tag.txt
は追記で更新している。
リクエスト内容だと初期状態でstyle_customがないのでエラーが発生してました。 ディレクトリ作成でエラー解消されるので、style_customが無ければディレクトリ作成する処理追加で問題ないんじゃないかと
コードは適当なのですがディレクトリ判定して、無ければ作成してから渡すといいのかな?と def self.get_custom_file_path(file_path) puts "IN: self.get_custom_file_path" custom_file_path = File.join(File.dirname(file_path) + "_custom") unless File.directory?(custom_file_path) FileUtils.mkdir_p(custom_file_path) end File.join(File.dirname(file_path) + "_custom", File.basename(file_path)) end
@kokotaro ご指摘ありがとうございます。恥ずかしいバグでした。
修正案は少し変更させて頂きました。
FileUtils.mkdir_p
は対象ディレクトリが存在しても実行できるので、ディレクトリ存在チェックは取り除きました。
https://github.com/whiteleaf7/narou/pull/420/commits/de425147a0b12dcbfac538ca5a2e37cb711fff8e
でコミットしました。
かなり間が空きましたが、happynowさんのも参考に変更範囲の小さな実装を作りました。 色々迷いましたが、昨日も掲示板で出てましたし、近々prしようと思います。ただ、後述の様にCSSが悩みどころで、どうしたものかと思ってます。
happynowさんの実装は、CSS書き換えのロジック変更がマイナーバージョンでの変更にしては大きかったかもしれません。 しかし、将来のメジャーバージョンアップの際には良いアイデアと思いますし、その時はAozoraEpub3等に関わる部分をaozoraepub3.rbに集約出来ると良いと思います。
AozoraEpub3が電書協準拠になったものの、style/text.vm においてゴシック体、太字、斜体のクラス名が古いままです。 この影響でAozoraEpub3の太字をゴシックにするオプションが効いてない気がしますが、narou.rbでは、このオプションがない時代に太字がゴシックになるようにしていたのだろうと思います。 これをAozoraEpub3の方で対処するのか、narou.rbで強制的にゴシックにするか。
電書協版だとCSSファイルが縦書き横書き共用ですが、元が縦書き専用なので縦書き設定がありません。 これについて、とりあえず入れておくか、細かい調整も含め後で別途issueかprでやるべきか。
happynowさんのも意図が掴みかねて採用してない部分も多々あります。 narou.rbの書式に合わせたのか、AozoraEpub3のバグ対応なのか、リーダーの癖に合わせたのか、好みなのか。 やりだすとキリがなさそうなので、別途にしたい。
微調整箇所かな? 個人的に把握しているCSS周りの差異は以下 (3.8.2時代なので解消されてるのもあるかも
個人的には3->1->4->2の順で似た見た目になると読みやすいと感じています。
太字をゴシックにするかどうか 従来AozoraEpub3で変換していたのであれば、narou側で渡し方を修正するほうがいいのかなと思っていますが、正直問題箇所を把握できてないので的外れコメントかもです。
縦書き用設定 これ改造版を使用している上で上記に書いた未反映以外は特別気になっていないので、微調整と合わせてIssue切る感じですかね
1. 表紙のスタイルが反映されない 2. 目次のスタイルが反映されない
確認してみましたが、電書協対応で変更したスタイルに AozoraEpub3 が対応出来てないための様です。 出来れば AozoraEpub3 側で対処したいところです。
3. 前書き/後書きのスタイルが反映されない 4. 濁点フォントの指定が反映されない
これは治るはず。
@rogenobl いつも有難うございます。長く保守を続けるのは大変なことだと思います。 本件も対応ありがとうございました。 ただ申し訳ありませんが、いま私の手元に開発環境がなく修正箇所を確認できません。 本issue、クローズすべきタイミングで、その旨お伝えください。
状況整理
AozoraEpub3(以下、Aozora)の改造版は、電書協の制作ガイドに準拠するため、 バージョン 1.1.1 からepubファイル^1とそのテンプレートのディレクトリ構成を変更した。
Narou.rb でこの新しい改造版を使うと CSS やフォントを Aozora 側にコピーする際、 コピー先のディレクトリがなくてエラーが発生。 その後、プログラムが改修されエラーは出なくなったものの、 コピー先のパスが正しくないため、新しい改造版では Narou.rb の CSS が反映されなかった。
AozoraEpub3 の仕様
カスタムテンプレートのパス
本家も改造版もカスタムテンプレートファイルは下記のようなパスに配置する必要がある(フォントファイルは除く)
"_custom"
例 オリジナルのテンプレートファイルのパスが
C:/AozoraEpub3-1.1.1b22Q/template/item/style/aozora.css
であれば、カスタムテンプレートのパスはC:/AozoraEpub3-1.1.1b22Q/template/item/style_custom/aozora.css
になる(参考)AozoraEpub3 でカスタムテンプレートを処理してる箇所 Epub3Writer.java#L402-L406
CSS のインポート構成について[^2]
・電書協フォーマットに対応した改造版には
book-style.css
というメインのCSSがある。 ・他の CSS はこのbook-style.css
に@import
文で取り込まれる ・作品の本文HTMLはbook-style.css
だけをリンクする[^2]: 「電書協 EPUB 3 制作ガイド ver.1.1.3」76ページにも記載がある。 http://ebpaj.jp/counsel/guide よりダウロード可能。