I suspect there are bugs/typos in the uvRect getter (segment below) for UIFont. Note that you've checked to see that mSprite IS NULL before entering the section that then uses mSprite's member variables. I suspect you meant mSprite != null OR perhaps all references to mSprite were supposed to be sprite? In either case, either "mSprite" or "sprite" won't be referenced at all in the getter, so why are you checking both?
public Rect uvRect
{
get
{
if (mReplacement != null) return mReplacement.uvRect;
if (mAtlas != null && (mSprite == null && sprite != null))
{
Texture tex = mAtlas.texture;
if (tex != null)
{
mUVRect = new Rect(
mSprite.x - mSprite.paddingLeft,
mSprite.y - mSprite.paddingTop,
mSprite.width + mSprite.paddingLeft + mSprite.paddingRight,
mSprite.height + mSprite.paddingTop + mSprite.paddingBottom);
...
Thanks,
-Rob