×
Россия +7 (909) 261-97-71

Оптимизируем шрифты: 9 шагов к быстрому сайту

Россия +7 (909) 261-97-71
Шрифт:
2 32445
Подпишитесь на нас в Telegram

Шрифты на сайте (отличные от стандартных) — это «серебряная пуля» дизайнеров и огромная головная боль разработчиков. Шрифты легко позволяют сделать сайт уникальным, запоминающимся, но платой за эту является существенное ухудшение скорости загрузки сайта.

Как правильно подключить собственные шрифты и не навредить скорости сайта? Разбираем конкретные шаги, которые позволят это сделать.

1. Правильное подключение

Собственные шрифты сайта, скорее всего, отсутствуют в браузере пользователя. Поэтому необходимо указать дополнительные к загрузке файлы, в которых будет содержаться техническая информация о начертании шрифтов (символы — глифы, особенности совместного начертания символов и строк и другие данные). Как это часто бывает, для каждого браузера нужен свой файл — Google Chrome понимает формат woff и woff2 (наиболее продвинутые), старый Android понимает только TTF, а IE — eot.

Дополнительно можно учесть, что в редких случаях шрифт может быть уже установлен на устройство пользователя: в этом случае можно использовать директиву local. Развернутая CSS инструкция, подключающая соответствующий шрифт на сайте, будет выглядеть примерно так (используем различные форматы для «попадания» в разные браузеры):

@font-face {
font-family: 'Awesome Font';
font-style: normal;
font-weight: 400;
src: local('Awesome Font'),
url('/fonts/awesome.woff2') format('woff2'),
url('/fonts/awesome.woff') format('woff'),
url('/fonts/awesome.ttf') format('ttf'),
url('/fonts/awesome.eot') format('eot');
}

В этом случае все файлы шрифтов размещаются на хостинге. Для поддержки всех браузеров обычно используется набор файлов шрифтов для каждого начертания (гарнитуры). Его можно создать, например, через Font Squirrel: сервис автоматически предоставит CSS-код и набор файлов для размещения на сервере.

В качестве альтернативного варианта можно использовать сервис Google Fonts: вы вставляете вызов скрипта сервиса на сайт, а в зависимости от используемого браузера сервис уже отдает соответствующий CSS-код и файлы шрифта (уже с разбиением по языкам), поддерживая более 30 разных комбинаций.

2. Обратная совместимость шрифтов

Для максимального ускорения отображения текста вашего сайта на любом пользовательском устройстве вы должны сообщить браузеру, какой запасное семейство шрифтов можно использовать, если ваш собственный шрифт недоступен (не загрузился еще или загружается неподдерживаемый формат). Для этого в директиве font-face после названия вашего шрифта нужно указать наиболее подходящую системную альтернативу с обязательным окончанием serif (шрифт с засечками), sans-serif (без засечек) или monospace (равной ширины). Хотя обратная совместимость приводит к FOUT, но эта альтернативна лучше, чем невидимый на сайте текст (FOIT).

Но основную проблему с загрузкой собственных шрифтов это не решает: шрифты большие. Иногда слишком большие. И почти всегда они требуются, чтобы отобразить текст на странице (т.е. загрузка шрифта идет на стадии «белого экрана», максимально раздражая пользователей). Как это вылечить?

3. Инвентаризация шрифтов

Третий, и наиболее важный шаг в оптимизации – оставить только нужные шрифты. Инвентаризация шрифтов (удаление неиспользуемых на сайте или максимальная обрезка используемых и фактически используемых символов). Также нужно выбрать не только шрифты, но и их варианты (обычный, курсив, полужирный).

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

4. Использование Google Fonts API

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

fonts API.jpg

Google Fonts API позволяет загрузить только нужные варианты щрифта, а также загружает шрифты по наборам символов (позволяет браузерам не загружать полностью шрифт, если не все глифы требуются для отображения страницы). Среди дополнительных возможностей стоит отметить и параметр text={letters}, который обрезает символы в загружаемом шрифте строго до заданных (если шрифт используется только для логотипа, это может быть очень ценно).

5. Уменьшение размера шрифтов

Если вы используете статическое сжатие, то достаточно подготовить архивы с файлами шрифтов и разместить их рядом с файлами шрифтов. При динамическом сжатии проверьте, что все основные форматы шрифтов — EOT, TTF, OTF, SVG, WOFF и WOFF2 — отдаются с хостинга сжатыми (проверка сжатия). Если это не так, то нужно добавить требуемые расширения или типы файлов в правила сжатия. Gzip (или zopfli) сжатие позволяет сократить размер шрифтов на 15-50%.

6. Удаление глифов

