如何在Phantomjs中使用谷歌网络字体?[英] How can I use google web fonts with phantomjs

问题描述

我正在使用 phantomjs 版本 1.9.7,我认为它应该支持网络字体.我已经用谷歌网络字体插入了字体,但是当我自动抓屏时它只是显示我的后备字体.网络字体在我所有的浏览器中都显示良好.有什么解决方法吗?

推荐答案

我已经为这个问题苦苦挣扎了几个小时.好吧,这个争议有一个简单的原因:user-agent!

某些服务(例如 Google 字体)会根据用户代理返回不同的 CSS 内容.当您调用包含谷歌字体的网页时带有默认 PhantomJs 用户代理,谷歌将返回 PhantomJs 支持的 TTF 版本.

但是,如果您设置自定义用户代理(Chrome、FF 等),Google 字体将返回 .woff2 版本.PhantomJs 2.x 不支持 .woff2.显然,字体不会被加载.

因此,对于在没有设置通用用户代理的情况下测试 PhantomJs 的用户,Google 字体可以正常工作.如果他们设置例如 Google Chrome 用户代理,它就不起作用.

所以,你有两个选择:

  1. 尽可能避免设置自定义用户代理.
  2. 避免使用像 Google Fonts 这样的智能字体提供商,它不会以 CSS 输出所有字体版本,而是让浏览器决定它需要什么.

本文地址:https://www.itbaoku.cn/post/1739903.html