搞定 irex iliad 的用户自定义字体
by Auld 2009-07-29 12:42:33 3
要解决的问题:
1: iliad 中由于 / 分区的空间较小, 所以它系统自带的 /usr/share/fonts/truetype/ttf-asian-default/mshei.ttf 文件只有 1.9M ,
生僻字没有.
2: fbreader 在读txt时, 经常发现里面很多不常见的汉字都没有, 所以在阅读中经常会出现一些生僻汉字的乱码的情况.
我在解决了字体问题1后, 才发现 fbreader 读 txt 时乱码, 大多不是字体的问题, 而是 fbreader 对 gb2312 支持不太好, 如 "骎骎, 奕劻" 都会显示成乱码, 后来把txt 文件由 gb2312 转成utf-8 则问题解决.
(所以大家如果遇到这些问题, 要先考虑这点, 再考虑是否增加字体, 就我的经验, 上面的乱码几个字, 系统内部字体都可以支持)
下面解决问题1: 很多用户对这个问题提出质疑, 但到目前为止, 包括官方都没有给出比较好的解决方案.
我经过对
https://www.mobileread.com/forums/showthread.php?t=19488 的研究, 特别是其中 wallcraft 的意见找到以下方案, 对这个问题提出解决方案:
注意: 在使用本方法前, 你要确认你已经拿到 iliad 的 shell access , 并能进行操作, 如果不清楚, 可以参照相应资料.
1: 查看 /home/root/.fonts.conf 它指定的用户定义字库的位置
我的机器上配置如下:
---------------------
root@ereader:~# cat .fonts.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<!-- ~/.fonts.conf user customized font configuration file -->
<fontconfig>
<!-- user fonts directories -->
<dir>/mnt/card/fonts</dir>
<dir>/mnt/cf/fonts</dir>
</fontconfig>
---------------------
可见 iliad 本身就支持扩展字库 . 而且你还可以根据你自己的喜欢, 修改上面的用户自定义字库的配置.
2: 选择合适的字库, 放入 iliad
我选择了
http://img.yyjoy.com/yy/post/20070529/msyh.rar 这个微软 雅黑 unicode 字库.
(上面测试之后, 我也成功尝试了选择了 c:\windows\fonts\simhei.ttf 这个微软 黑体字库. )
放在 iliad 的 SD 卡的 /fonts 目录下. 也就是上面配置中下面这一行:
<dir>/mnt/card/fonts</dir>
3: 重新启动 iliad
4: 查看 /home/root/.fonts.cache-1
(这个文件每次系统启动的时候, 好像会生成一次, 如果用户自定义的文件删除了, 这里会自动删除, 如果没有,则文件内容为空)
我的机器上如下:
---------------------
root@ereader:~# cat .fonts.cache-1
"/mnt/card/fonts" 0 1248507436 ".dir"
"/mnt/card/fonts/msyh.ttf" 0 1179262440 "Microsoft YaHei:style=Regular:s ...igore...
---------------------
可见 iliad 已经识别到这个字库.
到此, 一般的软件已经能够正确使用这个字库了 . 但 FBReader 不行.
5: 查找 FBReader 的运行目录, 我的机器上它安装在 /media/card/Programs/FBReader , 从run.sh 中可以看出它把 $HOME 指向了/usr/local/home , 而这个目录又 link 到/media/card/_local/home. 这一步就是把 /home/root/ 目录下的 .fonts.conf 和 .font.cache-1 复制过来.
cd /usr/local/home/ 或者 cd/media/card/_local/home
cp /home/root/.fonts* .
6: 重新启动 FBReader , 在配置中, 选择字体, 现在就多了一项 Microsoft YaHei . 选中即可.
7: 今后, 如果需要调整字体, 一样在iliad 找到字体后, 重复 5,6 两步就可以了.