EPUB開発ノート

某ブログサービスのEPUB書き出し機能についてのメモ。非公式。

はい、久々の更新です。

目次の階層化に対応しました。

階層化の方法についてはいろいろ検討したんですが(カテゴリを使うとか、見出しタグを使うとか)、カテゴリとかはもう使ってたりするし、シンプルに今ある記事を階層構造にするには―と考えて、HTMLのコメントタグを使うことにしました。

<!--epubChapter-->

こいつを記事内に入れると階層の親にすることができます。

2階層までです。できれば3階層にしたかったんですが、予想以上に複雑になってしまい断念。

タイトルだけにして章扉ページみたいに使えるので、それっぽいCSSを当てようかとも思ったんですが、普通に記事を書くこともできるので現状のまま。うまい具合にカスタマイズできればいいんだけどなー。

. . .

同時に、潜んでいたバグを修正しました。

目次を表示しない設定にすると、EPUB的にinvalidな状態になっていました。そのため、iBookstoreにアップできないという問題があったようです。
関係者の方にはご迷惑をお掛けしました。。。m(_ _)m

    このエントリーをはてなブックマークに追加

EPUBのスタイルやメタデータなど細かい修正をするときに、修正して圧縮して確認して→編集して圧縮して...って超絶めんどくさい。
特にiBooksではdc:identifierが同じ値だと同じ本として扱われるので、検証する場合にはいちいち書き換えて圧縮・転送しないといけない。そしてよく変えるのを忘れる。

というわけで、そんな時はBBEditというエディタが便利です。
海外で人気のエディタですが、こいつはアーカイブファイルを解凍せずそのまま中にあるテキストファイルを編集できます。

最近知りました。超便利。 

ちなみにMac限定です。他にこういうことができるまともなアプリが見つかりませんでした。知ってたら教えてください。 
    このエントリーをはてなブックマークに追加

header要素の入ったEPUBをKindleGenでmobiにすると

<header>
<h1>記事タイトル</h1>
</header>

これが

<header>
</header><h1>記事タイトル</h1>

こうなる...

パブリッシング・ガイドラインの対応タグリストにもheader要素はあるし、KindleGenのバグですかね?

    このエントリーをはてなブックマークに追加

ちょっと時間があいてしまいましたが、書いておいたほうがいいと思うのでメモ。

先日@ろすさんにお会いした時に、内心ドヤ顔気味に「固定レイアウトはSVGで書きましたよー」って言ったら、「あーSVGはiOS版Kindleでダウンロードできないんすよー」と言われて冷や汗をかいたのですが、その後検証したところダウンロードは問題なくできるようです。たぶん。特に不具合の報告もないし大丈夫なはず...!

ただ、いくつかハマったところが。

Kindle Paperwhiteで縦横比がおかしくなる

Kindle Paperwhiteで表示した場合、画像が画面いっぱいに表示されて縦横比がおかしくなる。Previewerの表示とも違う。 実機での確認が必要(iOS版も!)なので、サイズ指定やメタタグなどいろいろ条件を変えたファイルをKDPで出版、約1日待って検証という作業を数回繰り返すもと散々悩んだんですが、原因はkindleの スクリーンフィットという機能だったようです。なぜかONになっていた。。。デフォルトではOFFのようなので解決。

iPadで下と横に余白ができている

iPadに転送して見ると下と横に余白ができている。たぶん小さい画像が小さいままになっている。image要素のwidthとheightで指定してるんだけど効いてないっぽい。CSSで指定すると効いた。解決。

Kindle Paperwhiteで白地部分がトリミングされる

これが未解決なんですが、Kindle Paperwhiteでどうも画像の白い部分がトリミングされてしまう模様。

denchu
電柱幻想(なかせよしみ・著)

左がファイルから取り出した元画像。右が購入した書籍のKindlePWでのキャプチャ。
これなんかはまだいいが、こういう目次画像なんかだと、

mokuji
©ブラックジャックによろしく 佐藤秀峰

こうなる。
左が元画像、右がキャプチャ。
どうも他の本でもこうなってるっぽい。ということは現状解決策はないのかな。。。


    このエントリーをはてなブックマークに追加

追記:
こちらろすさんに助けてもらって解決。(まあちょっと期待してたわけですがw)
オチとしてはxhtmlファイルにviewportの指定が抜けてました。
ちゃんと電書ちゃんにも書いてあるし!
.opfには書いてたんだけど、全部のファイルに必要だった。 ありがとうございます!


写真 07-03-2013 20 24 15

固定レイアウト試作初号ファイルをiBooksで見たらこの有様だよ!

結論から言うと、.opfに書く固定レイアウト指定

<meta property="rendition:layout">pre-paginated</meta>

こいつがあるとこうなってしまうらしい。

package要素の prefix="rendition: http://www.idpf.org/vocab/rendition/#" と両方、もしくはどちらかを削除したら直った。

さらに、iBooksで固定レイアウトを有効にする META-INF/com.apple.ibooks.display-options.xml ファイル(<option name="fixed-layout">true</option>って書くやつね)、これがある場合もこうなってしまうっぽい。(このxmlファイルでの指定はもう要らなくなったとは聞いたけど。)

