Overall looking pretty good!
That does seem to be the best way of handling a typewriter effect if you need to track each letter
The biggest boost to performance I can see here would be to when you start the typing, parse the string for the whitespace, split out into the word char arrays, then you don't need to test every single character typed to see if you are gonna word break, or find the edge of the word each time!