Hi, ArenMook and everyone who use east asian fonts,
when we want to call Font.GetCharacterInfo() to get a character's width, we should call Font.RequestCharactersInTexture() first, or we couldn't get info.
UIPanel generate widget's mesh in LateUpdate (include UILabel's mesh), when generated a UILabel's mesh, then in LateUpdate WrapText or somewhere else we call Font.RequestCharactersInTexture(), this makes font texture changed, so uv of generated UILabel's mesh is wrong!
I think we should call every dynamic font once before LateUpdate and after Update once, which deliver all text related about this font to the Font.RequestCharactersInTexture(), so there wouldn't be blink and didn't show problem again.
You can use this code and east asian font to test.
You should add several normal dynamic font UILabel to scene and only one UILabel attached this script.
public UILabel lbl;
public int start = 0;
public const int area = 100;
void Start()
{
InvokeRepeating("GenerateText", 0f, 0.2f);
}
void GenerateText()
{
System.Text.StringBuilder sb
= new System.Text.StringBuilder(); for (int i = start; i < start + area; ++i)
{
char c = (char)i;
sb.Append(c);
}
start += area;
lbl.text = sb.ToString();
}