Барри Поллард — автор книги “HTTP/2 in Action” и редактор web-альманаха — написал большую статью про плюсы и минусы использования шрифтов Google Fonts — "Should you self-host Google Fonts?"
При работе над web-альманахом Барри занимался оптимизацией сайта. Большая проблема была с Google Fonts (fonts.googleapis.com). При его использовании блокировался рендеринг страницы; в экспериментах с веб-альманахом задержка была 3 секунды. Для ускорения отображение контента, было решено перенести все шрифты на основной домен. Но не всё так просто. Google Fonts делает много всего полезного, для того чтобы уменьшить объём загружаемых шрифтов, например, отдаёт шрифты без хинтинга для браузеров на macOS, автоматически использует font subsetting и т.п. Поэтому при отказе от Google Fonts нужно понимать, какие потенциальные плюсы будут потеряны.
Статья большая. Очень рекомендую почитать, если используете Google Fonts.
#fonts #performance #google
https://www.tunetheweb.com/blog/should-you-self-host-google-fonts/
При работе над web-альманахом Барри занимался оптимизацией сайта. Большая проблема была с Google Fonts (fonts.googleapis.com). При его использовании блокировался рендеринг страницы; в экспериментах с веб-альманахом задержка была 3 секунды. Для ускорения отображение контента, было решено перенести все шрифты на основной домен. Но не всё так просто. Google Fonts делает много всего полезного, для того чтобы уменьшить объём загружаемых шрифтов, например, отдаёт шрифты без хинтинга для браузеров на macOS, автоматически использует font subsetting и т.п. Поэтому при отказе от Google Fonts нужно понимать, какие потенциальные плюсы будут потеряны.
Статья большая. Очень рекомендую почитать, если используете Google Fonts.
#fonts #performance #google
https://www.tunetheweb.com/blog/should-you-self-host-google-fonts/
Tunetheweb
Should you self-host Google Fonts?
A deep dive into the performance implications of using Google Fonts (good and bad) and whether self-hosting is better.
Хуссейн Джирде в блоге web.dev рассказал, как можно предотвратить сдвиг контента из-за загрузки web-шрифтов — "Prevent layout shifting and flashes of invisibile text (FOIT) by preloading optional fonts".
В черновике спецификации CSS Fonts Module Level 4, есть раздел, который говорит о том, что загрузка опциональных шрифтов (
Так как эта фича ещё не в официальном стандарте, команда Chrome ждёт обратной связи.
#fonts #performance
https://web.dev/preload-optional-fonts/
В черновике спецификации CSS Fonts Module Level 4, есть раздел, который говорит о том, что загрузка опциональных шрифтов (
font-display: optional ) не должна приводить к перерасчёту лайаута. Браузеры в этом случае могут блокировать отрисовку страницы на небольшой промежуток времени, пока загружается необходимый web-шрифт. Чтобы избежать блокировки с версии Chrome 83, можно использовать комбинацию font-display: optional и <link rel="preload"> для загружаемого шрифта. Браузер с большой вероятностью загрузит шрифт до первой отрисовки, и в результате страница отобразится сразу с необходимым шрифтом без сдвига контента.Так как эта фича ещё не в официальном стандарте, команда Chrome ждёт обратной связи.
#fonts #performance
https://web.dev/preload-optional-fonts/
web.dev
Prevent layout shifting and flashes of invisible text (FOIT) by preloading optional fonts | Articles | web.dev
By optimizing rendering cycles, Chrome 83 eliminates layout shifting when preloading optional fonts. Combining with font-display: optional is the most effective way to guarantee jank-free rendering of custom fonts.
Томас Штайнер рассказал про Local Font Access API — экспериментальное API для доступа к шрифтам, которые установлены в системе пользователя.
Это API решает несколько проблем. Текущие возможности web'а не позволяют получить доступ к низкоуровневой информации о шрифтах, что критично для профессиональных средств для дизайна. Без этих данных невозможно применять векторные фильтры к шрифтам или менять форму глифов. Local Font Access API предоставляет доступ к этим данным. Также лицензии некоторых шрифтов разрешают их использование, но без разрешения распространять их через web. Доступ к такому шрифту может быть получен с помощью этого API.
На данный момент Local Font Access API доступен только в Chrome за флагом
#fonts #experimental
https://web.dev/local-fonts/
Это API решает несколько проблем. Текущие возможности web'а не позволяют получить доступ к низкоуровневой информации о шрифтах, что критично для профессиональных средств для дизайна. Без этих данных невозможно применять векторные фильтры к шрифтам или менять форму глифов. Local Font Access API предоставляет доступ к этим данным. Также лицензии некоторых шрифтов разрешают их использование, но без разрешения распространять их через web. Доступ к такому шрифту может быть получен с помощью этого API.
На данный момент Local Font Access API доступен только в Chrome за флагом
#font-access. Разработчики призывают попробовать поработать с новым API и поделиться своим фидбеком.#fonts #experimental
https://web.dev/local-fonts/
Chrome for Developers
Use advanced typography with local fonts | Capabilities | Chrome for Developers
The Local Font Access API enumerates the user's installed local fonts and provides low-level access to the various TrueType/OpenType tables
Мэтт Хоббс рассказал о нюансах использования CSS-свойства
Свойство
Мэтт пишет, что на сайте правительства Великобритании, над которым он работал, используется
Очень интересная статья. Рекомендую почитать всем, кто использует web-шрифты.
#performance #ux #fonts
https://calendar.perfplanet.com/2020/a-font-display-setting-for-slow-connections/
font-display с учётом производительности и UX — "A font-display setting for slow connections".Свойство
font-display определяет стратегию рендеринга web-шрифта и его фоллбэка: auto, block, swap, fallback, optional. С точки зрения скорости отображения контента наиболее интересны последние три значения. При использовании swap браузер рендерит фоллбэк-шрифт сразу же и ждёт бесконечное количество времени, пока не загрузится шрифт, после загрузки происходит замена шрифта. Значение fallback похоже на swap, но браузер ждёт три секунды для замены шрифта. Самое агрессивное свойство optional, если в течение 100мс браузер не загрузит шрифт, то будет отображаться фоллбэк без подмены. Загруженный шрифт будет взят из кэша при переходе на новую страницу.Мэтт пишет, что на сайте правительства Великобритании, над которым он работал, используется
font-display: fallback, чтобы пользователи не сталкивались с внезапным сдвигом контента.Очень интересная статья. Рекомендую почитать всем, кто использует web-шрифты.
#performance #ux #fonts
https://calendar.perfplanet.com/2020/a-font-display-setting-for-slow-connections/
Web Performance Calendar
A font-display setting for slow connections
Swap? Fallback? Optional? Which font-display setting should you pick? Let Matt walk you through the considerations.
Саймон Вики рассказал, почему нужно перестать загружать шрифты с CDN Google — "Time to Say Goodbye to Google Fonts".
Если использовать шрифты с CDN Google, браузер сначала должен разрезолвить домен для получения CSS, а затем домен, на котором лежат файлы шрифтов. В сетях с высокими задержками это может занять несколько секунд. Поэтому многие специалисты в области производительности рекомендуют хостить шрифты на своём домене, чтобы достичь максимально возможной скорости загрузки сайта.
Саймон пишет о том, что раньше загрузка шрифтов Google не была большой проблемой, потому что закэшированный файл шрифта мог использоваться другими сайтами. С включением изолированного кэша в Chrome 86 сайты загружают шрифты повторно, сводя на нет одно из основных преимуществ CDN. В Firefox тоже есть планы на добавление изолированного кэша, а в Safari он работает уже с 2013 года.
#fonts #performance
https://wicki.io/posts/2020-11-goodbye-google-fonts/
Если использовать шрифты с CDN Google, браузер сначала должен разрезолвить домен для получения CSS, а затем домен, на котором лежат файлы шрифтов. В сетях с высокими задержками это может занять несколько секунд. Поэтому многие специалисты в области производительности рекомендуют хостить шрифты на своём домене, чтобы достичь максимально возможной скорости загрузки сайта.
Саймон пишет о том, что раньше загрузка шрифтов Google не была большой проблемой, потому что закэшированный файл шрифта мог использоваться другими сайтами. С включением изолированного кэша в Chrome 86 сайты загружают шрифты повторно, сводя на нет одно из основных преимуществ CDN. В Firefox тоже есть планы на добавление изолированного кэша, а в Safari он работает уже с 2013 года.
#fonts #performance
https://wicki.io/posts/2020-11-goodbye-google-fonts/
Wicki.io
Time to Say Goodbye to Google Fonts: Cache Performance
This browser caching change kills the utility of cross-site resource CDNs like Google Fonts.
Саймон Харн рассказал о том, как предотвратить сдвиг контента из-за загрузки web-шрифтов — "How to avoid layout shifts caused by web fonts".
Сдвиг контента (CLS) — это метрика Web Vitals, в будущем она будет влиять на алгоритм ранжирования результатов Google. Самый железный вариант предотвращения сдвига из-за загрузки шрифтов — использование
Если
#performance #fonts
https://simonhearne.com/2021/layout-shifts-webfonts
Сдвиг контента (CLS) — это метрика Web Vitals, в будущем она будет влиять на алгоритм ранжирования результатов Google. Самый железный вариант предотвращения сдвига из-за загрузки шрифтов — использование
font-display: optional. В этом случае браузер будет ждать загрузки шрифта 100мс, делая фоллбек на системный шрифт после истечения этого времени. Таким образом при первом посещении сайта пользователи с большой вероятностью увидят страницу с фоллбек-шрифтом без сдвига контента; при переходах на другие страницы сайта шрифт будет уже находится в кэше браузера и будет применяться к тексту на странице без задержек.Если
font-display: optional использовать невозможно, тогда нужно оптимизировать время доставки шрифта. Для этого можно использовать сабсеттинг, отказаться от формата woff и использовать woff2, делать предзагрузку шрифтов. Если используется font-display: swap, тогда нужно настроить метрики шрифта фоллбека так, чтобы они совпадали с загружаемым шрифтом, в этом могут помочь font-display modifiers (f-mods) — новые свойства @font-face.#performance #fonts
https://simonhearne.com/2021/layout-shifts-webfonts
Simon Hearne
How to avoid layout shifts caused by web fonts
One of the biggest causes of layout shifts for my clients is late-loading web fonts, let's look at how to optimise them!
Иан Бин написал хорошее руководство по оптимизации загрузки шрифтов — "5 steps to faster web fonts".
Иан рассказывает про основные способы ускорения загрузки шрифтов: preload, preconnect, хостинг шрифтов на основном домене, использование WOFF2 и т.п. Про уменьшение размера файла шрифта с помощью сабсеттинга и возможные проблемы, которые могут появиться после применения этой оптимизации.
Очень доступно с помощью диаграмм объясняется суть опций дескриптора
— Опция
— При использовании опции
— С опцией
— С опцией
В общем, полезная статья. Рекомендую почитать, если используете веб-шрифты на своём сайте.
#performance #fonts
https://iainbean.com/posts/2021/5-steps-to-faster-web-fonts/
Иан рассказывает про основные способы ускорения загрузки шрифтов: preload, preconnect, хостинг шрифтов на основном домене, использование WOFF2 и т.п. Про уменьшение размера файла шрифта с помощью сабсеттинга и возможные проблемы, которые могут появиться после применения этой оптимизации.
Очень доступно с помощью диаграмм объясняется суть опций дескриптора
font-display:— Опция
swap используется для замены фоллбек-шрифта загруженным шрифтом без ограничения по времени, при этом текст рендерится с помощью фоллбек-шрифта без задержки.— При использовании опции
block браузер ждёт загрузку шрифта примерно три секунды и не отображает текст. По истечении трёх секунд отображается фоллбек-шрифт, который заменяется загруженным шрифтом без ограничений по времени.— С опцией
optional веб-шрифт будет отображён только в том случае, если он будет загружен в первые 100 миллисекунд после начала загрузки страницы. Если за это время шрифт не успеет загрузиться, текст будет отображён с помощью фоллбек-шрифта. Тем самым пользователи сайта не столкнутся со сдвигом контента из-за смены шрифтов при первом визите.— С опцией
fallback браузер также ждёт 100 миллисекунд прежде чем отобразить фоллбек-шрифт, но в отличие от optional шрифт будет заменён, если он загрузится не более чем за три секунды. В общем, полезная статья. Рекомендую почитать, если используете веб-шрифты на своём сайте.
#performance #fonts
https://iainbean.com/posts/2021/5-steps-to-faster-web-fonts/
Iain Bean
5 steps to faster web fonts /// Iain Bean
Fine-tune your font files and optimise your loading strategy for maximum speed + minimum FOUT
Барри Поллард рассказал про новые CSS-дескрипторы директивы
Для управления загрузкой шрифтов используется директива
Для решения этой проблемы был придуман подход с использованием Font Loading API и сопоставлением метрик фоллбек-шрифта с метриками загружаемого шрифта. Этот подход работает, но он не очень удобен в реализации. По этой причине в рамках спецификации CSS Fonts Module Level 5 были добавлены новые дескрипторы
На данный момент поддержка descent-override, line-gap-override, advance-override уже есть в Chrome и Firefox. Поддержка size-adjust появилась недавно в Chrome Canary и в Firefox за экспериментальным флагом.
#performance #fonts #ux #css
https://www.smashingmagazine.com/2021/05/reduce-font-loading-impact-css-descriptors/
@font-face, помогающие уменьшить сдвиг контента после загрузки шрифта, — "A New Way To Reduce Font Loading Impact: CSS Font Descriptors".Для управления загрузкой шрифтов используется директива
font-display. Очень часто её используют со значением swap, так как текст страницы с ней появляется сразу и посетителям страницы не нужно ждать загрузки шрифта. Но при использовании font-display: swap возникает проблема со сдвигом контента, из-за которой посетители во время чтения текста могут потерять текущую позицию в тексте.Для решения этой проблемы был придуман подход с использованием Font Loading API и сопоставлением метрик фоллбек-шрифта с метриками загружаемого шрифта. Этот подход работает, но он не очень удобен в реализации. По этой причине в рамках спецификации CSS Fonts Module Level 5 были добавлены новые дескрипторы
size-adjust, descent-override, line-gap-override, advance-override, с помощью которых можно задать дополнительные метрики для фоллбек-шрифта, уменьшая непредсказуемый сдвиг контента. В коде это выглядит так:@font-face {
font-family: 'Lato';
src: url('/fonts/Lato.woff2') format('woff2');
font-weight: 400;
}
@font-face {
font-family: "Lato-fallback";
size-adjust: 97.38%;
ascent-override: 99%;
src: local("Arial");
}
h1 {
font-family: Lato, Lato-fallback, sans-serif;
}На данный момент поддержка descent-override, line-gap-override, advance-override уже есть в Chrome и Firefox. Поддержка size-adjust появилась недавно в Chrome Canary и в Firefox за экспериментальным флагом.
#performance #fonts #ux #css
https://www.smashingmagazine.com/2021/05/reduce-font-loading-impact-css-descriptors/
Smashing Magazine
A New Way To Reduce Font Loading Impact: CSS Font Descriptors — Smashing Magazine
Web fonts are often terrible for web performance and none of the font loading strategies are particularly effective to address that. If you want to use web fonts your choices are basically Flash of Invisible Text (aka FOIT) or Flash of Unstyled Text (FOUT).…
Новый формат шрифта COLRv1 в Chrome 98
Доминик Рйотшнес и Род Шитер рассказали про COLRv1 — новый формат шрифта c поддержкой цветных глифов — "COLRv1 Color Gradient Vector Fonts in Chrome 98".
Существующие форматы шрифтов с поддержкой цветных глифов не очень хорошо подходят для веба. Так размер шрифта формата CBDT/CBLC со всеми эмоджи занимает 9Мб. Из-за этого на сайтах и в веб-приложениях для представления эмоджи вместо шрифтов используют изображения. COLRv1 призван решить эту проблему.
Версия шрифта с эмоджи в формате COLRv1 занимает 1.2Мб в распакованном виде и всего лишь 0.6Мб в контейнере woff2. Оптимизация размера происходит за счёт переиспользования глифов с применением трансформаций. Также COLRv1 поддерживает линейные, радиальные и конические градиенты, что открывает новые возможности для типографики в вебе.
На данный момент поддержка COLRv1 есть только в бете Chrome 98.
#fonts
https://developer.chrome.com/blog/colrv1-fonts/
Доминик Рйотшнес и Род Шитер рассказали про COLRv1 — новый формат шрифта c поддержкой цветных глифов — "COLRv1 Color Gradient Vector Fonts in Chrome 98".
Существующие форматы шрифтов с поддержкой цветных глифов не очень хорошо подходят для веба. Так размер шрифта формата CBDT/CBLC со всеми эмоджи занимает 9Мб. Из-за этого на сайтах и в веб-приложениях для представления эмоджи вместо шрифтов используют изображения. COLRv1 призван решить эту проблему.
Версия шрифта с эмоджи в формате COLRv1 занимает 1.2Мб в распакованном виде и всего лишь 0.6Мб в контейнере woff2. Оптимизация размера происходит за счёт переиспользования глифов с применением трансформаций. Также COLRv1 поддерживает линейные, радиальные и конические градиенты, что открывает новые возможности для типографики в вебе.
На данный момент поддержка COLRv1 есть только в бете Chrome 98.
#fonts
https://developer.chrome.com/blog/colrv1-fonts/
Chrome for Developers
COLRv1 Color Gradient Vector Fonts in Chrome 98 | Blog | Chrome for Developers
In Chrome 98, the Chrome and Fonts teams have added support for COLRv1, an evolution of the COLRv0 font format intended to make color fonts widespread by adding gradients, compositing and blending, and improved internal shape reuse for crisp and compact font…
👍15🔥2