From 88c1e6263423472c8b11b7f55d710404740b0db7 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 12 Aug 2019 00:18:07 -0400 Subject: Add a separate v_advance func It doesn't make sense to use the same function for both h and v advance. --- pango/pangofc-shape.c | 31 +++++++++++++++++++++++++------ 1 file 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); -- cgit v1.2.1