Update docs to note a size value of zero may have been set explicitly.
authorBehdad Esfahbod <behdad@gnome.org>
Thu, 11 May 2006 08:22:20 +0000 (08:22 +0000)
committerBehdad Esfahbod <behdad@src.gnome.org>
Thu, 11 May 2006 08:22:20 +0000 (08:22 +0000)
2006-05-11  Behdad Esfahbod  <behdad@gnome.org>

        * pango/fonts.c (pango_font_description_set_size): Update docs to note
        a size value of zero may have been set explicitly.

        * pango/pango-context.c (pango_context_load_font): Don't warn if font
        size if zero.

        * pango/pangoatsui-fontmap.c (pango_atsui_font_map_load_font):
        * pango/pangox-fontmap.c (pango_x_font_map_load_font): Don't return if
        size is zero (probably will fail with no fonts found.)

        * pango/pangoxft-fontmap.c (pango_xft_font_map_default_substitute):
        * Xft
        chokes on size zero.  Reassing PIXEL_SIZE to 1.0 if it's zero.

ChangeLog
pango/fonts.c
pango/pango-context.c
pango/pangoatsui-fontmap.c
pango/pangox-fontmap.c
pango/pangoxft-font.c
pango/pangoxft-fontmap.c
pango/pangoxft-render.c

index 39c5cf3..8d3b76a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2006-05-11  Behdad Esfahbod  <behdad@gnome.org>
+
+       * pango/fonts.c (pango_font_description_set_size): Update docs to note
+       a size value of zero may have been set explicitly.
+
+       * pango/pango-context.c (pango_context_load_font): Don't warn if font
+       size if zero.
+
+       * pango/pangoatsui-fontmap.c (pango_atsui_font_map_load_font):
+       * pango/pangox-fontmap.c (pango_x_font_map_load_font): Don't return if
+       size is zero (probably will fail with no fonts found.)
+
+       * pango/pangoxft-fontmap.c (pango_xft_font_map_default_substitute): Xft
+       chokes on size zero.  Reassing PIXEL_SIZE to 1.0 if it's zero.
+
 2006-05-01  Behdad Esfahbod  <behdad@gnome.org>
 
        Bug 340229 – pango_font_description_from_string does not do bound
index 83cc05d..df7b0c9 100644 (file)
@@ -365,7 +365,8 @@ pango_font_description_set_size (PangoFontDescription *desc,
  * Return value: the size field for the font description in points or device units.
  *   You must call pango_font_description_get_size_is_absolute()
  *   to find out which is the case. Returns 0 if the size field has not
- *   previously been set.  pango_font_description_get_set_fields() to
+ *   previously been set or it has been set to 0 explicitly.
+ *   Use pango_font_description_get_set_fields() to
  *   find out if the field was explicitely set or not.
  **/
 gint
index 937583d..2e0c2bb 100644 (file)
@@ -268,7 +268,6 @@ pango_context_load_font (PangoContext               *context,
 {
   g_return_val_if_fail (context != NULL, NULL);
   g_return_val_if_fail (pango_font_description_get_family (desc) != NULL, NULL);
-  g_return_val_if_fail (pango_font_description_get_size (desc) != 0, NULL);
   
   return pango_font_map_load_font (context->font_map, context, desc);
 }
index c69fe00..5266297 100644 (file)
@@ -545,7 +545,7 @@ pango_atsui_font_map_load_font (PangoFontMap               *fontmap,
 
   size = pango_font_description_get_size (description);
 
-  if (size <= 0)
+  if (size < 0)
     return NULL;
 
   name = g_utf8_casefold (pango_font_description_get_family (description), -1);
index 01c0de5..c6f14fb 100644 (file)
@@ -459,7 +459,7 @@ pango_x_font_map_load_font (PangoFontMap               *fontmap,
   name = g_ascii_strdown (pango_font_description_get_family (description), -1);
   size = pango_font_description_get_size (description);
 
-  if (size <= 0)
+  if (size < 0)
     return NULL;
 
   font_family = g_hash_table_lookup (xfontmap->families, name);
index fe3844f..51fa7fc 100644 (file)
@@ -172,7 +172,7 @@ _pango_xft_font_get_mini_font (PangoXftFont *xfont)
       
       xfont->mini_width = PANGO_SCALE * width;
       xfont->mini_height = PANGO_SCALE * height;
-      xfont->mini_pad = PANGO_SCALE * MAX ((int)(2.2 * height + 27) / 28, 1);
+      xfont->mini_pad = PANGO_SCALE * MIN (height / 2, MAX ((int)(2.2 * height + 27) / 28, 1));
     }
 
   return xfont->mini_font;
@@ -387,7 +387,7 @@ xft_font_get_font (PangoFont *font)
   xfont = (PangoXftFont *)font;
   fcfont = (PangoFcFont *)font;
 
-  if (xfont->xft_font == NULL)
+  if (G_UNLIKELY (xfont->xft_font == NULL))
     {
       FcPattern *pattern = FcPatternDuplicate (fcfont->font_pattern);
       FcPatternDel (pattern, FC_SPACING);
index 7a15e49..a033268 100644 (file)
@@ -354,11 +354,19 @@ pango_xft_font_map_default_substitute (PangoFcFontMap *fcfontmap,
                                       FcPattern      *pattern)
 {
   PangoXftFontMap *xftfontmap = PANGO_XFT_FONT_MAP (fcfontmap);
+  double d;
        
   FcConfigSubstitute (NULL, pattern, FcMatchPattern);
   if (xftfontmap->substitute_func)
     xftfontmap->substitute_func (pattern, xftfontmap->substitute_data);
   XftDefaultSubstitute (xftfontmap->display, xftfontmap->screen, pattern);
+  if (FcPatternGetDouble (pattern, FC_PIXEL_SIZE, 0, &d) == FcResultMatch && d == 0.0)
+    {
+      FcValue v;
+      v.type = FcTypeDouble;
+      v.u.d = 1.0;
+      FcPatternAdd (pattern, FC_PIXEL_SIZE, v, FcFalse);
+    }
 }
 
 static PangoFcFont *
index 3c5e5be..7651cb6 100644 (file)
@@ -372,10 +372,11 @@ _pango_xft_renderer_draw_unknown_glyph (PangoRenderer    *renderer,
                     xfont->mini_width * cols + xfont->mini_pad * (2 * cols + 1),
                     xfont->mini_height * 2 + xfont->mini_pad * 5))
     {
-      draw_box (renderer, xfont->mini_pad,
-               xs[0], ys[0],
-               xfont->mini_width * cols + xfont->mini_pad * (2 * cols + 1),
-               xfont->mini_height * 2 + xfont->mini_pad * 5);
+      if (xfont->mini_pad)
+       draw_box (renderer, xfont->mini_pad,
+                 xs[0], ys[0],
+                 xfont->mini_width * cols + xfont->mini_pad * (2 * cols + 1),
+                 xfont->mini_height * 2 + xfont->mini_pad * 5);
       
       for (row = 0; row < 2; row++)
        for (col = 0; col < cols; col++)