Use pango_font_metrics_get_height() to calculate font height (#2500)

This commit is contained in:
John Levon 2020-09-07 17:53:31 +01:00 committed by GitHub
parent 71eb79fee4
commit 163608d7fd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -283,8 +283,24 @@ backend_font_open (GtkXText *xtext, char *name)
metrics = pango_context_get_metrics (context, xtext->font->font, lang); metrics = pango_context_get_metrics (context, xtext->font->font, lang);
xtext->font->ascent = pango_font_metrics_get_ascent (metrics) / PANGO_SCALE; xtext->font->ascent = pango_font_metrics_get_ascent (metrics) / PANGO_SCALE;
xtext->font->descent = pango_font_metrics_get_descent (metrics) / PANGO_SCALE; xtext->font->descent = pango_font_metrics_get_descent (metrics) / PANGO_SCALE;
/*
* In later versions of pango, a font's height should be calculated like
* this to account for line gap; a typical symptom of not doing so is
* cutting off the underscore on some fonts.
*/
#if PANGO_VERSION_CHECK(1, 44, 0)
xtext->fontsize = pango_font_metrics_get_height (metrics) / PANGO_SCALE + 1;
if (xtext->fontsize == 0)
xtext->fontsize = xtext->font->ascent + xtext->font->descent;
#else
xtext->fontsize = xtext->font->ascent + xtext->font->descent;
#endif
pango_font_metrics_unref (metrics); pango_font_metrics_unref (metrics);
} }
static int static int
backend_get_text_width_emph (GtkXText *xtext, guchar *str, int len, int emphasis) backend_get_text_width_emph (GtkXText *xtext, guchar *str, int len, int emphasis)
{ {
@ -3479,8 +3495,6 @@ gtk_xtext_set_font (GtkXText *xtext, char *name)
if (xtext->font == NULL) if (xtext->font == NULL)
return FALSE; return FALSE;
xtext->fontsize = xtext->font->ascent + xtext->font->descent;
{ {
char *time_str; char *time_str;
int stamp_size = xtext_get_stamp_str (time(0), &time_str); int stamp_size = xtext_get_stamp_str (time(0), &time_str);