Why does freezing occur when PostLateUpdate.PlayerUpdateCanvases?

2D game. My goal is to print text above the characters (typewriter effect).
I use the component TextMeshPro (not UI). This component allows me to create text above a character without canvas.

Here is the code that prints the text.

using System.Collections;
using TMPro;
using UnityEngine;

public class NPCCharacterTextSignController : MonoBehaviour
{
    private TextMeshPro tMPText;
 
    void Start()
    {
        tMPText = GetComponent<TextMeshPro>();
    }

    // Print Text.
    public void PrintText(string text)
    {
        StartCoroutine(PrintTextCoroutine(text));
    }

    private IEnumerator PrintTextCoroutine(string text)
    {
        tMPText.text = "";
        int i = 0;
        while (i <= text.Length)
        {
            // Only this type of template allows you to print text on a black background.
            tMPText.text = "<mark=#000000FF><color=#FFFFFFFF><font=\"ArialRegular SDF\">" + text.Substring(0, i) + "</font></color></mark>";
            i++;
            yield return new WaitForSeconds(0.2f);
        }
    }
}

The result is a strong freeze at the beginning of the text printing.

Similarly with other code. Any attempt to print text using TextMeshPro

The profiler says something about the canvas. But TextMeshPro does not require canvas.

What’s the matter here?
Elementary code and component TextMeshPro without changes (not a second size, did not put anything).

Here are the profiler images
https://i.imgur.com/NGGB37u.jpeg
https://i.imgur.com/Y5pow6c.jpeg