电子书时代的逐渐到来一直是一件让我觉得兴奋不已的事情,当然目前离电子书取代传统书的时代还有很长的一段距离了。从目前的情况来说,电子书和纸质书的阅读可以说是各有优缺点,就好像传统的绘画和通过 Wacom 之类的设备直接在电脑上作画一样,虽然不排除随着技术的逐渐发展后者可能最终将会取代前者,但是就目前的状况来看,只能说是各有千秋了。

特别是电子书的市场本身也还正在发展中,总体来说也就是近几年新出的畅销大众化类的书比较多会有电子版,但是比较专业一点的书籍就没有那么好的支持。比如我虽然给我妈妈买了 Kindle PW,但是似乎用处也不是很大,她经常要读的那些比较正统的文学类书籍大都没有电子版出售,而且比较冷门的话就连网上的自制电子书也是没有的。

再比如数理类的专业书,Amazon 现在似乎花了很大的力气把很多新出版的这类书籍都配套上 Kindle 格式的电子书,却有种弄巧成拙的感觉——总之几乎就是非常简陋地直接把原来的排版转成劣质的 HTML 格式然后再打包成电子书,公式什么的就变成甚至都和周边文字无法对齐的模糊图片……这里就不做更多地吐槽了,总之 Amazon 这件事给人带来的印象是科技类书籍还是乖乖去看纸质版吧。当然踢开 Amazon 的话其实会发现真实情况并不是如此,许多出版社都提供非常精良的 PDF 格式的电子书供购买,有些甚至是 DRM-free 的。甚至连苹果的 iBook 里很多科技数学类书也可以看到非常精美的公式图表排版。我经常去学校图书馆的网站提交 purchase request,有时候发现某本很 popular 的书拍了很长的队伍要借的时候,就直接建议他们买一个电子版,然后可以从图书馆借阅,通过 Adobe Digital Editions 之类的阅读器可以在电脑上阅读,各种 tablet 上似乎也有可以阅读 DRM PDF 电子书的 app。当然就没有用自己喜欢的 PDF 阅读器那样得心应手了。

图书馆里可以访问到的 DRM-free 电子书,可以在任意 PDF 阅读器上阅读。

不过也有一些书籍是可以直接通过 DRM-free 的 PDF 格式访问到的,当然 policy 上是不允许随便传播的,并且下载该 PDF 的时候是需要通过学生 ID 登陆的,所以电子书里应该也会嵌入身份信息,如果传播到网上最后要追究源头的话应该会是比较严重的问题。

如果说专业类书籍的话还有一个问题就是阅读是非常“非线性”的,也就是说并不是一个简单地从前往后一页一页地看下去就行了,而是经常需要往前面翻一下查阅某个定理、定义呀,或者往后翻看一下某个参考文献啊等等,跳来跳去的这种操作目前来说拿着一个平板远没有拿着一本纸质书来得方便,更别说翻页翻得那么痛苦的各种 e-ink 阅读器了。

但是如果是看小说之类的可以顺序阅读的书籍的话,我觉得目前电子阅读的优势已经可以比较明显地让它成为我的首选阅读方式了。但是 DRM 就成为更严重的问题了。DRM,全称是 Digital Rights Management,可以简单地认为是各个公司用来把限制用户使用那些虚拟的有可能被无限复制的内容的东西。比如我小时候第一次知道不同国家的 DVD 播放机不能解码其他国家的 DVD 碟片的时候就挺震惊的,震惊的是这件事情是故意设计成这样子的。当然后来我理解了有各种版权啊、授权啊、利益啊之类的因素在后面。只是逐渐认识到人类从古到今都在干着各种自己遏制人类社会的知识传播和发展的事情这件事情多少有些无奈。现在的电子书 DRM 的问题可以说是有过之而无不及。虽然除了 Amazon 之外,其他的电子书出版商大都基于开放的 epub 格式,但是各自加了各自的 DRM 之后,也就变得互不兼容了。

一方面从出版商或者是作者的角度来考虑的话,怎么处理电子书会被随意拷贝传播的问题确实是很重要的,但是另一方面就现在的情况来就的话,商家的目的似乎已经远远超过了限制拷贝,而是各种想尽办法把用户套死在自己的平台上。比如说你一直在买某一家的电子书,但是将来那家公司突然倒闭了,或者被另外某个神经病公司收购了,或者转战其他领域去了之类的,逐渐停止更新和支持阅读平台,那么你原来买的那些书基本上也就全部“dead”了。也许大部分的小说类书籍第一遍看完之后就不会再去看了,所以“死”不“死”都没太大关系。但是心里总是很不爽啊。也许是我的想法太过激了,我觉得利用 DRM 来将用户限制或者圈占到自己的生态系统上来是一件很下三滥的事情。就好像是你喜欢一个人想要跟他/她在一起,你不是去让自己变得更好让对方主动想要和你在一起,而是把他/她手脚都切了装到你家的花瓶里这样他/她就哪里都去不了只能和你在一起了。=.=b

