Нетривиальный способ: добавлять исходный текст в элемент по одному слову, и смотреть за высотой элемента. Как только она скакнула – началась новая строка.
Примерно так:
var $el = $('h1');
var s = $el.text().split(/\s+/);
var i, h = {curr:0, prev:0}, parts = [], word, back=[];
while(s.length) {
  word = s.shift();
  back.push(word);
  $el.html( back.join(' '));
  h.curr = $el.height();
  if( h.curr !== h.prev) {
    parts.push([]);
    h.prev = h.curr;
  }
  parts[ parts.length - 1].push(word);
}
parts = parts.map((e,i) => '<span class="row'+i+'">' + e.join(' ') + '</span>');
$el.html(parts.join("\n"));
CodePen