+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
* 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
{
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);
}
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);
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);
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;
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);
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 *
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++)