Библиотека MUI (Material-UI) предоставляет гибкую систему для кастомизации тем оформления приложения. Одним из ключевых элементов визуальной идентичности является шрифт, который используется в компонентах. Настройка шрифтов через тему позволяет единообразно контролировать типографику, размеры текста, межстрочный интервал и стили для различных элементов интерфейса.
Типографика в MUI управляется объектом typography,
который является частью глобальной темы. Основные свойства, доступные
для настройки:
<html>, который используется как базовая единица
rem.Пример создания темы с измененным шрифтом и весами:
import { createTheme } from '@mui/material/styles';
const theme = createTheme({
typography: {
fontFamily: '"Roboto", "Helvetica", "Arial", sans-serif',
fontSize: 14,
fontWeightLight: 300,
fontWeightRegular: 400,
fontWeightMedium: 500,
fontWeightBold: 700,
h1: {
fontSize: '2.5rem',
fontWeight: 700,
lineHeight: 1.2,
letterSpacing: '-0.01562em',
},
h2: {
fontSize: '2rem',
fontWeight: 700,
lineHeight: 1.3,
letterSpacing: '-0.00833em',
},
body1: {
fontSize: '1rem',
fontWeight: 400,
lineHeight: 1.5,
letterSpacing: '0.00938em',
},
button: {
fontSize: '0.875rem',
fontWeight: 500,
textTransform: 'uppercase',
},
},
});
В этом примере:
fontFamily задает основное семейство шрифтов.h1, h2,
body1, button переопределяют стандартные
размеры, веса и межстрочный интервал для соответствующих элементов.MUI позволяет указать несколько семейств шрифтов в
fontFamily, разделяя их запятыми. Браузер будет
использовать первый доступный шрифт из списка:
fontFamily: '"Inter", "Roboto", "Arial", sans-serif'
Такой подход обеспечивает корректное отображение текста на всех устройствах даже при отсутствии некоторых шрифтов.
Чтобы использовать шрифт, которого нет в стандартных системных наборах, необходимо:
fontFamily темы:import '@fontsource/inter/400.css';
import '@fontsource/inter/700.css';
const theme = createTheme({
typography: {
fontFamily: '"Inter", "Roboto", sans-serif',
fontWeightRegular: 400,
fontWeightBold: 700,
},
});
Подключение через @fontsource позволяет использовать
разные веса и стили шрифта, а также интегрируется с системой сборки
JavaScript.
MUI предоставляет возможность локальной настройки шрифтов через
sx или пропсы компонентов. Пример:
import Typography from '@mui/material/Typography';
<Typography variant="h2" sx={{ fontFamily: 'Arial', fontWeight: 600 }}>
Заголовок
</Typography>
Это позволяет отклоняться от глобальной темы для конкретного элемента без изменения всей темы.
responsiveFontSizesMUI поддерживает адаптивные размеры шрифтов через функцию
responsiveFontSizes. Она автоматически масштабирует текст
под разные размеры экранов:
import { createTheme, responsiveFontSizes } from '@mui/material/styles';
let theme = createTheme({
typography: {
fontFamily: '"Roboto", sans-serif',
},
});
theme = responsiveFontSizes(theme);
После применения responsiveFontSizes заголовки и тело
текста будут увеличиваться или уменьшаться в зависимости от ширины
экрана, сохраняя визуальную гармонию интерфейса.
typography.fontFamily.h1–h6, body1–body2, button,
caption и другие стандартные варианты.responsiveFontSizes.@fontsource и
добавлять в fontFamily.sx или пропсы Typography.Эти подходы позволяют создать консистентную и гибкую типографику во всём приложении с минимальными усилиями и полным контролем над стилем текста.