Bug 454098. Fix signs for baseline offsets for glyphs on Windows. r+sr=roc
This commit is contained in:
Родитель
2f88bc74d0
Коммит
57d15db1d7
|
@ -40,7 +40,9 @@ ft-done-face.patch: bug 467874; only destroy FT_Faces created by cairo
|
|||
|
||||
wince-fontconfig.patch: bug 462908; fixes required to compile for windows ce. Also allows for building without fontconfig
|
||||
|
||||
gfx/cairo/glyph-safety-margin.patch: Change the glyph dropping safety margin from 2em to 10em for bug 460023. Upstream commit: 28a72648ba7abe02ebd4df7234424e333b85dc9c.
|
||||
glyph-safety-margin.patch: Change the glyph dropping safety margin from 2em to 10em for bug 460023. Upstream commit: 28a72648ba7abe02ebd4df7234424e333b85dc9c.
|
||||
|
||||
win32-vertically-offset-glyph.patch: bug 454098; vertical positioning errors when drawing glyph runs including delta-y offsets on screen via GDI
|
||||
|
||||
==== pixman patches ====
|
||||
|
||||
|
|
|
@ -1747,7 +1747,8 @@ _cairo_win32_surface_show_glyphs (void *surface,
|
|||
next_logical_y = _cairo_lround (next_user_y);
|
||||
|
||||
dxy_buf[j] = _cairo_lround (next_logical_x - logical_x);
|
||||
dxy_buf[j+1] = _cairo_lround (next_logical_y - logical_y);
|
||||
dxy_buf[j+1] = _cairo_lround (logical_y - next_logical_y);
|
||||
/* note that GDI coordinate system is inverted */
|
||||
|
||||
logical_x = next_logical_x;
|
||||
logical_y = next_logical_y;
|
||||
|
|
|
@ -0,0 +1,23 @@
|
|||
diff --git a/gfx/cairo/cairo/src/cairo-win32-surface.c b/gfx/cairo/cairo/src/cairo-win32-surface.c
|
||||
--- a/gfx/cairo/cairo/src/cairo-win32-surface.c
|
||||
+++ b/gfx/cairo/cairo/src/cairo-win32-surface.c
|
||||
@@ -1742,17 +1742,18 @@ _cairo_win32_surface_show_glyphs (void
|
||||
|
||||
cairo_matrix_transform_point(&device_to_logical,
|
||||
&next_user_x, &next_user_y);
|
||||
|
||||
next_logical_x = _cairo_lround (next_user_x);
|
||||
next_logical_y = _cairo_lround (next_user_y);
|
||||
|
||||
dxy_buf[j] = _cairo_lround (next_logical_x - logical_x);
|
||||
- dxy_buf[j+1] = _cairo_lround (next_logical_y - logical_y);
|
||||
+ dxy_buf[j+1] = _cairo_lround (logical_y - next_logical_y);
|
||||
+ /* note that GDI coordinate system is inverted */
|
||||
|
||||
logical_x = next_logical_x;
|
||||
logical_y = next_logical_y;
|
||||
}
|
||||
}
|
||||
|
||||
/* Using glyph indices for a Type 1 font does not work on a
|
||||
* printer DC. The win32 printing surface will convert the the
|
|
@ -1932,7 +1932,7 @@ public:
|
|||
details->mGlyphID = mGlyphs[k + i];
|
||||
details->mAdvance = mAdvances[k + i]*appUnitsPerDevUnit;
|
||||
details->mXOffset = float(mOffsets[k + i].du)*appUnitsPerDevUnit*aRun->GetDirection();
|
||||
details->mYOffset = float(mOffsets[k + i].dv)*appUnitsPerDevUnit;
|
||||
details->mYOffset = - float(mOffsets[k + i].dv)*appUnitsPerDevUnit;
|
||||
}
|
||||
aRun->SetGlyphs(runOffset,
|
||||
g.SetComplex(PR_TRUE, PR_TRUE, glyphCount), detailedGlyphs.Elements());
|
||||
|
|
Загрузка…
Ссылка в новой задаче