vw/vh - это довольно специфичный кейс для указания размера шрифта. Он не всегда и не везде нужен.
А вот за использование пикселей надо уже наказывать =)
Самое простое - ну хотя бы rem использовать.
Как?
Ну опять же самое простое решение, это задать для корня размер 62,5%
:root{
font-size: 62.5%
}
Это даст вам базовый размер шрифта в 10 пикселей (1rem = 10px) и вам будет удобно, без вычислений, задавать любые размер в rem.
body { font-size: 1.4rem; /* 14px */ }
h1 { font-size: 3.2rem; /* 32px */ }
Ну логика понятна, надеюсь.
Если используете препроцессор, то можно написать функцию для пересчета пикселей в ремы и использовать ее везде.
@function toRem($px) {
/* 16px – это значение шрифта по умолчанию в большинстве агентов */
@return $px / 16px * 1rem;
}
body { font-size: toRem(14px); }
h1 { font-size: toRem(32px); }