Thanks. Instead of using that event I decided to just modify the main ParseText function to call my own preparse function, since I want these tags to be applied globally. It works great - I implemented my custom tags as well as my list parsing functionality.
The only issue I'm running into is indentation and vertical spacing. I need to add indent to each list item based on its nested depth (including line wraps) and I need to add a bit of vertical space (a fraction of a newline) after each heading.
Are there any tags for accomplishing these things that respect the actual text size (font size as well as any size modifiers)? If not I suppose I'll have to move my tag parser call deeper into ParseText so that I can pass in the calculated text size. I notice you're using some manual string indexing though which is why I'm a little hesitant to go messing around deeper in that function.