Javascript Google/Typekit Webfont Loader未检测到非ASCII字体
我正在使用,但无法使Javascript Google/Typekit Webfont Loader未检测到非ASCII字体,javascript,variables,callback,webfonts,google-webfonts,Javascript,Variables,Callback,Webfonts,Google Webfonts,我正在使用,但无法使fontactive回调正常工作。字体正在页面上呈现,但由于某些原因,回调没有启动。(相反,它会等待5秒钟,然后启动fontinactive回调。)我怀疑问题在于如何向函数声明这两个变量 编辑:问题可能与字体有关,而不是如何声明变量。字体加载器成功地检测到“STIXGeneral”字体系列何时加载,其中包含常规字母字符 fontactive回调的文档已保存。我还没有找到任何使用fontactive回调的示例 我已经在下面发布了我的代码副本 来自Javascript: 来自
fontactive
回调正常工作。字体正在页面上呈现,但由于某些原因,回调没有启动。(相反,它会等待5秒钟,然后启动fontinactive
回调。)我怀疑问题在于如何向函数声明这两个变量
编辑:问题可能与字体有关,而不是如何声明变量。字体加载器成功地检测到“STIXGeneral”字体系列何时加载,其中包含常规字母字符
fontactive
回调的文档已保存。我还没有找到任何使用fontactive
回调的示例
我已经在下面发布了我的代码副本
来自Javascript:
来自STIX字体。css:
有同样的问题,但尚未找到任何解决方案。它只影响少数字体,即Bree或Playfair。我怀疑这与webkit逐步下载字体有关。“fontinactive”似乎立即被触发。最后我做了一些复杂的Javascript工作,每隔一段时间检查一个隐藏容器的尺寸://我是webfontloader的开发人员之一。我们目前正在使用ASCII字符串来检测字体是否已加载。因此,如果您的字体不包含字符“BESbswy”,webfontloader将无法检测到它。我们正在努力添加对可配置测试字符串的支持(因此您可以包含字体支持的Unicode范围中的一些字符)。我在webfontloader存储库()上对此提出了一个问题
作为临时解决方案,您可以编译自己版本的webfontloader,将字体中的字符添加到测试字符串中。如果您需要帮助,请告诉我。我尝试在从下载的中文字体“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);
})();
需要注意的要点:
希望它也能帮助别人 如果你认为它可能是第二个变量,为什么不干脆试试呢?如果您以另一种方式解决了问题,请告知我们。@Replete-第二个变量(
n4
以上)用于指定要加载的字体的重量和样式。(例如,n4指定了一种重400的罗马字体,这通常是字体的默认值。)我推测n4
变量可能是这里的问题,因为我无法确定STIXSizeOneSym字体的重量和样式。(如果您有Mac电脑,您可以尝试使用FontForge读取字体声明的重量和样式。我不能这样做,因为我破坏了我的Rosetta安装。)@Replete(续)-尽管如此,我怀疑这里的问题不是因为使用了错误的变量,而是因为“STIXSizeOneSym”字体不包含任何字母或数字符号。使用n4
适用于包含字母数字字符的其他STIX字体。没有,我还没有找到任何解决方案。@Replete(续)-您可以尝试测试Google Webfont loader允许的每个变量组合,但因为我不认为这是问题所在,我没有花时间编码40多个不同的组合。我不确定您的问题是否与我的相同。我的问题是跨浏览器。我认为STIX字体出现问题的原因是因为它们不包含标准的ASCII字符集。我如何编译自己版本的webfont loader以使用不同的测试字符串?
@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;
}
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);
})();