Для отображения текста на сайте обычно требуются далеко не все символы, включенные в шрифт по умолчанию. Часть из них относится к другому языку (например, к китайскому), часть — к специальным символам, которые вы не используете. Существует большое количество инструментов для удаления из шрифтов неиспользуемых глифов и утилиты по Windows / Mac. Наиболее популярные — это сервис Font Squirrel (в режиме Advanced), а также Subset.py и FontPrep. Также Google Fonts позволяет загружать только используемые наборы символов. Этот метод оптимизации позволяет сократить результирующий файл еще на 10-50%.

В совокупности, все указанные методы оптимизации размера подключаемых шрифтов позволяют существенно ускорить отображение сайта на всех устройствах, независимо от красоты используемых шрифтов и неплохо автоматизируются: например, в облаке Айри.рф сокращается размер поступающих с хостинга шрифтов на 20-80%.

7. Кэширование шрифтов в браузере

Есть несколько подходов, позволяющих применить некоторую «магию» к загрузке шрифтов, чтобы до минимума снизить негативные эффекты.

Первое – это жесткое кэширование файлов (для обычных пользователей) и base64-представления (в localStorage, для мобильных пользователей). Прием работает только для вернувшихся на сайт пользователей, но для них позволяет существенно сократить время загрузки ( Детальная инструкция по использования localStorage).

8. Font Loading API

Второе – использование Font Loading API (поддерживается не всеми браузерами). При первичной загрузке страницы можно показать текст в установленном у пользователя шрифте, асинхронно загрузить нужный шрифт – и потратить несколько десятков миллисекунд (почти невидимое «подвисание» браузера) на перерисовку страницы по готовности шрифта. Существуют библиотеки для автоматизации процесса, одна из них представлена здесь.

9. Предзагрузка шрифтов

И, наконец, предварительная загрузка шрифтов (если они используются не с первой страницы у пользователей: например, в личном кабинете). Для этого подойдет техника prefetch, которая уже очень хорошо поддерживается браузерами: http://caniuse.com/#feat=link-rel-prefetch.

Для более глубокого погружения в тему рекомендую к прочтению статью от Google на тему оптимизации шрифтов.

Есть о чем рассказать? Тогда присылайте свои материалы Марине Ибушевой


Новые 
Новые
Лучшие
Старые
Сообщество
Подписаться 
Подписаться на дискуссию:
E-mail:
ОК
Вы подписаны на комментарии
Ошибка. Пожалуйста, попробуйте ещё раз.
Отправить отзыв
  • Site-health
    1
    комментарий
    0
    читателей
    Site-health
    больше года назад
    Можно разбить большой файл шрифтов на куски. Каждый кусок - отдельный язык + английские символы (для названий там всяких). Вот сервис для этого site-health.com/tools/web-font-optimizer
    -
    -2
    +
    Ответить
  • Павел Зюкин
    6
    комментариев
    0
    читателей
    Павел Зюкин
    больше года назад
    Отличная статья Николай.
    -
    0
    +
    Ответить
