如何把 Kindle 电子书的横排文字改成竖排

横排和竖排是当前中文书籍的两种排版方式,我们都知道,竖式排版、从右向左阅读的方式源于古代的竹简书籍,是一个历史悠久的传统。而横式排版、从左向右阅读方式则是近代才发生的事,是西化产物。虽然如今的书籍出版横式排版是主流,但是传统的竖排版式有着上千年的传承,不可能被消除,对于佛经等书籍,也只有这种传统的纵排行文方式才能让人体会到其中意韵。

实现电子书文本的竖排并不复杂。简单讲,就是用 KindleUnpack 把 mobi、azw 或 azw3 格式的电子书拆解,对拆分出来的文件进行简单修改,比如修改 HTML 文档中的标点符号以适合竖排行文规范。然后修改其中的 OPF 文件实现从右向左翻页,修改 CSS 文件实现文本的竖排。如果是修改 ePub 文件则更简单了,一个 Sigil 就能搞定。最后再用 KindleGen 把修改后的这些文件重新打包成 mobi 格式。

下面以把 azw3 格式的《怎样读书》一书转换成竖式排版作为示例,列出具体步骤。

目录

一、准备软件工具
二、拆解电子书
三、文档预处理
1、修改电子书语言
2、修改翻页方向
3、修改标点符号
四、添加竖排效果
五、重新生成电子书
六、修改前后效果
七、其他实现方式

一、准备软件工具

如果你需要把 mobi、azw 或 azw3 格式电子书的内容修改成竖排请下载以下两款软件:

如果你需要把 epub 格式的电子书内容修改成竖排,请下载下面这款软件:

* 如果你需要修改的是 ePub 格式的电子书,则可以直接用 Sigil 软件编辑。下面提到的 OPF 文件、HTML 文件以及 CSS 文件都会显示在窗口左栏中,层次结构和 KindleUnpack 拆解出来的差不多。修改的内容也和下面所说的一模一样。如果你想要在 Kindle 阅读,也需要用 KindleGen 将其转换成 mobi 格式。下面的步骤中除了需要注意的地方有所提示,不再赘述对此格式的具体修改操作作描述。

然后还需要下载把修改后的文件重新打包成 mobi 格式的转换工具:

二、拆解电子书

如果你需要修改的是 mobi、azw 或 azw3 格式的电子书,需要先将其拆解为原始文件。这里是用 KindleUpack 将电子书进行拆分(如果还不会使用这款软件,请参考《KindleUnpack:拆解 Kindle 电子书文件的利器》这篇文章)。比如我们的示例电子书“怎样读书.azw3”,拆分后的结构如下所示:

├──── HDImages
├──── mobi7
    ├──── cover00088.jpeg
    ├──── image00048.jpeg
    ├──── ……
    ├──── image00092.jpeg
