gdiplus: get_font_hfont() should ask gdi32 to match font height against the character height instead of cell height.
This commit is contained in:
parent
ff9039d94d
commit
84ef3d484c
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue