phantomjs截图字体缺失,而是呈现的框

时间:2013-02-22 16:40:36

标签: phantomjs

我在Centos 6.3上使用PhantomJs 1.8.1进行自动ui测试。测试失败时,屏幕截图会保存到文件系统中。

我的问题是即使屏幕截图已保存,它们也不包含可读字体。

所以如果网站的内容如下:

你好,世界!

该网站的屏幕截图如下所示:

enter image description here

因此,它不是实际的字母,而是渲染和保存小盒子。

系统是6.3。 还安装了Freetype和Fontconfig。

我怎么能解决这个问题?

THX!

10 个答案:

答案 0 :(得分:56)

我遇到了同样的问题。

安装urw-fonts包解决了它:

  

yum install urw-fonts

答案 1 :(得分:11)

我的日文字体有类似的问题。 (PhantomJS 1.9.1,Amazon EC2上的Redhat)

英文字符显示正常,但日文字符显示为方框。

我如何解决它:

1)使用yum install安装(日语)IPA字体(Mincho和Gothic)。

(使用yum list检查确切的包名称。)

2)IPA .ttf文件已安装到:

  • /usr/share/fonts/IPA-Gothic/
  • /usr/share/fonts/IPA-Mincho/

3)将两个下载的.ttf文件移动到此目录:(创建它)

  • /usr/share/fonts/ipa/

4)备份/etc/fonts/fonts.conf

5)编辑原始/etc/fonts/fonts.conf并填写:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <dir>/usr/share/fonts/ipa</dir>
  <cachedir>/var/cache/fontconfig</cachedir>
  <cachedir>~/.fontconfig</cachedir>
  <alias>
    <family>serif</family>
    <prefer>
      <family>IPAP Mincho</family>
    </prefer>
  </alias>
  <alias>
    <family>sans serif</family>
    <prefer>
      <family>IPAP Gothic</family>
    </prefer>
  </alias>
  <alias>
    <family>monospace</family>
    <prefer>
      <family>IPA Gothic</family>
    </prefer>
  </alias>
</fontconfig>

6)使用fc-cache -vf

刷新字体缓存

7)享受新的工作字体。

陷阱:

  • 如果您获得字符(空格),则字体缓存可能已过期。 请尝试fc-cache -vf重新生成它。

  • 1.9.1版本中有日文/中文/韩文字符的修复程序。不确定它是否有所作为,但可能值得从1.9.0升级。

答案 2 :(得分:6)

对于中文字体,我通过以下步骤解决了这个问题:

sudo apt-get install language-pack-zh-hans
sudo apt-get install ttf-arphic-uming
sudo apt-get install ttf-dejavu ttf-wqy-microhei
sudo fc-cache -f -v

操作系统是Ubuntu 12.04 LTS

答案 3 :(得分:4)

我在亚马逊ec2上遇到同样的问题 我解决了这个问题:

yum install cjkuni-ukai-fonts 

答案 4 :(得分:2)

您也可以尝试安装依赖项 - FontConfig&amp; FreeType的

yum install fontconfig
yum install freetype*

答案 5 :(得分:0)

您可以使用命令行参数运行脚本:

phanthomjs --output-encoding=cp866 [params] [filename]

答案 6 :(得分:0)

我遇到了与阿拉伯字体相同的问题。这就是我所做的。

yum groupinstall 'Arabic Support'.

安装阿拉伯语支持解决了它。

答案 7 :(得分:0)

试试这个中文。

long[] lBytL = new long[] { 1L, 256L, 65536L, 16777216L, 4294967296L, 1099511627776L, 281474976710656L, 72057594037927936L };
boolean IsRng = false;
for(int m = (lBytL.length - 1); (m > -1 ); --m){
    lPlc = (lVal/lBytL[m]);
    iPlcVal[m] = (int)lPlc;
    if(!IsRng  && (lPlc > 0)){ iRgnIx = m; IsRng = true; }
    lVal -= (lVal/lBytL[m])*lBytL[m];
}// m

答案 8 :(得分:0)

单独保留/etc/fonts/fonts.conf文件。上面的例子只是日语工作

yum install -y ipa-gothic-fonts.noarch ipa-mincho-fonts.noarch cjkuni-ukai-fonts.noarch bitmap-fonts bitmap-fonts-cjk urw-fonts fontconfig freetype *

yum groupinstall -y'韩语支持''中文支持''日语支持''卡纳达语支持''印地语支持''阿拉伯语支持'

fc-cache -vf

答案 9 :(得分:0)

在HTML部分中添加样式部分,如下所示:

<style type="text/css">
@font-face
{
    font-family:MyFont;
    src: url('MyFont.ttf') format('truetype');
}

#barcodefont
{
    font-family:MyFont;
    font-size: 42px;
    color:black;
}
</style>

然后在主要的HTML代码中使用该字体:

<div id="MyFont">Your text using MyFont</div>

要使其正常工作,您的HTML文件和MyFont.ttf文件都必须位于要进行转换的PhantomJS目录中。