логотип PurpleSchool
логотип PurpleSchool

Форматы и способы подключения шрифтов

Автор

Алексей Овсянников

Форматы шрифтов

  • EmbeddedOpenType (EOT) – формат шрифта полезный для рендера шрифтов в старых версиях IE. Если вам не нужно поддерживать IE8 и ниже, то лучше отказаться от этого формата.
  • TrueType (TTF) – формат шрифта полезный для расширения поддержки старых браузеров, особенно мобильных при необходимости.
  • Scalable Vector Graphics (SVG) - формат векторного воссоздания шрифта. Это единственный подходящий формат для мобильных версий браузера Safari версии 4.1 и ниже. Шрифты SVG в настоящее время не поддерживаются другими браузерами.
  • Web Open Font Format (WOFF) - формат-обертка для шрифтов True Type и Open Type. Формат сжимает файлы шрифтов и поддерживается во всех современных браузерах.
  • Web Open Font Format 2 (WOFF2) обновление для оригинального формата WOFF. Обеспечивает меньший размер файлов и лучшую производительность в современных браузерах.

Какой формат использовать?

  • Если ваша целевая аудитория использует современные браузеры, вы можете использовать @font-face, используя форматы шрифтов WOFF и WOFF2. Эти форматы обеспечивают хорошее сжатие и позволяют работать с меньшим количеством файлов в коде.
  • Если аналитика сайта подсказывает вам, что среди пользователей немалый % использует устаревшие версии браузеров, можете включить файлы EOT и TTF. Так же для расширения браузерной поддержки могут пригодиться шрифты SVG формата.
  • Для конвертации шрифтов из одного формата в другой можно использовать сторонние ресурсы на подобии этого.

Способы добавления шрифтов на страницу

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

  1. Подключить шрифт с внешнего ресурса в HTML документе, использовав для тег link. Например, вот пример подключения шрифта Spectral сервиса Google Fonts.
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link
  href="https://fonts.googleapis.com/css2?family=Spectral:ital,wght@0,400;0,500;0,700;1,500&display=swap"
  rel="stylesheet"
/>
  1. Создать ссылку для подключения шрифтов мы так же можем внутри CSS файла, используя at правило import.
@import url("https://fonts.googleapis.com/css2family=Playfair+Display&display=swap");
  1. Используя @font-face можно разместить шрифты в локальной папке проекта, что позволяет более гибко контролировать формат шрифтов. At правило @font-face должно быть подключено в файле стилей до основных стилей. Вот пример полной записи
@font-face {
  font-family: "FontName";
  src: url("path/filename.eot");
  src: url("path/filename.eot?#iefix") format("embedded-opentype"), url("path/filename.woff2")
      format("woff2"), url("path/filename.woff") format("woff"), url("path/filename.ttf")
      format("truetype");
}

Если необходимо поддерживать только современные браузеры, стили можно сократить до:

@font-face {
  font-family: "FontName";
  src: url("path/filename.woff2") format("woff2"), url("path/filename.woff")
      format("woff");
}

Особенности загрузки шрифтов и свойство font-display

  • Используя веб-шрифты шрифты помните, что браузеру конечного пользователя нужно время, чтобы подключить нужный файл стилей. При слабом интернете со стороны пользователя, это негативно скажется на скорости загрузке сайта. Раньше стандартным поведением браузера было сначала загрузить запасные шрифты, а когда подгрузиться файл пользовательских шрифтов, резкой вспышкой изменить шрифты на странице. Такое поведение получило название Flash Of Unstyled Text.
  • В наши дни браузеры по умолчанию скрывают текст перед загрузкой пользовательских шрифтов. Важно знать, что разработчики могут управлять поведением загрузки шрифтов при помощи свойства font-display. Свойство применяется к правилу @font-face, которое определяет пользовательские шрифты. Изменяя значение свойства мы можем указать браузеру как мы именно стоит загружать наши шрифты.

Синтаксис

