Kindle Paperwhite 添加中文字体

入手了国行的Kindle Paperwhite,相比Kindle 3有了更好的中文字体支持,原生的“宋体“效果已经相当不错了。
不过以前按照《Kindle 中文阅读终极优化指南》看习惯了“方正准雅宋”,KPW自带的宋体显得有点淡,于是我又开始折腾字体了。。。

The Precondition
首先,KPW添加字体是很简单的一件事情,也不需要越狱:

  1. 用USB线连接KPW到电脑;
  2. 在Kindle的根目录上创建一个空文件 USE_ALT_FONTS (注意不要有扩展名);
  3. 在Kindle的根目录上创建目录 fonts;
  4. 把想要的字体拷到那个fonts目录,如果字体是一个系列的,粗体/斜体按如下命名:
    • Fontname-Regular.ttf     # 普通
    • Fontname-Italic.ttf          # 斜体
    • Fontname-Bold.ttf          # 粗体
    • Fontname-BoldItalic.ttf   # 又粗又斜
  5. 拔掉USB线,重启KPW (菜单->设置->菜单->重启);
  6. 在字体菜单里选择上面添加的字体.

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效果更好~

Share