[HarfBuzz] harfbuzz: Branch 'master' - 3 commits

Behdad Esfahbod behdad at kemper.freedesktop.org
Sun Nov 4 07:53:38 UTC 2018


 src/gen-vowel-constraints.py                 |    4 --
 src/hb-aat-layout-common.hh                  |    3 -
 src/hb-aat-layout-morx-table.hh              |    3 -
 src/hb-ot-shape-complex-indic.cc             |    1 
 src/hb-ot-shape-complex-khmer.cc             |    1 
 src/hb-ot-shape-complex-myanmar.cc           |    1 
 src/hb-ot-shape-complex-thai.cc              |    3 -
 src/hb-ot-shape-complex-use.cc               |    1 
 src/hb-ot-shape-complex-vowel-constraints.cc |    5 +-
 src/hb-ot-shape.cc                           |    1 
 test/api/test-font.c                         |    5 ++
 test/api/test-ot-face.c                      |   49 ++++++++++++++++++++-------
 test/fuzzing/hb-shape-fuzzer.cc              |    6 +++
 13 files changed, 54 insertions(+), 29 deletions(-)

New commits:
commit bce437cf0b71e9b60bbf058eaf61593fed30ae33
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Sun Nov 4 02:47:34 2018 -0500

    [test] Call test-ot-face.c test from hb-shape-fuzzer
    
    Should increase coverage...

diff --git a/test/api/test-ot-face.c b/test/api/test-ot-face.c
index ac3d7f18..da23fe59 100644
--- a/test/api/test-ot-face.c
+++ b/test/api/test-ot-face.c
@@ -24,16 +24,17 @@
  * Google Author(s): Behdad Esfahbod
  */
 
+#ifndef TEST_OT_FACE_NO_MAIN
 #include "hb-test.h"
+#endif
 #include <hb-ot.h>
 
 /* Unit tests for hb-ot-*.h */
 
 
 static void
-test_ot_face_empty (void)
+test_face (hb_face_t *face)
 {
-  hb_face_t *face = hb_face_get_empty ();
   hb_font_t *font = hb_font_create (face);
   hb_ot_font_set_funcs (font);
 
@@ -66,23 +67,23 @@ test_ot_face_empty (void)
   hb_ot_color_has_layers (face);
   hb_ot_color_glyph_get_layers (face, 0, 0, NULL, NULL);
   hb_ot_color_has_svg (face);
-  hb_ot_color_glyph_reference_svg (face, 0);
+  hb_blob_destroy (hb_ot_color_glyph_reference_svg (face, 0));
   hb_ot_color_has_png (face);
-  hb_ot_color_glyph_reference_png (font, 0);
+  hb_blob_destroy (hb_ot_color_glyph_reference_png (font, 0));
 
   hb_ot_layout_has_glyph_classes (face);
   hb_ot_layout_has_substitution (face);
   hb_ot_layout_has_positioning (face);
 
   hb_ot_math_has_data (face);
-  hb_ot_math_get_constant (font, 0);
+  hb_ot_math_get_constant (font, HB_OT_MATH_CONSTANT_MATH_LEADING);
   hb_ot_math_get_glyph_italics_correction (font, 0);
   hb_ot_math_get_glyph_top_accent_attachment (font, 0);
   hb_ot_math_is_glyph_extended_shape (face, 0);
-  hb_ot_math_get_glyph_kerning (font, 0, 0, 0);
-  hb_ot_math_get_glyph_variants (font, 0, 0, 0, NULL, NULL);
-  hb_ot_math_get_min_connector_overlap (font, 0);
-  hb_ot_math_get_glyph_assembly (font, 0, 0, 0, NULL, NULL, NULL);
+  hb_ot_math_get_glyph_kerning (font, 0, HB_OT_MATH_KERN_BOTTOM_RIGHT, 0);
+  hb_ot_math_get_glyph_variants (font, 0, HB_DIRECTION_TTB, 0, NULL, NULL);
+  hb_ot_math_get_min_connector_overlap (font, HB_DIRECTION_RTL);
+  hb_ot_math_get_glyph_assembly (font, 0, HB_DIRECTION_BTT, 0, NULL, NULL, NULL);
 
   unsigned int len = sizeof (buf);
   hb_ot_name_list_names (face, NULL);
@@ -97,7 +98,13 @@ test_ot_face_empty (void)
 
   hb_set_destroy (set);
   hb_font_destroy (font);
-  hb_face_destroy (face);
+}
+
+#ifndef TEST_OT_FACE_NO_MAIN
+static void
+test_ot_face_empty (void)
+{
+  test_face (hb_face_get_empty ());
 }
 
 int
@@ -109,3 +116,4 @@ main (int argc, char **argv)
 
   return hb_test_run();
 }