@font-face {
  font-family: "FontName";
  src: url("path/filename.woff2") format("woff2"), url("path/filename.woff")
      format("woff");
  font-display: fallback;
}

Значения

  • auto(значение по умолчанию): позволяет браузеру использовать значение умолчанию, который для каждого браузера свое. Чаще всего выполняется как значение block.
  • block: браузер скрывает страницы, пока пользовательский шрифт не загрузиться полностью.
  • swap: браузер использует резервный шрифт для отображения текста до тех пор, пока пользовательский шрифт не будет полностью загружен. Смена шрифта резервного шрифта на пользовательский происходит в формате вспышки.
  • fallback: значение представляет собой баланс между auto и swap. Браузер временно скроет текст примерно на 100 миллисекунд, и если шрифт еще не получен, он будет использовать резервный текст. Как только шрифт будет загружен, он перейдет к новому шрифту, растянув переход по времени.
  • optional: указывает браузеру сначала скрыть текст, а затем перейти к резервному шрифту, пока пользовательский шрифт не станет доступен для использования. Однако это значение предоставляет браузеру решать, использовать загружаемые шрифты или нет. В качестве определяющего фактора используется параметр скорости соединения пользователя. И пользователи с более медленным соединением с меньшей вероятностью получат загружаемые шрифты.
Стрелочка влевоВведение в свойства шрифтов

Постройте личный план изучения Css до уровня Middle — бесплатно!

Css — часть карты развития Frontend

  • step100+ шагов развития
  • lessons30 бесплатных лекций
  • lessons300 бонусных рублей на счет

Бесплатные лекции

Все гайды по Css

