《NOOK step by step:不破解,也中文》一贴从原理、思路和解决方案上给出了NOOK不破解情况下修改epub文档以正确显示中文的做法。其中的解决方案部分也有具体的操作步骤。由于原贴正文过长,现把具体的实例单独出来,成此一贴。
这里,仅举一最简单的操作实例,即简化修改法(解决方案三)。
1.原文档:从书仓下载的“南方周末20100812.epub”
2.目的:由于该文档中没有NOOK的中文字体调用路径,在NOOK上显示为问号,不成正确显示中文。因此,根据一文的原理和解决方案,在不破解的前提下,简单修改epub文档,让NOOK正确显示中文。
3.应用方案:简化修改css文件法。(解决方案三)
4.原理回顾:
4.1 NOOK中文字体调用显示代码:不完全再述,核心代码是:
自装内存字体简化代码:url(res:///system/media/sdcard/fonts/zw.ttf);
自装TF卡字体简化代码:url(res:///sdcard/fonts/zw.ttf);
默认字体简化代码:url(res:///system/fonts/DroidSansFallback.ttf);
4.2 将上述核心代码添加到原css文件中字体调用显示代码中。
5.实施步骤:
5.1 改后缀名。将下载的epub文档的后缀.epub改为.zip。如将“南方周末20100812.epub”改为“南方周末20100812.zip”。
5.2 打开压缩文件。进入ops目录,找到以.css为后缀的样式表文件。这个样式表文件也可能被制作者放在再下一级子目录里。也有的epub文档竟然没有按规范把代码文件和内容文件放到ops目录里,而是全部扔到根目录下,晕。
南方周末20100812.zip的css文件为:about.css,放在OPS/css目录下:
META-INF
OPS
├─..
├─ css
│ └─about.css
├─ images
├─ ArticelA01002FM.htm
...
mimetype
5.3 打开样式表文件。双击压缩文件中的.css样式表文件,压缩程序会用记事本打开以供编辑。
注意:有的样式表文件保存时有问题,打开的代码是一大串没有换行符的代码,看着头晕(coay.com生成的epub文档都这样,再晕)。解决办法,Ctrl+A选择全部,复制粘贴到一个空白word文档里,在word里就可识别出规范分行的代码;然后Ctrl+A选择全部,复制粘贴回记事本里,这回就显示规范分行的代码了。
5.4 修改编辑样式表文件。在打开的样式表文件中,找到以@开头的字体名称定义代码和body代码,用上述NOOK代码(3种代码任选一)覆盖粘贴,即用NOOK代码取代原代码。
一般来说,epub文档中的.css中,定义字体调用的代码为@打头的代码,字体名称为font-family后的名称“cnepub”。引用路径是src:url后括号里的具体字体文件路径。如下面就是一个epub文档的字体定义和调用代码,是典型的为SONY系列机型定义的:
- @font-face {
- font-family:"cnepub";
- src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf), url(res:///tt0011m_.ttf);
- }
复制代码
修改的办法,就是把上述NOOK的字体路径代码添加到这句SONY代码之后。修改后的代码为:
- @font-face {
- font-family:"cnepub";
- src:url(res:///opt/sony/ebook/FONT/tt0011m_.ttf), url(res:///tt0011m_.ttf),
- url(res:///system/fonts/DroidSansFallback.ttf);
- }
复制代码
注意:此时要把SONY代码后的";"(分号),改为","(逗号),在新添加的NOOK代码后写上";"(分号)或者没有标点符号。
这里我举的是南方周末20100812.epub的例子,其中的about.css中,定义字体调用的代码为@打头的代码,字体名称定义为"shucang":
- @font-face {
- font-family: "shucang";
- src:local("微软雅黑"),
- local("宋体"),
- url(msyh.ttf);
- }
复制代码
这里调用的是本地(机器)字体微软雅黑或宋体,或者epub文档内的"msyh.ttf"字体。实际上这个epub文档没有内嵌字体,因此在NOOK上显示不出中文,只是一堆问号。
为了让NOOK显示中文,必须在其后添加一行NOOK代码。但实际上是通不过的。只能干脆废除这个完整的本地代码,完全改为NOOK代码。修改后的代码为:
- @font-face {
- font-family: "shucang";
- src:url(res:///system/fonts/DroidSansFallback.ttf);
- }
复制代码
同样要注意逗号和分号的修改。
5.5 保存修改。点击保存所修改的css文件,压缩软件会提出是否将修改后的文件保存到原压缩文件中,点“是”保存。并关闭压缩软件。
5.6 改后缀名。将修改后的zip文档的后缀.zip改回.epub。如将“南方周末20100812.zip”改回“南方周末20100812.epub”。
这样,简单地添加一句NOOK字体路径语句,epub文档就能顺利在NOOK上阅读了。
6.进一步的讨论:
6.1 关于通用代码
上述修改,只是简单地添加一行代码,即可在不破解的NOOK上显示中文。但是,为了保持修改后的文档能让他人分享,还是不要删除掉原来的SONY机型代码,保留为好。
更进一步,为了让各种机型都能通用,可以修改为如下代码,在SONY、DR800SG、NOOK、翰林V3+等各机型上都能正常显示中文:
- @font-face {
- font-family:"shucang";
- src:url(res:///opt/sony/ebook/FONT/zw.ttf),
- url(res:///Data/FONT/zw.ttf),
- url(res:///opt/sony/ebook/FONT/tt0011m_.ttf)
- url(res:///fonts/ttf/zw.ttf),
- url(res:///../../media/mmcblk0p1/fonts/zw.ttf),
- url(res:///DK_System/system/font/zw.ttf),
- url(res:///abook/fonts/zw.ttf),
- url(res:///system/fonts/zw.ttf),
- url(res:///system/media/sdcard/fonts/zw.ttf),
- url(res:///sdcard/fonts/zw.ttf),
- url(res:///system/fonts/DroidSansFallback.ttf),
- url(fonts/zw.ttf);
- }
复制代码
6.2 关于改用自己喜欢的字体
如果你自己不喜欢系统内置的黑体字,想改用自己喜欢的字体,不破解能实现么?可以。把你喜欢的字体(比如方正兰亭纤黑)FZLTXHK.TTF改名为zw.ttf,安装在NOOK上内存fonts目录或TF卡fonts目录里。这时字体调用的代码为:
- @font-face {
- font-family:"shucang";
- src:url url(res:///system/media/sdcard/fonts/zw.ttf),
- url(res:///sdcard/fonts/zw.ttf),
- url(res:///system/fonts/DroidSansFallback.ttf);
- }
复制代码
这段代码的意思是:先看你是否在内存fonts目录里安装了zw.ttf字体,如果没有,再看是否在TF卡上安装有zw.ttf,再没有,则调用系统默认的黑体字DroidSansFallback.ttf。三个有调用顺序的字体,用逗号分隔,并依次寻找调用。
6.3 关于书仓epub的问题
上述简化修改办法,在各大网站上下载的都可以成功显示中文。但在书仓下载的epub文档,经上述修改后,仍不正确显示中文,仍是问号满屏。怎么办?
这个问题曾困扰我一整通宵,并无果而终。
后来请教高手,并仔细分析了书仓epub文档的代码,发现问题不在我的修改思路,不在我的修改代码的准确性,而出在书仓的epub代码不规范上。最关键的问题就在于其epub包里的html文件中,对css样式表的链接代码有误,采用了大写字母,造成NOOK不能正确识别并调用css文件。
找到了问题的结症,解决就很简单。
解决办法:用有整个目录查找替换功能的文本编辑器(如EditorPlus)或网页编辑软件(如DreamWeaver),把不规范的大写字母改为小写字母,保存即可。
即,出问题的代码是:
- <link REL="stylesheet" HREF="css/about.css" TYPE="text/css" />
复制代码
修改为:
- <link rel="stylesheet" href="css/about.css" type="text/css" />
复制代码 |
|