Kindle mobi形式サンプルとKindle 専用のEPUBと一般のEPUBの相違点(リフロー型の場合)

CAS-UB V2.1でKindle正式対応しましたので、サンプルページのブログ記事EPUB版にKindle形式を追加しました。

CAS-UB Sampleの3.3 CAS-SUPPORTブログ記事のEPUB版-2012年11月のブログの項にあります。

簡単に相違点を説明します。

1.EPUB3形式は一般のEPUB3リーダ向けとなります。
2.mobi形式は次のKindle専用EPUB形式をKindlegenでmobi形式に変換した結果となります。
3.Kindle専用EPUB形式は、Kindle専用に最適化(特殊化という方が適切かもしれません)したEPUBです。

標準のEPUB3とKindle用のEPUBの相違点は次の通りです。

1.カバー画像の登録
(1)標準のEPUB3:
・manifest に登録:<item href="cover.png" id="idcoverpng" media-type="image/png" properties="cover-image"/>
なお、metaにもカバー画像を登録していますが、これはEPUB2リーダ用のためなのでEPUB3では意味がありません。

(2)Kindle専用EPUB形式: 
・metaに登録: <meta content="idcoverpng" name="cover"/>
・manifest に登録:<item href="cover.png" id="idcoverpng" media-type="image/png"/>

2.カバーページ
(1)標準のEPUB3: 
・cover.htmlを出力、そのimg要素にcover.jpegを指定する。cover.htmlをmanifestとspineに登録する。

※カバーページはnavやncxには登録していません。通常の書籍では目次に表紙は登録しないのでその類推からです。

(2)Kindle専用EPUB形式: 
・cover.htmlは出力しない。Kindleは、カバー画像として登録した画像を表紙として扱うため。

3.目次
(1)標準のEPUB3: 
・nav.htmlを出力し、manifestに次のように登録:<item href="nav.html" id="nav" media-type="application/xhtml+xml" properties="nav"/>
なお、ncxも出力していますが、これはEPUB2リーダ用に互換にするためですので、EPUB3では意味はありません。

(2)Kindle専用EPUB形式: 
・EPUB2形式の論理目次toc.ncxを生成する。
・・manfestに登録:<item href="toc.ncx" id="ncx" media-type="application/x-dtbncx+xml"/>
・・spineに登録:<spine toc="ncx">
・HTML形式の目次toc.htmlを生成する。
・・manifestに登録:<item href="toc.html" id="toc" media-type="application/xhtml+xml"/>
・・spineに登録:<itemref idref="toc"/>
・・toc.htmlをguideに登録:<guide><reference href="toc.html" title="Table of Contents" type="toc"/><reference href="cover.png" title="Cover Image" type="cover"/></guide>

Kindle専用EPUBをKindlegenでmobiに変換したときの、ログは次の通りです。CSSにKindleでサポートしていないプロパティを設定しているという警告がありますが、それを除くと警告・エラーはありません。

—ここから—

*********************************************************
Amazon.com kindlegen(Linux) V2.7 build 1019-d6e4792
コマンドライン電子書籍コンパイラ
Copyright Amazon.com 2012
*********************************************************

