// Update is called once per frame
    void Update()
    {
        if (add_characters)
        {
            add_characters = false;
            font.TryAddCharacters("我是个好人,还不行吗");
        }

        if (clear_font)
        {
            clear_font = false;
            font.ClearFontAssetData();
        }
    }
        private void ResetFontAssetData(TMP_FontAsset font)
        {
            Dictionary <uint, int> charRefDictionary;

            if (!m_FontCharacterLookupDictionary.TryGetValue(font, out charRefDictionary))
            {
                return;
            }

            m_CharTryAddCharacters.Clear();
            foreach (var kv in charRefDictionary)
            {
                m_CharTryAddCharacters.Add((char)kv.Key);
            }

            HashSet <char> nonexistentCharacters;

            if (!m_CharNonexistentCharacters.TryGetValue(font, out nonexistentCharacters))
            {
                nonexistentCharacters = new HashSet <char>();
                m_CharNonexistentCharacters.Add(font, nonexistentCharacters);
            }

            // 重设的话,要把所有用到的文本组件刷一下,不然会有残留影像
            font.ClearFontAssetData();
            m_CharMissingCharacters.Clear();
            bool ret = font.TryAddCharacters(m_CharTryAddCharacters, m_CharMissingCharacters);

            MissingCharactersToNonexistent(font, nonexistentCharacters, charRefDictionary);

            foreach (var kv in m_TextOldCharacterDictionary)
            {
                if (kv.Key)
                {
                    kv.Key.SetVerticesDirty();
                }
            }
        }