Я задал такой вопрос некоторое время назад, но не помню, чтобы получал очень хороший ответ. Сегодня у меня есть пара идей.
Высота заголовка против высоты одного символа
Для каждого заголовка вы можете проверить высоту заголовка в сравнении с высотой заголовка, если у него была только первая буква (создавая копию заголовка, обрезая его текст и проверяя его высоту вне экрана). Например:
"Это очень длинный заголовок" может иметь высоту 125px, тогда как "T" может быть только 42px. Затем вы можете установить цикл, который уменьшает размер шрифта на 1 пиксель до тех пор, пока высота заголовка не станет равной 42px или меньше.
Заменить пробелы и уменьшить
Другим методом было бы заменить все пробелы неразрывными пробелами, а затем сжать до тех пор, пока ширина заголовка не станет равной или меньшей ширины его родительского элемента.