[pango/layout-font-scale] layout: Fix line height computations




commit 1724333e6a8bb0c267b7f201ea2c3a891d2916c2
Author: Matthias Clasen <mclasen redhat com>
Date:   Tue Sep 6 22:38:46 2022 -0400

    layout: Fix line height computations
    
    We were using the font metrics height, which is
    scaled by the ctm, so we need to take the font
    scale factors into account here.
    
    Fixes: #691

 pango/pango-layout.c | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)
---
diff --git a/pango/pango-layout.c b/pango/pango-layout.c
index 065f85a1b..a1c472039 100644
--- a/pango/pango-layout.c
+++ b/pango/pango-layout.c
@@ -5695,21 +5695,26 @@ pango_layout_run_get_extents_and_height (PangoLayoutRun *run,
       if (pango_analysis_get_size_font (&run->item->analysis))
         {
           PangoFontMetrics *height_metrics;
+          double xscale, yscale;
 
           height_metrics = pango_font_get_metrics (pango_analysis_get_size_font (&run->item->analysis),
                                                    run->item->analysis.language);
 
-          *height = pango_font_metrics_get_height (height_metrics);
+          pango_font_get_scale_factors (pango_analysis_get_size_font (&run->item->analysis), &xscale, 
&yscale);
+          *height = pango_font_metrics_get_height (height_metrics) * MAX (xscale, yscale);
 
           pango_font_metrics_unref (height_metrics);
         }
       else
         {
+          double xscale, yscale;
+
           if (!metrics)
             metrics = pango_font_get_metrics (run->item->analysis.font,
                                               run->item->analysis.language);
 
-          *height = pango_font_metrics_get_height (metrics);
+          pango_font_get_scale_factors (run->item->analysis.font, &xscale, &yscale);
+          *height = pango_font_metrics_get_height (metrics) * MAX (xscale, yscale);
         }
     }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]