でもこういう風に表示が変わるってことは(悪い方向にだけど)効いてるってわけで、何か他に必要な指定とかあるんだろうか?

うーん、EPUBですべてのデバイスという夢は遠いな...

参考:

しかし、EPUBの実践に即した情報ってホント少ないなぁ...

    このエントリーをはてなブックマークに追加

koboで個人出版できるKobo Writing Life。つまりKDPのkobo版。

epubやmobiを上げようと何度試してもうまくいかない。

基本的なやりかたはこちら↓を参照。

アップロードまではいけるんだけど、その後の変換でコケるらしく、↓のエラー。

a14c67928d1953cd0e4e2505fb4451f8
Please try again

An error occurred during conversion. Ensure the file conforms to the requirements outlined in the user guide. If you continue to see this issue, please email writinglife@kobo.com for conversion support.

試したファイルはmobiとepub。EPUB3には対応してないので、ブログから書き出したEPUBをmobiに変換してアップしたり、いろいろ配布されてるEPUB2やmobiを上げたりしてみたけど全滅。wordファイルならうまくいくっぽい。

エラーメッセージにメールしろって書いてあるので英語できる人に頼んでメールしてみたら このガイドライン嫁って返事しかこなかった。でもこれってLibreOfficeでdocsから作る方法しか書いてないよねぇ...

というわけで解決策キボン。もしくははっきり今はできないってわかれば諦めがつくんだけど。
    このエントリーをはてなブックマークに追加

EPUB 第21回 楽天kobo向けEPUB3コンテンツ制作説明会 * - epubcafé

  • 2011年8月 Rabooオープン、同年koboを買収
  • RabooはXMDF/.book, koboはEPUB。EPUBフォーマットに一本化。
  • その結果→Raboo終了
  • 2012年7月 koboストアオープン

楽天koboコンテンツ制作ガイド

  • EPUB2とEPUB3の違い

    • 日本向けkoboはEPUB3
    • 日本ではEPUB2は普及しなかったのであまり認知されていない
    • 目次形式が違う(ncx)、縦書きルビフォントなどの違い
    • EPUB3の仕様、HTML/XHTMLの説明、表紙画像の指定方法
  • OPFにおける注意点

    • dc:creator, dc:publisherはできれば入れた方がいい
    • dc:identifierのおすすめ順
      • eISBN(電子書籍向けのISBN)
      • kobo向け商品番号
      • JP-eコード
      • UUID(なんのIDなのかがわからないのであまりおすすめできない)
      • pISBN
    • UUIDには仕様があるので注意
      • エラーがあるとkoboストアで弾かれる
    • dc:languageはjaを指定する
      • 日本語のフォントがあたらなかったりいろいろおかしくなったりする
      • ja-JPはよくない
    • spineにはpage-progression-directionを指定する(右綴じ左綴じ)
    • spine の linear属性について
      • 現在koboビューワーではlinear=“no”でも表示される
      • 将来的に直す予定
  • 目次の作り方

    • EPUB3仕様ではli要素内にa,span要素のみ格納可能
      • koboではspan要素は表示されない
      • ルビなどの表示されない
    • ページ内リンクは避ける(特に縦書き時)
      • トラブルが多い
  • 組版表現Tips

    • 縦書時の左右中央配置の方法
      • 横書きhtmlに縦書きdivを入れる
      • 文章量が多いと改ページされない場合がある
      • 基本的に文章量が多い場合は使わない
    • 縦書divと横書きdivにdir属性を指定する
    • 傍線はborder-rightをおすすめ
      • うまく表示されない場合がある
      • 電書協ガイドではoverline推奨
      • webkitのバグ?
    • 長すぎるルビは見切れることがある
  • 固定レイアウトの礼儀

    • 固定レイアウトについてはkobo独自仕様はほとんどない
    • 最新版のIDPF仕様(2012.03.13)に準拠する
      • http://idpf.org/epub/fxl/
    • com.kobobooks.display-options.xmlもあったがもう不要
    • 見開きにした時に左右どっちにするかを必ず指定(page-spread-right/left)
    • svgタグで囲む(電書協ガイドに沿う)
    • クリッカブルマップの時にsvgで囲んであると相対的な値になる
    • 画像サイズはできるだけ揃える
      • 正しく表示されない場合がある
    • 大きすぎる画像は控える
      • 大きすぎる画像を縮小表示すると汚くなる、動作が重くなる
    • 固定レイアウトにリフローを混ぜない
  • kobo向けの推奨指定

    • 電書協ガイドに従う
    • 緊デジ版テンプレートは電書協ガイドに準拠(CSSを簡略化している)
    • margin:0 を推奨
    • テキストブロックにinline-blockは使わない
    • 画像のみのページに画像にリンクを貼らない
      • 次ページに移動しようとしてフリックではなくタップした場合、リンク先に遷移してしまう
    • EPUBには元々目次機能があるので、目次に戻るみたいなリンクは要らない
    • line-heightの推奨値は1.75em
      • 1.5em以下の場合ページ区切りが正しく判断されず文字が見切れる場合がある
    • フォントの指定を必ずする
      • koboでは欧米のフォントが選択される場合がある
      • 明朝:font-family: serif, sans-serif;
      • ゴシック:font-family: sans-serif, serif;でOK
    • 画像の配置
      • 文字の回りこみをしない
      • 画像はブロック要素で囲む
      • 画像の周りにはマージンをとる
      • 画像の推奨サイズは長編1000〜1200px
        • タブレット端末での表示前提であれば1600pxとか
    • 画像の種類
      • jpg or png
        • gifはいまいち
      • 色空間はRGB
      • モノクロ端末に配慮する
  • Koboにおける制約事項

    • 画像のサイズ(解像度)の制約
      • 最大ピクセル数:3,145,728px
      • 2048x1536はOK, 2000x2000はNG
    • EPUB3の仕様にあるがkoboで未対応のもの
      • 段組
      • フォントの埋め込み
      • WOFF/SVGフォント
      • 動画・音声の再生
      • テキスト読み上げ
      • MathML
      • Media Overlays / SMIL
      • Javascript(一部のみ)
    • 組版表現として未対応のもの
      • 熟語ルビ
      • 行末禁則(追い込み、ぶら下がり)
      • ルビの配置
      • 行揃え(強制割付)
    • 改ページ
      • XHTMLファイルが変わると必ず改ページされる
        • 無効にする方法はない
      • E-Inkのkoboではpage-break-after/beforeが機能しない
        • Android OSのKoboビューワーでは機能する
    • .kepub.epub という拡張子について
      • .epub はAdobe DRM向け、.kepub.epubは日本語EPUB3向け
  • EPUBファイルの検証

    • koboビューワーはReadiumの挙動に近い

