Hi,
My project suffers from scrambled text with UILabel / UIFont of NGUI 3.5.7.
Scrambled text only appears when running play mode in Unity Editor, and in standalone application, everything is OK.
After debugging,
I found that when running play mode in Unity Editor,
Unity will always create object with default constructor for private fields which class has the attribute [System.Serializable], even if those fields are private.
In UIFont.cs,
public class UIFont : MonoBehaviour
{
...
UISpriteData mSprite = null;
...
}
because UISpriteData is a pure C# class with the attribute [System.Serializable],
mSprite will be initialized with default constructor when compiled managed DLLs is loaded by UnityEditor.
Therefore, when running play mode in Unity Editor, some initialization logic won'be executed because mSprite is not initialized as null.

To fix this problem,
I put attribute [System.NonSerialized] to mSprite, and it won't be initialized with default constructor anymore, and the rendering of UILabel becomes correct.
public class UIFont : MonoBehaviour
{
...
[System.NonSerialized]
UISpriteData mSprite = null;
...
}
Alvin