@Masthead

Не могу адекватно интегрировать шрифты Nuxt3?

Приложении на Nuxt3

@font-face {
  font-family: Junegull;
  src: url('/fonts/junegull-regular.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
}

body {
  font-family: Junegull, 'sans-serif';
}


Подключил шрифт, все работает но есть одно но - при релоуде страницы - текст мерцает.

Проблема заключается в том, что сначала на странице рисуется fallback шрифт и только после загрузки "моего" шрифта он ставится на место, тем самым производя мерзкое "мерцание".

Кто-нибудь сталкивался с таким? Как решить проблему мерцания текста? Может быть какие-то плагины или шрифты впринципе на ssr фреймворках нужно ставить иначе, но я вообще нигде не нашел инфы.
  • Вопрос задан
  • 88 просмотров
Решения вопроса 1
@Masthead Автор вопроса
Как ни странно, оказалось все куда проще чем я думал.
if (process.server) {
      useHead({
        link: {
          rel: 'preload',
          href: '/fonts/junegull-regular.woff2',
          crossorigin: '',
          as: 'font',
          type: 'font/woff2',
        },
      })
    }


Я просто подгрузил шрифт через head и все заработало, мерцать перестало.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Aetae
@Aetae
Тлен
Шрифты всегда и везде мерцают если не в кэше. Единственный способ надёжно избежать этого - ничего не показывать пока шрифт не загрузится - т.е. отображать лоадер или ещё что. "Не надёжно" это можно сделать просто поигравшись со свойством font-display.
Наверняка же дождаться загрузки помогут соответствующие библиотеки, например webfontloader или напрямую Font Loading API.

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

К сожалению из-за cache partitioning в современных браузерах использование всяких cdn для шрифтов, делу никак не поможет, т.к. для каждого сайта всё равно своё кэш.
Ответ написан
Комментировать
kossmos
@kossmos
Frontend разработчик
Всё было написано выше.

Как ни странно, но самый нормальный совет в данной ситуации это просто не использовать кастомные шрифты в принципе. Обычно обычным пользователям это не нужно, а часто даже вредит.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы