我正在node.js环境中运行phantomjs,目前一切顺利。目前,我只是使用本地字体,但想让google web fonts与phantomjs一起使用。

关于phantomjs是否可以使Web字体工作以及如何使Web字体工作,存在各种各样的冲突和令人困惑的报告。有些像this的文章包含带有无效链接的过时信息。像this这样的帖子表明 phantomjs 2.0 将支持网络字体,或​​者可以支持网络字体,其他人则说 2.0.1 会支持。在this帖子中,建议Webfonts可以在 2.0 中使用。

我尝试了很多选项,包括 phantomjs 2.0 2.0.1二进制文件,但无法使其正常工作。可能是我使用web font loader使用以下内容在js中加载了网络字体:

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); }
});

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

font loader docs中,它说:



我的怀疑是Web字体加载程序确实确定浏览器(phantomjs)不支持此功能,因此始终到达inactive

有人让phantomjs + Web字体+ Web字体加载器正常工作吗?

最佳答案

您正在使用什么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';

10-05 21:01
查看更多