標準化動向

  • IDPF EPUB Working Group
    • マイナーアップデートの検討(PUB3.0.1?)
    • FXL 固定レイアウト(EPUB3の追加仕様として)
    • FXL Extensions(固定レイアウトの拡張)
    • AHL (固定レイアウト関連・コマごとにジャンプするとか)
    • IDX
    • DICT
  • 各仕様の策定状況の説明

質疑応答

  • EPUBはフォーマットを定めるだけで表示までは定めていない
    • 表示はRS次第
  • UUID/UID
    • 同一のファイルかどうかを見るためにIDは見ていない
    • ファイル名で管理している
    • koboにアップするときは「ISBN(13桁).epub」というファイル名で。
  • 画像サイズの問題
    • 画像は原寸で入れるべき?適切な画像サイズは?
    • 端末が様々なので「原寸」といってもいろいろ。
    • 基本的にはどんな画面でもいっぱいに表示できるように作る。
    • 大きい方に合わせればできることはできるが、容量の問題がでてくる。
    • 現状ひとつのEPUBですべての端末で美しく見せることは難しい。
    • E-Ink7インチ以下のデバイスと、タブレットデバイスの2種類くらいには最適化するべきか
    • 小さい方1200くらい、大きい方1600~2000くらい?
    • 画像の自動変換とか(できればいいな)
  • 固定レイアウトにテキストを入れると不具合が出る場合がある
    • リフロー・固定の混在はNG
    • リフローページ・固定ページの混在がNGなのか、固定ページにテキストを入れるのがNGなのかはっきりしなかった。
    このエントリーをはてなブックマークに追加

昨日からファイル内のmetaにシステムのバージョンが入るようになってます。

今日の修正(ver20130227.1)で改ページ用のスタイルを追加。class名などは電書協EPUB 3 制作ガイドを参考に作成。

指定したブロックの直後で改ページ .pagebreak
指定したブロックの直前で改ページ .pagebreak-before
指定したブロックの前後で改ページ .pagebreak-both
任意の場所で改ページ hr.pagebreak

こんな感じ。

pやdivで囲ってclass入れるとか難しいだろうなーと思って、改ページしたい場所にタグを入れるだけでいいようにhrを非表示にして改ページできるようにしてみた。hrでいいのか迷ったけどまあいいでしょ。きっと。

hrを消すのは最初display:noneでいけるかなーと思ったんだけど、
ADE(Adobe Digital Editions)ではdisplay:noneが効かない。改ページは効いてる。
Kindle Previewerでは非表示になって改ページも効く。期待通りの動作。
iBooksではhrが消えて改ページも効かない。CSS的にはこの動作が正しいのかな。
というわけでvisibility: hidden;にしてみた。指定してあるのはこんなコード。

.pagebreak {
  page-break-after: always;
}
.pagebreak-before {
  page-break-before: always;
}
.pagebreak-both {
  page-break-before: always;
  page-break-after: always;
}
hr.pagebreak {
  border: 0;
  height: 0;
  visibility: hidden;
}
試したらvisibility:hidden、border:0、height:0どれか1つだけでも消えてくれたんだけど、まあ念のため。
    このエントリーをはてなブックマークに追加