Как в canvas строку разделить и перенести на новую, если количество символов в строке больше N?

Алгоритм такой, подсчитать количество символов в строке, если количество символов в строке больше N. То найти ближайшее слово, которое уже не влазит по количеству символов и начиная с этого слова перенести оставшиеся слова на новую строку.

const textTemplate = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam sit amet varius ligula. Aenean dapibus lacus vel metus rhoncus, et porta magna vehicula';

const canvas = document.querySelector('.canvas');
const ctx = canvas.getContext('2d');
const rect = canvas.getBoundingClientRect();
const scale = window.devicePixelRatio;

canvas.width = rect.width * scale;
canvas.height = rect.height * scale;
ctx.scale(scale, scale);

ctx.font = 'bold 20px Open Sans, sans-serif';
ctx.fillText(splitString(textTemplate, 20), 25, 25);

function splitString(string, maxLength) {
  const splittedString = string.split(' ');
  let newString;
  const countedArray = splittedString.map(word => word.length);
  if (countedArray.reduce((a, b) => a + b) > maxLength) {
    newString = splittedString.splice(3);
  }
  return newString;
}
.canvas {
  width: 100%;
}
<canvas class='canvas'></canvas>

Исходная строка: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam sit amet varius ligula. Aenean dapibus lacus vel metus rhoncus, et porta magna vehicula

Результат:
Lorem ipsum dolor sit
amet, consectetur
adipiscing elit.
Aliquam sit amet
varius ligula. Aenean
dapibus lacus vel metus
rhoncus, et porta
magna vehicula


Ответы (0 шт):