本文及所附代码, 文件在署名-非商业性使用-相同方式共享 3.0版权协议下发布, 转载请注明出自aifreedom.com
解决在 Linux 里的中文 PDF 乱码问题的文章已经有很多了, 这篇日志只是一篇笔记式的日志, 整理了网上流传的各式”解决方案”.
首先, Gnome 下的 Evince 和 KDE 下的 KPDF 用来渲染 PDF 文档的后端程序都是 xpdf. 要让 xpdf 支持中文文档, 需要安装 xpdf-chinese-simplified 和 xpdf-chinese-traditional.
其次, 需要让 xpdf 能识别出 PDF 文档内容的正确编码, 需要 poppler 的支持. 在 Ubuntu 的源里, 有一个叫做 poppler-data 的包, 装上它才能让 xpdf 正确地识别出代码.
最后, 对于没有内嵌中文字体的文档(比如 China-Pub 上的一些试阅图书), 系统默认的配置文件(/etc/fonts/conf.avail/49-sansserif.conf)里的值为 sans-serif. 但默认的 sans-serif 字体是不支持中文的, 需要给它手动指定一个支持中文的字体. 在我的电脑上, 我将 Windows 里的宋体安装了过来, 因此我将上面的配置文件中
<edit name="family" mode="append_last">
<string>sans-serif</string>
</edit>
改成了
<edit name="family" mode="append_last">
<string>SimSun</string>
</edit>
Linux 里安装字体的方法见这篇关于 XeLaTeX 的日志.
如果没有安装其他的字体, 可以在终端中输入 fc-list :lang=zh-cn 命令查看已经安装的中文字体.
我认为经过以上的步骤, 就能解决 Evince 下中文 PDF 的乱码问题. 但我同时根据网上各种解决方案, 安装了很多其他的包. 包括 cmap-adobe-* 包(根据描述是将字符编码映射到 CID 字体的表), ttf-arphic-* 包(一堆中文 TTF 字体). 而且根据 apt-log 的结果, 我安装这些包的时间都在2010年9月, 记忆也不甚准确.
有任何疑问或指正请在日志后留言, 感谢各位在这篇日志后留言的老师.
嗯嗯 又留沙发给我了~嘻嘻!
evince居然有windows版的~我还用过的,不过不怎么样