Hmm yeah, something funky is going on there. I will look into this, thanks.
Edit: Replacing that entire section with this seems to do the trick:
// If this marks the end of a word, add it to the final string.
if (IsSpace(ch) && !eastern && start < offset)
{
int end = offset - start + 1;
// Last word on the last line should not include an invisible character
if (lineCount == maxLineCount && remainingWidth <= 0f && offset < textLength)
{
char cho = text[offset];
if (cho < ' ' || IsSpace(cho)) --end;
}
sb.Append(text.Substring(start, end));
lineIsEmpty = false;
start = offset + 1;
prev = ch;
}
(line 922 of NGUIText.cs)