[config] Don't compile AAT API if HB_NO_AAT
authorBehdad Esfahbod <behdad@behdad.org>
Tue, 18 Jun 2019 21:25:52 +0000 (14:25 -0700)
committerBehdad Esfahbod <behdad@behdad.org>
Tue, 18 Jun 2019 21:25:52 +0000 (14:25 -0700)
Part of https://github.com/harfbuzz/harfbuzz/issues/1652

src/hb-aat-layout.cc
src/hb-ot-shape.cc

index 0efc2c4..e106c76 100644 (file)
@@ -25,7 +25,7 @@
  * Google Author(s): Behdad Esfahbod
  */
 
-#include "hb-open-type.hh"
+#include "hb.hh"
 
 #include "hb-aat-layout.hh"
 #include "hb-aat-fdsc-table.hh" // Just so we compile it; unused otherwise.
 #include "hb-aat-ltag-table.hh"
 
 
+/*
+ * hb_aat_apply_context_t
+ */
+
+/* Note: This context is used for kerning, even without AAT, hence the code location
+ * before HB_NO_AAT conditional below. */
+
+AAT::hb_aat_apply_context_t::hb_aat_apply_context_t (const hb_ot_shape_plan_t *plan_,
+                                                    hb_font_t *font_,
+                                                    hb_buffer_t *buffer_,
+                                                    hb_blob_t *blob) :
+                                                      plan (plan_),
+                                                      font (font_),
+                                                      face (font->face),
+                                                      buffer (buffer_),
+                                                      sanitizer (),
+                                                      ankr_table (&Null(AAT::ankr)),
+                                                      lookup_index (0),
+                                                      debug_depth (0)
+{
+  sanitizer.init (blob);
+  sanitizer.set_num_glyphs (face->get_num_glyphs ());
+  sanitizer.start_processing ();
+  sanitizer.set_max_ops (HB_SANITIZE_MAX_OPS_MAX);
+}
+
+AAT::hb_aat_apply_context_t::~hb_aat_apply_context_t ()
+{ sanitizer.end_processing (); }
+
+void
+AAT::hb_aat_apply_context_t::set_ankr_table (const AAT::ankr *ankr_table_)
+{ ankr_table = ankr_table_; }
+
+
+#ifndef HB_NO_AAT
+
+
 /**
  * SECTION:hb-aat-layout
  * @title: hb-aat-layout
@@ -134,10 +171,6 @@ static const hb_aat_feature_mapping_t feature_mappings[] =
 const hb_aat_feature_mapping_t *
 hb_aat_layout_find_feature_mapping (hb_tag_t tag)
 {
-#ifdef HB_NO_SHAPE_AAT
-  return nullptr;
-#endif
-
   return (const hb_aat_feature_mapping_t *) hb_bsearch (&tag,
                                                        feature_mappings,
                                                        ARRAY_LENGTH (feature_mappings),
@@ -147,39 +180,6 @@ hb_aat_layout_find_feature_mapping (hb_tag_t tag)
 
 
 /*
- * hb_aat_apply_context_t
- */
-
-/* Note: This context is used for kerning, even without AAT. */
-
-AAT::hb_aat_apply_context_t::hb_aat_apply_context_t (const hb_ot_shape_plan_t *plan_,
-                                                    hb_font_t *font_,
-                                                    hb_buffer_t *buffer_,
-                                                    hb_blob_t *blob) :
-                                                      plan (plan_),
-                                                      font (font_),
-                                                      face (font->face),
-                                                      buffer (buffer_),
-                                                      sanitizer (),
-                                                      ankr_table (&Null(AAT::ankr)),
-                                                      lookup_index (0),
-                                                      debug_depth (0)
-{
-  sanitizer.init (blob);
-  sanitizer.set_num_glyphs (face->get_num_glyphs ());
-  sanitizer.start_processing ();
-  sanitizer.set_max_ops (HB_SANITIZE_MAX_OPS_MAX);
-}
-
-AAT::hb_aat_apply_context_t::~hb_aat_apply_context_t ()
-{ sanitizer.end_processing (); }
-
-void
-AAT::hb_aat_apply_context_t::set_ankr_table (const AAT::ankr *ankr_table_)
-{ ankr_table = ankr_table_; }
-
-
-/*
  * mort/morx/kerx/trak
  */
 
