UMG typewriter effect with pauses and wait-for-input (Blueprint)

The usual Blueprint typewriter is a timer that adds one character to a string and calls Set Text. It works until you add dialogue features. The problems and fixes:

  1. Words jump lines. Line breaks are computed on the partial text, so a word moves to the next line when it reaches the edge. Lay out the full text from the start and hide the letters not yet revealed.
  2. Rich text breaks. Cutting the string in the middle of <b> tags leaves broken markup. Reveal by letter positions and keep styles applied.
  3. Pauses. Add a delay after commas and sentence ends, plus a manual <pause=0.5> marker in the text.
  4. Wait for input. Stop at a marker such as <waitinput> until the player presses Next. A skip button should reveal the rest at once.

I built this into UMG Text Effects (I make it). Add a UTE Text Block, set Details > Text Effects > Typewriter > Enabled, and write:

Hello <speed=2>traveler</>.<pause=0.5> The dragon is awake.<waitinput>

Call Continue Typewriter on Next and Skip Typewriter on skip. Styles stay applied while typing and the layout is fixed from the first letter. It runs in Blueprint-only projects. (A stock Rich Text Block can use it too, through a Blueprint subclass of the decorator, with curly-brace tags like {pause=0.5}.) UE 5.4 to 5.8.

Fab: UMG Text Effects - Text Animation & Typewriter for Rich Text and Dialogue | Fab
Video: https://youtu.be/cOfknPQthME