我正在使用Google webfont loader,但我无法让fontactive
回调起作用。字体在页面上呈现,但由于某种原因,回调未触发。 (相反,它等待5秒,然后fontinactive
回调触发。)我怀疑问题在于我如何向函数声明这两个变量。
编辑:问题可能与字体有关,而不是我如何声明变量。 font-loader成功检测到“STIXGeneral”字体系列何时加载,其中包含常规字母字符。
fontactive
回调的文档为here。我无法找到使用fontactive
回调的任何示例。
我在下面发布了我的代码副本。
来自Javascript:
WebFont.load({
custom: {
families: [ 'STIXSizeOneSym' ],
urls: ['resources/stix-fonts/STIX-fonts.css']
},
fontactive: function(stixsizeonesym, n4) { alert("1") },
fontinactive: function(stixsizeonesym, n4) { alert("2") },
inactive: function() { alert("10") }
});
来自STIX-fonts.css:
@font-face {
font-family: 'STIXSizeOneSym';
src: url('STIXSizOneSymBol-webfont.eot');
src: url('STIXSizOneSymBol-webfont.eot?#iefix') format('embedded-opentype'),
url('STIXSizOneSymBol.otf') format('opentype'),
url('STIXSizOneSymBol-webfont.ttf') format('truetype');
font-weight: bold;
font-style: normal;
}
答案 0 :(得分:4)
我是webfontloader的开发人员之一。我们当前正在使用ASCII字符串来检测字体是否已加载。因此,如果您的字体不包含字符“BESbswy”,则webfontloader将无法检测到它。我们正在努力添加对可配置测试字符串的支持(因此您可以在字体支持的Unicode范围中包含一些字符。)我在webfontloader存储库(https://github.com/typekit/webfontloader/issues/104)上为此打开了一个问题。
作为临时解决方案,您可以编译自己的webfontloader版本,将您的字体中的字符添加到测试字符串中。如果您需要帮助,请告诉我。
答案 1 :(得分:2)
我尝试在从Google Early Access下载的中文字体“cwTeXHei”上使用加载程序。
我花了一个下午,最后使用以下代码进行fontactive工作:
WebFontConfig = {
custom: {
families: ['ChineseCustomFont'],
testStrings: {
'ChineseCustomFont': '\uE003\uE005'
},
},
timeout: 8000
};
(function() {
var wf = document.createElement('script');
wf.src = ('https:' == document.location.protocol ? 'https' : 'http') +
'://ajax.googleapis.com/ajax/libs/webfont/1.5.3/webfont.js';
wf.type = 'text/javascript';
wf.async = 'true';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(wf, s);
})();
要点:
希望它也可以帮助别人!
答案 2 :(得分:0)
有相同的概率,但尚未找到任何解决方案。它只影响几种字体,即Bree或Playfair。我怀疑它与webkit逐步下载字体有关。似乎“fontinactive”立即被解雇 。我最终得到了一些复杂的Javascript东西,在一个区间内检查隐藏容器的尺寸:/