情報(prcgen):I1047: metadata が追加されました dc:Title “CAS-SUPPORT ブログ 2012年11月分”
情報(prcgen):I1047: metadata が追加されました dc:Date “2012-12-22”
情報(prcgen):I1047: metadata が追加されました dc:Creator “CAS-SUPPORT”
情報(cssparser):I10004: @import、@charset、および @font-face 以外のアットルールはサポートされていません。
情報(prcgen):I1002: ファイルを解析 0000011
警告(htmlprocessor):W28003: コンテンツの CSS プロパティに指定された値は Kindle リーダーではサポートされていません。プロパティの使用方法については、Kindle 出版ガイドラインをご参照ください: ‘position: relative’ ファイル内で:/tmp/mobi-2zYgdk/OEBPS/themes/normal-serif/common.css
警告(htmlprocessor):W28003: コンテンツの CSS プロパティに指定された値は Kindle リーダーではサポートされていません。プロパティの使用方法については、Kindle 出版ガイドラインをご参照ください: ‘position: absolute’ ファイル内で:/tmp/mobi-2zYgdk/OEBPS/themes/normal-serif/common.css
警告(htmlprocessor):W28001: コンテンツで指定された CSS スタイルは Kindle リーダーではサポートされていません。CSS プロパティの削除: ‘max-width’ ファイル内で:/tmp/mobi-2zYgdk/OEBPS/themes/normal-serif/common.css
情報(prcgen):I1015: PRC ファイルを構築します
情報(prcgen):I1006: ハイパーリンクを解決します
情報(prcgen):I1008: 読書開始位置を解決します
情報(prcgen):I1049: 目次を構築します URL:/tmp/mobi-2zYgdk/OEBPS/toc.ncx
情報(pagemap):I8000: 本の中にページマップが見つかりません
情報(prcgen):I1045: 本で使用されている UNICODE の範囲を計算しています
情報(prcgen):I1046: UNICODE の範囲が見つかりました: Basic Latin [20..7E]
情報(prcgen):I1046: UNICODE の範囲が見つかりました: Katakana [30A0..30FF]
情報(prcgen):I1046: UNICODE の範囲が見つかりました: Hiragana [3040..309F]
情報(prcgen):I1046: UNICODE の範囲が見つかりました: CJK Unified Ideographs [4E00..9FFF]
情報(prcgen):I1046: UNICODE の範囲が見つかりました: General Punctuation – other than Windows 1252 [2015..2017]
情報(prcgen):I1046: UNICODE の範囲が見つかりました: Chinese, Japanese, and Korean (CJK) Symbols and Punctuation [3000..303F]
情報(prcgen):I1046: UNICODE の範囲が見つかりました: Halfwidth and Fullwidth Forms [FF00..FFEF]
情報(prcgen):I1046: UNICODE の範囲が見つかりました: Geometric Shapes [25A0..25FF]
情報(prcgen):I1046: UNICODE の範囲が見つかりました: Arrows [2190..21FF]
情報(prcgen):I1046: UNICODE の範囲が見つかりました: Enclosed Alphanumerics [2460..24FF]
情報(prcgen):I1017: PRC ファイルを構築、カウントを記録します: 0000011
情報(prcgen):I1039: 最終的な統計情報 – テキストは以下に圧縮されました(元のサイズの%): 49.12%
情報(prcgen):I1040: 文書の識別子は以下の通りです: “CAS-SUPPORT_WTK_2012A11MQ”
情報(prcgen):I1041: ファイルフォーマットのバージョンは V 6
情報(prcgen):I1031: PRC ファイルを保存します
情報(prcgen):I1032: PRC が正常に構築されました
情報(prcgen):I1016: 強化 PRC ファイルを構築します
情報(prcgen):I1007: mediaidlinks を解決します
情報(prcgen):I1011: mediaidlinks を書き込みます
情報(prcgen):I1009: ガイド項目を解決します
情報(prcgen):I1046: UNICODE の範囲が見つかりました: General Punctuation – Windows 1252 [2013..2014]
情報(prcgen):I1046: UNICODE の範囲が見つかりました: Basic Greek [370..3FF]
情報(prcgen):I1017: PRC ファイルを構築、カウントを記録します: 0000020
情報(prcgen):I1039: 最終的な統計情報 – テキストは以下に圧縮されました(元のサイズの%): 49.79%
情報(prcgen):I1041: ファイルフォーマットのバージョンは V 8
情報(prcgen):I15000: おおよその標準 Mobi 送信可能ファイルサイズ: 0000455KB
情報(prcgen):I15001: おおよその KF8 配信可能ファイルサイズ: 0000475KB
情報(prcgen):I1036: mobi ファイルが正常に構築されました
—ここまで—

※疑問点

◎これで良いはずなのですが疑問が一つあります:Kindle paperwhiteの「移動」メニューに「目次」へのリンクが表示されません

