[subset] Clean up hb_subset_input_t API
authorBehdad Esfahbod <behdad@behdad.org>
Thu, 30 Aug 2018 01:24:03 +0000 (18:24 -0700)
committerBehdad Esfahbod <behdad@behdad.org>
Thu, 30 Aug 2018 01:24:03 +0000 (18:24 -0700)
src/hb-subset-input.cc
src/hb-subset-plan.cc
src/hb-subset-plan.hh
src/hb-subset.cc
src/hb-subset.h
src/hb-subset.hh
test/api/test-subset-glyf.c
test/fuzzing/hb-subset-fuzzer.cc
util/hb-subset.cc

index d68550d..d59b5ba 100644 (file)
@@ -44,7 +44,7 @@ hb_subset_input_create_or_fail (void)
 
   input->unicodes = hb_set_create ();
   input->glyphs = hb_set_create ();
-  input->drop_ot_layout = true;
+  input->drop_layout = true;
 
   return input;
 }
@@ -106,30 +106,28 @@ hb_subset_input_glyph_set (hb_subset_input_t *subset_input)
   return subset_input->glyphs;
 }
 
-/**
- * hb_subset_input_drop_hints:
- * @subset_input: a subset_input.
- *
- * Since: 1.8.0
- **/
-HB_EXTERN hb_bool_t *
-hb_subset_input_drop_hints (hb_subset_input_t *subset_input)
+HB_EXTERN void
+hb_subset_input_set_drop_hints (hb_subset_input_t *subset_input,
+                               hb_bool_t drop_hints)
 {
-  return &subset_input->drop_hints;
+  subset_input->drop_hints = drop_hints;
 }
 
-/**
- * hb_subset_input_drop_ot_layout:
- * @subset_input: a subset_input.
- *
- * If enabled ot layout tables will be dropped as part of
- * the subsetting operation. Currently this defaults to
- * true.
- *
- * Since: REPLACEME
- **/
-HB_EXTERN hb_bool_t *
-hb_subset_input_drop_ot_layout (hb_subset_input_t *subset_input)
+HB_EXTERN hb_bool_t
+hb_subset_input_get_drop_hints (hb_subset_input_t *subset_input)
+{
+  return subset_input->drop_hints;
+}
+
+HB_EXTERN void
+hb_subset_input_set_drop_layout (hb_subset_input_t *subset_input,
+                               hb_bool_t drop_layout)
+{
+  subset_input->drop_layout = drop_layout;
+}
+
+HB_EXTERN hb_bool_t
+hb_subset_input_get_drop_layout (hb_subset_input_t *subset_input)
 {
-  return &subset_input->drop_ot_layout;
+  return subset_input->drop_layout;
 }