@@ -188,10 +188,6 @@ void
 hb_aat_layout_compile_map (const hb_aat_map_builder_t *mapper,
                           hb_aat_map_t *map)
 {
-#ifdef HB_NO_SHAPE_AAT
-  return;
-#endif
-
   const AAT::morx& morx = *mapper->face->table.morx;
   if (morx.has_data ())
   {
@@ -218,10 +214,6 @@ hb_aat_layout_compile_map (const hb_aat_map_builder_t *mapper,
 hb_bool_t
 hb_aat_layout_has_substitution (hb_face_t *face)
 {
-#ifdef HB_NO_SHAPE_AAT
-  return false;
-#endif
-
   return face->table.morx->has_data () ||
         face->table.mort->has_data ();
 }
@@ -231,10 +223,6 @@ hb_aat_layout_substitute (const hb_ot_shape_plan_t *plan,
                          hb_font_t *font,
                          hb_buffer_t *buffer)
 {
-#ifdef HB_NO_SHAPE_AAT
-  return;
-#endif
-
   hb_blob_t *morx_blob = font->face->table.morx.get_blob ();
   const AAT::morx& morx = *morx_blob->as<AAT::morx> ();
   if (morx.has_data ())
@@ -257,10 +245,6 @@ hb_aat_layout_substitute (const hb_ot_shape_plan_t *plan,
 void
 hb_aat_layout_zero_width_deleted_glyphs (hb_buffer_t *buffer)
 {
-#ifdef HB_NO_SHAPE_AAT
-  return;
-#endif
-
   unsigned int count = buffer->len;
   hb_glyph_info_t *info = buffer->info;
   hb_glyph_position_t *pos = buffer->pos;
@@ -278,10 +262,6 @@ is_deleted_glyph (const hb_glyph_info_t *info)
 void
 hb_aat_layout_remove_deleted_glyphs (hb_buffer_t *buffer)
 {
-#ifdef HB_NO_SHAPE_AAT
-  return;
-#endif
-
   hb_ot_layout_delete_glyphs_inplace (buffer, is_deleted_glyph);
 }
 
@@ -295,10 +275,6 @@ hb_aat_layout_remove_deleted_glyphs (hb_buffer_t *buffer)
 hb_bool_t
 hb_aat_layout_has_positioning (hb_face_t *face)
 {
-#ifdef HB_NO_SHAPE_AAT
-  return false;
-#endif
-
   return face->table.kerx->has_data ();
 }
 
@@ -307,10 +283,6 @@ hb_aat_layout_position (const hb_ot_shape_plan_t *plan,
                        hb_font_t *font,
                        hb_buffer_t *buffer)
 {
-#ifdef HB_NO_SHAPE_AAT
-  return;
-#endif
-
   hb_blob_t *kerx_blob = font->face->table.kerx.get_blob ();
   const AAT::kerx& kerx = *kerx_blob->as<AAT::kerx> ();
 
@@ -330,10 +302,6 @@ hb_aat_layout_position (const hb_ot_shape_plan_t *plan,
 hb_bool_t
 hb_aat_layout_has_tracking (hb_face_t *face)
 {
-#ifdef HB_NO_SHAPE_AAT
-  return false;
-#endif
-
   return face->table.trak->has_data ();
 }
 
@@ -342,10 +310,6 @@ hb_aat_layout_track (const hb_ot_shape_plan_t *plan,
                     hb_font_t *font,
                     hb_buffer_t *buffer)
 {
-#ifdef HB_NO_SHAPE_AAT
-  return;
-#endif
-
   const AAT::trak& trak = *font->face->table.trak;
 
   AAT::hb_aat_apply_context_t c (plan, font, buffer);
@@ -369,12 +333,6 @@ hb_aat_layout_get_feature_types (hb_face_t                    *face,
                                 unsigned int                 *feature_count, /* IN/OUT.  May be NULL. */
                                 hb_aat_layout_feature_type_t *features       /* OUT.     May be NULL. */)
 {
-#ifdef HB_NO_SHAPE_AAT
-  if (feature_count)
-    *feature_count = 0;
-  return 0;
-#endif
-
   return face->table.feat->get_feature_types (start_offset, feature_count, features);
 }
 
@@ -391,10 +349,6 @@ hb_ot_name_id_t
 hb_aat_layout_feature_type_get_name_id (hb_face_t                    *face,
                                        hb_aat_layout_feature_type_t  feature_type)
 {
-#ifdef HB_NO_SHAPE_AAT
-  return HB_OT_NAME_ID_INVALID;
-#endif
-
   return face->table.feat->get_feature_name_id (feature_type);
 }
 
@@ -423,11 +377,8 @@ hb_aat_layout_feature_type_get_selector_infos (hb_face_t
                                               hb_aat_layout_feature_selector_info_t *selectors,      /* OUT.     May be NULL. */
                                               unsigned int                          *default_index   /* OUT.     May be NULL. */)
 {
-#ifdef HB_NO_SHAPE_AAT
-  if (selector_count)
-    *selector_count = 0;
-  return 0;
-#endif
-
   return face->table.feat->get_selector_infos (feature_type, start_offset, selector_count, selectors, default_index);
 }
+
+
+#endif
index c63c3ad..635fa94 100644 (file)
@@ -152,13 +152,12 @@ hb_ot_shape_planner_t::compile (hb_ot_shape_plan_t           &plan,
   if (!plan.apply_kerx && !has_gpos_kern)
   {
     /* Apparently Apple applies kerx if GPOS kern was not applied. */
-    if (0)
-      ;
 #ifndef HB_NO_SHAPE_AAT
-    else if (hb_aat_layout_has_positioning (face))
+    if (hb_aat_layout_has_positioning (face))
       plan.apply_kerx = true;
+    else
 #endif
-    else if (hb_ot_layout_has_kerning (face))
+    if (hb_ot_layout_has_kerning (face))
       plan.apply_kern = true;
   }
 
@@ -220,9 +219,11 @@ void
 hb_ot_shape_plan_t::substitute (hb_font_t   *font,
                                hb_buffer_t *buffer) const
 {
+#ifndef HB_NO_SHAPE_AAT
   if (unlikely (apply_morx))
     hb_aat_layout_substitute (this, font, buffer);
   else
+#endif
     map.substitute (this, font, buffer);
 }
 
@@ -232,15 +233,19 @@ hb_ot_shape_plan_t::position (hb_font_t   *font,
 {
   if (this->apply_gpos)
     map.position (this, font, buffer);
+#ifndef HB_NO_SHAPE_AAT
   else if (this->apply_kerx)
     hb_aat_layout_position (this, font, buffer);
+#endif
   else if (this->apply_kern)
     hb_ot_layout_kern (this, font, buffer);
   else
     _hb_ot_shape_fallback_kern (this, font, buffer);
 
+#ifndef HB_NO_SHAPE_AAT
   if (this->apply_trak)
     hb_aat_layout_track (this, font, buffer);
+#endif
 }
 
 
@@ -336,6 +341,7 @@ hb_ot_shape_collect_features (hb_ot_shape_planner_t          *planner,
                      feature->value);
   }
 
+#ifndef HB_NO_SHAPE_AAT
   if (planner->apply_morx)
   {
     hb_aat_map_builder_t *aat_map = &planner->aat_map;
@@ -345,6 +351,7 @@ hb_ot_shape_collect_features (hb_ot_shape_planner_t          *planner,
       aat_map->add_feature (feature->tag, feature->value);
     }
   }
+#endif
 
   if (planner->shaper->override_features)
     planner->shaper->override_features (planner);
@@ -779,8 +786,10 @@ static inline void
 hb_ot_substitute_post (const hb_ot_shape_context_t *c)
 {
   hb_ot_hide_default_ignorables (c->buffer, c->font);
+#ifndef HB_NO_SHAPE_AAT
   if (c->plan->apply_morx)
     hb_aat_layout_remove_deleted_glyphs (c->buffer);
+#endif
 
   if (c->plan->shaper->postprocess_glyphs)
     c->plan->shaper->postprocess_glyphs (c->plan, c->buffer, c->font);
@@ -914,8 +923,10 @@ hb_ot_position_complex (const hb_ot_shape_context_t *c)
   /* Finish off.  Has to follow a certain order. */
   hb_ot_layout_position_finish_advances (c->font, c->buffer);
   hb_ot_zero_width_default_ignorables (c->buffer);
+#ifndef HB_NO_SHAPE_AAT
   if (c->plan->apply_morx)
     hb_aat_layout_zero_width_deleted_glyphs (c->buffer);
+#endif
   hb_ot_layout_position_finish_offsets (c->font, c->buffer);
 
   /* The nil glyph_h_origin() func returns 0, so no need to apply it. */