This is ultimately the same bug as existed with <e>pause<e> in the past. I fixed it by inserting the \u200B character, as you did in the code for <pause>.
Heyo, I have completed integration with SuperTextMesh and it is fantastic! I did need to make minor modifications to the base class in ways that I feel would be really useful to have in there for others, though. The way I've done/exposed these things is pretty basic, but done in a way that quickly met my needs (for the record, my needs were just visibility with the two bools, not writing). If future updates allowed these to be done in a way that had official support, I would definitely update to that version right away. Diff is below:
947,948c947,948
< public bool speedReading = false;
< public bool skippingToEnd = false; //alt version of speedread that just skips to the end
---
> private bool speedReading = false;
> private bool skippingToEnd = false; //alt version of speedread that just skips to the end
1293,1310d1292
< public void UnsubscribeAllRegisteredEvents()
< {
< onCompleteEvent?.RemoveAllListeners();
< OnCompleteEvent = null;
< onUndrawnEvent?.RemoveAllListeners();
< OnUndrawnEvent = null;
< onRebuildEvent?.RemoveAllListeners();
< OnRebuildEvent = null;
< onPrintEvent?.RemoveAllListeners();
< OnPrintEvent = null;
< onCustomEvent?.RemoveAllListeners();
< OnCustomEvent = null;
< onVertexMod?.RemoveAllListeners();
< OnVertexMod = null;
< onPreParse?.RemoveAllListeners();
< OnPreParse = null;
< }
<
Ok, after some testing, I think I've got a more versatile solution... The problem is that "<e><d><e>Event!" Will try to put all 3 tags on the "E".
If I insert a zero-width space after <d>, it doesn't change anything since the event after is still being applied to the same character, which is now just a zero-width space instead of E. (All 3 tags end up on this) So... what I've done instead is:
I've added a tag to quickly insert a zero-width space: <z>
All zero-width spaces on Super Text Mesh have a read delay of zero.
So... to get the effect you're after, the string will now be "<e><d><z><e>" !
I think that's an ok solution! The one I had for pauses worked because it was the very last thing a string would read, while here there's a bit more nuance to the order of operations with tags... I'm not against going back to edit this a bit more in the future, but this should be good for these situations.