EPUBのベストプラクティス linear=”no” のこと

EPUB2のベストプラクティスに、先頭ページに表紙(カバー)画像を登録して、spine要素のitemrefにlinear=”no”を設定せよ、という、つぎのようなものがあります。

Best practices in ePub cover images

ここでは、表紙のHTMLファイルを作り、manifestに次のように設定:
<item id="cover" href="cover.html" media-type="application/xhtml+xml"/>

そしてspineに
<itemref idref="cover" linear="no"/>

と設定せよとあります。しかし、これは採用できるでしょうか?

1年半程前(2011年春)、表紙をどうしようかと思案して、EPUBリーダの挙動を調べました。
しかし、iBooks2ではlinear=”no”を指定したページを表示するが、Adobe Digital Editionsの旧バージョン(1.5だったような)では、linear=”no”を指定したページを表示しない、という挙動の相違があったため設定を見送っていました。

最近、EPUBリーダが新しくなりましたので、何か変わったかと思い、もう一度調べてみました。次のようなコードのEPUBで試してみました。

manifest:
<item href="Text/opening.html" id="idopening" media-type="application/xhtml+xml" />

spine:
<itemref idref="idopening" linear="no" /> 
(linear=”yes”版)も用意。

●linear=”no”とlinear=”yes”(既定値)とでEPUBリーダの表示を比較した表

linear="no" linear="yes"
Readium 0.5 表示しない 表示する
Adobe Digital Editions 2.0 表示する 表示する
iBooks 3.0 表示しない 表示する
Kobo 2.1.4 表示する 表示する
Kindle 2.71 表示しない 表示する

となり、やはり、EPUBリーダによって挙動がまちまちです。

先日、電流協のEPUB研究会で、このことを報告しましたところ、参加者の方から次のようなコメントをいただきました。

・linear=”no” は本文のページとして表示しない内容に対して使うもの。注釈のようなもの。順番にめくっていっても表示されない。ページとして扱わないものに設定するのだろう。

ところでEPUB3仕様におけるitemref要素のlinear属性についての説明は次の2箇所にしかありません。

3.4.13 itemref要素より抜粋

linear属性は参照された項目が主要素なのか付随要素なのかを示す。これによりRSは本体コンテンツの表示を補足コンテンツと区別するために使っても良い。後者は、例えばポップアップ・ウインドウにしたり、音声レンダリングで省略したりされるかもしれない。

3.14.12 spine要素より抜粋

RSは、spine中の先頭にある主項目(linear=”yes”)を出版物の主たる閲読順序の始まりとする。そして、spineの中の主項目を順番に可視化する。

説明もサンプルも少ないので、これでは解釈統一のしようがないように思えますね。困ったものです。

ある方からEPUB2.0では、guide機能があって、guideに登録することでlinear=”no”を指定したページにもジャンプできたが、EPUB3.0でguideが廃止されてしまったためlinear=”no”を指定したページを表示する方法がリンクぐらいしかなくなっているという指摘をいただきました(11/22追記)。