薛学彦观点:

前几天看到一篇关于 EPUB 的文章,本人不敢评论该文的是非,因为其来自非常权威的 OREILLY 网站,但是,看完中文和英文后,本人还是想写一下自己对 EPUB 的看法。

一、格式还是标准:EPUB 到底是什么?

这个标题似乎荒唐,但非常有必要弄清楚 EPUB 到底是什么、有什么特征等问题。该问题的答案当然还是来自最权威的 IDPF 官方网站对 EPUB 的定义:

EPUB is the distribution and interchange format standard for digital publications and documents based on Web Standards. EPUB defines a means of representing, packaging and encoding structured and semantically enhanced Web content—including XHTML, CSS, SVG, images, and other resources—for distribution in a single-file format. EPUB allows publishers to produce and send a single digital publication file through distribution and offers consumers interoperability between software/hardware for unencrypted reflowable digital books and other publications.

该定义叙述了 EPUB 的基本特征,下面是本人对定义的理解。

其一,EPUB 是用于传播和交换数字文档的格式。这里的关键词是“格式”(format),即 EPUB 也象 .DOC 文档一样,是一种文档格式,当然,任何一种文档格式都可以被认为是一种标准,因为一种文档格式只可能由一种应用软件生产,如微软的 .DOC 文档只可能由其不同版本的 WORD 来生产一样,WPS 或者 WORDPERFECT 等不可能生产出 WORD 文档格式。所以,这里的关键词是“格式”,而不是“标准”(standard)。

其二,EPUB 基于网络标准(Web Standards),或者我们也可以把这个“网络标准”理解为“格式”,即 HTML 及其相关技术如 CSS。这一点清晰地表明 EPUB 和网络标准的关系,即网络技术是“父”,EPUB 是“子”。这也不难解释为什么当今普天下的网络工程师大谈 HTML5 时 EPUB 也不得不跟着更新版本的原因。

其三,EPUB 是用单一文档发布内容的一种方式,这种方式涉及对结构化和高度语义化的网页内容的表现(representing,即内容)、封装(packaging,即相关内容的压缩,因为 EPUB 的实质就是换了文件名后缀的 ZIP 文档)和编码(encoding,即标签使用)。“一种方式”(a means)指“文档格式”;“结构化”是指 EPUB 文档本身有固定的结构,包括文件夹结构及文档内部结构;“高度语义化”(semantically enhanced)是指内容标记使用的标签具有语义化特征。

其四,EPUB 是一种非加密、非固定版式的电子图书文档,它不仅允许文档制作者发布内容,也方便用户使用。“非加密”(unencrypted)指文档没有象 .MOBI 格式文档一样对文档进行数字加密,任何人均可以打开(unzip)和编辑 EPUB 格式文档,当然也可以非商业性地传播文档;“方便用户使用”(interoperability)指这种文档在各种硬件和软件环境中的兼容性,inter- 指“相互”,-oper- 指“操作”,-ability 指“能力”,也就是说 EPUB 可以方便地用于支持该格式文档的所有软件和硬件上;“非固定版式”(reflowable)指版式可随环境而变化。

从上述定义不难理解,EPUB 是一种文档格式,它具有开放性的特点,内容按照非固定版式特征呈现,使用技术基于 HTML 及其相关技术,所有相关文档按照 ZIP 技术进行打包压缩并使用 EPUB 文件名后缀。

从上述定义还可以看出,EPUB 不是“浏览器”,不是“程序”(或曰“应用”),也必须有其它软件或硬件去解析该文档格式的结构和标签,而这些软件或者硬件开发者必须遵循 EPUB 规范(specifications)对 EPUB 格式进行识别、对内容标签进行解析和读取。

二、长了羽毛同时嘎嘎地叫,它真的就是鸭子吗:编解码和“浏览器”

下面岔开主题谈几句“浏览器”。

狭义地讲,“浏览器”(browsers)就是解析(或曰“解码”,即 decoding)“超文本标记语言”(hypertext markup language)的程序,例如,要把解析并表现为“段落”;为文本添加标签被称之为编码(encoding),用浏览器去解析这些码的过程被称之为解码,这种编解码的原理和电话声电转换、调制解调器等原理一样。

编码过程是任何文字处理器(word processors)都有的,否则,用户就无从对内容进行排版。排版的过程其实就是程序为内容添加标签(即编码)的过程,而这些标签自然要由程序认识(解析或解码)它。

文字处理器生产的文档被称之为格式文档(formatted document),如 .doc 文档等,这些文档通常不可以被文本编辑器(text editors)读取(其实读取后用户看到的是乱码)。有些文字处理器允许用户查看格式文档的内部编码,个别程序如 WORDPERFECT 甚至允许用户修改这些编码。

假如把读取 EPUB 格式的程序或内嵌类似程序的硬件可以“不严谨地”称之为“浏览器”的话,WORD、WORDPERFECT、WORDSTAR 等文字处理器也可以被看成是“浏览器”,因为它们的工作原理一模一样,只是使用的标签和封装文档的方式不同罢了。

虽然文字处理器包括编解码过程,但和 HTML 文档的工作过程不同,因为文字处理器的编解码是在同一个环境中完成的。因此,我们说 WORD 不仅是编码器,也是解码器。

EPUB 文档的编辑和 HTML 文档编辑过程是一样的,均可以使用任何文本编辑器,但解析这个文档,则需要其它程序了。

对 EPUB 是浏览器的说法,本人实在不敢苟同,因为它只是一种文档格式罢了。