入手了国行的Kindle Paperwhite,相比Kindle 3有了更好的中文字体支持,原生的“宋体“效果已经相当不错了。
不过以前按照《Kindle 中文阅读终极优化指南》看习惯了“方正准雅宋”,KPW自带的宋体显得有点淡,于是我又开始折腾字体了。。。
The Precondition
首先,KPW添加字体是很简单的一件事情,也不需要越狱:
- 用USB线连接KPW到电脑;
- 在Kindle的根目录上创建一个空文件 USE_ALT_FONTS (注意不要有扩展名);
- 在Kindle的根目录上创建目录 fonts;
- 把想要的字体拷到那个fonts目录,如果字体是一个系列的,粗体/斜体按如下命名:
- Fontname-Regular.ttf # 普通
- Fontname-Italic.ttf # 斜体
- Fontname-Bold.ttf # 粗体
- Fontname-BoldItalic.ttf # 又粗又斜
- 拔掉USB线,重启KPW (菜单->设置->菜单->重启);
- 在字体菜单里选择上面添加的字体.
The Problem
但是如果用《优化指南》里提到的这四个字体:
会发现,KPW会把它们认成4个不同的字体,选择“方正准雅宋”之后,也没办法自动使用对应粗体。其实这也很正常,上面的四个字体根本就不是一个Font Family的,KPW自然不认了。
The Solution
解决办法是,用字体编辑器把它们变成同一个Font Family!
在Ubuntu下我试过FontForge, TTFEdit, Ttx这些工具。
FontForge功能太强而且似乎生成的font文件会有问题;
TTFEdit对utf8或者gbk编码的字符串支持有问题;
Ttx其实是一个把TTF转换成xml文件,然后把xml文件转回成ttf的工具。
最后我用ttx搞定了。
1.
ttx -o CJK_Regular.ttx CJK_Regular.ttf # 把ttf转换成ttx文件(本质就是个xml)
2.
编辑CJK_Regular.ttx 在<name>里,nameID=1是FontFamily,把它改成FZYaSong-GBK 在<OS_2>里,usWeightClass是指字体的Weight,把它改成500 (Medium),顺便把bWeight改成“6”(也许这个改动没有必要)
2.x.
同样的,把另外三个ttx文件里的FontFamily都改成FZYaSong-GBK CJK_Bold.ttx,CJK_BoldItalic的usWeightClass改成700,bWeight改成8; CJK_Italic的usWeightClass改成400,bWeight改成6;
3.
ttx -o FZYaSongMod-Regular.ttf CJK_Regular.ttx # 重新生成ttf字体 另外三个文件同理
这样就生成了FZYaSongMod的四个ttf文件,FontFamily都是FZYaSong-GBK, Weight都是对应的值。然后把这四个文件拷到KPW的fonts文件夹里,重启,搞定!
KPW的显示效果终于和Kindle3一样了,内牛满面啊…
The Last
这四个文件已经打包好,有需求的可以直接用。下载在此: FZYaSongMod.tar.bz2
声明: 更改字体信息仅限学习用,不得作为商业用途。
p.s. 感谢@wzyboy同学《优化指南》 本文修改的字体来源于他的博客。
p.p.s. 推荐越狱之后安装kindlepdfviewer,完美集成于KPW,看PDF效果更好~