summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBehdad Esfahbod <behdad@gnome.org>2006-08-15 21:10:56 +0000
committerBehdad Esfahbod <behdad@src.gnome.org>2006-08-15 21:10:56 +0000
commit39a80ded9e79d92b70c5903ac9d4a3ae594f2fbb (patch)
treef84ed3f3da961cd3be2623eca3c9d60c1496c26e
parent4adf7dea1e8ecedb3bf9325be46c19c0167e0009 (diff)
downloadpango-39a80ded9e79d92b70c5903ac9d4a3ae594f2fbb.tar.gz
Render the header with SOUTH gravity.
2006-08-15 Behdad Esfahbod <behdad@gnome.org> * examples/renderdemo.c (do_output): Render the header with SOUTH gravity. * pango/pangocairo-fcfont.c (pango_cairo_fc_font_get_metrics), (pango_cairo_fc_font_glyph_extents_cache_init): Center baseline for east/west gravity in pango_font_metrics too.
-rw-r--r--ChangeLog9
-rw-r--r--examples/renderdemo.c5
-rw-r--r--pango/pangocairo-fcfont.c24
3 files changed, 30 insertions, 8 deletions
diff --git a/ChangeLog b/ChangeLog
index 1bc6cfe8..7f3d9a88 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2006-08-15 Behdad Esfahbod <behdad@gnome.org>
+ * examples/renderdemo.c (do_output): Render the header with SOUTH
+ gravity.
+
+ * pango/pangocairo-fcfont.c (pango_cairo_fc_font_get_metrics),
+ (pango_cairo_fc_font_glyph_extents_cache_init): Center baseline
+ for east/west gravity in pango_font_metrics too.
+
+2006-08-15 Behdad Esfahbod <behdad@gnome.org>
+
* examples/HELLO.utf8: Remove excess LRM.
* examples/viewer-pangocairo.c (render_callback): Draw baselines in
diff --git a/examples/renderdemo.c b/examples/renderdemo.c
index e77ddcec..2bf6ce29 100644
--- a/examples/renderdemo.c
+++ b/examples/renderdemo.c
@@ -277,11 +277,11 @@ do_output (PangoContext *context,
pango_context_set_language (context, pango_language_from_string ("en_US"));
pango_context_set_base_dir (context,
opt_rtl ? PANGO_DIRECTION_RTL : PANGO_DIRECTION_LTR);
- pango_context_set_base_gravity (context, opt_gravity);
if (opt_header)
{
char *options_string = get_options_string ();
+ pango_context_set_base_gravity (context, PANGO_GRAVITY_SOUTH);
layout = make_layout (context, options_string, 10);
pango_layout_get_extents (layout, NULL, &logical_rect);
@@ -305,6 +305,8 @@ do_output (PangoContext *context,
g_printerr ("The backend does not support rotated text\n");
}
+ pango_context_set_base_gravity (context, opt_gravity);
+
set_transform (context, transform_cb, cb_context, cb_data, &matrix);
output_body (context,
@@ -619,7 +621,6 @@ parse_options (int argc, char *argv[])
GError *parse_error = NULL;
GOptionContext *context;
size_t len;
- char *p;
prog_name = g_path_get_basename (argv[0]);
context = g_option_context_new ("- FILE");
diff --git a/pango/pangocairo-fcfont.c b/pango/pangocairo-fcfont.c
index 1af98e11..5ca9bcb2 100644
--- a/pango/pangocairo-fcfont.c
+++ b/pango/pangocairo-fcfont.c
@@ -216,6 +216,7 @@ pango_cairo_fc_font_get_metrics (PangoFont *font,
if (!tmp_list)
{
PangoContext *context;
+ int height;
if (!fcfont->fontmap)
return pango_font_metrics_new ();
@@ -231,6 +232,23 @@ pango_cairo_fc_font_get_metrics (PangoFont *font,
pango_cairo_context_set_font_options (context, cffont->options);
info->metrics = pango_fc_font_create_metrics_for_context (fcfont, context);
+ /* We may actually reuse ascent/descent we got from cairo here. that's
+ * in cffont->font_extents.
+ */
+ height = info->metrics->ascent + info->metrics->descent;
+ switch (cffont->gravity)
+ {
+ default:
+ case PANGO_GRAVITY_SOUTH:
+ break;
+ case PANGO_GRAVITY_NORTH:
+ info->metrics->ascent = info->metrics->descent;
+ break;
+ case PANGO_GRAVITY_EAST:
+ case PANGO_GRAVITY_WEST:
+ info->metrics->ascent = height / 2;
+ }
+ info->metrics->descent = height - info->metrics->ascent;
g_object_unref (context);
}
@@ -281,12 +299,6 @@ pango_cairo_fc_font_glyph_extents_cache_init (PangoCairoFcFont *cffont)
case PANGO_GRAVITY_NORTH:
cffont->font_extents.y = - PANGO_UNITS (font_extents.descent);
break;
- /* The case of EAST/WEST is tricky. In vertical layout, ascent/descent
- * are useless. I'm trying to get a patch into cairo to use
- * max_x_advance*0.5 for ascent and descent for vertical fonts. That's
- * at least more useful. But with or without it, doesn't harm to center
- * ourselves here.
- */
case PANGO_GRAVITY_EAST:
case PANGO_GRAVITY_WEST:
cffont->font_extents.y = - PANGO_UNITS ((font_extents.ascent + font_extents.descent) * 0.5);