phantomjs +网络字体+字体加载器

drm*_*wer 12 webfonts node.js google-webfonts phantomjs webfont-loader

我在一个环境中运行phantomjsnode.js,它进展顺利.目前我只是使用本地字体,但希望谷歌网页字体与phantomjs一起使用.

关于是否以及如何使用Web字体,有各种相互矛盾和令人困惑的报告phantomjs.还有像文章这样包含有死链接过时的信息.像这样的帖子表明phantomjs 2.0将支持或者可以支持网络字体,其他人则认为它不会支持2.0.1.在这篇文章中,有一个建议是webfonts在2.0中工作.

我已经尝试了很多选项,包括使用phantomjs 2.02.0.1二进制文件,但无法使其正常工作.可能是我正在使用Web字体加载器在我的js中加载Web字体,使用以下内容:

WebFont.load({
    google: {
        families: ['Droid Sans', 'Droid Serif']
    },
    loading: function() { console.log('loading'); },
    active: function() {
        console.log('active');
        // hooray!  can do stuff...
    },
    inactive: function() { console.log('inactive'); },
    fontloading: function(familyName, fvd) { console.log('fontloading', familyName, fvd); },
    fontactive: function(familyName, fvd) { console.log('fontactive', familyName, fvd); },
    fontinactive: function(familyName, fvd) { console.log('fontinactive', familyName, fvd); }
});
Run Code Online (Sandbox Code Playgroud)

但我总是到达inactive分支,所以字体加载永远不会成功...即使相同的代码在浏览器中正常工作(到达active分支.

字体加载器文档中,它说:

如果Web Font Loader确定当前浏览器不支持@font-face,inactive则将触发该事件.

我怀疑网络字体加载器确实确定浏览器(phantomjs)不支持这个,因此总是达到inactive.

谁有phantomjs +网络字体+网页字体加载器工作?

Neo*_*Neo 4

你用的UA是什么?我认为 Web Font Loader 使用 UA 来检测支持。尝试一下 Chrome 46 的 UA,然后看看是否有效。

var webPage = require('webpage');
var page = webPage.create();
page.settings.userAgent = 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.86 Safari/537.36';
Run Code Online (Sandbox Code Playgroud)

  • 我只是尝试使用 phantomjs@1.9.19,更改 userAgent。日志:“正在加载”、“活动”.. (2认同)