KindleGen のSVG変換 奇妙な動作にはまる


CAS-UBで作成したEPUBをKindleGen[1]でmobi形式に変換する処理の確認をしていたところ、Kindle Paperwhiteで表示されない画像があることに気がつきました。

何が起きているか、DRMのかかっていないmobiファイルをアンパックするツールMobi_unpack[2]を使って調べてみました。

結果を整理すると、次のようになります。

1.KindleGenでEPUBからmobiに変換すると、出来上がったmobiファイルの中には、mobi7とmobi8(KF8)形式の両方がひとつにパックされています。

画像について次のような処理を行なっています。
2.JEPGはそのまま両方にコピー

3.PNGはGIF形式に変換して、両方にコピー

4.問題はSVGです。もとのEPUBでは、SVGを<img src="SVGファイルへのパス" …/>として外部オブジェクトとして指定しており、SVGファイルの実体はimagesフォルダの中にあります。これをKindleGenで変換すると次のようになります。
(1)mobi7ではSVGがすべて削除されてしまいます。つまり古いKindleではSVGはまったく表示できないということになります。
(2)mobi8の中をみますと、EPUBと同じ方式でそのままコピーされているケースと、<p><svg xml…>….</svg></p>のように埋め込みになってしまうケースの2種類があります。そして、埋め込みにされたSVGがKindle Paperwhiteで表示できません。

5.そのまま複製されるSVGと埋め込み処理されてしまうSVGに、SVGの仕様からみて何かの違いがあるか、ということを調べたのですが、いまのところまったく相違点がわかっていません。

たとえば、次の二つのSVGファイル(ok.svgとng.svg)ですが、ok.svgは表示できますが、ng.svgは表示できません。この二つのSVGファイルは、ok.svg の途中に <!– xxxxx –>を入れて保存したのがng.svgです。コメントを一つ挿入しただけで表示できなくなってしまう、というわけです。

●データ 
a. ok.svg
b. ng.svg
c. EPUB3
d. mobi

KindleGenのバグではないかと思いますが、どうなんでしょうか。

[1] Kindlegen Windows版・バージョン2.7を使用
[2] Movi_unpack

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA値として計算に合う値を入力してください。 *