Кастомные шрифты — одна из проблем, которая часто влияет на FMP. И один из low-hanging fruits, который легко починить.
Это значит, что если у человека медленная сеть, он не увидит свой контент 3 лишних секунды. Его FMP будет на 3 секунды хуже.
font-display регулирует это поведение браузеров. Он говорит, как долго браузеру дожидаться кастомного шрифта и что делать, когда шрифт наконец загрузится.
Больше про font-display: font-display.glitch.me
— если вы селф-хостите шрифты, посмотрите документацию font-display, выберите подходящее значение (их всего 4) и добавьте его в ваш @font-face
— а если у вас Google Fonts, добавьте атрибут &display=<font-display value> в урл
и ваш FMP улучшится вплоть до 3 секунд
1) Если не уверены, что выбрать, выберите font-display: swap. Это то, что по умолчанию рекомендуют Google Fonts
2) Не используйте font-display с иконочными шрифтами! С ними стандартное поведение браузеров как раз имеет смысл
Разбить шрифты на unicode ranges.
Поэтому, если на вашем сайте только английский, и вы подключаете на него Roboto Regular, то roboto-regular.woff2 всё равно загрузит символы для всех алфавитов (и ещё кучу другого юникода).
1) разбейте файл шрифта на несколько — по разным блокам юникода (отдельно латиница, отдельно кириллица, и т.д.): stackoverflow.com/q/49729468/119…
2) и подключите в @font-display эти файлы, указав их unicode ranges: developer.mozilla.org/en-US/docs/Web…

Кстати, если вы используете Google Fonts, то делать этого не нужно — они уже делают это сами.
— смотрите, какие символы используются above the fold
— выносите именно эти символы в отдельный файл
— вставляете этот файл в @font-face с unicode-range
— и вставляете в другой @font-face оставшийся кусок шрифта
А к тому моменту, когда пользователь начнёт скроллить, он успеет докачать и применить оставшийся шрифт.