EPUB 文件是一种电子书格式。名称是 Electronic Publication(电子出版物)的缩写,该格式由出版行业组织 International Digital Publishing Forum 发布,该组织在早期 Open eBook 标准的基础上开发了 EPUB,之后并入万维网联盟(W3C)。如今,除亚马逊外,几乎所有书店、图书馆借阅服务和阅读 app 向你提供的都是 EPUB 格式。它的核心特性是可重排文本:书本没有固定页面,你使用的阅读 app 会根据当前设备的屏幕尺寸和你选择的字体大小来决定每一页的结束位置。
EPUB 文件的构成方式
EPUB 本质上是一个带有特定内容规则的 ZIP 归档文件。将其重命名为 .zip,任何解压软件都可以打开。第一个条目必须是一个名为 mimetype 的小文件,以未压缩方式存储,内容为文本 application/epub+zip。在它旁边,META-INF/container.xml 指向包文档,这是一个通常以 .opf 结尾的 XML 文件。这个包文档就像归档的设计图:其中有清单列出书中的每一个文件,还有书脊,给出这些文件的阅读顺序。
各章节本身就是普通网页,使用 XHTML 编写并通过 CSS 设置样式,图片、字体和音频以独立文件的形式与其并列存在。当前一代的 EPUB 3 构建在 HTML5 之上。ZIP 压缩是无损的,因此将书打包不会降低内容质量,但其中的图片会保留它们原本使用的压缩方式,所以 JPEG 封面仍然是有损压缩。大多数 EPUB 支持重排;固定版式 EPUB 则将内容固定在某个页面尺寸上,这正是制作漫画和插画儿童书的方式。一些书店还会用 DRM 包裹电子书,对章节文件进行加密,让没有授权的读者几乎只能看到元数据。
EPUB 包含哪些元数据
包文档从元数据区块开始,并使用 Dublin Core,它是一套在图书馆和档案机构之间共享的小型通用描述字段词汇表。报告会带着 dc: 前缀展示这些字段:dc:title,作者的 dc:creator,编辑、译者以及经常用来生成文件的软件的 dc:contributor,dc:language,dc:publisher,dc:date,用于关键词和类别的 dc:subject,写简介的 dc:description,以及 dc:rights。还有一个 dc:identifier,是这本书的唯一 ID,通常是 ISBN 或生成的 UUID。
EPUB 3 增加了必需的 dcterms:modified 时间戳,用来记录文件上次被修改的时间,并加入了一些细化字段,指明姓名的排序方式以及某个人所扮演的角色。转换应用还会在此基础上写入自己的条目:经过 Calibre 处理的文件通常会带有 calibre:series、calibre:series_index、calibre:title_sort、calibre:timestamp 和 calibre:rating。
其中有多个字段属于个人信息。作者和贡献者姓名是按设计就要存储的,而贡献者字段中经常会写入所用程序的名称和精确版本。修改时间戳加上 ZIP 为每个条目记录的日期,合在一起可以还原出书本被组装的大致过程。封面是在归档内的单独图片文件,并保留自己的 EXIF 数据,也就是存储在照片内部的一块相机信息,可能包括相机品牌和型号、拍摄时间以及 GPS 坐标。一些书店还会加入水印,把购买者的姓名或订单号写进文件里。
何时选择 EPUB
EPUB 适合希望在任何手边设备上舒适阅读的文本。明显的替代格式是 PDF,而差异在于页面是否固定。PDF 还原的是精确页面,非常适合乐谱、表单或任何包含大量图表的内容,但在手机上就意味着不断缩放和滚动。EPUB 放弃了固定页面,让文本可以重新换行。与亚马逊的 AZW3 相比,EPUB 在可覆盖范围上更有优势:它可以在更多设备和 app 上阅读,而 Kindle 需要先将文件转换,转换操作要么由你完成,要么在文件发送到 Kindle 时由亚马逊完成。