使用最新版本的phantomjs v1.9.7,在我的生产服务器上渲染一些字符时出现问题。开发服务器没问题。
在渲染phantomjs.org主页时,带有“strong”标签的字体或某种粗体字体(如“700em”)会正确渲染,但正常的字体粗细不会。
我还没有注意到任何其他网址的这个问题。
此外,来自任何网址的所有中文字符(我到目前为止已检查过)都会在生产服务器上使用框进行渲染,但在开发服务器上正确显示。
我不知道问题是什么。
以下是每个服务器的http://phantomjs.org部分的屏幕截图:
生产服务器 - debian 7稳定
dev服务器 - debian 8测试
制作 - debian 7稳定
dev服务器 - debian 8测试
有什么想法?谢谢你的帮助。
答案 0 :(得分:3)
我最终做的是将我的服务器从Debian 7更新到Ubuntu 13.10,这解决了这个问题。我真的不知道是什么软件包导致了这个问题 - 可能是fontconfig或libfreetype6 ......我不知道。
答案 1 :(得分:0)
关于日文,中文,印地文等字符,我遇到了phantomjs和这些特殊字符的字体渲染问题,这就是我解决问题的方法:
下载相应的.ttf
Unicode fonts文件。网上有几个免费网站,但你有几个Unicode字体免费文件可用于几个不同的角色地图here。
将.ttf
文件保存在目录/etc/fonts
或目录~/.fonts
中的服务器/计算机中。后者也是一个unix目录,如果它不存在,则创建它,如果你没有root权限就需要它(例如共享服务器)
相应地运行fc-cache -fv /etc/fonts
或fc-cache -fv ~/.fonts/
。此fc-cache命令扫描系统上的字体目录并构建字体信息缓存文件
然后在phantomjs代码中,始终使用utf-8
文件系统
var HTMLfile = fs.open(path + file_name, {
mode: 'r', //read
charset: 'utf-8'
});
var content = HTMLfile.read();
HTMLfile.close();
或网页
var webPage = require('webpage');
var page = webPage.create();
var settings = {
operation: "POST",
encoding: "utf8",
headers: {
"Content-Type": "application/json"
},
data: JSON.stringify({
some: "data",
another: ["custom", "data"]
})
};
经过长时间的搜索,它对我有用。