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

我在node.js环境中运行phantomjs ,并且进展顺利。 目前,我只是使用本地字体,但希望获得谷歌网页字体与phantomjs工作。

关于networking字体是否以及如何与phantomjs一起工作,有各种相互矛盾和混淆的报道。 有这样的文章包含过时的信息与死链接。 而像这样的post表明, phantomjs 2.0将会或可以支持网页字体,其他人则认为它不会但2.0.1会。 在这篇文章中有一个build议,webfonts在2.0工作。

我已经尝试了很多select,包括与phantomjs 2.0和2.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); } }); 

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

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

如果Web Font Loader确定当前的浏览器不支持@font-face ,那么inactive事件将被触发。

我的怀疑是,networking字体加载器确实确定浏览器(phantomjs)不支持这一点,因此总是达到inactive

任何人都有phantomjs +网页字体+网页字体加载器工作?

什么是您使用的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'; 

不要被标记为正确的,只是扩大上述答案。 由于所有的phantomjs包装(如phridge和phantomjs-node )基本上都会产生一个新的phantomjs进程,从nodejs上下文运行时结果应该是相同的。

phatomjs-webfonts.html:

 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>PhantomJS WebFontsTest</title> </head> <body> <script src="https://ajax.googleapis.com/ajax/libs/webfont/1.5.18/webfont.js"></script> <script> WebFont.load({ google: { families: ['Droid Sans', 'Droid Serif'] }, loading: function(){ console.log('WebFonts loading'); }, active: function(){ console.log('WebFonts active'); }, inactive: function(){ console.log('WebFonts inactive'); } }); </script> </body> </html> 

phantomjs-webfonts.js:

 var page = require('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'; page.onConsoleMessage = function(msg, lineNum, sourceId) { console.log('Console: ' + msg); }; page.open('http://<server-address>/phantomjs-webfonts.html', function(status) { console.log("Loading status: " + status); }); 

命令:

 phantomjs phantomjs-webfonts.js 

输出

 Console: WebFonts loading Console: WebFonts active Loading status: success