Несколько недель назад Vercel выпустила Next.js 13, а вместе с ним невероятно полезный инструмент: Оптимизированные шрифты.

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

Вот как использовать функцию «Оптимизированные шрифты» с Tailwind в приложении Next.js 13.

Во-первых, убедитесь, что вы обновились до Next.js 13 (да!)

Изменения в _app.tsx

Теперь перейдите к файлу _app.tsx и импортируйте понравившийся шрифт Google:

import { Lora } from '@next/font/google';

Затем мы создаем экземпляр импортированного шрифта и добавляем к нему некоторые настройки:

const lora = Lora({
  subsets: ['latin'],
});

Теперь шрифт загружен, но как его применить?

К сожалению, Next.js случайным образом переименовывает свойство семейства шрифтов, поэтому мы не можем просто использовать Lora в нашем CSS. И хотя есть возможность автоматически устанавливать имя переменной CSS с помощью Next.js, похоже, это не работает с версией 13.0.2 @next/font. Итак, делаем сами:

По-прежнему в файле _app.tsx добавьте к выходным данным вашей функции следующее:

<style jsx global>
{`
  :root {
    --lora-font: ${lora.style.fontFamily};
  }
`}
</style>

Это вручную определит переменную CSS для нашего шрифта.

Таким образом, это наш готовый к копированию и вставке файл _app.tsx.

import { Lora } from '@next/font/google';
import { AppProps } from 'next/app';
import '@/styles/globals.css';
const lora = Lora({
  subsets: ['latin'],
});
function MyApp({ Component, pageProps }: AppProps) {
  return (
    <>
      <style jsx global>
        {`
          :root {
            --lora-font: ${lora.style.fontFamily};
          }
        `}
      </style>
      <Component {...pageProps} />;
    </>
  );
}
export default MyApp;

Настройка файла tailwind.config.js

Наконец, нам нужно перенастроить Tailwind для использования этого шрифта. К счастью, здесь мы также можем использовать нашу переменную CSS.

Просто убедитесь, что ваш файл tailwind.config.js выглядит примерно так:

const { fontFamily } = require('tailwindcss/defaultTheme');
/** @type {import('tailwindcss').Config} */
module.exports = {
  // ...
  theme: {
    extend: {
      fontFamily: {
        primary: ['var(--lora-font)', ...fontFamily.sans],
        serif: ['var(--lora-font)', ...fontFamily.serif],
      },
    }
  },
  // ...
};

Вот и все!

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

Продолжайте кодировать!