19日のJEPAにおける説明会でも、目次へのリンクメニューから目次ページに飛べるようにするには、opfのguideにtocを追加すればよいとあります。また説明会の後、アマゾンの方にお聞きしたところ、目次ページ(toc.html)へのリンクは、guideにあれば、ncxに登録しなくても自動的に作られるとのことです。アマゾンの説明とPaperwhiteの挙動が食い違っているように思います。

ということで、またまた嵌っている・・・

何か、間違いがあるのでしょうか?ご存知の方ぜひお教えください。

◎そうそう、もうひとつ思い出しました。

アマゾンの資料には、目次(toc.html)はspineの先頭におくようにと書かれています。で、いまは、その通り先頭においているのですが、目次が先頭で本当に良いんだろうか?

普通の本は、扉や前付けの後ろに目次を置くのですが・・・

◎Kindlegenが出す、「本の中にページマップが見つかりません」というメッセージについては、アマゾンの「Kindle Publishing Guidelines」(Version 2012.4)には説明がありません。悩んでいる人が多いようです。どうも、page-mapはアドビの独自機能で、非標準。ページ番号とEPUBの記事の対応付けをするためのXML形式らしいです。

Kindlegenの奇妙な動作に、再び、はまる―表紙画像が表示されないのはなぜ?

CAS-UBの12月20日Kindle mobi形式正式サポートの機能をチェックしていて、またまたKindlegenの奇妙な動作にはまってしまいました。

CAS-UBの12月20日版ではカバー(表紙)画像について、ユーザーが画像ファイルを指定していないとき、システムが扉(タイトルページ)から自動生成する機能を用意します。そして、そのカバー画像をKindleのカバー画像として登録します。

しかし、うまく登録できないように見えることがあります。次の図をご覧ください。同じようなタイトルページから自動生成したカバー画像をもつふたつのEPUBファイルをKindelgenでmobiに変換し、二つのmobiファイルをKindle Paperwhiteのドキュメント一覧で見たものです。

・テストデータ
ロゴがないmobiファイル
ロゴがあるmobiファイル

右は、カバー画像が見えますが、左はカバー画像がない状態(Kindleが自動的に作った画像)となっています。

なぜなのかなあ?

変換する前の、ふたつのEPUBファイルのカバー画像の相違は、一方は、EPUBファイル内に発行所ロゴがないため、タイトルページから画像を生成するときにブロークンイメージになっているもの、他方は発行所ロゴが正しくはいっているものです。

Kindelgenでmobiに変換する前のEPUB3をiBooks3で見ますと次のようになります。EPUB3の状態では、二つのカバー画像の相違点は、ロゴがあるかどうかのみです。

・テストデータ
ロゴがないEPUB3
ロゴがあるEPUB3

変換元のEPUBに入っている画像ファイルは、いずれも、600×800ピクセルのPNGです。ロゴがないほうはファイルサイズ4.54KB、ロゴがある方はファイルサイズ24.3KBという相違です。

わずかな相違にみえるのですが、Kindlegenで変換したmobi形式を解凍してみますと、なぜか、まったく異なります。

・ロゴがないほうの変換結果(mobi8のフォルダー下のimageフォルダー)

・ロゴがあるほうの変換結果(mobi8のフォルダー下のimageフォルダー)

・600×800ピクセルのPNGが一方はGIFになり、他方はJPEGになっています。
・両方とも180×240ピクセルのサムネイル画像(JPEG)ができています。

ということで次のような疑問が沸きます。

(1) PNGからGIFまたはJPEGに変換する使い分けはどうなっているんだろう?
(2) ロゴがないほうもサムネイル画像ができているのに、Paperwhiteのドキュメント一覧でカバー画像が表示されないのはなぜ?

(1) はKindlegenが画像をGIFにしようが、JPEGにしようが別に好きなようにやって構わない、要はきちんと表示できればそれで良い、といえば終わりですが、問題は(2)です。
(2) はPaperwhiteのバグではないかと思うのですが・・・