I don't recall ever having font alignment problems on my buttons but what I always did was use a pre-defined font type on it which may have been set up correctly.
After creating the button and setting the buttons features I would then do the following:
Code:
button:SetDisabledFontObject(GameFontDisable)
button:SetHighlightFontObject(GameFontHighlight)
button:SetNormalFontObject(GameFontNormal)