summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2019-08-12 00:18:07 -0400
committerMatthias Clasen <mclasen@redhat.com>2019-08-12 00:18:07 -0400
commit88c1e6263423472c8b11b7f55d710404740b0db7 (patch)
treeae69ca99aac7d6626313bbfd1da5cf47b03df497
parent1f74d46424f493e9c8ff699688e1ce89f466fd72 (diff)
downloadpango-88c1e6263423472c8b11b7f55d710404740b0db7.tar.gz
Add a separate v_advance func
It doesn't make sense to use the same function for both h and v advance.
-rw-r--r--pango/pangofc-shape.c31
1 files changed, 25 insertions, 6 deletions
diff --git a/pango/pangofc-shape.c b/pango/pangofc-shape.c
index 6f714ffd..1e904730 100644
--- a/pango/pangofc-shape.c
+++ b/pango/pangofc-shape.c
@@ -204,10 +204,10 @@ pango_hb_font_get_nominal_glyph (hb_font_t *font,
}
static hb_position_t
-pango_hb_font_get_glyph_advance (hb_font_t *font,
- void *font_data,
- hb_codepoint_t glyph,
- void *user_data G_GNUC_UNUSED)
+pango_hb_font_get_glyph_h_advance (hb_font_t *font,
+ void *font_data,
+ hb_codepoint_t glyph,
+ void *user_data G_GNUC_UNUSED)
{
PangoHbShapeContext *context = (PangoHbShapeContext *) font_data;
@@ -222,6 +222,25 @@ pango_hb_font_get_glyph_advance (hb_font_t *font,
return hb_font_get_glyph_h_advance (context->parent, glyph);
}
+static hb_position_t
+pango_hb_font_get_glyph_v_advance (hb_font_t *font,
+ void *font_data,
+ hb_codepoint_t glyph,
+ void *user_data G_GNUC_UNUSED)
+{
+ PangoHbShapeContext *context = (PangoHbShapeContext *) font_data;
+
+ if (glyph & PANGO_GLYPH_UNKNOWN_FLAG)
+ {
+ PangoRectangle logical;
+
+ pango_font_get_glyph_extents (context->font, glyph, NULL, &logical);
+ return logical.height;
+ }
+
+ return hb_font_get_glyph_v_advance (context->parent, glyph);
+}
+
static hb_bool_t
pango_hb_font_get_glyph_extents (hb_font_t *font,
void *font_data,
@@ -262,8 +281,8 @@ pango_font_get_hb_font_for_context (PangoFont *font,
funcs = hb_font_funcs_create ();
hb_font_funcs_set_nominal_glyph_func (funcs, pango_hb_font_get_nominal_glyph, NULL, NULL);
- hb_font_funcs_set_glyph_h_advance_func (funcs, pango_hb_font_get_glyph_advance, NULL, NULL);
- hb_font_funcs_set_glyph_v_advance_func (funcs, pango_hb_font_get_glyph_advance, NULL, NULL);
+ hb_font_funcs_set_glyph_h_advance_func (funcs, pango_hb_font_get_glyph_h_advance, NULL, NULL);
+ hb_font_funcs_set_glyph_v_advance_func (funcs, pango_hb_font_get_glyph_v_advance, NULL, NULL);
hb_font_funcs_set_glyph_extents_func (funcs, pango_hb_font_get_glyph_extents, NULL, NULL);
hb_font_funcs_make_immutable (funcs);