Обновление: о, я пропустил скрытый комментарий.Вышеуказанное CSS-решение определенно лучше для этой работы.Мой ответ напрямую касается проблемы подсчета символов, которые помещаются в одну строку.Я не собираюсь удалять его, потому что кто-то может найти его полезным.
Определенно возможно получить количество символов, которое вы можете поместить в одну строку, даже если у вас пропорциональный шрифт.Есть два способа - использовать следующий трюк или метод measureText
из CanvasRenderingContext2D
.
var target_width = 200; // line width
var text = 'Lorem ipsum. I want to know how many chars of this text fit.';
var span = document.createElement('span');
document.body.appendChild(span);
span.style.whiteSpace = 'nowrap';
// define the style
span.style.fontFamily = 'Lucida Grande';
span.style.fontSize = '14px';
var fit = text.length;
for (var i = 0; i < fit; ++i) {
span.innerHTML += text[i];
if (span.clientWidth > target_width) {
fit = i - 1;
break;
}
}
document.body.removeChild(span);
// fit = the number of characters of the text
// that you can fit on one line