Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google/Typekit Webfont Loader未检测到非ASCII字体_Javascript_Variables_Callback_Webfonts_Google Webfonts - Fatal编程技术网

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);
})();
需要注意的要点:

  • 使用webfont loader>1.5.0支持“测试字符串”
  • 使用“\uE003\uE005”作为“testStrings”,我尝试了“\u9ED1”,但不起作用,我还不知道为什么
  • 更改超时,因为中文字体文件很大,默认值为5000

  • 希望它也能帮助别人

    如果你认为它可能是第二个变量,为什么不干脆试试呢?如果您以另一种方式解决了问题,请告知我们。@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);
    })();