Also ensure that len set in all code paths, otherwise it leads to a call to remove_prefix with garbage.
Switch to a state-machine UTF-8 decoder from the branchless one. This allows us to avoid copying the string on every `DrawString` call.