I think I could do that without issue. I don't even care if it's proportional so long as I could shrink-to-fit the leftmost column with some padding. It's just a data logger with the time given in the left column, right-aligned with some padding and a fixed zoom factor.
I ended up dealing with it differently by moving back to RichPara, creating a RichObjectType, overriding paint and aligning right with DrawText and GetTextSize. The only problem I have left as that I need the text after the time field to wrap to a point after the time field. If it's multiline that's no problem - I can just create a margin. Is there any way to override wrapping so that it has a left margin?
That's what I'd normally do but for this application I'm using raw because I have a custom parser designed for parsing simple markdown and I'm definitely going to be having custom RichObjectTypes/possible extensions. I fibbed a bit when I said it was a "logger" (sorry). It's actually a discord client, but I don't want to get anyone's hopes up as to whether I will complete it and release it (to be a proper client it's going to need animated .gif, .webm support, etc). It's very much a learning project at this phase.