So, the problem we're running into is wrapping text (to intelligently scroll the text widget) while taking into account the special formatting codes.