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.


Reply via email to