Блог веб-разработчика v 1.0.0
Symfony2, AngularJS, React, Gulp, PhpStorm и много других страшных слов

Удобная загрузка веб шрифтов

9 лет назад
11676 просмотров
CSS JavaScript Полезности

Как добавить на страницу свой шрифт?

Обычно, когда мы хотим добавить на страницу кастомный шрифт, то используется @font-face. Шрифты при этом как правило грузятся либо с того же сервера, что и сайт, тогда ссылка на файле указывается внутри @font-face. Либо мы используем что-то вроде Google Fonts, тогда гугл все делает за нас.

Но как при этом узнать загрузился ли шрифт, например? А никак.

Так как же узнать когда загрузился кастомный шрифт?

Можно использовать библиотеку Web Font Loader. Она позволяет контролировать загрузку шрифтов и генерирует ряд событий, например при загрузке или ошибке загрузке какого-либо шрифта. В дополнение, Web Font Loader просто удобно использовать для управления кастомными шрифтами.

Простейшая конфигурация библиотеки:

<script src="https://ajax.googleapis.com/ajax/libs/webfont/1.5.18/webfont.js" type="text/javascript"></script>
<script type="text/javascript">
WebFont.load({
    google: {
      families: ['Droid Sans', 'Droid Serif']
    }
  });
</script>

Итак, что мы здесь сделали: подключили нашу библиотеку и загрузили два шрифта из Google Fonts. Вроде бы ничего особенного, но!

Во первых, библиотека генерирует ряд событий по которым мы можем отслеживать процесс загрузки шрифтов:

WebFontConfig = {
  loading: function() {},
  active: function() {},
  inactive: function() {},
  fontloading: function(familyName, fvd) {},
  fontactive: function(familyName, fvd) {},
  fontinactive: function(familyName, fvd) {}
};

Из названия функций и так все понятно, объяснять не буду. Если что - есть документация. WebFontConfig - просто глобальный объект.

Помимо этого в процессе загрузки тегу html добавляется ряд классов:

.wf-loading
.wf-active
.wf-inactive
.wf-<familyname>-<fvd>-loading
.wf-<familyname>-<fvd>-active
.wf-<familyname>-<fvd>-inactive

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

Само-собой, библиотека поддерживает загрузку своих шрифтов из обычных файлов, а не специальных сервисом. делается это вот так:

WebFontConfig = {
  custom: {
    families: ['My Font', 'My Other Font:n4,i4,n7'],
    urls: ['/fonts.css']
  }
};

В файле fonts.css как обычно указываем @font-face. И все будет работать.

Помимо этого, библиотека поддерживает еще ряд сервисов по доставке шрфитов, а именно: Fontdeck, Fonts.com, Google, Typekit.

Что еще почитать
Создание CSS спрайтов с помощью Gulp
9 лет назад
14845 просмотров
Урок по созданию CSS спрайтов с помощью таск-менеджера Gulp. В отличие от других инструментов: средонезависимо, быстро, удобно, переносимо, настраиваемо.