[pango/mark-offset: 1/2] Add a separate v_advance func



commit 88c1e6263423472c8b11b7f55d710404740b0db7
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Aug 12 00:18:07 2019 -0400

    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);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]