Подсчет символов - это решение, но вы должны учитывать ширину символов. «W» шире, чем «i», если только вы не используете шрифты фиксированной ширины.
Кроме того, вы не можете гарантировать, что выбранный вами шрифт будет доступен в браузере клиента, что его настройки размера шрифта будут такими же, как у вас, и т. Д.
Однако вы можете комбинировать дваРешения - сначала приблизительный размер шрифта, например, с использованием некоторого алгоритма подсчета символов - предполагают, что символы имеют фиксированную ширину, а затем корректируют свои вычисления с помощью js на стороне клиента, если js определит, что строка все равно была разбита.
Это потребует некоторой настройки, но я считаю, что приемлемые результаты могут быть достигнуты.