iBooks 在看书的时候出现了一页书的最后一行字只显示半行的情况,看起来非常影响阅读,上网查了一下,说是生成器的生成的时候使用了 margin 的负值,导致的排版问题,一开始看到这里,http://bbs.weiphone.com/read-h…,说要用一个 css 去覆盖 epub 电子书里面的 css 文件,把那个所谓的补丁拿出来看了一下
@font-face { font-family:"cnepub"; src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf), url(res:///tt0011m_.ttf); } body { padding: 0%; margin-top: 0%; margin-bottom: 0%; margin-left: 1%; margin-right: 1%; line-height:130%; text-align: justify; font-family:"cnepub", serif; } div { margin:0px; padding:0px; line-height:130%; text-align: justify; font-family:"cnepub", serif; } p { text-indent: 2em; display:block; text-align : justify; line-height : 1.3em; margin-top: 0.4em; margin-bottom: 0.4em; } .cover { width:100%; padding:0px; } .center { text-align: center; margin-left: 0%; margin-right: 0%; } .left { text-align: center; margin-left: 0%; margin-right: 0%; } .right { text-align: right; margin-left: 0%; margin-right: 0%; } .quote { margin-top: 0%; margin-bottom: 0%; margin-left: 1em; margin-right: 1em; text-align: justify; font-family:"cnepub", serif; } h1 { line-height:130%; text-align: center; font-weight:bold; font-size:xx-large; } h2 { line-height:130%; text-align: center; font-weight:bold; font-size:x-large; } h3 { line-height:130%; text-align: center; font-weight:bold; font-size:large; } h4 { line-height:130%; text-align: center; font-weight:bold; font-size:medium; } h5 { line-height:130%; text-align: center; font-weight:bold; font-size:small; } h6 { line-height:130%; text-align: center; font-weight:bold; font-size:x-small; }
另外找了一本有问题的 epub,用压缩文件打开,嗯,其实他就是个压缩文件,打开之后找到那个有问题的 css
@font-face { font-family:"cnepub"; src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf), url(res:///tt0011m_.ttf); } body { padding: 0%; margin-top: 5%; margin-bottom: 5%; margin-left: 5%; margin-right: 5%; line-height:130%; text-align: justify; font-family:"cnepub", serif; } div { margin:0px; padding:0px; line-height:130%; text-align: justify; font-family:"cnepub", serif; } p { text-align: justify; text-indent: 2em; line-height:130%; margin-bottom:-0.8em; } .cover { width:100%; padding:0px; } .center { text-align: center; margin-left: 0%; margin-right: 0%; } .left { text-align: center; margin-left: 0%; margin-right: 0%; } .right { text-align: right; margin-left: 0%; margin-right: 0%; } .quote { margin-top: 0%; margin-bottom: 0%; margin-left: 1em; margin-right: 1em; text-align: justify; font-family:"cnepub", serif; } h1 { line-height:130%; text-align: center; font-weight:bold; font-size:xx-large; } h2 { line-height:130%; text-align: center; font-weight:bold; font-size:x-large; } h3 { line-height:130%; text-align: center; font-weight:bold; font-size:large; } h4 { line-height:130%; text-align: center; font-weight:bold; font-size:medium; } h5 { line-height:130%; text-align: center; font-weight:bold; font-size:small; } h6 { line-height:130%; text-align: center; font-weight:bold; font-size:x-small; }
这里附上一个 online diff 工具,http://www.quickdiff.com/,送到 diff 中确实可以看到是 margin 的负值问题,那么解决的思路就有了,那就是。。。改 epub
但是。。。我有上千个 epub 啊。。。
于是想到 python,看到这里,http://blog.csdn.net/JGood/art…,想要用 python 去写一个脚本,批量的替换文件,不过,好在这个时候我又看了一下 google 的搜索结果,于是看到另外一种方式,http://www.cnepub.com/discuz/t…
iBooks在5.0系统上看中文epub会出现断行的现象(某些页面最后一行只显示一半)。以前有过修改epub文件来解决的方法。这里给出一个通杀的方法。
1. 准备一个iPhone/iPad文件管理器。我用的iPhone Explorer。不需要使用越狱的功能。网上搜下就能下到(PC,Mac版都有)。
2. 插上iPhone/iPad,运行iPhone Explorer,找到 YourDevice/Apps/iBooks/iBooks.app目录,拷贝user_stylesheet_flowable.css.tmpl文件到自己的电脑上。
3. 用文档编辑器打开user_stylesheet_flowable.css.tmpl文件,在body {…}的下面空一行加入以下代码:
p {
line-height : 1.3em !important;
margin-top: 0.4em !important;
margin-bottom: 0.4em !important;
}
4.保存后用iPhone Explorer拷贝回原处,关闭iPad/iPhone的iBooks进程,重启iBooks。经过以上修改所有的断行epub文件都可以正常显示了。iBooks更新后重做以上操作就行。
这里也有同样的做法,http://bbs.weiphone.com/read-h…,只不过解释的更加详细而已,其实说白了就是一个 css 的 !important,用一个全局的规则去覆盖单独的规则,没有什么很复杂的原理,照着做,很快就完成了,而且实际测试了一下,是能够顺利的解决问题的。