其实就历史上的各种情况来看,统一标准通常都是最终的王道解决方案,其实电子书的 DRM 如果有一个强有力的标准出现的话就皆大欢喜了。只是不知道还要等多久。就目前来说,抛开各种“道理”上的东西的话,从实用主义的角度来说,DRM 虽然被限制死平台了,但是其实也可以很多平台一起用(有点略精神分裂就是了),而且如果平台本身可用性也还不错的话,其实也没有什么太多怨言了。但是反过来如果平台很不好用的话,就很难过了。

豆瓣的 iOS 阅读器,日文部分各种字体混杂。

例如豆瓣的 iOS 阅读器这里是作为一个反面例子出现的。之前我在 iPad 上打开就一直 crash,现在更新了终于不 crash 了,随机打开一个豆瓣在 2012 年最初推出阅读功能的时候提供的免费书 sample,在字体上就出了问题,而且 app 还不允许修改字体,不知道是不是遵从“极简”哲学。不过英文阅读平台才是更让人不爽的。

Google Play Books 的官方截图。英文的“左对齐”模式。
Kindle 官方广告。英文的“两端对齐”模式。

这里不妨看一下 Google 的 Google Play Book 和 Amazon 的 Kindle。由于英文不像中文那样是一个一个的方块字,所以在左边对齐的情况下右边如果想要避免在单词中间直接断开的话,就会出现每一行的长度不一样的“锯齿状”段落,就同图中的 Google Play Book 的显示效果差不多。右边不对齐很难看啊,不止是从小看对齐的方块字段落的我们才会这么觉得,西方人也是这么觉得的,所以他们发明了 hyphen,对于一些长单词可以在其中断开用连字符接到下一行,这样一来长短不一的情况就可以得到大大改善,剩下的细微差别只要再稍微调整一下单词间距就可以做到完全对齐了——由于调整得非常小,所以也看不出违和感。

但是这样在排版的时候计算量比较大啊,一方面需要词典 + 规则来决定单词中间哪里可以断开哪里不能断开,一方面还要决定这个单词是放到下一行呢还是断开呢,从哪个部分断开呢,断开之后本行的单词间距如何分布调整呢之类的。比如 LaTeX 虽然能排出比较漂亮的对齐文档,但是编译一次也是要费点时间的。所以像 Word 那样需要实时渲染文档的字处理软件就不提供这种功能,但是右边不对齐总还是觉得很难看啊!怎么办呢?于是 Word 里有了一个叫做“两端对齐”的选项(不知道是不是他家首创的),简化了一下,就是不断开单词了,但是还是想要两端都对齐,于是就放荡不羁地调整单词的间距,大概就是图上的 Kindle 显示的段落的样子了……反正我是觉得这是最不能忍受的一种显示方式了。间距太大之后读起来都没有连贯感了,而且不同的行之间间距时大时小,就是一种乱七八糟的感觉。

现在的 CPU 计算速度已经和编译一个 LaTeX 文档需要好几分钟的时代有了巨大的进步,到底缺乏 hyphen 的支持是由于技术原因还是只是懒得加而已已经很难说了。就实时编辑而言 Adobe 的 InDesign 是支持实时 hyphen 的。而且现在浏览器里的段落渲染也有了专门的 CSS 标准用来支持 hyphen,虽然还没有完全得到各个浏览器的支持——主要也就是 Chrome 不支持了,其实也不是不支持,Chrome 其实实现了 hyphen 属性,但是是以不断词的方式来实现的……=.=b 所以其实就是不支持了。另一方面各种移动设备上,比如 iOS 上的 iBook 和第三方的 Marvin 阅读器都支持 hyphen,也没有看出渲染的时候有什么特别明显的卡顿。不知道 Kindle e-ink 阅读器的 CPU 性能怎么样,但是估计 Amazon 也没有把这种小事当一回事吧,否则也不会那样子直接把这样的图拿来做官方广告了。

由于我强迫症比较严重,所以至今很少在这些平台上买电子书来看,一般都是去网上找 epub 然后在第三方阅读器上看(当然我原本就很少看小说就是了)。这样的问题就是网上的自制电子书时不时都有各种错误遗漏之类的,莫名其妙地空一行啊,排版混乱了啊,标点符号混乱啊之类的。不过我最近知道了一个好消息就是似乎几个比较常见的厂商的 DRM 都是可以比较容易地去除的。

当然这样做是违反电子书出版商的协议的,不过出版商的协议太霸道也让人不爽,只要保证是自己看而不拿到网上传播的话,至少从“道义”来说没有什么不对的了……=,= 我想就出版商而言,与其让用户去下载参差不起的盗版电子书来看,让用户给自己合法购买的电子书去 DRM 之后放到其他的设备或者阅读器上看应该相对比较可以接受一点吧?