+#endif
diff --git a/test/fuzzing/hb-shape-fuzzer.cc b/test/fuzzing/hb-shape-fuzzer.cc
index e8bc186b..fedf56e2 100644
--- a/test/fuzzing/hb-shape-fuzzer.cc
+++ b/test/fuzzing/hb-shape-fuzzer.cc
@@ -3,6 +3,10 @@
 #include <hb-ot.h>
 #include <string.h>
 
+#define TEST_OT_FACE_NO_MAIN 1
+#include "../api/test-ot-face.c"
+#undef TEST_OT_FACE_NO_MAIN
+
 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
 {
   hb_blob_t *blob = hb_blob_create ((const char *)data, size,
@@ -48,6 +52,8 @@ extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
     hb_buffer_destroy (buffer);
   }
 
+  /* Misc calls on face. */
+  test_face (face);
 
   hb_font_destroy (font);
   hb_face_destroy (face);
commit 777c22425cae97009ca4dc5b1e400670c4aa0799
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Sun Nov 4 02:40:20 2018 -0500

    [test] More funcs in test-ot-face

diff --git a/test/api/test-font.c b/test/api/test-font.c
index 3d81cf96..a92d8b26 100644
--- a/test/api/test-font.c
+++ b/test/api/test-font.c
@@ -536,6 +536,11 @@ test_font_properties (void)
   g_assert_cmpint (x_ppem, ==, 17);
   g_assert_cmpint (y_ppem, ==, 19);
 
+  /* Check ptem */
+  g_assert_cmpint (hb_font_get_ptem (font), ==, 0);
+  hb_font_set_ptem (font, 42);
+  g_assert_cmpint (hb_font_get_ptem (font), ==, 42);
+
 
   /* Check immutable */
 
diff --git a/test/api/test-ot-face.c b/test/api/test-ot-face.c
index 0af584e0..ac3d7f18 100644
--- a/test/api/test-ot-face.c
+++ b/test/api/test-ot-face.c
@@ -35,12 +35,28 @@ test_ot_face_empty (void)
 {
   hb_face_t *face = hb_face_get_empty ();
   hb_font_t *font = hb_font_create (face);
-  hb_set_t *set = hb_set_create ();
+  hb_ot_font_set_funcs (font);
 
+  hb_set_t *set = hb_set_create ();
   hb_face_collect_unicodes (face, set);
   hb_face_collect_variation_selectors (face, set);
   hb_face_collect_variation_unicodes (face, 0, set);
 
+  hb_codepoint_t g;
+  hb_position_t x, y;
+  hb_glyph_extents_t extents;
+  char buf[5] = {0};
+  hb_font_get_nominal_glyph (font, 0, &g);
+  hb_font_get_variation_glyph (font, 0, 0, &g);
+  hb_font_get_glyph_h_advance (font, g);
+  hb_font_get_glyph_v_advance (font, g);
+  hb_font_get_glyph_h_origin (font, g, &x, &y);
+  hb_font_get_glyph_v_origin (font, g, &x, &y);
+  hb_font_get_glyph_extents (font, g, &extents);
+  hb_font_get_glyph_contour_point (font, g, 0, &x, &y);
+  hb_font_get_glyph_name (font, g, buf, sizeof (buf));
+  hb_font_get_glyph_from_name (font, buf, strlen (buf), &g);
+
   hb_ot_color_has_palettes (face);
   hb_ot_color_palette_get_count (face);
   hb_ot_color_palette_get_name_id (face, 0);
@@ -68,8 +84,9 @@ test_ot_face_empty (void)
   hb_ot_math_get_min_connector_overlap (font, 0);
   hb_ot_math_get_glyph_assembly (font, 0, 0, 0, NULL, NULL, NULL);
 
+  unsigned int len = sizeof (buf);
   hb_ot_name_list_names (face, NULL);
-  hb_ot_name_get_utf8 (face, 0, NULL, NULL, NULL);
+  hb_ot_name_get_utf8 (face, 0, NULL, &len, buf);
   hb_ot_name_get_utf16 (face, 0, NULL, NULL, NULL);
   hb_ot_name_get_utf32 (face, 0, NULL, NULL, NULL);
 
commit 17335a8161e674e630287e18a6d304ec0c33767c
Author: Behdad Esfahbod <behdad at behdad.org>
Date:   Sun Nov 4 02:25:07 2018 -0500

    Clean up buffer->swap_buffers() calls
    
    That function checks for buffer->successful already.  No need
    to check at call site.

diff --git a/src/gen-vowel-constraints.py b/src/gen-vowel-constraints.py
index c4e75aa9..b7f6be22 100755
--- a/src/gen-vowel-constraints.py
+++ b/src/gen-vowel-constraints.py
@@ -211,9 +211,7 @@ print ('  }')
 print ('  if (processed)')
 print ('  {')
 print ('    if (buffer->idx < count)')
-print ('     buffer->next_glyph ();')
-print ('    if (likely (buffer->successful))')
-print ('      buffer->swap_buffers ();')
+print ('      buffer->next_glyph ();')
 print ('  }')
 print ('}')
 
diff --git a/src/hb-aat-layout-common.hh b/src/hb-aat-layout-common.hh
index 51add221..11c6c5a8 100644
--- a/src/hb-aat-layout-common.hh
+++ b/src/hb-aat-layout-common.hh
@@ -671,8 +671,7 @@ struct StateTableDriver
     {
       for (; buffer->successful && buffer->idx < buffer->len;)
 	buffer->next_glyph ();
-      if (likely (buffer->successful))
-	buffer->swap_buffers ();
+      buffer->swap_buffers ();
     }
   }
 
diff --git a/src/hb-aat-layout-morx-table.hh b/src/hb-aat-layout-morx-table.hh
index dab6ec1e..2bc60182 100644
--- a/src/hb-aat-layout-morx-table.hh
+++ b/src/hb-aat-layout-morx-table.hh
@@ -1121,8 +1121,7 @@ struct mortmorx
       else
         buffer->next_glyph ();
     }
