phantomjs - 如何将 google web 字体与 phantomjs 一起使用

标签 phantomjs webfonts

我正在使用 phantomjs 版本 1.9.7,我相信它应该支持网络字体。我已经使用谷歌网络字体插入了字体,但是当我自动进行屏幕抓取时,它只是显示我的后备字体。网络字体在我所有的浏览器中都显示良好。有没有解决办法?

最佳答案

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

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

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

因此,对于在未设置通用用户代理的情况下测试 PhantomJs 的用户来说,Google Fonts 正在发挥作用。如果他们设置了 Google Chrome 用户代理,则不起作用。

所以,你有两个选择:

  1. 如果可能,请避免设置自定义用户代理。
  2. 避免使用 Google Fonts 等愚蠢的智能字体提供商,因为它不会在 CSS 中输出所有字体版本,而是让浏览器决定它需要什么。

关于phantomjs - 如何将 google web 字体与 phantomjs 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23404658/

相关文章:

tomcat - HTTPS (SSL) IE9 - FontAwesome 无法正确显示,仅显示正方形。 | Apache 汤姆猫

css - webfonts 可以是非 utf 兼容的吗?

javascript - Karma、PhantomJS 和 es6 Promises

css - 什么是正确的 URL 路径定义 @font-face 要加载的网络字体

c# - 如何在 phantomjsdriver selenium c# 中启用 cookie?

javascript - CSS 文件的 PhantomJS 状态 'fail'

css - 压缩字体以在网络中使用

css - 使用@import 语法的自定义网络字体

selenium - PhantomJS 进程过多

javascript - Phantomjs:获取没有id的元素