diff options
author | Behdad Esfahbod <behdad@gnome.org> | 2006-08-15 11:51:37 +0000 |
---|---|---|
committer | Behdad Esfahbod <behdad@src.gnome.org> | 2006-08-15 11:51:37 +0000 |
commit | 8de44f9dc7712a7ce258b70a7b8283b3ebca094e (patch) | |
tree | f19a8eeb43df4d8f0ec8ffda31f6f2c0ad29bece /pango/pangofc-fontmap.c | |
parent | a79ad88362620acce4cdbebac12f049b83a1a396 (diff) | |
download | pango-8de44f9dc7712a7ce258b70a7b8283b3ebca094e.tar.gz |
Support --gravity.
2006-08-15 Behdad Esfahbod <behdad@gnome.org>
* examples/renderdemo.c (do_output), (parse_gravity),
(parse_options): Support --gravity.
* pango/pangocairo-fcfont.c (pango_cairo_fc_font_get_scaled_font),
(compute_glyph_extents), (_pango_cairo_fc_font_new): Load rotated
scaled_fonts to handle gravity.
* pango/pangofc-fontmap.c (pango_fc_make_pattern),
(pango_fc_font_map_get_patterns), (pango_fc_font_map_load_fontset):
Set FC_VERTICAL_LAYOUT on West and East gravity.
Diffstat (limited to 'pango/pangofc-fontmap.c')
-rw-r--r-- | pango/pangofc-fontmap.c | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/pango/pangofc-fontmap.c b/pango/pangofc-fontmap.c index 230cdb76..a681eea2 100644 --- a/pango/pangofc-fontmap.c +++ b/pango/pangofc-fontmap.c @@ -792,12 +792,14 @@ pango_fc_convert_width_to_fc (PangoStretch pango_stretch) static FcPattern * pango_fc_make_pattern (const PangoFontDescription *description, PangoLanguage *language, + PangoGravity gravity, double pixel_size, double dpi) { FcPattern *pattern; int slant; int weight; + FcBool vertical; char **families; int i; #ifdef FC_WIDTH @@ -810,6 +812,19 @@ pango_fc_make_pattern (const PangoFontDescription *description, width = pango_fc_convert_width_to_fc (pango_font_description_get_stretch (description)); #endif + switch (gravity) + { + case PANGO_GRAVITY_NORTH: + case PANGO_GRAVITY_SOUTH: + default: + vertical = FcFalse; + break; + case PANGO_GRAVITY_WEST: + case PANGO_GRAVITY_EAST: + vertical = FcTrue; + break; + } + /* The reason for passing in FC_SIZE as well as FC_PIXEL_SIZE is * to work around a bug in libgnomeprint where it doesn't look * for FC_PIXEL_SIZE. See http://bugzilla.gnome.org/show_bug.cgi?id=169020 @@ -824,6 +839,9 @@ pango_fc_make_pattern (const PangoFontDescription *description, #ifdef FC_WIDTH FC_WIDTH, FcTypeInteger, width, #endif +#ifdef FC_VERTICAL_LAYOUT + FC_VERTICAL_LAYOUT, FcTypeBool, vertical, +#endif FC_SIZE, FcTypeDouble, pixel_size * (72. / dpi), FC_PIXEL_SIZE, FcTypeDouble, pixel_size, NULL); @@ -1018,7 +1036,8 @@ static PangoFcPatternSet * pango_fc_font_map_get_patterns (PangoFontMap *fontmap, PangoContext *context, const PangoFontDescription *desc, - PangoLanguage *language) + PangoLanguage *language, + PangoGravity gravity) { PangoFcFontMap *fcfontmap = (PangoFcFontMap *)fontmap; PangoFcFontMapPrivate *priv = fcfontmap->priv; @@ -1035,8 +1054,7 @@ pango_fc_font_map_get_patterns (PangoFontMap *fontmap, key.fontmap = fcfontmap; get_context_matrix (context, &key.matrix); key.language = language; - /* FIXME: support per-item gravity */ - key.gravity = pango_context_get_base_gravity (context); + key.gravity = gravity; key.desc = pango_font_description_copy_static (desc); pango_font_description_unset_fields (key.desc, PANGO_FONT_MASK_SIZE); key.size = get_unscaled_size (fcfontmap, context, desc); @@ -1052,7 +1070,7 @@ pango_fc_font_map_get_patterns (PangoFontMap *fontmap, { double scale_factor = pango_matrix_get_font_scale_factor (&key.matrix); double scaled_size = key.size * scale_factor / PANGO_SCALE; - pattern = pango_fc_make_pattern (desc, language, + pattern = pango_fc_make_pattern (desc, language, gravity, scaled_size, pango_fc_font_map_get_resolution (fcfontmap, context)); @@ -1213,7 +1231,9 @@ pango_fc_font_map_load_fontset (PangoFontMap *fontmap, const PangoFontDescription *desc, PangoLanguage *language) { - PangoFcPatternSet *patterns = pango_fc_font_map_get_patterns (fontmap, context, desc, language); + /* FIXME: support per-item gravity */ + PangoFcPatternSet *patterns = pango_fc_font_map_get_patterns (fontmap, context, desc, language, + pango_context_get_base_gravity (context)); PangoFontset *result; int i; |