Google / Typekit Webfont-Loader не обнаруживает шрифты, отличные от ASCII - PullRequest
2 голосов
/ 30 июля 2011

Я использую 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;
    }

Ответы [ 3 ]

4 голосов
/ 01 апреля 2013

Я один из разработчиков webfontloader.В настоящее время мы используем строку ASCII, чтобы определить, загружен шрифт или нет.Таким образом, если ваш шрифт не содержит символов «BESbswy», webfontloader не сможет его обнаружить.Мы работаем над добавлением поддержки настраиваемых тестовых строк (чтобы вы могли включить некоторые символы из диапазона Unicode, поддерживаемого вашим шрифтом). Я открыл для этого проблему в репозитории webfontloader (https://github.com/typekit/webfontloader/issues/104).

Каквременное решение: вы можете скомпилировать собственную версию webfontloader, которая добавляет символы из вашего шрифта в тестовую строку. Дайте мне знать, если вам нужна помощь с этим.

2 голосов
/ 12 ноября 2014

Я пытаюсь использовать загрузчик на китайском шрифте "cwTeXHei", загруженном с Google Early Access .

Я провел полдня и наконец выполнил фонативную работу, используя следующие коды:

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. Использовать загрузчик веб-шрифтов> 1.5.0 для поддержки "testStrings"
  2. Используйте '\ uE003 \ uE005' в качестве "testStrings", я пробовал '\ u9ED1', но не работает, и я не могу понять, почему
  3. изменить время ожидания, так как файлы китайских шрифтов большие, по умолчанию 5000

Надеюсь, это кому-то тоже поможет!

0 голосов
/ 09 февраля 2012

Имейте такую ​​же проблему и пока не нашли решения.Это влияет только на несколько шрифтов, например, Bree или Playfair.Я подозреваю, что это как-то связано с прогрессивной загрузкой шрифтов в webkit.Кажется, "fontinactive" запускается немедленно .Я закончил с некоторыми сложными вещами Javascript, проверяя размеры скрытого контейнера в интервале: /

...