From 87d386c3bcc048641f0dd41aeb50f20d8a974d4b Mon Sep 17 00:00:00 2001 From: ellson Date: Sun, 18 Jun 2006 13:39:23 +0000 Subject: [PATCH] recover from fonts that pango doesn't like on Darwin --- lib/common/fontmetrics.c | 2 +- plugin/pango/gvtextlayout_pango.c | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/common/fontmetrics.c b/lib/common/fontmetrics.c index 1f9b35f1e..a3514a1e1 100644 --- a/lib/common/fontmetrics.c +++ b/lib/common/fontmetrics.c @@ -168,7 +168,7 @@ pointf textsize(graph_t *g, textpara_t * para, char *fontname, double fontsize) para->fontname = fontname; para->fontsize = fontsize; - if (! gvtextlayout(GD_gvc(g), para, &fontpath)) + if (! gvtextlayout(GD_gvc(g), para, &fontpath) || !fontpath) estimate_textlayout(g, para, &fontpath); if (Verbose) { diff --git a/plugin/pango/gvtextlayout_pango.c b/plugin/pango/gvtextlayout_pango.c index d404f4f6e..a5082287c 100644 --- a/plugin/pango/gvtextlayout_pango.c +++ b/plugin/pango/gvtextlayout_pango.c @@ -73,6 +73,16 @@ static void pango_textlayout(textpara_t * para, char **fontpath) #endif pango_layout_get_extents (layout, &ink_rect, &logical_rect); + + /* if pango doesn't like the font then it sets width=0 but height = garbage */ + if (logical_rect.width == 0) { + *fontpath = NULL; /* indicate a problem */ + logical_rect.height = 0; + } + else { + *fontpath = "[pango]"; + } + para->width = (double)logical_rect.width / PANGO_SCALE; para->height = (double)logical_rect.height / PANGO_SCALE; @@ -90,8 +100,6 @@ static void pango_textlayout(textpara_t * para, char **fontpath) #endif pango_font_description_free (desc); - - *fontpath = "[pango]"; } static gvtextlayout_engine_t pango_textlayout_engine = { -- 2.40.0