文件格式

MOBI - Mobipocket 电子书

MOBI 是 Mobipocket 电子书格式,Amazon 最初就是在此基础上打造了第一代 Kindle,所以你会在较早的电子书收藏中以及多年前转换的文件中遇到它。

.mobi

MOBI 文件是一种使用 Mobipocket 格式的电子书。Mobipocket 是一家法国公司,其阅读软件曾运行在 Palm 和 Windows Mobile 掌上设备上;亚马逊在 2005 年收购了这家公司,并将这种格式作为第一代 Kindle 的基础。这就是为什么 MOBI 文件和 Kindle 文件在内部结构上如此相似。此后,亚马逊将自家应用转向了 Kindle Format 8 和 EPUB,所以现在 MOBI 已经是一个旧格式,你更多是在老的电子书收藏中遇到它,而不是有人还在用它来出版新书。

MOBI 文件的组成方式

MOBI 基于 Palm Database 格式构建,这是 Palm OS 时代的一种容器格式,并且是二进制的:在文本编辑器中打开只会看到一堆无用内容。文件从一个头部开始,用来给数据库命名,通常是书名压缩后的版本,并用类型代码 BOOKMOBI 标记。从那之后的内容就是按编号排列的一系列记录。

书中的文本被拆分到多个记录中,每条记录最大约 4 KB,并使用 PalmDOC 压缩算法或压缩率更高的 HuffCDIC 算法压缩;有些文件则不压缩。这两种算法都是无损压缩,所以不会丢失内容。内部标记语言是精简版 HTML,类似九十年代末期的网页,只支持少量样式,不支持嵌入字体。图像作为独立记录保存,并通过编号引用。由亚马逊旧版 kindlegen 应用生成的文件往往是“两本书合一”:一部分是面向旧设备的 MOBI 段,后面跟着面向新设备的 Kindle Format 8 段,中间用一个边界记录分隔。

MOBI 文件包含哪些元数据

MOBI 将描述性信息保存在 EXTH 头部中,这是“扩展头部”(extended header)的缩写,紧跟在主 MOBI 头部之后。它是一个条目列表,每个条目用数字而不是名称标记,这也是报告中常同时显示数字和名称的原因。你实际会看到的包括作者(记录 100)、出版社(101)、简介或文案(103)、ISBN(104)、主题标签(105)、出版日期(106)、贡献者(108)、版权声明(109)以及 ASIN(113),这是亚马逊在其自家目录中为某本书分配的标识符。还包括语言条目,以及一个可覆盖 Palm 头部名称的更新标题。

其中有两个字段值得多看一眼。贡献者字段很少是个人:转换应用会把自己的信息写在这里,所以你经常会看到 Calibre 或 kindlegen 加上版本号,由此可以大致看出是哪个应用在何时处理了这个文件。Palm 头部还会添加各自的创建和修改时间戳。因此,一个 MOBI 文件在设计上就会携带作者和出版社名称,并记录是由哪个软件在何时生成的,同时通过 ASIN 或 ISBN 将该文件关联到某个已出版版本。亚马逊带 DRM 保护的 MOBI 近亲格式 .azw 则会额外锁定到购买它的账户。文件中的封面图像也会保留自己的 EXIF 数据,即照片中常见的相机信息块。

何时使用 MOBI

把书保留为 MOBI 的唯一合理理由,是你的设备无法阅读更新格式:例如早期 Kindle,或 Mobipocket 时代的掌上设备。除此之外,利弊对比非常明显。MOBI 不支持嵌入字体,几乎没有版面控制,没有固定版式模式,只有单一的线性阅读顺序,因此出版社排版和复杂页面在其中基本无法保留。EPUB 是通用的便携选择,AZW3 则是 Kindle 原生格式,两者都支持现代样式。将 MOBI 转换为这两种格式都很容易,但转换无法恢复这个旧格式本来就没有存储过的设计。