Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

バージョン 1.1.1 以降のAozoraEpub3改造版に Narou.rb の CSS が適用されない #419

Open
happynow opened this issue Feb 20, 2024 · 7 comments

Comments

@happynow
Copy link
Contributor

状況整理

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 だけをリンクする

book-style.css …… 本文HTMLが取り込むCSS
  │
  ├─ style-reset.css …… book-style.css にインポートされるCSS
  ├─ style-standard.css …… 〃
  ├─ style-advance.css …… 〃
  ├─ aozora.css ………〃
  ├─ font.css ………〃
  └─ text.css ………〃

Footnotes

  1. epubファイルは拡張子がepubなだけで実体はzipファイル、そのzipファイル内のディレクトリ構成が変更された。

  2. 「電書協 EPUB 3 制作ガイド ver.1.1.3」76ページにも記載がある。 http://ebpaj.jp/counsel/guide よりダウロード可能。

@happynow
Copy link
Contributor Author

下記の案をもとに修正して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 は追記で更新している。

@kokotaro
Copy link

リクエスト内容だと初期状態で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

@happynow
Copy link
Contributor Author

@kokotaro ご指摘ありがとうございます。恥ずかしいバグでした。
修正案は少し変更させて頂きました。
FileUtils.mkdir_p は対象ディレクトリが存在しても実行できるので、ディレクトリ存在チェックは取り除きました。
de42514
でコミットしました。

@rogenobl
Copy link
Contributor

かなり間が空きましたが、happynowさんのも参考に変更範囲の小さな実装を作りました。
色々迷いましたが、昨日も掲示板で出てましたし、近々prしようと思います。ただ、後述の様にCSSが悩みどころで、どうしたものかと思ってます。

happynowさんの実装は、CSS書き換えのロジック変更がマイナーバージョンでの変更にしては大きかったかもしれません。
しかし、将来のメジャーバージョンアップの際には良いアイデアと思いますし、その時はAozoraEpub3等に関わる部分をaozoraepub3.rbに集約出来ると良いと思います。

以下、CSSについての検討事項

太字をゴシックにするかどうか

AozoraEpub3が電書協準拠になったものの、style/text.vm においてゴシック体、太字、斜体のクラス名が古いままです。
この影響でAozoraEpub3の太字をゴシックにするオプションが効いてない気がしますが、narou.rbでは、このオプションがない時代に太字がゴシックになるようにしていたのだろうと思います。
これをAozoraEpub3の方で対処するのか、narou.rbで強制的にゴシックにするか。

縦書き用設定

電書協版だとCSSファイルが縦書き横書き共用ですが、元が縦書き専用なので縦書き設定がありません。
これについて、とりあえず入れておくか、細かい調整も含め後で別途issueかprでやるべきか。

微調整

happynowさんのも意図が掴みかねて採用してない部分も多々あります。
narou.rbの書式に合わせたのか、AozoraEpub3のバグ対応なのか、リーダーの癖に合わせたのか、好みなのか。
やりだすとキリがなさそうなので、別途にしたい。

@kokotaro
Copy link

微調整箇所かな?
個人的に把握しているCSS周りの差異は以下 (3.8.2時代なので解消されてるのもあるかも

  1. 表紙のスタイルが反映されない
  2. 目次のスタイルが反映されない
  3. 前書き/後書きのスタイルが反映されない
  4. 濁点フォントの指定が反映されない

個人的には3->1->4->2の順で似た見た目になると読みやすいと感じています。

太字をゴシックにするかどうか
従来AozoraEpub3で変換していたのであれば、narou側で渡し方を修正するほうがいいのかなと思っていますが、正直問題箇所を把握できてないので的外れコメントかもです。

縦書き用設定
これ改造版を使用している上で上記に書いた未反映以外は特別気になっていないので、微調整と合わせてIssue切る感じですかね

@rogenobl
Copy link
Contributor

1. 表紙のスタイルが反映されない
2. 目次のスタイルが反映されない

確認してみましたが、電書協対応で変更したスタイルに AozoraEpub3 が対応出来てないための様です。
出来れば AozoraEpub3 側で対処したいところです。

3. 前書き/後書きのスタイルが反映されない
4. 濁点フォントの指定が反映されない

これは治るはず。

@happynow
Copy link
Contributor Author

@rogenobl
いつも有難うございます。長く保守を続けるのは大変なことだと思います。
本件も対応ありがとうございました。
ただ申し訳ありませんが、いま私の手元に開発環境がなく修正箇所を確認できません。
本issue、クローズすべきタイミングで、その旨お伝えください。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants