【问题标题】:phantomjs font rendering issuephantomjs字体渲染问题
【发布时间】:2014-02-26 20:29:29
【问题描述】:

使用最新版本的 phantomjs v1.9.7,在我的生产服务器上渲染某些字符时出现问题。开发服务器上没有问题。

在渲染 phantomjs.org 主页时,带有“strong”标签或某种粗体字体(如“700em”)的字体可以正确渲染,但正常的字体粗细不能正确渲染。

我还没有注意到任何其他 url 的这个问题。

来自任何 url 的所有中文字符(到目前为止我已经检查过)在生产服务器上用框呈现,但在开发服务器上正确。

我不知道问题是什么。

这里是每个服务器的http://phantomjs.org 部分的屏幕截图:

生产服务器 - debian 7 stable

开发服务器 - debian 8 测试


这是http://taoboa.com的截图

生产 - debian 7 稳定版

开发服务器 - debian 8 测试

有什么想法吗?感谢您的帮助。

【问题讨论】:

  • 我找到了一些关于它的帖子:an answare/solution herehere
  • 感谢您的回复。在发布之前我已经阅读并尝试过那些,但我确实解决了这个问题(如下)。

标签: fonts render phantomjs


【解决方案1】:

我最终将我的服务器从 Debian 7 更新到 Ubuntu 13.10,这解决了问题。我真的不知道是什么软件包导致了这个问题——可能是 fontconfig 或 libfreetype6...我不知道。

【讨论】:

    【解决方案2】:

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

    1. 下载对应的.ttfUnicode fonts文件。网络上有几个免费网站,但您有几个 Unicode 字体免费文件,用于几个不同的字符映射 here

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

    3. 相应地运行fc-cache -fv /etc/fontsfc-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"]
      })
    };
    

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

    【讨论】:

      猜你喜欢
      • 2014-12-09
      • 1970-01-01
      • 2012-11-08
      • 1970-01-01
      • 2015-09-12
      • 2015-05-12
      • 2018-04-20
      • 2013-08-15
      • 1970-01-01
      相关资源
      最近更新 更多