[layout] When computing empty line extents, use both layout and context fontdesc
authorBehdad Esfahbod <behdad@behdad.org>
Mon, 6 Apr 2009 23:47:40 +0000 (19:47 -0400)
committerBehdad Esfahbod <behdad@behdad.org>
Mon, 6 Apr 2009 23:47:40 +0000 (19:47 -0400)
By merging them.  This is what happens for loading fonts in pango-context.
We should do the same or we'll get zero-size fonts if layout has a font desc
set with no size.

pango/pango-layout.c

index 364e453..b1b75a4 100644 (file)
@@ -4343,6 +4343,15 @@ pango_layout_get_empty_extents_at_index (PangoLayout    *layout,
       PangoFontDescription *font_desc = NULL;
       gboolean free_font_desc = FALSE;
 
+      font_desc = pango_context_get_font_description (layout->context);
+
+      if (layout->font_desc)
+        {
+         font_desc = pango_font_description_copy_static (font_desc);
+         pango_font_description_merge (font_desc, layout->font_desc, TRUE);
+         free_font_desc = TRUE;
+       }
+
       /* Find the font description for this line
        */
       if (layout->attrs)
@@ -4363,8 +4372,11 @@ pango_layout_get_empty_extents_at_index (PangoLayout    *layout,
                  else
                    base_font_desc = pango_context_get_font_description (layout->context);
 
-                 font_desc = pango_font_description_copy_static (base_font_desc);
-                 free_font_desc = TRUE;
+                 if (!free_font_desc)
+                   {
+                     font_desc = pango_font_description_copy_static (font_desc);
+                     free_font_desc = TRUE;
+                   }
 
                  pango_attr_iterator_get_font (iter,
                                                font_desc,
@@ -4379,13 +4391,6 @@ pango_layout_get_empty_extents_at_index (PangoLayout    *layout,
 
          pango_attr_iterator_destroy (iter);
        }
-      else
-       {
-         if (layout->font_desc)
-           font_desc = layout->font_desc;
-         else
-           font_desc = pango_context_get_font_description (layout->context);
-       }
 
       font = pango_context_load_font (layout->context, font_desc);
       if (font)