Well, that took a lot of work! Nevertheless, problem now solved.
It turns out that, although the RTF spec notes that \ltrch
(left-to-right character run) is the default state, it seems that RichTextBox
objects don't necessarily agree. Including a \ltrch
(or even, oddly, a \rtlch
) control sequence in the RTF markup stream completely solves the failure-to-kern problem. RTF text kerning via \expndtwN
and \expndN
now works perfectly well. No need for silly Paste()
commands to pre-configure the RichTextBox
control into its proper state!