0
0

EPUBのパッケージ文書の基本

Posted at

この記事ではEPUB 3.3 (https://www.w3.org/TR/epub-33/) のパッケージ文書について説明します。

基本

EPUB文書は少なくとも1つのパッケージ文書を含んでいる必要があります。複数のパッケージ文書を持っている場合は https://www.w3.org/TR/epub-multi-rend-11/ で規定されているメカニズムによってパッケージ文書を使い分けることができます。

パッケージ文書の名前は任意ですが、拡張子には.opf (Open Packaging Format) を使うことが多いようです。パッケージ文書を配置するフォルダーも (META-INFの外であれば) どこでも構いません。

パッケージ文書の概形は大抵次のようになります。

<?xml version="1.0" encoding="UTF-8"?>
<package xmlns="http://www.idpf.org/2007/opf"
         xmlns:dc="http://purl.org/dc/elements/1.1/"
         version="3.0" unique-identifier="pub-id">
  <metadata> <!-- [...] --> </metadata>
  <manifest> <!-- [...] --> </manifest>
  <spine> <!-- [...] --> </spine>
</package>
  • version (必須) の値は (EPUB 3規格のマイナーバージョンによらず) 3.0です
  • unique-identifier (必須) の値は後述のdc:identifierのIDです
  • metadatamanifestspine (すべて必須) はこの順番である必要があります

metadata

metadataには書誌情報などのメタデータが記述されます。メタデータの記述にはDublin CoreやEPUB独自の語彙が使われます。

<metadata>
  <dc:title>サンプル電子書籍</dc:title>
  <dc:language>ja-JP</dc:language>
  <dc:identifier id="pub-id">
    urn:uuid:d2ba8739-4bf9-4ab3-80de-a43aec20f2ac
    <!-- or urn:isbn:XXX-XXX-X-XXXXX-X -->
  </dc:identifier>
  <meta property="dcterms:modified">
    2024-07-20T03:00:00Z
  </meta>
  <!-- [...] -->
</metadata>

manifest

manifestでは書籍に含まれるすべてのリソースが列挙され、メディアタイプが関連付けられます。ここで列挙されていないリソースへのアクセスは拒否される可能性があります。

<manifest>
  <item id="toc-main" href="toc/main.xhtml" media-type="application/xhtml+xml"
        properties="nav"/>
  <item id="preface-main" href="preface/main.xhtml" media-type="application/xhtml+xml"/>
  <item id="preface-illust" href="preface/illust.png" media-type="image/png"/>
  <!-- [...] -->
</manifest>
  • idhrefmedia-typeは必須です

  • propertiesに記述できる語彙は以下の通りです (https://www.w3.org/TR/epub-33/#app-item-properties-vocab)

    名前 説明
    cover-image 表紙
    mathml MathMLを含むリソース
    nav EPUBナビゲーション文書
    remote-resources リモートに存在するリソース
    scripted スクリプトを含むリソース
    svg SVGを含むリソース

spine

spineはEPUB内容文書の読書順序を指定します。EPUB内容文書への参照をそれが読まれる順番に列挙します。

<spine page-progression-direction="ltr">
  <itemref idref="toc-main"/>
  <itemref idref="preface-main"/>
  <!-- [...] -->
  <itemref idref="notes-main" linear="no"/>
</spine>
  • page-progression-directionはページ送りの方向を指定します
  • 通常の読書順序から外れているリソース (注釈や解答例など) はlinearの値をnoに設定します
  • propertiesにEPUB内容文書のプレゼンテーションに関する情報を記述することができます (https://www.w3.org/TR/epub-33/#app-rendering-vocab)
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0