2

我正在使用Google webfont loader,但我无法让fontactive回调工作。字体正在页面上呈现,但由于某种原因回调没有触发。(而是等待 5 秒,然后fontinactive回调触发。)我怀疑问题在于我如何将两个变量声明给函数。

编辑:问题可能与字体有关,而不是我如何声明变量。字体加载器成功检测到“STIXGeneral”字体系列何时加载,其中包含常规字母字符。

fontactive回调的文档在这里。我还没有找到任何使用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;
    }
4

3 回答 3

4

我是 webfontloader 的开发者之一。我们目前正在使用 ASCII 字符串来检测字体是否已加载。因此,如果您的字体不包含字符“BESbswy”,webfontloader 将无法检测到它。我们正在努力添加对可配置测试字符串的支持(因此您可以包含字体支持的 Unicode 范围内的一些字符。)我已经在 webfontloader 存储库(https://github.com/typekit/ webfontloader/issues/104)。

作为临时解决方案,您可以编译自己的 webfontloader 版本,将字体中的字符添加到测试字符串中。如果您需要帮助,请告诉我。

于 2013-04-01T07:07:12.967 回答
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

希望它也可以帮助某人!

于 2014-11-12T11:28:55.410 回答
0

有同样的问题,还没有找到任何解决方案。它只影响少数字体,例如 Bree 或 Playfair。我怀疑它与 webkit 逐步下载字体有关。似乎“fontinactive”立即被解雇。我最终得到了一些复杂的 Javascript 东西,检查了一个间隔内隐藏容器的尺寸:/

于 2012-02-08T21:36:55.077 回答