如何把 Kindle 电子书的横排文字改成竖排
横排和竖排是当前中文书籍的两种排版方式,我们都知道,竖式排版、从右向左阅读的方式源于古代的竹简书籍,是一个历史悠久的传统。而横式排版、从左向右阅读方式则是近代才发生的事,是西化产物。虽然如今的书籍出版横式排版是主流,但是传统的竖排版式有着上千年的传承,不可能被消除,对于佛经等书籍,也只有这种传统的纵排行文方式才能让人体会到其中意韵。
实现电子书文本的竖排并不复杂。简单讲,就是用 KindleUnpack 把 mobi、azw 或 azw3 格式的电子书拆解,对拆分出来的文件进行简单修改,比如修改 HTML 文档中的标点符号以适合竖排行文规范。然后修改其中的 OPF 文件实现从右向左翻页,修改 CSS 文件实现文本的竖排。如果是修改 ePub 文件则更简单了,一个 Sigil 就能搞定。最后再用 KindleGen 把修改后的这些文件重新打包成 mobi 格式。
下面以把 azw3 格式的《怎样读书》一书转换成竖式排版作为示例,列出具体步骤。
目录
一、准备软件工具
二、拆解电子书
三、文档预处理
1、修改电子书语言
2、修改翻页方向
3、修改标点符号
四、添加竖排效果
五、重新生成电子书
六、修改前后效果
七、其他实现方式
一、准备软件工具
如果你需要把 mobi、azw 或 azw3 格式电子书的内容修改成竖排请下载以下两款软件:
- KindleUnpack 下载:https://bookfere.com/tools#KindleGen
- Sublime Text 3 下载:
如果你需要把 epub 格式的电子书内容修改成竖排,请下载下面这款软件:
- Sigil 下载:https://bookfere.com/tools#Sigil
* 如果你需要修改的是 ePub 格式的电子书,则可以直接用 Sigil 软件编辑。下面提到的 OPF 文件、HTML 文件以及 CSS 文件都会显示在窗口左栏中,层次结构和 KindleUnpack 拆解出来的差不多。修改的内容也和下面所说的一模一样。如果你想要在 Kindle 阅读,也需要用 KindleGen 将其转换成 mobi 格式。下面的步骤中除了需要注意的地方有所提示,不再赘述对此格式的具体修改操作作描述。
然后还需要下载把修改后的文件重新打包成 mobi 格式的转换工具:
- KindleGen 下载:https://bookfere.com/tools#KindleGen
二、拆解电子书
如果你需要修改的是 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.opf 和 style0001.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{ ... }
中的属性插入已有的声明之中。
另外,需要检查所有 CSS 文件,看是否有与 -webkit-writing-mode: vertical-rl;
相冲突的声明,如 -webkit-writing-mode: horizontal-tb;
,如果有的话可以将其删除,或将其属性值 horizontal-tb
修改为 vertical-rl
。否则,可能会导致电子书无法在 Kindle 中正常打开。
五、重新生成电子书
接下来是使用 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 电子书横排变竖排的基本原理,当然如果你懒得手动修改这些文件,也可以选择其他可将这些工作自动化完成的工具。下面列举目前可用的横排转竖排的工具,可以自行试用:
-
天火藏書排版系統
天火藏书排版系统是一套电子书直书系统,可以将目前常见的 TXT/ePub/Mobi/AZW/AZW3 和 Palm PDB 文档重新排版成直排形式的 PDF/ePub/Mobi 文档,非常适合六吋电子书阅读器阅读。
-
AozoraEpub 3
AozoraEPUB 3 是一个可以将青空文库格式的纯文本电子书转换成 EPUB 的 Java 软件,自定义设定丰富,打包迅速,效果拔群,而且 Windows/Linux/Mac OS X下 都能直接使用,只要系统中安装有 Java。该软件默认即输出为竖排文字,可通过选项自定义为横版。
© 「书伴」原创文章,转载请注明出处及原文链接:https://bookfere.com/post/204.html
“转换电子书格式”相关阅读
- Calibre 常用命令行工具详解之 ebook-convert
- Calibre使用教程之为电子书添加或修改封面
- Kindle Comic Converter:最简单的漫画转换工具
- 在 Kindle 中阅读 EPUB 格式电子书的两种有效方法
- 如何将 AZW3 格式无损转换为 MOBI 格式并保持原有排版
- Calibre 使用教程之电子书繁体字转简体字
- 亚马逊 Kindle Convert:纸质书无损转换电子书
- Calibre 使用教程之优化电子书的排版
- 如何将 AZW3 格式无损转换为 EPUB 格式并保持原有排版
- Kindle Comic Creator:亚马逊官方漫画转换工具
- EpubPress:把打开的多个网页转成一本电子书
- Calibre 使用教程之转换电子书格式
- 如何直接推送 EPUB 格式电子书到 Kindle 邮箱
- KindleGen:亚马逊官方 Kindle 电子书格式转换工具
- 如何把 KFX 格式转换成 MOBI 等其它电子书格式
站长老师,简体中文书籍标点符号替换不了,只对繁体书籍有效,请帮忙解决一下
不太明白你表达的意思,你是指简体中文电子书无法替换标点符号吗?
对的,就是你说得这个意思,标点符号双引号和单引号替换完还是老样子,简体字书籍标点符号替换不管用
可能是查找的字符和内容中的不一致导致的。对于“查找”的字符,建议直接从内容中拷贝而不是手动输入。或者你可以先对单个页面进行测试,找出替换的原因,在对所有页面进行替换。
从AZW3格式中提取出来epub文件用Sigil软件编辑时候不存在这个问题,epub格式简体中文电子书用Sigil软件替换标点符号时候不存在这个问题,可以全部替换掉。
请问流式转PDF,有些文件应该是html最后一行会吞字是怎么回事吗?切开只显示了一半
这个问题需要测试,可以将源文件、使用的什么软件及相关转换参数发送到书伴邮箱(页面底部“联系”处获取)。
Conversion Log
Input Path = “E:\古龙经典72册(读客熊猫君出品。)(读客知识小说文库)_72(_nodrm.mobi”
Output Path = “E:\迅雷下载\KindleUnpack-081”
Epub Output Type Set To: ePub 2
Please Wait …
Error: Unpacking Failed
请问站长,为啥老会出现这种情况,拆解失败,书名改成拼音又没反应
书籍都是破解版的
您好!
请问一下,有些扫描版pdf,有上百页,但是每页摆放的角度不一定是水平,微有倾斜,
能否自动识别将其全部旋转平正?
谢谢!
你可以尝试一下支持自动歪斜校正 PDF 的工具,比如 ABBYY FineReader、Acrobat 等。
还有实现竖排后,原文件的排版设置需要根据情况更改吗?比如padding-left改成padding-top之类的。
看个人的阅读感受,如果转化后感觉还不错就不用修改,如果感觉差点意思可以自行修改相关的 CSS 样式。
我也想问下标点居中的问题。我使用的自定义字体是H-宫书,然后我自己用字体编辑器修改这款字体,将PMing Liu的逗号,句号完全复制粘贴到这款字体中,但是PMing Liu不论竖排横排标点都是居中 的,而我这番操作后H-宫书只有横排居中,竖排仍不居中。如果是字体的问题,那么该如何内嵌标点的字体呢?
这仍然是字体的原因,因为这个字体中的句号有一个替身,会在竖排时被引用,你只替换了横排时所引用句号的字形,竖排时所引用句号的替身字形没有替换。
以 FontForge 为例,打开字体文件,先定位到“句号(uni3002)”的字形,然后依次点击菜单上的【View → Display Substitutions …】,就可以看到它的替身了。
解决方法有两种,一种是直接删除替身的引用,另一种是修改它的替身字形 uni3002.vert。
删除替身引用比较简单,右键点击句号字形,在弹出的菜单中点击【Glyph Info】,在弹出的对话框中,点选侧边的【Substitutions】,可以看到两个引用 uni3002.vert 的几个替代条件,其中有两个是 “’vert‘ Vertical Alternates (obs) lookup 12 subtable”和“’vrt2‘ Vertical Rotation & Alternates lookup 13 subtable”,选中它们,点【Delete】按钮把它们删掉。重新生成字体,句号的字形就统一了。
修改替身在 FontForge 中好像不太好实现,我测试的时候很容易崩溃。具体方法是在句号的字形编辑窗口上方 Word List 输入框中的 /uni3002 后面直接加上 .vert,然后用鼠标点击编辑区,再点击输入框,再点击编辑区就出现了。字形编辑好后,重新生成字体,句号的字形也能够统一。
现在calibre有一个专门的插件可以用来转化繁简横直哦~
在calibre – 首选项 – 插件里面选择获取新的插件,然后搜索traditionalSimplified Chinese Converter之后安装重启calibre就好了~
这个插件的确很好,简繁转换的错误率也比较低(经常出现在面、麵,发、發、髮,干、乾、幹之间),但是这个插件对我这种强迫症患者有点不友好,标点转换会忽略『』和‘’,转换成竖排的话标点的位置是歪的,排版也马马虎虎,适合对排版要求不高的读者。
转换过来之后可以直接发到亚马逊邮箱吗
为啥找不到你说得这个插件呀,莫非新版本calibre取消这个插件了吗?你得calibre是哪个版本的?
请问为什么有些书拆解后没有style文件夹里面的style0001.css呢?
这是因为电子书是 MOBI7 格式。只有 KF8 标准的电子书(如 AZW3、MOBI8 格式)支持 CSS 样式,老格式(如 AZW、MOBI7 格式)则不支持。
这个网站确实很好用,转换挺方便的,但是不能超过20M大小,有些合集没法转换,郁闷的
你咋拆解的,爲什麽我這邊總是拆解失敗
我需要在kindle上竖向显示蒙古文(左到右)。按你的方式做好以后,文件放机器里总是报错。请大神看看有什么问题,还是左到右是本来就不能做的呢?
请问,逗号、句号等无法句中怎么解决呢?
标点无法居中可能和字体有关系,检查一下电子书调用的字体是否是繁体字体。
您好,感謝本篇教程。我嘗試了該方法,但有一個問題,即雖然語言已設置爲 zh-TW,但是標點符號只有在使用 Kindle 自帶字體時才能完全正確以豎排顯示。當切換爲嵌入字體時,即使是繁體字體,分號與冒號依然不會正確翻轉。不知道有沒有什麼辦法可以解決此問題?
不能正确反转冒号可能和字体也是有关系的,不知你嵌入的繁体字体是什么名称?
感謝回覆。
嵌入的繁體字體,我已測試的有思源宋體和方正標雅宋,均出現相同的狀況。
思源宋體得用繁體中文版才能正確顯示標點,標雅宋為簡體中文字體,不支持港臺竪排標點。
我在opf文件里打了这个代码,可是依然不能向右划下一页。不知道怎么解决。。。
最近天火藏書轉mobi直排時常失敗,唯一一次成功檔案kindle卻無法開啟,電腦上開則是只有標點符號轉為直排,文字仍保持橫排。
也許是網站出了點問題,誠心希望天火站長趕快回來呀~>_<~
天火直排其他的用法——调用日文字体看繁体书
http://husanote.lofter.com/post/1d61fdca_a024ed3
十分感謝站長!按照步驟做成之後十分地滿足,顯示效果也相當不錯。自己還順便將簡體字轉換成了繁體字,效果真心沒得說。唯一美中不足的是插圖的排版,不過無傷大雅。總之感謝站長分享~
天火直排更方便 http://ebook.cdict.info
adonis0910 您好。感谢您的推荐,已添加至本文。 ^_^
純文字書籍可能這樣比較好,但是帶有插圖的書籍便會丟失插圖,並且經過試驗破除 DRM 保護的書籍無法被正確識別出編碼(我就試過一本書,不知是不是個例)。
请问站长先生,亚马逊官方为什么不推出支持繁体竖排转换的固件了,难道不考虑港台地区用户吗?