Regarding the idea of being able to support "simple rich text" in the kernel (what I'll call a "middle class text editor"):
Maybe it is time to bring LzDebugMessage out of the closet. If you look at it, you will see that it is basically a way of maintaining "annotated strings", meaning strings that have spans that associate an additional structure for describing those spans. This is what the debugger uses to create its output that associates objects with their text representation and how the debugger portably marks up its output text across platforms (the markup is stored in the descriptor in a generic format and converted on output for the underlying platform). The API probably needs some work if you want to support fully general operations of insert/delete and changing markup on a span (possibly splitting and/or merging existing spans). But, I guess my thought is that this substrate could be used to create a portable "middle class text" layer that is where you operate, and what happens in the sprite is that you just replace the whole text each time the portable layer gets updated. That way, the problem is split into: 1) Manage annotated strings in an language we know and love 2) Convert annotated string to platform-specific representation At least that breaks the problem down into two fairly manageable parts, I think. I'd be more than willing to help with spiffing up the LzDebugMessage API and turning it into a general AnnotatedString API.
