What's wrong with looping?
Without looping you would be able to insert breaks but they would not be taking word length or spaces into account.
I'd approach this with len() too, but using len() isn't perfect though. Just counting characters does not guarantee that any given string will fit into a certain pixel width, since different characters take up different amounts of horizontal space. That's why rojo discusses measuring the text.