summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2019-06-03 17:22:30 +0200
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2019-06-03 17:22:30 +0200
commitad1747008cf520ce53020cfe9ee42957f73ce77c (patch)
tree09bcf58e4b05bce373d326ef1555072a64eda648
parentcb2d9c1212e295dbe2ca68e274ef4cca10cd11e5 (diff)
X11+Pango: fix case when function pango_font_get_glyph_extents() fails
-rw-r--r--src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx
index 584e128b1..cab1c43b0 100644
--- a/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx
+++ b/src/drivers/Xlib/Fl_Xlib_Graphics_Driver_font_xft.cxx
@@ -1222,6 +1222,12 @@ void Fl_Xlib_Graphics_Driver::font_unscaled(Fl_Font fnum, Fl_Fontsize size) {
pango_font_get_glyph_extents(pfont, /*PangoGlyph glyph*/'p', NULL, &logical_rect);
fd->descent_ = PANGO_DESCENT(logical_rect)/PANGO_SCALE;
fd->height_ = logical_rect.height/PANGO_SCALE;
+ if (fd->height_ == 0) { // this occurs with some fonts
+ PangoFontMetrics *pfmt = pango_font_get_metrics(pfont, pango_script_get_sample_language(PANGO_SCRIPT_LATIN) /* 1.4 */);
+ fd->descent_ = pango_font_metrics_get_descent(pfmt)/PANGO_SCALE;
+ fd->height_ = (pango_font_metrics_get_ascent(pfmt) + pango_font_metrics_get_descent(pfmt))/PANGO_SCALE ;
+ pango_font_metrics_unref(pfmt);
+ }
}
}