Files
tubestation/gfx/cairo/28-win32-vertical-glyph-advance-direction.patch
Jonathan Kew 35cb581b72 Bug 1962816 - Invert sign of delta-y when computing glyph advances for ExtTextOutW, because the GDI coordinate system is inverted. a=pascalc
We used to have a sign-inversion like this in our cairo backend code:

https://searchfox.org/mozilla-central/rev/0b6a214452a91745638b03d71da86ebe45e34efe/gfx/cairo/cairo/src/cairo-win32-surface.c#1892-1893

This was previously fixed (by me!) back in bug 454098, but in the
process of updating cairo the change got lost as the code had moved
around and so our old patch file no longer applied.

(I'll see if I can get the standalone test program from that bug
working again, and file the issue upstream.)

Original Revision: https://phabricator.services.mozilla.com/D254737

Differential Revision: https://phabricator.services.mozilla.com/D254931
2025-06-25 07:57:34 +00:00

14 lines
681 B
Diff

diff --git a/gfx/cairo/cairo/src/win32/cairo-win32-surface.c b/gfx/cairo/cairo/src/win32/cairo-win32-surface.c
--- a/gfx/cairo/cairo/src/win32/cairo-win32-surface.c
+++ b/gfx/cairo/cairo/src/win32/cairo-win32-surface.c
@@ -347,7 +347,8 @@ cairo_int_status_t
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);
+ /* Note that GDI coordinate system is inverted! */
+ dxy_buf[j+1] = _cairo_lround (logical_y - next_logical_y);
logical_x = next_logical_x;
logical_y = next_logical_y;