iBooks 断行问题

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,用一个全局的规则去覆盖单独的规则,没有什么很复杂的原理,照着做,很快就完成了,而且实际测试了一下,是能够顺利的解决问题的。

Leave a Reply

Your email address will not be published. Required fields are marked *