如何使用带有phantomjs的Google网络字体

ale*_*ers 9 webfonts phantomjs

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

Kou*_*sha 10

几个小时我一直在努力解决这个问题.嗯,这个争议有一个简单的原因:用户代理!

某些服务(如Google Fonts)会根据用户代理返回不同的CSS内容.当您使用默认的PhantomJs用户代理呼叫包含Google字体的网页时,Google会返回PhantomJs支持的TTF版本.

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

因此,对于在未设置通用用户代理的情况下测试PhantomJ的用户,Google Fonts正在运行.如果他们设置了Google Chrome用户代理,则无法使用.

所以,你有两个选择:

  1. 如果可能,请避免设置自定义用户代理.
  2. 避免使用像谷歌字体这样的哑智能字体提供商,它不会输出CSS中的所有字体版本,让浏览器决定它需要什么.

  • 我甚至可以在PhantomJS 2.1.1中验证这一点.`Mozilla/5.0(Macintosh; Intel Mac OS X)的默认UA AppleWebKit/534.34(KHTML,如Gecko)PhantomJS/2.1.1(开发)Safari/534.34`("Chrome"缺席)似乎按照您的描述工作以上.很好的抓住. (3认同)