phantomjs在linux下截图中文字体问题


最近搞了搞截图的事情,碰到点小问题,刚解决完,趁着手热,记录一下。 目前我们截图用的是 webshot,它封装 phantomjs,使用起来比较方便,唯一碰到的问题就是中文展现与 真实浏览器里的有区别,问题其实就是字体的问题

我们的样式里是这样:

...{
  ...
  font-family: Helvetica, arial, "microsoft yahei", Monaco, sans-serif;
  ...
}

只截取了字体设置的那段,可以看到有 5 种字体,最后的 sans-serif 默认对应是黑体,需要把这5种字体装到截图的 Linux 服务器,分别从osx和windows上copy出来,注意一下,osx 中的字体是 .ttc.dfont 格式的,我们 可以借助 http://transfonter.org/ttc-unpack来转换为 Linux 支持的 .ttf 的格式

  • Helvetica : 从 osx 的 /System/Library/Fonts 拷然后转换
  • arial : 从windows拷
  • sans-serif : 默认是黑体,从 osx 拷
  • microsoft yahei : 从windows拷
  • Monaco : 从windows拷

把这些文件拷到 Linux 服务器上,然后调用 fc-cache 更新一下

sudo mkdir /usr/share/fonts/custom
sudo cp *.ttf  /usr/share/fonts/custom
fc-cache -fv

如果你之前曾经在网上搜索并安装了 bitmap-fonts ,还是删除吧

sudo yum remove bitmap-fonts bitmap-fonts-cjk  # 删除之前安装的东西

更新完字体后截图就正常了


推荐文章