• Zhiyi Zhang's avatar
    win32u: Choose a smaller ppem to avoid exceeding the requested font height. · 58b477d1
    Zhiyi Zhang authored
    When height > 0, CreateFontA/W() should not return a font face exceeding the requested height.
    For instance, Tahoma has 2049 units of ascent, 423 units of descent and its units per EM square is
    2048. When requesting a font 20 pixels in height, ppem = units_per_EM * requested_height / (ascent + descent)
    = 2048 * 20 / (2049 + 423) = 16.57 ~= 17. When getting the resulting height back from the ppem,
    resulting_height = (ascent + descent) * ppem / units_per_EM = (2049.0 + 423) * 17 / 2048 = 20.52
    ~=21. So it ends up getting a larger font than requested and violates the spec.
    
    Fix Nancy Drew: Legend of the Crystal Skull crash at start.
    Signed-off-by: 's avatarZhiyi Zhang <zzhang@codeweavers.com>
    58b477d1
font.c 302 KB