From: ellson Date: Sun, 18 Jun 2006 13:39:23 +0000 (+0000) Subject: recover from fonts that pango doesn't like on Darwin X-Git-Tag: LAST_LIBGRAPH~32^2~6416 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=87d386c3bcc048641f0dd41aeb50f20d8a974d4b;p=graphviz recover from fonts that pango doesn't like on Darwin --- 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 = {