Модуль шрифтов
Это справочник по API поможет вам понять, как использовать next/font/google и next/font/local. Для получения сведений о функциях и использовании обратитесь к странице Оптимизация шрифтов.
Аргументы функции шрифтов
Для использования ознакомьтесь со страницами Шрифты Google и Локальные шрифты.
| Ключ | font/google |
font/local |
Тип | Обязательно |
|---|---|---|---|---|
src |
Строка или массив объектов | Да | ||
weight |
Строка или массив | Обязательно/Необязательно | ||
style |
Строка или массив | - | ||
subsets |
Массив строк | - | ||
axes |
Массив строк | - | ||
display |
Строка | - | ||
preload |
Булево значение | - | ||
fallback |
Массив строк | - | ||
adjustFontFallback |
Булево значение или строка | - | ||
variable |
Строка | - | ||
declarations |
Массив объектов | - |
src
Путь к файлу шрифта в виде строки или массива объектов (с типом Array<{path: string, weight?: string, style?: string}>) относительно директории, где вызывается функция загрузчика шрифтов.
Используется в next/font/local
- Обязательно
Примеры:
-
src:'./fonts/my-font.woff2'гдеmy-font.woff2размещён в директорииfontsвнутри директорииapp src:[{path: './inter/Inter-Thin.ttf', weight: '100',},{path: './inter/Inter-Regular.ttf',weight: '400',},{path: './inter/Inter-Bold-Italic.ttf', weight: '700',style: 'italic',},]- если функция загрузки шрифтов вызывается в
app/page.tsxс использованиемsrc:'../styles/fonts/my-font.ttf', тоmy-font.ttfразмещён вstyles/fontsв корне проекта
weight
Вес шрифта weight со следующими возможностями:
- Строка с возможными значениями весов, доступных для конкретного шрифта, или диапазон значений, если это переменный шрифт
- Массив значений весов, если шрифт не является переменным шрифтом Google. Это относится только к
next/font/google
Используется в next/font/google и next/font/local
- Обязательно, если используемый шрифт не является переменным
Примеры:
-
weight: '400': Строка для одного значения веса — для шрифтаInter, возможные значения —'100','200','300','400','500','600','700','800','900'или'variable'(где'variable'— значение по умолчанию) -
weight: '100 900': Строка для диапазона между100и900для переменного шрифта -
weight: ['100','400','900']: Массив из 3 возможных значений для непеременного шрифта
style
Начертание шрифта style со следующими возможностями:
- Строка значение с значением по умолчанию
'normal' - Массив значений начертания, если шрифт не является переменным шрифтом Google. Это относится только к
next/font/google.
Используется в next/font/google и next/font/local
- Необязательно
Примеры:
-
style: 'italic': Строка — может бытьnormalилиitalicдляnext/font/google -
style: 'oblique': Строка — может принимать любое значение дляnext/font/local, но ожидается, что оно будет взято из стандартных стилей шрифтов -
style: ['italic','normal']: Массив из 2 значений дляnext/font/google— значения взяты изnormalиitalic
subsets
Набор шрифтов subsets, определяемый массивом строковых значений с именами каждого набора, который вы хотите загрузить предварительно. Шрифты, указанные через subsets , будут иметь тег предварительной загрузки ссылки, вставленный в заголовок, когда опция preload имеет значение true, что является значением по умолчанию.
Используется в next/font/google
- Необязательно
Примеры:
-
subsets: ['latin']: Массив с наборомlatin
Список всех наборов вы можете найти на странице Google Fonts для вашего шрифта.
axes
У некоторых переменных шрифтов есть дополнительные axes, которые можно включить. По умолчанию включается только вес шрифта, чтобы уменьшить размер файла. Возможные значения axes зависят от конкретного шрифта.
Используется в next/font/google
- Необязательно
Примеры:
-
axes: ['slnt']: Массив со значениемslntдля переменного шрифтаInter, у которогоslntявляются дополнительнымиaxes, как показано здесь. Возможные значенияaxesдля вашего шрифта можно найти, используя фильтр на странице переменных шрифтов Google и ища оси, отличные отwght
display
Свойство шрифта display со строковыми значениями 'auto', 'block', 'swap', 'fallback' или 'optional' со значением по умолчанию 'swap'.
Используется в next/font/google и next/font/local
- Необязательно
Примеры:
-
display: 'optional': Строка присвоена значениюoptional
preload
Логическое значение, определяющее, нужно ли загружать шрифт предварительно. По умолчанию — true.
Используется в next/font/google и next/font/local
- Необязательно
Примеры:
preload: false
fallback
Запасной шрифт, используемый, если шрифт не может быть загружен. Массив строк запасных шрифтов без значения по умолчанию.
- Необязательно
Используется в next/font/google и next/font/local
Примеры:
-
fallback: ['system-ui', 'arial']: Массив, устанавливающий запасные шрифты вsystem-uiилиarial
adjustFontFallback
- Для
next/font/google: Булево значение, определяющее, нужно ли использовать автоматический запасной шрифт для уменьшения Cumulative Layout Shift. По умолчаниюtrue. - Для
next/font/local: Строковое или булево значениеfalse, определяющее, нужно ли использовать автоматический запасной шрифт для уменьшения Cumulative Layout Shift. Возможные значения'Arial','Times New Roman'илиfalse. По умолчанию'Arial'.
Используется в next/font/google и next/font/local
- Необязательно
Примеры:
-
adjustFontFallback: false: дляnext/font/google -
adjustFontFallback: 'Times New Roman': дляnext/font/local
variable
Строковое значение для определения имени CSS-переменной, которая будет использоваться, если стиль применяется с помощью метода CSS-переменных.
Используется в next/font/google и next/font/local
- Необязательно
Примеры:
-
variable: '--my-font': Объявлена CSS-переменная--my-font
declarations
Массив пар ключ-значение описателей шрифтов descriptor , определяющих сгенерированные @font-face далее.
Используется в next/font/local
- Необязательно
Примеры:
declarations: [{ prop: 'ascent-override', value: '90%' }]
Применение стилей
Вы можете применить стили шрифта тремя способами:
className
Возвращает только для чтения CSS className загруженного шрифта, который необходимо передать HTML-элементу.
<p className={inter.className}>Hello, Next.js!</p>
style
Возвращает только для чтения CSS style объект загруженного шрифта, который нужно передать HTML-элементу, включая style.fontFamily для доступа к имени семейства шрифтов и резервным шрифтам.
<p style={inter.style}>Hello World</p>
Переменные CSS
Если вы хотите задавать стили во внешнем стиле и указывать дополнительные параметры там, используйте метод переменных CSS.
В дополнение к импорту шрифта импортируйте также CSS-файл, где определена переменная CSS, и установите опцию переменной объекта загрузчика шрифтов следующим образом:
import { Inter } from 'next/font/google'
import styles from '../styles/component.module.css'
const inter = Inter({
variable: '--font-inter',
})Чтобы использовать шрифт, установите className родительского контейнера текста, который вы хотите стилизовать, в значение variable загрузчика шрифтов и className текста в свойство styles из внешнего CSS-файла.
<main className={inter.variable}>
<p className={styles.text}>Hello World</p>
</main>Определите класс селектора text во внешнем CSS-файле следующим образом:
.text {
font-family: var(--font-inter);
font-weight: 200;
font-style: italic;
}В примере выше, текст Hello World стилизован с использованием шрифта Inter и сгенерированными резервными шрифтами с font-weight: 200 и font-style: italic.
Использование файла с определениями шрифтов
Каждый раз, когда вы вызываете функцию localFont или шрифта Google, этот шрифт будет размещен как один экземпляр в вашем приложении. Поэтому, если вам нужно использовать один и тот же шрифт в нескольких местах, вы должны загрузить его в одном месте и импортировать связанный объект шрифта, где вам это нужно. Это делается с помощью файла определений шрифтов.
Например, создайте файл fonts.ts в папке styles в корне каталога вашего приложения.
Затем, укажите ваши определения шрифтов следующим образом:
import { Inter, Lora, Source_Sans_3 } from 'next/font/google'
import localFont from 'next/font/local'
// define your variable fonts
const inter = Inter()
const lora = Lora()
// define 2 weights of a non-variable font
const sourceCodePro400 = Source_Sans_3({ weight: '400' })
const sourceCodePro700 = Source_Sans_3({ weight: '700' })
// define a custom local font where GreatVibes-Regular.ttf is stored in the styles folder
const greatVibes = localFont({ src: './GreatVibes-Regular.ttf' })
export { inter, lora, sourceCodePro400, sourceCodePro700, greatVibes }Теперь вы можете использовать эти определения в своем коде следующим образом:
import { inter, lora, sourceCodePro700, greatVibes } from '../styles/fonts'
export default function Page() {
return (
<div>
<p className={inter.className}>Hello world using Inter font</p>
<p style={lora.style}>Hello world using Lora font</p>
<p className={sourceCodePro700.className}>
Hello world using Source_Sans_3 font with weight 700
</p>
<p className={greatVibes.className}>My title in Great Vibes font</p>
</div>
)
}Чтобы упростить доступ к определениям шрифтов в вашем коде, вы можете определить псевдоним пути в своих файлах tsconfig.json или jsconfig.json следующим образом:
{
"compilerOptions": {
"paths": {
"@/fonts": ["./styles/fonts"]
}
}
}Теперь вы можете импортировать любое определение шрифта следующим образом:
import { greatVibes, sourceCodePro400 } from '@/fonts'Изменения версий
| Версия | Изменения |
|---|---|
v13.2.0 |
@next/font переименовано в next/font. Установка больше не требуется. |
v13.0.0 |
Добавлен @next/font. |
© 2024 Vercel, Inc.
Licensed under the MIT License.
https://nextjs.org/docs/app/api-reference/components/font