diff options
Diffstat (limited to 'Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc')
-rw-r--r-- | Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc index 186b12dbb8f..82df3386f5d 100644 --- a/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc +++ b/Build/source/libs/harfbuzz/harfbuzz-src/src/hb-subset.cc @@ -37,9 +37,10 @@ #include "hb-ot-hhea-table.hh" #include "hb-ot-hmtx-table.hh" #include "hb-ot-maxp-table.hh" -#include "hb-ot-color-sbix-table.hh" -#include "hb-ot-color-colr-table.hh" -#include "hb-ot-color-cpal-table.hh" +#include "OT/Color/CBDT/CBDT.hh" +#include "OT/Color/COLR/COLR.hh" +#include "OT/Color/CPAL/CPAL.hh" +#include "OT/Color/sbix/sbix.hh" #include "hb-ot-os2-table.hh" #include "hb-ot-post-table.hh" #include "hb-ot-post-table-v2subset.hh" @@ -47,7 +48,6 @@ #include "hb-ot-cff2-table.hh" #include "hb-ot-vorg-table.hh" #include "hb-ot-name-table.hh" -#include "hb-ot-color-cbdt-table.hh" #include "hb-ot-layout-gsub-table.hh" #include "hb-ot-layout-gpos-table.hh" #include "hb-ot-var-fvar-table.hh" @@ -168,11 +168,11 @@ _get_table_tags (const hb_subset_plan_t* plan, hb_concat ( + hb_array (known_tables) | hb_filter ([&] (hb_tag_t tag) { - return !_table_is_empty (plan->source, tag) && !plan->no_subset_tables->has (tag); + return !_table_is_empty (plan->source, tag) && !plan->no_subset_tables.has (tag); }) | hb_map ([] (hb_tag_t tag) -> hb_tag_t { return tag; }), - plan->no_subset_tables->iter () + plan->no_subset_tables.iter () | hb_filter([&] (hb_tag_t tag) { return !_table_is_empty (plan->source, tag); })); @@ -208,13 +208,6 @@ _plan_estimate_subset_table_size (hb_subset_plan_t *plan, static hb_blob_t* _repack (hb_tag_t tag, const hb_serialize_context_t& c) { - if (tag != HB_OT_TAG_GPOS - && tag != HB_OT_TAG_GSUB) - { - // Check for overflow in a non-handled table. - return c.successful () ? c.copy_blob () : nullptr; - } - if (!c.offset_overflow ()) return c.copy_blob (); @@ -257,7 +250,7 @@ _try_subset (const TableType *table, HB_UNTAG (c->table_tag), buf_size); if (unlikely (buf_size > c->source_blob->length * 16 || - !buf->alloc (buf_size))) + !buf->alloc (buf_size, true))) { DEBUG_MSG (SUBSET, nullptr, "OT::%c%c%c%c failed to reallocate %u bytes.", HB_UNTAG (c->table_tag), buf_size); @@ -362,7 +355,7 @@ _is_table_present (hb_face_t *source, hb_tag_t tag) static bool _should_drop_table (hb_subset_plan_t *plan, hb_tag_t tag) { - if (plan->drop_tables->has (tag)) + if (plan->drop_tables.has (tag)) return true; switch (tag) @@ -420,7 +413,8 @@ _dependencies_satisfied (hb_subset_plan_t *plan, hb_tag_t tag, { case HB_OT_TAG_hmtx: case HB_OT_TAG_vmtx: - return plan->pinned_at_default || !pending_subset_tags.has (HB_OT_TAG_glyf); + case HB_OT_TAG_maxp: + return !plan->normalized_coords || !pending_subset_tags.has (HB_OT_TAG_glyf); default: return true; } @@ -431,7 +425,7 @@ _subset_table (hb_subset_plan_t *plan, hb_vector_t<char> &buf, hb_tag_t tag) { - if (plan->no_subset_tables->has (tag)) { + if (plan->no_subset_tables.has (tag)) { return _passthrough (plan, tag); } @@ -476,7 +470,7 @@ _subset_table (hb_subset_plan_t *plan, case HB_OT_TAG_VVAR: return _subset<const OT::VVAR> (plan, buf); #endif case HB_OT_TAG_fvar: - if (plan->user_axes_location->is_empty ()) return _passthrough (plan, tag); + if (plan->user_axes_location.is_empty ()) return _passthrough (plan, tag); return _subset<const OT::fvar> (plan, buf); case HB_OT_TAG_STAT: /*TODO(qxliu): change the condition as we support more complex @@ -632,3 +626,8 @@ hb_subset_plan_execute_or_fail (hb_subset_plan_t *plan) end: return success ? hb_face_reference (plan->dest) : nullptr; } + +#ifndef HB_NO_VISIBILITY +/* If NO_VISIBILITY, libharfbuzz has this. */ +#include "hb-ot-name-language-static.hh" +#endif |