From 84ef3d484ca52bd403e18248d98bd9343424fb9a Mon Sep 17 00:00:00 2001 From: Dmitry Timoshkov Date: Wed, 19 Jun 2013 17:23:27 +0900 Subject: [PATCH] gdiplus: get_font_hfont() should ask gdi32 to match font height against the character height instead of cell height. --- dlls/gdiplus/graphics.c | 2 +- dlls/gdiplus/tests/font.c | 43 +++++++++++++------------------------------ dlls/gdiplus/tests/graphics.c | 1 - 3 files changed, 14 insertions(+), 32 deletions(-) diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index 10a640294e3..dcdc29e51d6 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -2099,7 +2099,7 @@ static void get_font_hfont(GpGraphics *graphics, GDIPCONST GpFont *font, (pt[2].X-pt[0].X)*(pt[2].X-pt[0].X)); get_log_fontW(font, graphics, &lfw); - lfw.lfHeight = gdip_round(font_height * rel_height); + lfw.lfHeight = -gdip_round(font_height * rel_height); unscaled_font = CreateFontIndirectW(&lfw); SelectObject(hdc, unscaled_font); diff --git a/dlls/gdiplus/tests/font.c b/dlls/gdiplus/tests/font.c index de6d6572a8a..29d4ad5e04f 100644 --- a/dlls/gdiplus/tests/font.c +++ b/dlls/gdiplus/tests/font.c @@ -877,26 +877,21 @@ todo_wine expect(Ok, status); expectf(0.0, bounds.X); expectf(0.0, bounds.Y); -todo_wine - expectf(height, bounds.Height); + expectf_(height, bounds.Height, 1.0); set_rect_empty(&bounds); status = GdipMeasureDriverString(graphics, (const UINT16 *)string, -1, font, pos, DriverStringOptionsCmapLookup, NULL, &bounds); expect(Ok, status); expectf(0.0, bounds.X); -todo_wine expectf_(-100.0, bounds.Y, 0.05); -todo_wine - expectf(height, bounds.Height); + expectf_(height, bounds.Height, 0.5); set_rect_empty(&bounds); status = GdipMeasureDriverString(graphics, (const UINT16 *)string, -1, font, pos, DriverStringOptionsCmapLookup, matrix, &bounds); expect(Ok, status); expectf(0.0, bounds.X); -todo_wine expectf_(-100.0, bounds.Y, 0.05); -todo_wine - expectf(height, bounds.Height); + expectf_(height, bounds.Height, 0.5); /* scale matrix */ status = GdipScaleMatrix(matrix, 2.0, 3.0, MatrixOrderAppend); @@ -926,17 +921,14 @@ todo_wine expect(Ok, status); expectf(0.0, bounds.X); expectf(0.0, bounds.Y); -todo_wine - expectf(height, bounds.Height); + expectf_(height, bounds.Height, 0.05); set_rect_empty(&bounds); status = GdipMeasureDriverString(graphics, (const UINT16 *)string, -1, font, pos, DriverStringOptionsCmapLookup, NULL, &bounds); expect(Ok, status); expectf(0.0, bounds.X); -todo_wine expectf_(-100.0, bounds.Y, 0.05); -todo_wine - expectf(height, bounds.Height); + expectf_(height, bounds.Height, 0.2); set_rect_empty(&bounds); status = GdipMeasureDriverString(graphics, (const UINT16 *)string, -1, font, pos, DriverStringOptionsCmapLookup, matrix, &bounds); @@ -975,17 +967,14 @@ todo_wine expect(Ok, status); expectf(0.0, bounds.X); expectf(0.0, bounds.Y); -todo_wine - expectf(height, bounds.Height); + expectf_(height, bounds.Height, 0.05); set_rect_empty(&bounds); status = GdipMeasureDriverString(graphics, (const UINT16 *)string, -1, font, pos, DriverStringOptionsCmapLookup, NULL, &bounds); expect(Ok, status); expectf(0.0, bounds.X); -todo_wine expectf_(-100.0, bounds.Y, 0.05); -todo_wine - expectf(height, bounds.Height); + expectf_(height, bounds.Height, 0.2); set_rect_empty(&bounds); status = GdipMeasureDriverString(graphics, (const UINT16 *)string, -1, font, pos, DriverStringOptionsCmapLookup, matrix, &bounds); @@ -1026,17 +1015,14 @@ todo_wine expect(Ok, status); expectf(0.0, bounds.X); expectf(0.0, bounds.Y); -todo_wine - expectf(height, bounds.Height); + expectf_(height, bounds.Height, 0.2); set_rect_empty(&bounds); status = GdipMeasureDriverString(graphics, (const UINT16 *)string, -1, font, pos, DriverStringOptionsCmapLookup, NULL, &bounds); expect(Ok, status); expectf(0.0, bounds.X); -todo_wine - expectf_(-100.0, bounds.Y, 0.05); -todo_wine - expectf(height, bounds.Height); + expectf_(-100.0, bounds.Y, 0.2); + expectf_(height, bounds.Height, 0.2); set_rect_empty(&bounds); status = GdipMeasureDriverString(graphics, (const UINT16 *)string, -1, font, pos, DriverStringOptionsCmapLookup, matrix, &bounds); @@ -1077,17 +1063,14 @@ todo_wine expect(Ok, status); expectf(0.0, bounds.X); expectf(0.0, bounds.Y); -todo_wine - expectf(height, bounds.Height); + expectf_(height, bounds.Height, 0.1); set_rect_empty(&bounds); status = GdipMeasureDriverString(graphics, (const UINT16 *)string, -1, font, pos, DriverStringOptionsCmapLookup, NULL, &bounds); expect(Ok, status); expectf(0.0, bounds.X); -todo_wine - expectf_(-100.0, bounds.Y, 0.05); -todo_wine - expectf(height, bounds.Height); + expectf_(-100.0, bounds.Y, 0.2); + expectf_(height, bounds.Height, 0.2); set_rect_empty(&bounds); status = GdipMeasureDriverString(graphics, (const UINT16 *)string, -1, font, pos, DriverStringOptionsCmapLookup, matrix, &bounds); diff --git a/dlls/gdiplus/tests/graphics.c b/dlls/gdiplus/tests/graphics.c index 5de06029107..6ed1463d2d3 100644 --- a/dlls/gdiplus/tests/graphics.c +++ b/dlls/gdiplus/tests/graphics.c @@ -3901,7 +3901,6 @@ todo_wine match = fabs(1.0 - margin / rect.X) <= 0.05; ok(match, "Expected %f, got %f\n", margin, rect.X); match = fabs(1.0 - font_height / rect.Height) <= 0.1; -todo_wine ok(match, "Expected %f, got %f\n", font_height, rect.Height); match = fabs(1.0 - bounds.Width / (rect.Width + margin * 2.0)) <= 0.05; ok(match, "Expected %f, got %f\n", bounds.Width, rect.Width + margin * 2.0); -- 2.11.4.GIT