summaryrefslogtreecommitdiff
path: root/pango/pangoxft-font.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2004-12-16 03:24:07 +0000
committerOwen Taylor <otaylor@src.gnome.org>2004-12-16 03:24:07 +0000
commit7be7952f2fb1d34963a041fc9bc4d4841d8de74a (patch)
treed6417d999b1f4a7a38290eb94004934fe57d1163 /pango/pangoxft-font.c
parentda045342eccab09d3d6be33b1b65ebeb5dc2b2f0 (diff)
downloadpango-7be7952f2fb1d34963a041fc9bc4d4841d8de74a.tar.gz
Add pixel sizes for fonts (#119081, patch from Chris Lahey)
Wed Dec 15 22:09:42 2004 Owen Taylor <otaylor@redhat.com> Add pixel sizes for fonts (#119081, patch from Chris Lahey) * pango/fonts.c pango/pango-font.h: Add pango_font_description_set_absolute_size(), pango_font_description_get_size_is_absolute() * pango/pango-attributes.[ch]: Add pango_attr_size_new_absolute(), change PANGO_ATTR_SIZE from PangoAttrInt to PangoAttrSize (preserves compat because first component is identical) * pango/pangowin32-fontmap.c (pango_win32_font_map_load_font): For absolute sizes, convert pixels to points, before calling pango_win32_font_new(). * pango/pangofc-fontmap.c pango/pangoft2.c pango/pangoxft-font.c: Handle absolute sizes.
Diffstat (limited to 'pango/pangoxft-font.c')
-rw-r--r--pango/pangoxft-font.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/pango/pangoxft-font.c b/pango/pangoxft-font.c
index 0080ba81..632ec433 100644
--- a/pango/pangoxft-font.c
+++ b/pango/pangoxft-font.c
@@ -128,13 +128,19 @@ _pango_xft_font_get_mini_font (PangoXftFont *xfont)
int width = 0, height = 0;
XGlyphInfo extents;
XftFont *mini_xft;
+ int new_size;
_pango_xft_font_map_get_info (fcfont->fontmap, &display, NULL);
pango_font_description_set_family_static (desc, "monospace");
- pango_font_description_set_size (desc,
- 0.5 * pango_font_description_get_size (fcfont->description));
+
+ new_size = pango_font_description_get_size (fcfont->description) / 2;
+ if (pango_font_description_get_size_is_absolute (fcfont->description))
+ pango_font_description_set_absolute_size (desc, new_size);
+ else
+ pango_font_description_set_size (desc, new_size);
+
xfont->mini_font = pango_font_map_load_font (fcfont->fontmap, NULL, desc);
pango_font_description_free (desc);
@@ -340,12 +346,17 @@ load_fallback_font (PangoXftFont *xfont)
Display *display;
int screen;
XftFont *xft_font;
+ gboolean size_is_absolute;
+ double size;
_pango_xft_font_map_get_info (fcfont->fontmap, &display, &screen);
+
+ size_is_absolute = pango_font_description_get_size_is_absolute (fcfont->description);
+ size = (double)pango_font_description_get_size (fcfont->description) / PANGO_SCALE;
xft_font = XftFontOpen (display, screen,
FC_FAMILY, FcTypeString, "sans",
- FC_SIZE, FcTypeDouble, (double)pango_font_description_get_size (fcfont->description)/PANGO_SCALE,
+ size_is_absolute ? FC_PIXEL_SIZE : FC_SIZE, FcTypeDouble, size,
NULL);
if (!xft_font)