Полное руководство по использованию свойства will-change в CSSПолное руководство по свойству transform-style в CSSУправление точкой опоры трансформаций в CSS с помощью transform-originИспользование функций CSS-трансформации; Полное руководствоПолное руководство по свойству transform-box в CSSУправление элементами с помощью свойства transform в CSSПолное руководство по свойству perspective-origin в CSSПолное руководство по свойству perspective в CSSПолное руководство по свойству backface-visibility в CSS
Универсальный селектор в CSS. Полное руководство с примерамиСелектор по тегу в CSS. Полное руководство с примерамиПеречисление селекторов в CSS. Полное руководство с примерамиСелектор потомка в CSS. Полное руководство с примерамиСелектор по идентификатору в CSS; Полное руководство с примерамиКомбинированные селекторы в CSS; Полное руководство с примерамиСелектор по классу в CSS; Полное руководство с примерамиСелектор по атрибуту в CSS; Полное руководство с примерами
Псевдокласс selection. Полное руководство с примерамиПсевдоэлементы в CSS. Полное руководство с примерамиПсевдоэлемент placeholder в CSS. Полное руководство с примерамиПсевдоэлемент marker в CSS. Полное руководство с примерамиПсевдоэлемент first-line в CSS. Полное руководство с примерамиПсевдоэлемент first-letter в CSS. Полное руководство с примерамиСвойство content в CSS. Полное руководство с примерамиПсевдоэлемент before в CSS. Полное руководство с примерамиПсевдоэлемент backdrop в CSS. Полное руководство с примерамиПсевдоэлемент after в CSS. Полное руководство с примерами
Псевдокласс where в CSS. Полное руководство с примерамиПсевдокласс visited в CSS. Полное руководство с примерамиПсевдоклассы группы type в CSS. Полное руководство с примерамиПсевдокласс target в CSS. Полное руководство с примерамиПсевдокласс root в CSS. Полное руководство с примерамиПсевдокласс required в CSS. Полное руководство с примерамиПсевдоклассы в CSS. Полное руководство с примерамиПсевдокласс placeholder-shown в CSS. Полное руководство с примерамиПсевдокласс optional в CSS. Полное руководство с примерамиПсевдокласс not в CSS. Полное руководство с примерамиПсевдокласс link в CSS. Полное руководство с примерамиПсевдокласс lang в CSS. Полное руководство с примерамиПсевдокласс is в CSS. Полное руководство с примерамиПсевдоклассы invalid и valid в CSS. Полное руководство с примерамиПсевдокласс indeterminate в CSS. Полное руководство с примерамиПсевдоклассы in-range и out-of-range. Полное руководство с примерамиПсевдокласс hover в CSS. Полное руководство с примерамиПсевдокласс has в CSS. Полное руководство с примерамиПсевдокласс focus-within в CSS. Полное руководство с примерамиПсевдокласс focus-visible в CSS. Полное руководство с примерамиПсевдокласс focus в CSS. Полное руководство с примерамиПсевдокласс empty в CSS. Полное руководство с примерамиПсевдоклассы disabled и enabled в CSS. Полное руководство с примерамиПсевдокласс default в CSS. Полное руководство с примерамиПсевдоклассы группы child в CSS. Полное руководство с примерамиПсевдокласс checked в CSS. Полное руководство с примерамиПсевдокласс active в CSS. Полное руководство с примерами
Функция var в CSS. Полное руководство с примерамиФункция url в CSS. Полное руководство с примерамиФункция repeating-radial-gradient в CSS. Полное руководство с примерамиФункция repeating-linear-gradient в CSS. Полное руководство с примерамиФункция repeating-conic-gradient в CSS. Полное руководство с примерамиФункция radial-gradient в CSS. Полное руководство с примерамиФункция min в CSS. Полное руководство с примерамиФункция max в CSS. Полное руководство с примерамиФункция linear-gradient в CSS. Полное руководство с примерамиФункция image-set в CSS. Полное руководство с примерамиФункции фильтров в CSS. Полное руководство с примерамиФункция conic-gradient в CSS. Полное руководство с примерамиФункция clamp в CSS. Полное руководство с примерамиФункция calc в CSS. Полное руководство с примерамиФункция attr в CSS. Полное руководство с примерами
Вендорные префиксы в CSS. Полное руководство с примерамиКонтекст наложения в CSS. Полное руководство с примерамиСпецифичность в CSS. Полное руководство с примерамиПодход «Pixel Perfect» в верстке сайтов. Полное руководство с примерамиНаследование в CSS. Полное руководство с примерамиCSS-правило. Полное руководство с примерамиКомментарии в CSS. Полное руководство с примерамиПринцип каскада в CSS. Полное руководство с примерамиБлочная модель в CSS. Полное руководство с примерамиСвойство all в CSS. Полное руководство с примерамиПодключение стилей к HTML. Полное руководство с примерами
Полное руководство по свойству will-change в CSSПолное руководство по transition-timing-function в CSSОсновы использования transition-property в CSS; управление плавными переходамиCSS transition-duration; Полное руководство по управлению продолжительностью переходовCSS transition-delay; Полное руководство по управлению задержкой переходовCSS transition; Полное руководство по созданию плавных переходовCSS @keyframes; Полное руководство по созданию анимацийCSS animation-timing-function; Полное руководство по управлению проигрыванием анимацийCSS animation-play-state; Полное руководство по управлению анимациямиCSS animation-name; Полное руководство по заданию имени анимацииCSS animation-iteration-count; Полное руководство по управлению количеством повторений анимацииCSS animation-fill-mode; Полное руководство по управлению состоянием элементов после анимацииCSS animation-duration; Полное руководство по управлению длительностью анимацииCSS animation-direction; Полное руководство по управлению направлением анимацииCSS animation-delay; Полное руководство с примерамиCSS-анимации; Полное руководство с примерами
Открыть базу знаний

Лучшие курсы по теме

изображение курса

HTML и CSS

Антон Ларичев
иконка часов6 бесплатных уроков
иконка звёздочки рейтинга4.8
Frontend
Mobile
изображение курса

TypeScript с нуля

Антон Ларичев
иконка часов6 бесплатных уроков
иконка звёздочки рейтинга4.8
Backend
Frontend
Mobile
изображение курса

Next.js - с нуля

Антон Ларичев
иконка часов8 бесплатных уроков
иконка звёздочки рейтинга4.7
Frontend