Google / Typekit Webfont-Loader不会检测非ASCII字体

时间:2011-07-29 22:00:49

标签: javascript variables callback webfonts google-webfonts

我正在使用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;
    }

3 个答案:

答案 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);
})();

要点:

  1. 使用webfont loader> 1.5.0支持“testStrings”
  2. 使用'\ uE003 \ uE005'作为“testStrings”,我试过'\ u9ED1'但不行,我还没弄清楚为什么
  3. 因中文字体文件较大而更改超时,默认为5000
  4. 希望它也可以帮助别人!

答案 2 :(得分:0)

有相同的概率,但尚未找到任何解决方案。它只影响几种字体,即Bree或Playfair。我怀疑它与webkit逐步下载字体有关。似乎“fontinactive”立即被解雇 。我最终得到了一些复杂的Javascript东西,在一个区间内检查隐藏容器的尺寸:/