[cairo-commit] 2 commits - src/win32

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Feb 20 22:07:18 UTC 2023


 src/win32/cairo-dwrite-font.cpp |   13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

New commits:
commit 6a5f2140d78f1ccff8642c33eac3b0a8b86a5723
Merge: 7a8aa5eb9 5ae029c2c
Author: Adrian Johnson <ajohnson at redneon.com>
Date:   Mon Feb 20 22:07:16 2023 +0000

    Merge branch 'issue-569-dwrite-inflate-glyph-bounds' into 'master'
    
    DWrite: Inflate glyph bounds 1px vertically too
    
    Closes #569
    
    See merge request cairo/cairo!461

commit 5ae029c2ccc92cb72bb4b23510dc819a0c364a33
Author: Fujii Hironori <Hironori.Fujii at sony.com>
Date:   Fri Feb 17 09:33:02 2023 +0900

    DWrite: Inflate glyph bounds 1px vertically too
    
    The most top and bottom lines of glyphs were clipped in some fonts and
    conditions. The glyph bounds were inflated 1px horizontally. It should
    inflate vertically too.
    
    Fixes cairo/cairo#569

diff --git a/src/win32/cairo-dwrite-font.cpp b/src/win32/cairo-dwrite-font.cpp
index 438bfb15d..33c976e08 100644
--- a/src/win32/cairo-dwrite-font.cpp
+++ b/src/win32/cairo-dwrite-font.cpp
@@ -716,10 +716,15 @@ _cairo_dwrite_scaled_font_init_glyph_metrics(cairo_dwrite_scaled_font_t *scaled_
     // We pad the extents here because GetDesignGlyphMetrics returns "ideal" metrics
     // for the glyph outline, without accounting for hinting/gridfitting/antialiasing,
     // and therefore it does not always cover all pixels that will actually be touched.
-    if (scaled_font->base.options.antialias != CAIRO_ANTIALIAS_NONE &&
-	extents.width > 0 && extents.height > 0) {
-	extents.width += scaled_font->mat_inverse.xx * 2;
-	extents.x_bearing -= scaled_font->mat_inverse.xx;
+    if (extents.width > 0 && extents.height > 0) {
+	double x = 1, y = 1;
+	cairo_matrix_transform_distance (&scaled_font->mat_inverse, &x, &y);
+	x = fabs(x);
+	y = fabs(y);
+	extents.width += x * 2;
+	extents.x_bearing -= x;
+	extents.height += y * 2;
+	extents.y_bearing -= y;
     }
 
     _cairo_scaled_glyph_set_metrics (scaled_glyph,


More information about the cairo-commit mailing list