From a3c6e37bce1ef148afc633333e1aca735dfb9ba9 Mon Sep 17 00:00:00 2001 From: Gabriel Ilardi Date: Tue, 3 May 2011 14:55:52 +0000 Subject: [PATCH] [win32k] - Handle font height == 0 also in TextIntGetTextExtentPoint (bug 5305) - Remove hardcoded font height (11) and replace it with the default font height from the device context by Timo. svn path=/trunk/; revision=51566 --- .../win32/win32k/objects/freetype.c | 31 +++++++++---------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/reactos/subsystems/win32/win32k/objects/freetype.c b/reactos/subsystems/win32/win32k/objects/freetype.c index 994d513f32f..2315b9058cc 100644 --- a/reactos/subsystems/win32/win32k/objects/freetype.c +++ b/reactos/subsystems/win32/win32k/objects/freetype.c @@ -1569,8 +1569,8 @@ ftGdiGetGlyphOutline( // FT_Set_Pixel_Sizes(ft_face, // TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfWidth, /* FIXME should set character height if neg */ -// (TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight < 0 ? - TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight : -// TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight == 0 ? 11 : TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight)); +// (TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight == 0 ? +// dc->ppdev->devinfo.lfDefaultFont.lfHeight : abs(TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight))); TEXTOBJ_UnlockText(TextObj); @@ -2165,9 +2165,8 @@ TextIntGetTextExtentPoint(PDC dc, error = FT_Set_Pixel_Sizes(face, TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfWidth, /* FIXME should set character height if neg */ - (TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight < 0 ? - - TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight : - TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight == 0 ? 11 : TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight)); + (TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight == 0 ? + dc->ppdev->devinfo.lfDefaultFont.lfHeight : abs(TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight))); if (error) { DPRINT1("Error in setting pixel sizes: %u\n", error); @@ -2228,7 +2227,8 @@ TextIntGetTextExtentPoint(PDC dc, IntUnLockFreeType; Size->cx = (TotalWidth + 32) >> 6; - Size->cy = (TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight < 0 ? - TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight : TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight); + Size->cy = (TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight == 0 ? + dc->ppdev->devinfo.lfDefaultFont.lfHeight : abs(TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight)); Size->cy = EngMulDiv(Size->cy, dc->ppdev->gdiinfo.ulLogPixelsY, 72); return TRUE; @@ -2452,9 +2452,8 @@ ftGdiGetTextMetricsW( Error = FT_Set_Pixel_Sizes(Face, TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfWidth, /* FIXME should set character height if neg */ - (TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight < 0 ? - - TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight : - TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight == 0 ? 11 : TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight)); + (TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight == 0 ? + dc->ppdev->devinfo.lfDefaultFont.lfHeight : abs(TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight))); IntUnLockFreeType; if (0 != Error) { @@ -3304,9 +3303,8 @@ GreExtTextOutW( face, TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfWidth, /* FIXME should set character height if neg */ - (TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight < 0 ? - - TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight : - TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight == 0 ? 11 : TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight)); + (TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight == 0 ? + dc->ppdev->devinfo.lfDefaultFont.lfHeight : abs(TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight))); if (error) { DPRINT1("Error in setting pixel sizes: %u\n", error); @@ -3843,8 +3841,8 @@ NtGdiGetCharABCWidthsW( FT_Set_Pixel_Sizes(face, TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfWidth, /* FIXME should set character height if neg */ - (TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight < 0 ? - TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight : - TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight == 0 ? 11 : TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight)); + (TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight == 0 ? + dc->ppdev->devinfo.lfDefaultFont.lfHeight : abs(TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight))); for (i = FirstChar; i < FirstChar+Count; i++) { @@ -4010,9 +4008,8 @@ NtGdiGetCharWidthW( FT_Set_Pixel_Sizes(face, TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfWidth, /* FIXME should set character height if neg */ - (TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight < 0 ? - - TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight : - TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight == 0 ? 11 : TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight)); + (TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight == 0 ? + dc->ppdev->devinfo.lfDefaultFont.lfHeight : abs(TextObj->logfont.elfEnumLogfontEx.elfLogFont.lfHeight))); for (i = FirstChar; i < FirstChar+Count; i++) { -- 2.17.1