ПОПУЛЯРНЫЕ ОБСУЖДЕНИЯ НА SEONEWS
Роскомнадзор начал требовать от владельцев сайтов уведомлять об использовании Google Analytics. Опыт SEOnews
Денис Добрынин
1
комментарий
0
читателей
Полный профиль
Денис Добрынин - Что-то я как-то пропустил момент, с которого например госномер автомобиля или разрешение монитора и версия установленного на ПК ОС стала перс.данными... Но сегодня тоже получили бумажку с ай-яй-яем. Пойдем на прием в теруправление.
Топ-10 SEO-курсов на 2024-2025 год для вашего роста
Виталий
1
комментарий
0
читателей
Полный профиль
Виталий - Вот тоже хороший курс для старта в сео -docs.google.com/document/d/1Qs7xVx4u3MZeuh8jf8s70NuIEYIuXVgtttaLMxADIsk/edit. Я много чего почерпнул для себя.
Авторы на RUTUBE теперь могут загружать видео в формате серий
Наиль г.Пенза
4
комментария
0
читателей
Полный профиль
Наиль г.Пенза - Ну что вы принимаете мою заявку? Или удалиться с "тихой грустью". А моих фото пока нет,они у меня удалились с Галереи, когда покупал себе смартфон. На фото пока моя дочь,сам я лежу в каридологие, сами понимаете какая у меня будет фотография
Рейтинги сайтов по отзывам в выдаче Яндекса: откуда берутся и как их улучшить
Romano
2
комментария
0
читателей
Полный профиль
Romano - дополнение: такие оценки не отображаются, но участвуют в общем рейтинге
Настоящий квест: как увеличили трафик на сайт сети компьютерных клубов в 19,5 раз, а число конверсий в 42,5 раза
Владлен
1
комментарий
0
читателей
Полный профиль
Владлен - Интересно, есть только вопрос по ссылкам, в каком диапазоне стоимость ссылки была, ведь судя по скринам за 5 месяцев было куплено 10 ссылок
Количество пользователей ИИ в сервисах Mail превысило 5 млн человек
Сергей Карененко
1
комментарий
0
читателей
Полный профиль
Сергей Карененко - Поздравление еще худо бедно написать можно. А когда в почте больше 10к писем, вот тут хорошо, что ии есть)
Россиянам могут запретить рекламу в Instagram* и Facebook*
Марина Ибушева
65
комментариев
0
читателей
Полный профиль
Марина Ибушева - Окончательное как раз и означает третье. Любой законопроект перед тем, как отправиться в Совет Федерации и на подпись прзиденту, проходит в России три обязательные стадии рассмотрения в Государственной Думе: Первое чтение - обсуждается общая концепция законопроекта. Второе чтение - более детальное обсуждение проекта, поправки и дополнения. Третье чтение (окончательное) - голосование за проект. Так что ожидается 25 марта второе и третье, окончательное чтение.
Мастер-класс по использованию операторов Wordstat: повышаем эффективность сбора семантики
Старый сеошник
5
комментариев
0
читателей
Полный профиль
Старый сеошник - Ну это же просто рекламная статья ради обратной ссылки)))) Куча воды по абсолютно базовой информации. Справка Яндекса описала все тоже самое, но в 8 раз короче yandex.ru/support2/wordstat/ru/content/operators Ок, про историю запроса там нет. Но это же просто в интерфейсе кнопка)
SEO-продвижение сайтов клиник
Дмитрий Севальнев
124
комментария
0
читателей
Полный профиль
Дмитрий Севальнев - Вау, мощно!
Тренды SEO в 2025 году
Борис
4
комментария
0
читателей
Полный профиль
Борис - 50/50 Описанная тобой ситуация (надеюсь, не против, что сразу на "ты") — типичная и вообще не требует какого-то глубинного опыта. Достаточно немного логики и наблюдательности. Разобью на пункты для читабельности: 1) Каннибализацию очень просто распознать. Достаточно загрузить СЯ в систему съёма позиций и мониторить источники. Если происходит некое «мигание» — идём (повторно) в топ, смотрим, подтверждаем гипотезу — склеиваем. 2) Но чаще всего эту проблему можно решить на уровне качественной группировки СЯ. А некоторые кластеры со знаком вопроса, которые мы решили разделить на несколько, достаточно держать под контролем. И снова получается, что внимательность и логика здесь могут помочь. И никакого серьёзного опыта не требуется. 3) Соглашусь, что в Яндексе правило "Интент = одна страница" — очень важно, но не всегда. Например, есть кластер, связанный с установкой сантехники, который включает запросы: "установка сантехники", "цена на установку сантехники". Вот здесь, как раз, для многих может быть неочевидно, что кластер лучше разделить на два: "Установка сантехники" и "Цена на установку сантехники". 4) Продолжая мысль из п.3 — в такой ситуации в Яндексе (скорее всего) всё будет ок. И никакой каннибализации не произойдёт. 5) Если говорить про Google (тот же п.3), то здесь, вероятно, возникнут проблемы (всё зависит от оптимизации страниц). Эти два кластера могут не дотянуть до топа из-за своей релевантности. Мы все знаем, что Google может «съесть» страницу с несколькими интентами, и всё будет ок. (в этом предложении пасхалка, что нужно сделать ;)) А если ещё поработать над ссылочным — вообще сказка. Конечно, эту проблему можно решить, но если переборщить, то каннибализация может уже произойти в Яндексе. Вот как раз чтобы уловить эту тонкую грань, и нужен хоть какой-то опыт, которого часто нет у джунов.
ТОП КОММЕНТАТОРОВ
Комментариев
910
Комментариев
834
Комментариев
554
Комментариев
540
Комментариев
483
Комментариев
392
Комментариев
373
Комментариев
262
Комментариев
249
Комментариев
171
Комментариев
156
Комментариев
141
Комментариев
124
Комментариев
121
Комментариев
100
Комментариев
97
Комментариев
97
Комментариев
96
Комментариев
80
Комментариев
77
Комментариев
74
Комментариев
67
Комментариев
65
Комментариев
60
Комментариев
59

Отправьте отзыв!
SEOnews использует cookie-файлы и обрабатывает персональные данные с использованием Яндекс Метрики, Google Analytics. Это улучшает работу сайта и взаимодействие с ним. Подтвердите ваше согласие, нажав кнопу Ок.
Ок
Отправьте отзыв!
Произошла ошибка:

Пожалуйста, перезагрузите страницу.