So far I have tested this one :
mainLabel.Canvas.TextHeight( 'TT' );
which returns 16.5 which is far from correct text height (it's actually about 30) on FireMonkey - Android/iOS.
It sounds like you're using devices with high-resolution displays.
Try multiplying the TextHeight by the Canvas.Scale
property, and see if you get anything closer to what you expect.