-    if (likely (buffer->successful))
-      buffer->swap_buffers ();
+    buffer->swap_buffers ();
   }
 
   inline void apply (hb_aat_apply_context_t *c) const
diff --git a/src/hb-ot-shape-complex-indic.cc b/src/hb-ot-shape-complex-indic.cc
index 4f98f748..8933c182 100644
--- a/src/hb-ot-shape-complex-indic.cc
+++ b/src/hb-ot-shape-complex-indic.cc
@@ -1018,7 +1018,6 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
     else
       buffer->next_glyph ();
   }
-
   buffer->swap_buffers ();
 }
 
diff --git a/src/hb-ot-shape-complex-khmer.cc b/src/hb-ot-shape-complex-khmer.cc
index 1142da3e..497891ea 100644
--- a/src/hb-ot-shape-complex-khmer.cc
+++ b/src/hb-ot-shape-complex-khmer.cc
@@ -414,7 +414,6 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
     else
       buffer->next_glyph ();
   }
-
   buffer->swap_buffers ();
 }
 
diff --git a/src/hb-ot-shape-complex-myanmar.cc b/src/hb-ot-shape-complex-myanmar.cc
index dcada261..ca7b5a9b 100644
--- a/src/hb-ot-shape-complex-myanmar.cc
+++ b/src/hb-ot-shape-complex-myanmar.cc
@@ -343,7 +343,6 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
     else
       buffer->next_glyph ();
   }
-
   buffer->swap_buffers ();
 }
 
diff --git a/src/hb-ot-shape-complex-thai.cc b/src/hb-ot-shape-complex-thai.cc
index b687fe61..650c9800 100644
--- a/src/hb-ot-shape-complex-thai.cc
+++ b/src/hb-ot-shape-complex-thai.cc
@@ -357,8 +357,7 @@ preprocess_text_thai (const hb_ot_shape_plan_t *plan,
 	buffer->merge_out_clusters (start - 1, end);
     }
   }
-  if (likely (buffer->successful))
-    buffer->swap_buffers ();
+  buffer->swap_buffers ();
 
   /* If font has Thai GSUB, we are done. */
   if (plan->props.script == HB_SCRIPT_THAI && !plan->map.found_script[0])
diff --git a/src/hb-ot-shape-complex-use.cc b/src/hb-ot-shape-complex-use.cc
index 3ab77fc5..af25b07f 100644
--- a/src/hb-ot-shape-complex-use.cc
+++ b/src/hb-ot-shape-complex-use.cc
@@ -552,7 +552,6 @@ insert_dotted_circles (const hb_ot_shape_plan_t *plan HB_UNUSED,
     else
       buffer->next_glyph ();
   }
-
   buffer->swap_buffers ();
 }
 
diff --git a/src/hb-ot-shape-complex-vowel-constraints.cc b/src/hb-ot-shape-complex-vowel-constraints.cc
index 20af8711..0e532581 100644
--- a/src/hb-ot-shape-complex-vowel-constraints.cc
+++ b/src/hb-ot-shape-complex-vowel-constraints.cc
@@ -429,9 +429,8 @@ _hb_preprocess_text_vowel_constraints (const hb_ot_shape_plan_t *plan HB_UNUSED,
   if (processed)
   {
     if (buffer->idx < count)
-     buffer->next_glyph ();
-    if (likely (buffer->successful))
-      buffer->swap_buffers ();
+      buffer->next_glyph ();
+    buffer->swap_buffers ();
   }
 }
 
diff --git a/src/hb-ot-shape.cc b/src/hb-ot-shape.cc
index b687996f..8c5e38e0 100644
--- a/src/hb-ot-shape.cc
+++ b/src/hb-ot-shape.cc
@@ -425,7 +425,6 @@ hb_insert_dotted_circle (hb_buffer_t *buffer, hb_font_t *font)
   buffer->output_info (info);
   while (buffer->idx < buffer->len && buffer->successful)
     buffer->next_glyph ();
-
   buffer->swap_buffers ();
 }
 


More information about the HarfBuzz mailing list