Google Fonts - это бесплатная платформа с открытым исходным кодом, которая предлагает обширную библиотеку веб-шрифтов. Для веб-разработчика подключение этих шрифтов в свои проекты необходимо для создания визуально привлекательных дизайнов на различных устройствах.

Одним из важнейших аспектов эффективного использования Google Fonts является понимание CSS свойства font-display, которое определяет, как будет отображаться шрифт вашего сайта в процессе его загрузки. Другими словами, свойство указывает браузеру как долго он должен ждать загрузку шрифта и должен ли он перед этим отображать резервный встроенный шрифт. Используя свойство font-display, вы можете оптимизировать взаимодействие с пользователем, уменьшив влияние медленной загрузки шрифта на внешний вид и производительность вашего веб-сайта.

Как добавить Google Fonts в свой проект

Существует два основных метода добавления Google Fonts в ваш проект: ссылкой и импортом. Также их можно скачать и подключить в стилях с помощью правила @font-face.

Добавление шрифтов Google ссылкой

Это наиболее распространенный способ добавления шрифтов Google в ваш проект. Для этого выполните следующие действия:

  1. Зайдите на сайт Google Fonts.
  2. Выберите шрифт, который хотите использовать.
  3. Кликните на шрифт, чтобы открыть страницу сведений о нем.
  4. Выберите нужные стили и жирность шрифта.
  5. Если панелька справа с выбранными опциями шрифта не появилась, нажмите иконку «Показать выбранное».
  6. В выехавшей панели выберете опцию <link> и вы увидите код для добавления шрифта.

Например, чтобы добавить шрифт «Roboto», тег ссылки будет выглядеть так:

<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap" rel="stylesheet">

Его необходимо будет вставить в ваш HTML.

Добавление шрифтов Google импортом

Импортировать шрифты Google можно используя правило @import в вашем файле CSS. Для этого выполните следующие действия:

  1. Выполните шаги 1-5 из способа выше.
  2. Вместо опции <link> переключитесь на опцию @import.
  3. Скопируйте предоставленный фрагмент кода и вставьте его в начало файла CSS.

Например, для импорта шрифта «Roboto» правило будет выглядеть так:

@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap');

Подключение шрифтов с помощью @font-face

Посетив сайт Google Fonts и выбрав необходимый шрифт, вы можете его скачать, кликнув на соответствующей иконке в верхней панели. Далее, каждый из необходимых шрифтов можно подключить в CSS-стилях отдельно, используя правило @font-face. Например, подключить скачанный шрифт «Roboto-Regular» можно следующим образом:

@font-face {
  font-family: 'Roboto';
  src: url('path/to/Roboto-Regular.ttf');
  font-weight: normal;
  font-style: normal;
}

Значения свойства font-display

Свойство font-display имеет пять возможных значений, каждое из которых имеет разное поведение при отрисовке страницы.

auto

Это значение оставляет поведение рендеринга шрифта на усмотрение браузера. Оно может привести к несогласованному отображению шрифта в разных браузерах

block

Это значение указывает браузеру сначала скрыть текст и дождаться загрузки шрифта. Если шрифт не загружается в течение короткого периода времени, браузер отобразит резервный шрифт. Как только пользовательский шрифт завершит загрузку, браузер заменит текст, чтобы использовать пользовательский шрифт. Этот метод может привести к нежелательному визуальному отображению сайта во время загрузки шрифта - резкому появлению текста.

swap

Значение указывает браузеру немедленно отображать текст с использованием резервного шрифта и переключаться на пользовательский шрифт после его загрузки. Этот метод может вызвать визуальное резкое изменение вида текста, но гарантирует, что текст будет виден пользователю с самого начала.

fallback

Значение представляет собой комбинацию block и swap. Браузер сначала скроет текст на короткое время (обычно около 100 мс). Если пользовательский шрифт загрузится в течение этого времени, браузер отобразит его. В противном случае он покажет резервный шрифт. По прошествии более длительного периода (обычно около трех секунд), если пользовательский шрифт все еще не загружен, браузер сдастся и продолжит использовать резервный шрифт.

optional

Значение аналогично fallback, но с более коротким периодом ожидания загрузки пользовательского шрифта. Если пользовательский шрифт не загрузится в течение этого короткого периода (зависит от браузера), браузер сдастся и продолжит использовать резервный шрифт. Этот метод отдает предпочтение производительности, а не отрисовке шрифта.

Реализация свойства font-display

Если шрифт добавляется ссылкой и импортом, то значение свойства font-display можно определить прямо в коде этих методов.

Для шрифта, добавленных ссылкой, значение можно изменить в параметре адреса. Например, для примера выше установим значение font-display: fallback:

<link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=fallback" rel="stylesheet">

Для шрифта, импортируемого в CSS с помощью @import, значение устанавливается подобным образом:

@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=fallback');

Если шрифт подключается с помощью @font-face, к остальным стилям добавляется еще один:

@font-face {
  font-family: 'Roboto';
  src: url('path/to/Roboto-Regular.ttf');
  font-weight: normal;
  font-style: normal;
  font-display: fallback;
}

Распространенные проблемы и их решение

Ниже описаны самые распространенные проблемы и их решения при использовании Google Fonts и свойства font-display.

Пользовательский шрифт не загружается или не отображается

  • Убедитесь, что вы правильно добавили тег <link> или правило @import в свой файл HTML или CSS.
  • Проверьте наличие опечаток или неправильного URL-адреса.
  • Убедитесь, что в ваших стилях CSS используется правильное имя семейства шрифтов и его толщина.

Мелькание невидимого текста или мелькание нестилизованного текста

  • Выберите другое значение font-display, которое лучше соответствует вашим требованиям. Например, если вы столкнулись с резким появлением текста из невидимого, попробуйте использовать значение swap или fallback. Если вы столкнулись с резким мельканием при изменении шрифта, рассмотрите возможность применения значения block или fallback.
  • Убедитесь, что ваш пользовательский шрифт загружается как можно раньше в процессе загрузки страницы.
  • Оптимизируйте размер файла шрифта, выбрав только необходимые стили и толщину.

Несогласованное отображение шрифтов в разных браузерах.

  • Установите одно из конкретных значений font-display вместо auto.
  • Протестируйте свой веб-сайт в различных браузерах на предмет корректных стилей для шрифта.