Contenteditable plus the CSS Custom Highlight API (which highlights ranges instead of elements) might indeed allow for a good solution. But I have not yet seen an editor that does that.
I built a prototype that does work. https://hypervariety.com/ScriptHighlighter/
I built a prototype that does work. https://hypervariety.com/ScriptHighlighter/