具体来说,在网上搜索 Apprentice Alf 可以找到一个 DRM Removal Tool,可以去除 Amazon 和 Adobe 的 DRM 限制。可以使用它提供的单独的工具或者 Calibre 插件。对于 Amazon 的电子书,最好使用 Calibre 插件,因为 Calibre 本身提供各种不同的电子书格式转换的功能,可以把 Amazon 的私有格式转换成标准的 epub 格式。Mac OSX 系统下大概步骤如下:

  1. 安装 Kindle for Mac,在 Mac App Store 里可以找到。
  2. 安装 Calibre,以及上面提到的 DRM removal plugin。
  3. 打开 Kindle for Mac,登陆账号,注册该“设备”。
  4. 在 Amazon 购买电子书,然后推送到 Kindle for Mac 上。
  5. 找到下载的电子书,App Store 上下载的 Kindle App 的话,是放在 ~/Library/Containers/com.amazon.Kindle/Data/Library/Application Support/Kindle/My Kindle Content 下面。在 Kindle 程序的选项那里其实可以查看和修改这个路径。里面的 .azw 后缀的文件就是电子书,只是文件名是某些标识符看不出哪一本是哪一本,可以全部导入到 Calibre 里面去,就会看到书的标题作者了。
  6. 如果之前的 DRM removal plugin 安装成功的话,在导入电子书的时候应该已经自动去掉 DRM 了。这个时候可以使用 Calibre 的转换格式功能,转换成 ePub 格式就可以拿到其他地方去阅读了。如果 DRM 没有去除的话,会得到无法转换的错误提示。
在 Marvin app 里浏览 Calibre 的 OPDS 图书内容。

这里顺便需要提一下的是 Calibre 本身是一个非常强大的电子书管理和转换工具。并且它有一个 Content Server,可以把你的所有电子书索引起来然后在其他设备上通过浏览器进行访问。如果客户端支持 Open Publication Distribution System (OPDS) 的话,就更加方便了。比如 iOS 里的 Marvin 阅读器,就支持 OPDS,于是可以直接连接到 Calibre 的电子书库里浏览和下载自己书库里的书来阅读。还有几个公共的 OPDS server,包括 public domain 里的电子书,以及 Project Gutenberg 等有大量的经典书籍可以非常方便地直接浏览下载。

我自己因为有一台实验室的 Linux Desktop 是常年在线并且有固定公网 IP 和域名的,所以我决定把 Calibre 运行在那上面,并且把 Content Server 开起来,这样我在有网络的时候就可以随时通过手机或者平板连接上去下载电子书。此外,有不少可以跟踪文件系统变化的工具,例如 Ruby 的库 listen 或者 GUI 工具 hazel,可以设置一个规则,就是发现 Kindle for Mac 的内容目录里有新的 .azw 文件的时候,就自动 scp 到 Linux Server 上的某一个特定的目录。然后 Calibre 也有跟踪目录自动导入的功能,让它观察服务器上的那个目录,自动导入电子书并自动转换为 epub,实现一条龙服务!

不过这里还有一个小问题就是 DRM Removal Plugin 在 Mac 下 work 是因为安装了 Kindle for Mac,并且你自己已经购买了该书籍,可以在 Kindle for Mac 里打开阅读。也就是说你拥有正当地解开 DRM 的 key,虽然我不知道那个 plugin 具体是怎么工作的,但是我想大概应该是通过那个 key 模拟了一下 Kindle for Mac 取得解密后的文档内容之后再导出吧。所以为了让 Linux Server 上的 Plugin 也能正常工作,需要把 Mac 下的 key 导入到 Linux 中。具体做法如下:

  1. 在 Calibre 的 Preference Plugins 的 File type plugins 里找到我们的 DeDRM 插件,选择 Customize plugin。
  2. 在弹出窗口里选 Kindle for Mac/PC ebooks,然后点左边的加号按钮,也就是 Create new Kindle for Mac and PC key。我猜这里是读取了 Kindle for Mac 里的信息生成的 key。
  3. 选中生成的 key,然后点击右边的导出按钮保存为 .k4i 文件,并将文件上传到 Linux Server 上,再在 Server 的 Calibre 里打开同样的界面,导入该文件即可。

至于中文书嘛,现在 Kindle for Mac 也支持中国的亚马逊商店了,理论上应该也用同样的方法可以解决,不过我没有尝试过,而且不同国家要不断地切换不同的账户,也挺讨厌的。至于其他的国内电子书平台,我现在不知道有没有通用的解决办法呢。不过好在中文的文字类书的话,稍微排版一下应该就不会太难看了,而且价格相当便宜啊。之前尝试在多看里买了一本书来看,虽然不能去除 DRM,但是它本身提供的阅读体验还是挺让人满意的。

总而言之,单就 DRM 的问题来说的话,我其实两者都支持,只是对于 DRM 的实现的方式来说,对于现在的各家分治互不兼容的状况很不满意而已了。