index 7efa1c1..2d8538e 100644 (file)
@@ -149,7 +149,7 @@ hb_subset_plan_create (hb_face_t           *face,
   hb_subset_plan_t *plan = hb_object_create<hb_subset_plan_t> ();
 
   plan->drop_hints = input->drop_hints;
-  plan->drop_ot_layout = input->drop_ot_layout;
+  plan->drop_layout = input->drop_layout;
   plan->unicodes = hb_set_create();
   plan->glyphs.init();
   plan->source = hb_face_reference (face);
@@ -159,7 +159,7 @@ hb_subset_plan_create (hb_face_t           *face,
 
   _populate_gids_to_retain (face,
                             input->unicodes,
-                            !plan->drop_ot_layout,
+                            !plan->drop_layout,
                             plan->unicodes,
                             plan->codepoint_to_glyph,
                             &plan->glyphs);
index a5be50a..af7c5d3 100644 (file)
@@ -39,8 +39,8 @@ struct hb_subset_plan_t
   hb_object_header_t header;
   ASSERT_POD ();
 
-  hb_bool_t drop_hints;
-  hb_bool_t drop_ot_layout;
+  bool drop_hints : 1;
+  bool drop_layout : 1;
 
   // For each cp that we'd like to retain maps to the corresponding gid.
   hb_set_t *unicodes;
@@ -56,7 +56,7 @@ struct hb_subset_plan_t
   hb_face_t *source;
   hb_face_t *dest;
 
-  inline hb_bool_t
+  inline bool
   new_gid_for_codepoint (hb_codepoint_t codepoint,
                          hb_codepoint_t *new_gid) const
   {
@@ -67,7 +67,7 @@ struct hb_subset_plan_t
     return new_gid_for_old_gid (old_gid, new_gid);
   }
 
-  inline hb_bool_t
+  inline bool
   new_gid_for_old_gid (hb_codepoint_t old_gid,
                       hb_codepoint_t *new_gid) const
   {
@@ -79,7 +79,7 @@ struct hb_subset_plan_t
     return true;
   }
 
-  inline hb_bool_t
+  inline bool
   add_table (hb_tag_t tag,
              hb_blob_t *contents)
   {
index a072997..332a1e2 100644 (file)
@@ -136,7 +136,7 @@ _should_drop_table(hb_subset_plan_t *plan, hb_tag_t tag)
     case HB_TAG ('G', 'D', 'E', 'F'): /* temporary */
     case HB_TAG ('G', 'P', 'O', 'S'): /* temporary */
     case HB_TAG ('G', 'S', 'U', 'B'): /* temporary */
-      return plan->drop_ot_layout;
+      return plan->drop_layout;
     // Drop these tables below by default, list pulled
     // from fontTools:
     case HB_TAG ('B', 'A', 'S', 'E'):
index 3b39706..8b07a45 100644 (file)
@@ -54,11 +54,17 @@ hb_subset_input_unicode_set (hb_subset_input_t *subset_input);
 HB_EXTERN hb_set_t *
 hb_subset_input_glyph_set (hb_subset_input_t *subset_input);
 
-HB_EXTERN hb_bool_t *
-hb_subset_input_drop_hints (hb_subset_input_t *subset_input);
+HB_EXTERN void
+hb_subset_input_set_drop_hints (hb_subset_input_t *subset_input,
+                               hb_bool_t drop_hints);
+HB_EXTERN hb_bool_t
+hb_subset_input_get_drop_hints (hb_subset_input_t *subset_input);
 
-HB_EXTERN hb_bool_t *
-hb_subset_input_drop_ot_layout (hb_subset_input_t *subset_input);
+HB_EXTERN void
+hb_subset_input_set_drop_layout (hb_subset_input_t *subset_input,
+                               hb_bool_t drop_layout);
+HB_EXTERN hb_bool_t
+hb_subset_input_get_drop_layout (hb_subset_input_t *subset_input);
 
 
 /* hb_subset() */
index e3023d6..efc354b 100644 (file)
@@ -42,8 +42,8 @@ struct hb_subset_input_t
   hb_set_t *unicodes;
   hb_set_t *glyphs;
 
-  hb_bool_t drop_hints;
-  hb_bool_t drop_ot_layout;
+  bool drop_hints : 1;
+  bool drop_layout : 1;
   /* TODO
    *
    * features
index e4440e0..6f669da 100644 (file)
@@ -112,7 +112,7 @@ test_subset_glyf_with_gsub (void)
 
   hb_subset_input_t *input = hb_subset_test_create_input (codepoints);
   hb_set_destroy (codepoints);
-  *hb_subset_input_drop_ot_layout (input) = false;
+  hb_subset_input_set_drop_layout (input, false);
 
   hb_face_t *face_subset = hb_subset_test_create_subset (face_fil, input);
 
@@ -137,7 +137,7 @@ test_subset_glyf_without_gsub (void)
 
   hb_subset_input_t *input = hb_subset_test_create_input (codepoints);
   hb_set_destroy (codepoints);
-  *hb_subset_input_drop_ot_layout (input) = true;
+  hb_subset_input_set_drop_layout (input, true);
 
   hb_face_t *face_subset = hb_subset_test_create_subset (face_fil, input);
 
@@ -183,7 +183,7 @@ test_subset_glyf_strip_hints_simple (void)
   hb_set_add (codepoints, 'a');
   hb_set_add (codepoints, 'c');
   input = hb_subset_test_create_input (codepoints);
-  *hb_subset_input_drop_hints(input) = true;
+  hb_subset_input_set_drop_hints (input, true);
   face_abc_subset = hb_subset_test_create_subset (face_abc, input);
   hb_set_destroy (codepoints);
 
@@ -207,7 +207,7 @@ test_subset_glyf_strip_hints_composite (void)
   hb_face_t *face_generated_subset;
   hb_set_add (codepoints, 0x1fc);
   input = hb_subset_test_create_input (codepoints);
-  *hb_subset_input_drop_hints(input) = true;
+  hb_subset_input_set_drop_hints (input, true);
 
   face_generated_subset = hb_subset_test_create_subset (face_components, input);
   hb_set_destroy (codepoints);
@@ -239,7 +239,7 @@ test_subset_glyf_strip_hints_invalid (void)
   }
 
   hb_subset_input_t *input = hb_subset_test_create_input (codepoints);
-  *hb_subset_input_drop_hints(input) = true;
+  hb_subset_input_set_drop_hints (input, true);
   hb_set_destroy (codepoints);
 
   hb_face_t *face_subset = hb_subset_test_create_subset (face, input);
index 108f6ec..9e4aafc 100644 (file)
@@ -10,11 +10,11 @@ void trySubset (hb_face_t *face,
                 const hb_codepoint_t text[],
                 int text_length,
                 bool drop_hints,
-                bool drop_ot_layout)
+                bool drop_layout)
 {
   hb_subset_input_t *input = hb_subset_input_create_or_fail ();
-  *hb_subset_input_drop_hints (input) = drop_hints;
-  *hb_subset_input_drop_ot_layout (input) = drop_ot_layout;
+  hb_subset_input_set_drop_hints (input, drop_hints);
+  hb_subset_input_set_drop_layout (input, drop_layout);
   hb_set_t *codepoints = hb_subset_input_unicode_set (input);
 
   for (int i = 0; i < text_length; i++)
@@ -34,10 +34,10 @@ void trySubset (hb_face_t *face,
 {
   for (unsigned int drop_hints = 0; drop_hints < 2; drop_hints++)
   {
-    for (unsigned int drop_ot_layout = 0; drop_ot_layout < 2; drop_ot_layout++)
+    for (unsigned int drop_layout = 0; drop_layout < 2; drop_layout++)
     {
       trySubset (face, text, text_length,
-                 (bool) drop_hints, (bool) drop_ot_layout);
+                 (bool) drop_hints, (bool) drop_layout);
     }
   }
 }
index f333be8..3f0963c 100644 (file)
@@ -29,7 +29,6 @@
 
 #include "main-font-text.hh"
 #include "hb-subset.h"
-#include "hb-subset.hh" /* XXX */
 
 /*
  * Command line interface to the harfbuzz font subsetter.
@@ -90,7 +89,7 @@ struct subset_consumer_t
 
   void finish (const font_options_t *font_opts)
   {
-    input->drop_hints = subset_options.drop_hints;
+    hb_subset_input_set_drop_hints (input, subset_options.drop_hints);
 
     hb_face_t *face = hb_font_get_face (font);