https://bugs.winehq.org/show_bug.cgi?id=57309
--- Comment #16 from Zhiyi Zhang zzhang@codeweavers.com --- The root cause is that FreeType reports different font metrics for GGO_METRICS and GGO_BITMAP. The game uses DrawText(..., DT_CALCRECT), which in turn uses GetTextExtentExPoint() and eventually freetype_get_glyph_outline(GGO_METRICS) to calculate text extent. However, the game draws the text using a bitmap font so glyphs from GGO_METRICS, which is from FT_LOAD_TARGET_MONO get used. The font metrics difference causes the text to be truncated because the calculated text extent is from FT_LOAD_TARGET_NORMAL instead of FT_LOAD_TARGET_MONO. On Windows, an anti-aliased font and bitmap font of the same font face report the same font metrics so such problems don't occur. The ultimate fix is to let FreeType hint the bitmap fonts with the same font metrics as anti-aliased fonts but there are no settings that can achieve it unless we write a new FreeType hinter. Eventually, I resorted to calculating font metrics with GGO_METRICS using the actual font format to work around this. I don't think this change is safe to submit during code freeze so I will do it after.