├──── mobi8
    ├──── META-INF
        ├──── container.xml
    ├──── OEBPS
        ├──── Fonts
        ├──── Images
            ├──── cover00088.jpeg
            ├──── image00048.jpeg
            ├──── ……
            ├──── image00092.jpeg
        ├──── Styles
            ├──── style0001.css
        ├──── Text
            ├──── cover_page.xhtml
            ├──── nav.xhtml
            ├──── part0000.xhtml
            ├──── ……
            ├──── part0015.xhtml
        ├──── content.opf
        ├──── toc.ncx
    ├──── Zen Yang Du Shu (Taiwanese_chinese Editio - Hu Shi.epub
    ├──── mimetype

虽然看上去文件乱糟糟的有很多,但无需紧张,我们只需要修改其中的两个文件:content.opfstyle0001.css(上表中红色带下划线的文件)以及批量替换 xhtml 文档内容中的标点符号(上表中蓝色带下划线的文件)即可。其他的文件不用管它。

三、文档预处理

首先我们需要对上面标有红、蓝色带下划线的那些文件进行必要的修改:

1、修改电子书语言

使用 Sublime Text 打开 content.opf 文件,找到下面这行代码:

<dc:language>zh</dc:language>

将其修改为如下所示代码:

<dc:language>zh-tw</dc:language>

这样做的好处是,Kindle 会自动将横排标点转换为竖排标点,并且会自动居中,较为美观。但需要注意的是,Kindle 中只预置了“宋體”和“黑體”两款繁体字体,所以更改语言后也只有这两种字体可选。

2、修改翻页方向

同样修改 content.opf 文件,找到下面这行代码:

<meta name="primary-writing-mode" content="horizontal-lr" />

将其修改为如下所示代码:

<meta name="primary-writing-mode" content="vertical-rl" />

这样就能实现电子书从右向左翻页的效果了。

* 如果打开 OPF 文件后没有找到 <meta name="primary-writing-mode" content="horizontal-lr" /> 这一行代码也没关系,只需要把 <meta name="primary-writing-mode" content="vertical-rl" /> 这行代码添加到任意一个 meta 标签的前面或后面即可。

3、修改标点符号

更改所有 XHTML 文档中的标点符号可以使用 Sublime Text 的批量替换功能。依次点击 Sublime Text 菜单“Find -> Find in Files…”调出文件查找替换功能,点击“where”输入框后的【…】按钮,在弹出的菜单中点击“Add Folder”,在弹出的对话框中选择刚才拆解出来的“Text”文件夹。

在“Find”输入框中输入被替换的标点符号,在“Replace”输入框中输入替换后的标点符号,点击【Replace】按钮开始替换。按照下面所示的替换关系依次替换。替换时 Sublime Text 可能会打开所有被替换的文件,所以最后不要忘了点击菜单中的“File -> Save All”保存全部文件。

  • “ 替换成「
  • ” 替换成 」
  • ‘ 替换成『
  • ’ 替换成 』

如果用 Sigil 修改 ePub 电子书,批量替换的时候注意“模式”那里的第二项要选择“所有HTML文件”。

* 注意:“ 或 ” 一定要用中文引号。如果你觉得标点符号没有更改必要也可以忽略此步骤。

四、添加竖排效果

接下来是修改 CSS 文件,添加几个样式以实现文本竖排以及页边距的微调。比如本例中修改的是 style0001.css。打开 CSS 文件,在文件的最上面添加下面的样式代码:

body {
	margin: 5%;
	text-align: justify;
	-webkit-writing-mode: vertical-rl;
}

其中 margin 控制页面的左、上、右、下边距,text-align 控制强制文本上下两端对齐,-webkit-writing-mode 控制文本竖排显示。另外,如果打开 CSS 文件后,发现已经有了 body{ ... }html{ ... } 这样的样式声明,也可以只把上面代码 body{ ... } 中的属性插入已有的声明之中。

五、重新生成电子书

接下来是使用 KindleGen 重新打包修改后的文件,如果你还不会使用 KindleGen,请参考《官方转换工具 Kindle Previewer 和 KindleGen》这篇文章,有详细的使用步骤。

打开命令提示符,先把 KindeGen 拖到命令提示符上(Mac OS X 上为终端,下同),再把刚才修改后的 OPF 文件拖到命令提示符上(注意两个路径间需要用空格隔开),按回车键开始转换。转换完毕后你会得到一个由更改后的文件重新生成的 content.mobi 文件,把它改下名(如果需要的话),然后拷贝或推送到你的 Kindle 中就可以看到修改后的竖排文本效果的电子书了。

对于修改后的 ePub 电子书也是同样的操作,打开命令提示符,现将 KindeGen 拖到命令提示符上,再把修改后的 ePub 文件拖到命令提示符上(注意两个路径间需要用空格隔开),按回车键开始转换。转换完毕后你会得到一个 mobi 文件,该文件既是实现竖排文本效果的电子书。

* 因为亚马逊的 KF8 标准电子书才支持如文字竖排这种 CSS3 属性的,所以最好使用最新的 KindleGen 重新转换修改后的文件。一定不要用 Calibre 软件中转换 mobi 格式的 old 模式,这种方式转换的是 mobi7 标准的 mobi 电子书,是完全不支持 CSS3 属性,自然也实现不了文本竖版效果。

* 用 KindleGen 生成的 mobi 格式电子书推送后无法显示封面。

六、修改前后效果

修改前的横式排版效果:

kindle-horizontal-lr

修改完成后的竖式排版效果:

kindle-vertical-rl

七、其他实现方式

以上,是 Kindle 电子书横排变竖排的基本原理,当然如果你懒得手动修改这些文件,也可以选择其他可将这些工作自动化完成的工具。下面列举目前可用的横排转竖排的工具,可以自行试用:

  1. 天火藏書排版系統

    天火藏书排版系统是一套电子书直书系统,可以将目前常见的 TXT/ePub/Mobi/AZW/AZW3 和 Palm PDB 文档重新排版成直排形式的 PDF/ePub/Mobi 文档,非常适合六吋电子书阅读器阅读。

  2. AozoraEpub 3

    AozoraEPUB 3 是一个可以将青空文库格式的纯文本电子书转换成 EPUB 的 Java 软件,自定义设定丰富,打包迅速,效果拔群,而且Windows/Linux/Mac OS X下都能直接使用,只要系统中安装有Java。该软件默认即输出为竖排文字,可通过选项自定义为横版。

如果你有更好的工具,也可以在本文底部留言推荐哦。

—————————-

参考文章:

http://www.jebook.org/index.php/archives/238
http://www.zhihu.com/question/21234737

有帮助,[ 捐助本站 ] 或分享给小伙伴:

发表评论

标注为 * 的是必填项。您填写的邮箱地址将会被保密。如果是在本站首次留言,审核后才能显示。
若提问,请务必描述清楚该问题的前因后果,提供尽可能多的对分析该问题有帮助的线索。

小伙伴们发表了 7 条评论

  1. 我在opf文件里打了这个代码,可是依然不能向右划下一页。不知道怎么解决。。。

  2. 最近天火藏書轉mobi直排時常失敗,唯一一次成功檔案kindle卻無法開啟,電腦上開則是只有標點符號轉為直排,文字仍保持橫排。
    也許是網站出了點問題,誠心希望天火站長趕快回來呀~>_<~

  3. 天火直排其他的用法——调用日文字体看繁体书
    http://husanote.lofter.com/post/1d61fdca_a024ed3

  4. 十分感謝站長!按照步驟做成之後十分地滿足,顯示效果也相當不錯。自己還順便將簡體字轉換成了繁體字,效果真心沒得說。唯一美中不足的是插圖的排版,不過無傷大雅。總之感謝站長分享~

    • 純文字書籍可能這樣比較好,但是帶有插圖的書籍便會丟失插圖,並且經過試驗破除 DRM 保護的書籍無法被正確識別出編碼(我就試過一本書,不知是不是個例)。