Signed-off-by: Paul Gofman pgofman@codeweavers.com --- v3: - added patch.
dlls/gdi32/font.c | 32 +++++++++++++++----------------- 1 file changed, 15 insertions(+), 17 deletions(-)
diff --git a/dlls/gdi32/font.c b/dlls/gdi32/font.c index c952495f7da..3ff6c6ef3f6 100644 --- a/dlls/gdi32/font.c +++ b/dlls/gdi32/font.c @@ -3713,16 +3713,6 @@ static HFONT CDECL font_SelectFont( PHYSDEV dev, HFONT hfont, UINT *aa_flags ) BOOL can_use_bitmap = !!(GetDeviceCaps( dc->hSelf, TEXTCAPS ) & TC_RA_ABLE);
GetObjectW( hfont, sizeof(lf), &lf ); - switch (lf.lfQuality) - { - case NONANTIALIASED_QUALITY: - if (!*aa_flags) *aa_flags = GGO_BITMAP; - break; - case ANTIALIASED_QUALITY: - if (!*aa_flags) *aa_flags = GGO_GRAY4_BITMAP; - break; - } - lf.lfWidth = abs(lf.lfWidth);
TRACE( "%s, h=%d, it=%d, weight=%d, PandF=%02x, charset=%d orient %d escapement %d\n", @@ -3763,15 +3753,23 @@ static HFONT CDECL font_SelectFont( PHYSDEV dev, HFONT hfont, UINT *aa_flags )
if (font && !*aa_flags) { - *aa_flags = font->aa_flags; - if (!*aa_flags) + switch (lf.lfQuality) { - if (lf.lfQuality == CLEARTYPE_QUALITY || lf.lfQuality == CLEARTYPE_NATURAL_QUALITY) - *aa_flags = subpixel_orientation; - else - *aa_flags = font_smoothing; + case NONANTIALIASED_QUALITY: + *aa_flags = GGO_BITMAP; + break; + case ANTIALIASED_QUALITY: + *aa_flags = GGO_GRAY4_BITMAP; + break; + default: + if (!(*aa_flags = font->aa_flags)) + { + *aa_flags = lf.lfQuality == CLEARTYPE_QUALITY || lf.lfQuality == CLEARTYPE_NATURAL_QUALITY + ? subpixel_orientation : font_smoothing; + } + *aa_flags = font_funcs->get_aa_flags( font, *aa_flags, antialias_fakes ); + break; } - *aa_flags = font_funcs->get_aa_flags( font, *aa_flags, antialias_fakes ); } TRACE( "%p %s %d aa %x\n", hfont, debugstr_w(lf.lfFaceName), lf.lfHeight, *aa_flags ); LeaveCriticalSection( &font_cs );