PhantomJS字体不会为某些文本呈现

时间:2014-10-01 17:34:20

标签: phantomjs

部分文字在网站上的呈现效果不正确。

来自浏览器: enter image description here

来自phantomjs: enter image description here

机器:Fedora 64位

Phantomjs版本:1.9.7

已安装的依赖项:

  • yum install urw-fonts
  • sudo yum install fontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc ++。so.6

在另一个Windows平台上工作正常,只有Linux环境问题。我错过了什么?

1 个答案:

答案 0 :(得分:0)

我遇到了phantomjs和特殊字符(日语,中文,印地语等)的字体渲染问题,这就是我解决问题的方法:

  1. 下载相应的.ttf Unicode fonts文件。网上有几个免费网站,但你有几个Unicode字体免费文件可用于几个不同的角色地图here

  2. .ttf文件保存在目录/etc/fonts或目录~/.fonts中的服务器/计算机中。后者也是一个unix目录,如果它不存在,则创建它,如果你没有root权限就需要它(例如共享服务器)

  3. 相应地运行fc-cache -fv /etc/fontsfc-cache -fv ~/.fonts/。此fc-cache命令扫描系统上的字体目录并构建字体信息缓存文件

  4. 然后在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"]
      })
    };
    

    经过长时间的搜索,它对我有用。