From 704662e39856e308ef1683be607d62db0b738708 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 10 Dec 2021 12:49:45 -0500 Subject: Fix line height with emulated small caps When we change font scale for emulating small caps, keep the original font around in the analysis, and use it for calculating the run height. Fixes: #622 --- pango/pango-layout.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) (limited to 'pango/pango-layout.c') diff --git a/pango/pango-layout.c b/pango/pango-layout.c index 3f11d5b0..24a1a88b 100644 --- a/pango/pango-layout.c +++ b/pango/pango-layout.c @@ -5518,10 +5518,7 @@ pango_layout_get_empty_extents_and_height_at_index (PangoLayout *layout, free_font_desc = TRUE; } - pango_attr_iterator_get_font (&iter, - font_desc, - NULL, - NULL); + pango_attr_iterator_get_font (&iter, font_desc, NULL, NULL); attr = pango_attr_iterator_get (&iter, PANGO_ATTR_LINE_HEIGHT); if (attr) @@ -5689,11 +5686,25 @@ pango_layout_run_get_extents_and_height (PangoLayoutRun *run, if (height) { - if (!metrics) - metrics = pango_font_get_metrics (run->item->analysis.font, - run->item->analysis.language); + if (pango_analysis_get_size_font (&run->item->analysis)) + { + PangoFontMetrics *height_metrics; + + 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); - *height = pango_font_metrics_get_height (metrics); + pango_font_metrics_unref (height_metrics); + } + else + { + if (!metrics) + metrics = pango_font_get_metrics (run->item->analysis.font, + run->item->analysis.language); + + *height = pango_font_metrics_get_height (metrics); + } } y_offset = run->y_offset; -- cgit v1.2.1