Text objects look slightly differently in viewport and game engine
Have you thought about displaying only a single text object, and when you replace the new text and or new number string in script use a concatenated string variable which contains the single string.

I don't know Java; but, the concept would be A$="Ammo", B$=numeric $tring (Ammo Count) and DisplayText$= "a$+" :"+B$.  Something like that?
Then you'd only have to deal with the Font size, vs game engine Font size, and your single Text Object would be variable DisplayText$ which would look like "Ammo :0"  (Of course replacing my simple variables with your own, etc.)

Like I said, I don't know Blender Script language, per se: so, don't know the string concatenator, could be the symbol "&amp;" or semicolon ";" between the strings.