From d7c012a08e347dcfd1ed4229d70c0a4be496c02b Mon Sep 17 00:00:00 2001 From: Qunxin Liu Date: Wed, 26 Feb 2020 13:11:42 -0800 Subject: [PATCH] [subset] GDEF Variation Store: step 2 do subset based on variation indices collected in step 1 --- src/hb-ot-layout-common.hh | 96 ++++++++++++- src/hb-ot-layout-gdef-table.hh | 28 ++-- src/hb-ot-layout-gpos-table.hh | 136 +++++++++++------- src/hb-ot-layout-gsubgpos.hh | 5 +- src/hb-ot-layout.cc | 32 ----- src/hb-ot-layout.h | 7 - src/hb-subset-plan.cc | 22 ++- test/subset/data/Makefile.am | 1 + test/subset/data/Makefile.sources | 1 + .../AdobeVFPrototype.default.41,42,43,57.otf | Bin 0 -> 4960 bytes .../AdobeVFPrototype.default.41,42,43.otf | Bin 0 -> 4540 bytes .../AdobeVFPrototype.default.41,42.otf | Bin 0 -> 4132 bytes .../AdobeVFPrototype.default.41,56,57.otf | Bin 0 -> 4152 bytes .../AdobeVFPrototype.default.41.otf | Bin 0 -> 3468 bytes .../AdobeVFPrototype.default.42,57.otf | Bin 0 -> 4208 bytes ...dobeVFPrototype.drop-hints.41,42,43,57.otf | Bin 0 -> 4772 bytes .../AdobeVFPrototype.drop-hints.41,42,43.otf | Bin 0 -> 4352 bytes .../AdobeVFPrototype.drop-hints.41,42.otf | Bin 0 -> 3944 bytes .../AdobeVFPrototype.drop-hints.41,56,57.otf | Bin 0 -> 3964 bytes .../AdobeVFPrototype.drop-hints.41.otf | Bin 0 -> 3280 bytes .../AdobeVFPrototype.drop-hints.42,57.otf | Bin 0 -> 4020 bytes ...VFPrototype.keep-gdef-gpos.41,42,43,57.otf | Bin 0 -> 5444 bytes ...obeVFPrototype.keep-gdef-gpos.41,42,43.otf | Bin 0 -> 4916 bytes .../AdobeVFPrototype.keep-gdef-gpos.41,42.otf | Bin 0 -> 4436 bytes ...obeVFPrototype.keep-gdef-gpos.41,56,57.otf | Bin 0 -> 4556 bytes .../AdobeVFPrototype.keep-gdef-gpos.41.otf | Bin 0 -> 3692 bytes .../AdobeVFPrototype.keep-gdef-gpos.42,57.otf | Bin 0 -> 4556 bytes test/subset/data/fonts/AdobeVFPrototype.otf | Bin 0 -> 120400 bytes .../data/tests/layout.gdef-varstore.tests | 16 +++ 29 files changed, 232 insertions(+), 112 deletions(-) create mode 100644 test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,42,43,57.otf create mode 100644 test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,42,43.otf create mode 100644 test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,42.otf create mode 100644 test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,56,57.otf create mode 100644 test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41.otf create mode 100644 test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.42,57.otf create mode 100644 test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,42,43,57.otf create mode 100644 test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,42,43.otf create mode 100644 test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,42.otf create mode 100644 test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,56,57.otf create mode 100644 test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41.otf create mode 100644 test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.42,57.otf create mode 100644 test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,42,43,57.otf create mode 100644 test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,42,43.otf create mode 100644 test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,42.otf create mode 100644 test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,56,57.otf create mode 100644 test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41.otf create mode 100644 test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.42,57.otf create mode 100644 test/subset/data/fonts/AdobeVFPrototype.otf create mode 100644 test/subset/data/tests/layout.gdef-varstore.tests diff --git a/src/hb-ot-layout-common.hh b/src/hb-ot-layout-common.hh index 403e1733f..fdd1f31c7 100644 --- a/src/hb-ot-layout-common.hh +++ b/src/hb-ot-layout-common.hh @@ -721,6 +721,12 @@ struct FeatureParamsSize return_trace (true); } + bool subset (hb_subset_context_t *c) const + { + TRACE_SUBSET (this); + return_trace ((bool) c->serializer->embed (*this)); + } + HBUINT16 designSize; /* Represents the design size in 720/inch * units (decipoints). The design size entry * must be non-zero. When there is a design @@ -771,6 +777,12 @@ struct FeatureParamsStylisticSet return_trace (c->check_struct (this)); } + bool subset (hb_subset_context_t *c) const + { + TRACE_SUBSET (this); + return_trace ((bool) c->serializer->embed (*this)); + } + HBUINT16 version; /* (set to 0): This corresponds to a “minor” * version number. Additional data may be * added to the end of this Feature Parameters @@ -804,6 +816,15 @@ struct FeatureParamsCharacterVariants characters.sanitize (c)); } + unsigned get_size () const + { return min_size + characters.len * HBUINT24::static_size; } + + bool subset (hb_subset_context_t *c) const + { + TRACE_SUBSET (this); + return_trace ((bool) c->serializer->embed (*this)); + } + HBUINT16 format; /* Format number is set to 0. */ NameID featUILableNameID; /* The ‘name’ table name ID that * specifies a string (or strings, @@ -853,6 +874,19 @@ struct FeatureParams return_trace (true); } + bool subset (hb_subset_context_t *c, const Tag* tag) const + { + TRACE_SUBSET (this); + if (!tag) return_trace (false); + if (*tag == HB_TAG ('s','i','z','e')) + return_trace (u.size.subset (c)); + if ((*tag & 0xFFFF0000u) == HB_TAG ('s','s','\0','\0')) /* ssXX */ + return_trace (u.stylisticSet.subset (c)); + if ((*tag & 0xFFFF0000u) == HB_TAG ('c','v','\0','\0')) /* cvXX */ + return_trace (u.characterVariants.subset (c)); + return_trace (false); + } + #ifndef HB_NO_LAYOUT_FEATURE_PARAMS const FeatureParamsSize& get_size_params (hb_tag_t tag) const { @@ -911,7 +945,7 @@ struct Feature auto *out = c->serializer->start_embed (*this); if (unlikely (!out || !c->serializer->extend_min (out))) return_trace (false); - out->featureParams = 0; /* TODO(subset) FeatureParams. */ + bool subset_featureParams = out->featureParams.serialize_subset (c, featureParams, this, tag); auto it = + hb_iter (lookupIndex) @@ -920,7 +954,8 @@ struct Feature ; out->lookupIndex.serialize (c->serializer, l, it); - return_trace (bool (it) || (tag && *tag == HB_TAG ('p', 'r', 'e', 'f'))); + return_trace (bool (it) || subset_featureParams + || (tag && *tag == HB_TAG ('p', 'r', 'e', 'f'))); } bool sanitize (hb_sanitize_context_t *c, @@ -2462,6 +2497,41 @@ struct VariationStore return_trace (true); } + bool subset (hb_subset_context_t *c) const + { + TRACE_SUBSET (this); + + VariationStore *varstore_prime = c->serializer->start_embed (); + if (unlikely (!varstore_prime)) return_trace (false); + + const hb_set_t *variation_indices = c->plan->layout_variation_indices; + if (variation_indices->is_empty ()) return_trace (false); + + hb_vector_t inner_maps; + inner_maps.resize ((unsigned) dataSets.len); + for (unsigned i = 0; i < inner_maps.length; i++) + inner_maps[i].init (); + + for (unsigned idx : c->plan->layout_variation_indices->iter ()) + { + uint16_t major = idx >> 16; + uint16_t minor = idx & 0xFFFF; + + if (major >= inner_maps.length) + { + for (unsigned i = 0; i < inner_maps.length; i++) + inner_maps[i].fini (); + return_trace (false); + } + inner_maps[major].add (minor); + } + varstore_prime->serialize (c->serializer, this, inner_maps.as_array ()); + + for (unsigned i = 0; i < inner_maps.length; i++) + inner_maps[i].fini (); + return_trace (bool (varstore_prime->dataSets)); + } + unsigned int get_region_index_count (unsigned int ivs) const { return (this+dataSets[ivs]).get_region_index_count (); } @@ -2932,10 +3002,24 @@ struct VariationDevice hb_position_t get_y_delta (hb_font_t *font, const VariationStore &store) const { return font->em_scalef_y (get_delta (font, store)); } - VariationDevice* copy (hb_serialize_context_t *c) const + VariationDevice* copy (hb_serialize_context_t *c, const hb_map_t *layout_variation_idx_map) const { TRACE_SERIALIZE (this); - return_trace (c->embed (this)); + auto snap = c->snapshot (); + auto *out = c->embed (this); + if (unlikely (!out)) return_trace (nullptr); + if (!layout_variation_idx_map || layout_variation_idx_map->is_empty ()) return_trace (out); + + unsigned org_idx = (outerIndex << 16) + innerIndex; + if (!layout_variation_idx_map->has (org_idx)) + { + c->revert (snap); + return_trace (nullptr); + } + unsigned new_idx = layout_variation_idx_map->get (org_idx); + out->outerIndex = new_idx >> 16; + out->innerIndex = new_idx & 0xFFFF; + return_trace (out); } void record_variation_index (hb_set_t *layout_variation_indices) const @@ -3029,7 +3113,7 @@ struct Device } } - Device* copy (hb_serialize_context_t *c) const + Device* copy (hb_serialize_context_t *c, const hb_map_t *layout_variation_idx_map=nullptr) const { TRACE_SERIALIZE (this); switch (u.b.format) { @@ -3041,7 +3125,7 @@ struct Device #endif #ifndef HB_NO_VAR case 0x8000: - return_trace (reinterpret_cast (u.variation.copy (c))); + return_trace (reinterpret_cast (u.variation.copy (c, layout_variation_idx_map))); #endif default: return_trace (nullptr); diff --git a/src/hb-ot-layout-gdef-table.hh b/src/hb-ot-layout-gdef-table.hh index 1247a16d3..d5485d0a0 100644 --- a/src/hb-ot-layout-gdef-table.hh +++ b/src/hb-ot-layout-gdef-table.hh @@ -173,7 +173,8 @@ struct CaretValueFormat3 auto *out = c->serializer->embed (this); if (unlikely (!out)) return_trace (false); - return_trace (out->deviceTable.serialize_copy (c->serializer, deviceTable, this)); + return_trace (out->deviceTable.serialize_copy (c->serializer, deviceTable, this, c->serializer->to_bias (out), + hb_serialize_context_t::Head, c->plan->layout_variation_idx_map)); } void collect_variation_indices (hb_set_t *layout_variation_indices) const @@ -610,22 +611,31 @@ struct GDEF auto *out = c->serializer->embed (*this); if (unlikely (!out)) return_trace (false); - out->glyphClassDef.serialize_subset (c, glyphClassDef, this); + bool subset_glyphclassdef = out->glyphClassDef.serialize_subset (c, glyphClassDef, this); out->attachList = 0;//TODO(subset) serialize_subset (c, attachList, this); - out->ligCaretList.serialize_subset (c, ligCaretList, this); - out->markAttachClassDef.serialize_subset (c, markAttachClassDef, this); + bool subset_ligcaretlist = out->ligCaretList.serialize_subset (c, ligCaretList, this); + bool subset_markattachclassdef = out->markAttachClassDef.serialize_subset (c, markAttachClassDef, this); + bool subset_markglyphsetsdef = true; if (version.to_int () >= 0x00010002u) { - if (!out->markGlyphSetsDef.serialize_subset (c, markGlyphSetsDef, this) && - version.to_int () == 0x00010002u) - out->version.minor = 0; + subset_markglyphsetsdef = out->markGlyphSetsDef.serialize_subset (c, markGlyphSetsDef, this); + if (!subset_markglyphsetsdef && + version.to_int () == 0x00010002u) + out->version.minor = 0; } + bool subset_varstore = true; if (version.to_int () >= 0x00010003u) - out->varStore = 0;// TODO(subset) serialize_subset (c, varStore, this); + { + subset_varstore = out->varStore.serialize_subset (c, varStore, this); + if (!subset_varstore && version.to_int () == 0x00010003u) + out->version.minor = 2; + } - return_trace (true); + return_trace (subset_glyphclassdef || subset_ligcaretlist || subset_markattachclassdef || + (out->version.to_int () >= 0x00010002u && subset_markglyphsetsdef) || + (out->version.to_int () >= 0x00010003u && subset_varstore)); } bool sanitize (hb_sanitize_context_t *c) const diff --git a/src/hb-ot-layout-gpos-table.hh b/src/hb-ot-layout-gpos-table.hh index ffe0dc874..fef88af39 100644 --- a/src/hb-ot-layout-gpos-table.hh +++ b/src/hb-ot-layout-gpos-table.hh @@ -160,7 +160,8 @@ struct ValueFormat : HBUINT16 return ret; } - void serialize_copy (hb_serialize_context_t *c, const void *base, const Value *values) const + void serialize_copy (hb_serialize_context_t *c, const void *base, + const Value *values, const hb_map_t *layout_variation_idx_map) const { unsigned int format = *this; if (!format) return; @@ -170,10 +171,10 @@ struct ValueFormat : HBUINT16 if (format & xAdvance) c->copy (*values++); if (format & yAdvance) c->copy (*values++); - if (format & xPlaDevice) copy_device (c, base, values++); - if (format & yPlaDevice) copy_device (c, base, values++); - if (format & xAdvDevice) copy_device (c, base, values++); - if (format & yAdvDevice) copy_device (c, base, values++); + if (format & xPlaDevice) copy_device (c, base, values++, layout_variation_idx_map); + if (format & yPlaDevice) copy_device (c, base, values++, layout_variation_idx_map); + if (format & xAdvDevice) copy_device (c, base, values++, layout_variation_idx_map); + if (format & yAdvDevice) copy_device (c, base, values++, layout_variation_idx_map); } void collect_variation_indices (hb_collect_variation_indices_context_t *c, @@ -241,7 +242,8 @@ struct ValueFormat : HBUINT16 return *static_cast *> (value); } - bool copy_device (hb_serialize_context_t *c, const void *base, const Value *src_value) const + bool copy_device (hb_serialize_context_t *c, const void *base, + const Value *src_value, const hb_map_t *layout_variation_idx_map) const { Value *dst_value = c->copy (*src_value); @@ -250,7 +252,7 @@ struct ValueFormat : HBUINT16 *dst_value = 0; c->push (); - if ((base + get_device (src_value)).copy (c)) + if ((base + get_device (src_value)).copy (c, layout_variation_idx_map)) { c->add_link (*dst_value, c->pop_pack ()); return true; @@ -321,7 +323,8 @@ template static void SinglePos_serialize (hb_serialize_context_t *c, const void *src, Iterator it, - ValueFormat valFormat); + ValueFormat valFormat, + const hb_map_t *layout_variation_idx_map); struct AnchorFormat1 @@ -420,14 +423,17 @@ struct AnchorFormat3 return_trace (c->check_struct (this) && xDeviceTable.sanitize (c, this) && yDeviceTable.sanitize (c, this)); } - AnchorFormat3* copy (hb_serialize_context_t *c) const + AnchorFormat3* copy (hb_serialize_context_t *c, + const hb_map_t *layout_variation_idx_map) const { TRACE_SERIALIZE (this); + if (!layout_variation_idx_map) return_trace (nullptr); + auto *out = c->embed (this); if (unlikely (!out)) return_trace (nullptr); - out->xDeviceTable.serialize_copy (c, xDeviceTable, this); - out->yDeviceTable.serialize_copy (c, yDeviceTable, this); + out->xDeviceTable.serialize_copy (c, xDeviceTable, this, 0, hb_serialize_context_t::Head, layout_variation_idx_map); + out->yDeviceTable.serialize_copy (c, yDeviceTable, this, 0, hb_serialize_context_t::Head, layout_variation_idx_map); return_trace (out); } @@ -479,13 +485,13 @@ struct Anchor } } - Anchor* copy (hb_serialize_context_t *c) const + Anchor* copy (hb_serialize_context_t *c, const hb_map_t *layout_variation_idx_map) const { TRACE_SERIALIZE (this); switch (u.format) { case 1: return_trace (reinterpret_cast (u.format1.copy (c))); case 2: return_trace (reinterpret_cast (u.format2.copy (c))); - case 3: return_trace (reinterpret_cast (u.format3.copy (c))); + case 3: return_trace (reinterpret_cast (u.format3.copy (c, layout_variation_idx_map))); default:return_trace (nullptr); } } @@ -539,6 +545,7 @@ struct AnchorMatrix bool serialize (hb_serialize_context_t *c, unsigned num_rows, AnchorMatrix const *offset_matrix, + const hb_map_t *layout_variation_idx_map, Iterator index_iter) { TRACE_SERIALIZE (this); @@ -550,7 +557,10 @@ struct AnchorMatrix { auto *offset = c->embed (offset_matrix->matrixZ[i]); if (!offset) return_trace (false); - offset->serialize_copy (c, offset_matrix->matrixZ[i], offset_matrix, c->to_bias (this)); + offset->serialize_copy (c, offset_matrix->matrixZ[i], + offset_matrix, c->to_bias (this), + hb_serialize_context_t::Head, + layout_variation_idx_map); } return_trace (true); @@ -588,15 +598,18 @@ struct MarkRecord return_trace (c->check_struct (this) && markAnchor.sanitize (c, base)); } - MarkRecord *copy (hb_serialize_context_t *c, const void *base, - unsigned dst_bias, const hb_map_t *klass_mapping) const + MarkRecord *copy (hb_serialize_context_t *c, + const void *src_base, + unsigned dst_bias, + const hb_map_t *klass_mapping, + const hb_map_t *layout_variation_idx_map) const { TRACE_SERIALIZE (this); auto *out = c->embed (this); if (unlikely (!out)) return_trace (nullptr); out->klass = klass_mapping->get (klass); - out->markAnchor.serialize_copy (c, markAnchor, base, dst_bias); + out->markAnchor.serialize_copy (c, markAnchor, src_base, dst_bias, hb_serialize_context_t::Head, layout_variation_idx_map); return_trace (out); } @@ -655,13 +668,14 @@ struct MarkArray : ArrayOf /* Array of MarkRecords--in Coverage orde hb_requires (hb_is_source_of (Iterator, MarkRecord))> bool serialize (hb_serialize_context_t *c, const hb_map_t *klass_mapping, + const hb_map_t *layout_variation_idx_map, const void *base, Iterator it) { TRACE_SERIALIZE (this); if (unlikely (!c->extend_min (*this))) return_trace (false); if (unlikely (!c->check_assign (len, it.len ()))) return_trace (false); - c->copy_all (it, base, c->to_bias (this), klass_mapping); + c->copy_all (it, base, c->to_bias (this), klass_mapping, layout_variation_idx_map); return_trace (true); } @@ -717,7 +731,8 @@ struct SinglePosFormat1 void serialize (hb_serialize_context_t *c, const void *src, Iterator it, - ValueFormat valFormat) + ValueFormat valFormat, + const hb_map_t *layout_variation_idx_map) { auto out = c->extend_min (*this); if (unlikely (!out)) return; @@ -726,7 +741,7 @@ struct SinglePosFormat1 + it | hb_map (hb_second) | hb_apply ([&] (hb_array_t _) - { valFormat.serialize_copy (c, src, &_); }) + { valFormat.serialize_copy (c, src, &_, layout_variation_idx_map); }) ; auto glyphs = @@ -751,7 +766,7 @@ struct SinglePosFormat1 ; bool ret = bool (it); - SinglePos_serialize (c->serializer, this, it, valueFormat); + SinglePos_serialize (c->serializer, this, it, valueFormat, c->plan->layout_variation_idx_map); return_trace (ret); } @@ -830,7 +845,8 @@ struct SinglePosFormat2 void serialize (hb_serialize_context_t *c, const void *src, Iterator it, - ValueFormat valFormat) + ValueFormat valFormat, + const hb_map_t *layout_variation_idx_map) { auto out = c->extend_min (*this); if (unlikely (!out)) return; @@ -840,7 +856,7 @@ struct SinglePosFormat2 + it | hb_map (hb_second) | hb_apply ([&] (hb_array_t _) - { valFormat.serialize_copy (c, src, &_); }) + { valFormat.serialize_copy (c, src, &_, layout_variation_idx_map); }) ; auto glyphs = @@ -872,7 +888,7 @@ struct SinglePosFormat2 ; bool ret = bool (it); - SinglePos_serialize (c->serializer, this, it, valueFormat); + SinglePos_serialize (c->serializer, this, it, valueFormat, c->plan->layout_variation_idx_map); return_trace (ret); } @@ -920,7 +936,8 @@ struct SinglePos void serialize (hb_serialize_context_t *c, const void *src, Iterator glyph_val_iter_pairs, - ValueFormat valFormat) + ValueFormat valFormat, + const hb_map_t *layout_variation_idx_map) { if (unlikely (!c->extend_min (u.format))) return; unsigned format = 2; @@ -929,9 +946,9 @@ struct SinglePos u.format = format; switch (u.format) { - case 1: u.format1.serialize (c, src, glyph_val_iter_pairs, valFormat); + case 1: u.format1.serialize (c, src, glyph_val_iter_pairs, valFormat, layout_variation_idx_map); return; - case 2: u.format2.serialize (c, src, glyph_val_iter_pairs, valFormat); + case 2: u.format2.serialize (c, src, glyph_val_iter_pairs, valFormat, layout_variation_idx_map); return; default:return; } @@ -962,8 +979,9 @@ static void SinglePos_serialize (hb_serialize_context_t *c, const void *src, Iterator it, - ValueFormat valFormat) -{ c->start_embed ()->serialize (c, src, it, valFormat); } + ValueFormat valFormat, + const hb_map_t *layout_variation_idx_map) +{ c->start_embed ()->serialize (c, src, it, valFormat, layout_variation_idx_map); } struct PairValueRecord @@ -979,6 +997,7 @@ struct PairValueRecord const ValueFormat *valueFormats; unsigned len1; /* valueFormats[0].get_len() */ const hb_map_t *glyph_map; + const hb_map_t *layout_variation_idx_map; }; bool serialize (hb_serialize_context_t *c, @@ -990,8 +1009,8 @@ struct PairValueRecord out->secondGlyph = (*closure->glyph_map)[secondGlyph]; - closure->valueFormats[0].serialize_copy (c, closure->base, &values[0]); - closure->valueFormats[1].serialize_copy (c, closure->base, &values[closure->len1]); + closure->valueFormats[0].serialize_copy (c, closure->base, &values[0], closure->layout_variation_idx_map); + closure->valueFormats[1].serialize_copy (c, closure->base, &values[closure->len1], closure->layout_variation_idx_map); return_trace (true); } @@ -1122,7 +1141,8 @@ struct PairSet this, valueFormats, len1, - &glyph_map + &glyph_map, + c->plan->layout_variation_idx_map }; const PairValueRecord *record = &firstPairValueRecord; @@ -1408,17 +1428,17 @@ struct PairPosFormat2 + hb_range ((unsigned) class1Count) | hb_filter (klass1_map) | hb_apply ([&] (const unsigned class1_idx) - { - + hb_range ((unsigned) class2Count) - | hb_filter (klass2_map) - | hb_apply ([&] (const unsigned class2_idx) - { - unsigned idx = (class1_idx * (unsigned) class2Count + class2_idx) * (len1 + len2); - valueFormat1.serialize_copy (c->serializer, this, &values[idx]); - valueFormat2.serialize_copy (c->serializer, this, &values[idx + len1]); - }) - ; - }) + { + + hb_range ((unsigned) class2Count) + | hb_filter (klass2_map) + | hb_apply ([&] (const unsigned class2_idx) + { + unsigned idx = (class1_idx * (unsigned) class2Count + class2_idx) * (len1 + len2); + valueFormat1.serialize_copy (c->serializer, this, &values[idx], c->plan->layout_variation_idx_map); + valueFormat2.serialize_copy (c->serializer, this, &values[idx + len1], c->plan->layout_variation_idx_map); + }) + ; + }) ; const hb_set_t &glyphset = *c->plan->_glyphset_gsub; @@ -1524,14 +1544,17 @@ struct EntryExitRecord (src_base+exitAnchor).collect_variation_indices (c); } - EntryExitRecord* copy (hb_serialize_context_t *c, const void *base) const + EntryExitRecord* copy (hb_serialize_context_t *c, + const void *src_base, + const void *dst_base, + const hb_map_t *layout_variation_idx_map) const { TRACE_SERIALIZE (this); auto *out = c->embed (this); if (unlikely (!out)) return_trace (nullptr); - out->entryAnchor.serialize_copy (c, entryAnchor, base); - out->exitAnchor.serialize_copy (c, exitAnchor, base); + out->entryAnchor.serialize_copy (c, entryAnchor, src_base, c->to_bias (dst_base), hb_serialize_context_t::Head, layout_variation_idx_map); + out->exitAnchor.serialize_copy (c, exitAnchor, src_base, c->to_bias (dst_base), hb_serialize_context_t::Head, layout_variation_idx_map); return_trace (out); } @@ -1675,7 +1698,10 @@ struct CursivePosFormat1 template - void serialize (hb_serialize_context_t *c, Iterator it, const void *base) + void serialize (hb_serialize_context_t *c, + Iterator it, + const void *src_base, + const hb_map_t *layout_variation_idx_map) { if (unlikely (!c->extend_min ((*this)))) return; this->format = 1; @@ -1683,7 +1709,7 @@ struct CursivePosFormat1 for (const EntryExitRecord& entry_record : + it | hb_map (hb_second)) - c->copy (entry_record, base); + c->copy (entry_record, src_base, this, layout_variation_idx_map); auto glyphs = + it @@ -1710,7 +1736,7 @@ struct CursivePosFormat1 ; bool ret = bool (it); - out->serialize (c->serializer, it, this); + out->serialize (c->serializer, it, this, c->plan->layout_variation_idx_map); return_trace (ret); } @@ -1900,8 +1926,8 @@ struct MarkBasePosFormat1 return_trace (false); out->markArray.serialize (c->serializer, out) - .serialize (c->serializer, &klass_mapping, &(this+markArray), + mark_iter - | hb_map (hb_second)); + .serialize (c->serializer, &klass_mapping, c->plan->layout_variation_idx_map, &(this+markArray), + mark_iter + | hb_map (hb_second)); unsigned basecount = (this+baseArray).rows; auto base_iter = @@ -1931,7 +1957,7 @@ struct MarkBasePosFormat1 ; } out->baseArray.serialize (c->serializer, out) - .serialize (c->serializer, base_iter.len (), &(this+baseArray), base_indexes.iter ()); + .serialize (c->serializer, base_iter.len (), &(this+baseArray), c->plan->layout_variation_idx_map, base_indexes.iter ()); return_trace (true); } @@ -2277,8 +2303,8 @@ struct MarkMarkPosFormat1 return_trace (false); out->mark1Array.serialize (c->serializer, out) - .serialize (c->serializer, &klass_mapping, &(this+mark1Array), + mark1_iter - | hb_map (hb_second)); + .serialize (c->serializer, &klass_mapping, c->plan->layout_variation_idx_map, &(this+mark1Array), + mark1_iter + | hb_map (hb_second)); unsigned mark2count = (this+mark2Array).rows; auto mark2_iter = @@ -2308,7 +2334,7 @@ struct MarkMarkPosFormat1 ; } out->mark2Array.serialize (c->serializer, out) - .serialize (c->serializer, mark2_iter.len (), &(this+mark2Array), mark2_indexes.iter ()); + .serialize (c->serializer, mark2_iter.len (), &(this+mark2Array), c->plan->layout_variation_idx_map, mark2_indexes.iter ()); return_trace (true); } diff --git a/src/hb-ot-layout-gsubgpos.hh b/src/hb-ot-layout-gsubgpos.hh index 6aa2f161a..62b3b0aad 100644 --- a/src/hb-ot-layout-gsubgpos.hh +++ b/src/hb-ot-layout-gsubgpos.hh @@ -3303,8 +3303,9 @@ struct GSUBGPOS unsigned int feature_count = hb_min (get_feature_count (), (unsigned) HB_MAX_FEATURES); for (unsigned i = 0; i < feature_count; i++) { - if (get_feature (i).intersects_lookup_indexes (lookup_indexes)) - feature_indexes->add (i); + const Feature& f = get_feature (i); + if ((!f.featureParams.is_null ()) || f.intersects_lookup_indexes (lookup_indexes)) + feature_indexes->add (i); } #ifndef HB_NO_VAR if (version.to_int () >= 0x00010001u) diff --git a/src/hb-ot-layout.cc b/src/hb-ot-layout.cc index 7bbd5d6fa..bf736fef1 100644 --- a/src/hb-ot-layout.cc +++ b/src/hb-ot-layout.cc @@ -318,38 +318,6 @@ hb_ot_layout_get_glyphs_in_class (hb_face_t *face, return face->table.GDEF->table->get_glyphs_in_class (klass, glyphs); } -#ifndef HB_NO_VAR -/** - * hb_ot_layout_collect_variation_indices: - * @face: The #hb_face_t to work on - * @layout_variation_indices: (inout): The #hb_set_t set of var indexes in all Device - * tables - * - * Fetch and remap a list of variation indices in all Device tables referenced - * in the specified face's GDEF table and GPOS tables that are going to be - * retained in the final subset - * - * Since: REPLACEME - **/ -void -hb_ot_layout_collect_variation_indices (hb_face_t *face, - const hb_set_t *glyphset, - const hb_map_t *gpos_lookups, - hb_set_t *layout_variation_indices /* OUT */, - hb_map_t *layout_variation_idx_map /* OUT */) -{ - if (!face->table.GDEF->table->has_data ()) return; - OT::hb_collect_variation_indices_context_t c (layout_variation_indices, glyphset, gpos_lookups); - face->table.GDEF->table->collect_variation_indices (&c); - - if (hb_ot_layout_has_positioning (face)) - face->table.GPOS->table->collect_variation_indices (&c); - - face->table.GDEF->table->remap_layout_variation_indices (layout_variation_indices, layout_variation_idx_map); -} -#endif - - #ifndef HB_NO_LAYOUT_UNUSED /** * hb_ot_layout_get_attach_points: diff --git a/src/hb-ot-layout.h b/src/hb-ot-layout.h index 514d74446..6255a9173 100644 --- a/src/hb-ot-layout.h +++ b/src/hb-ot-layout.h @@ -121,13 +121,6 @@ hb_ot_layout_get_glyphs_in_class (hb_face_t *face, hb_ot_layout_glyph_class_t klass, hb_set_t *glyphs /* OUT */); -HB_EXTERN void -hb_ot_layout_collect_variation_indices (hb_face_t *face, - const hb_set_t *glyphset, - const hb_map_t *gpos_lookups, - hb_set_t *layout_variation_indices /* INOUT */, - hb_map_t *layout_variation_idx_map /* INOUT */); - /* Not that useful. Provides list of attach points for a glyph that a * client may want to cache */ HB_EXTERN unsigned int diff --git a/src/hb-subset-plan.cc b/src/hb-subset-plan.cc index 2d5871430..232131c59 100644 --- a/src/hb-subset-plan.cc +++ b/src/hb-subset-plan.cc @@ -30,6 +30,8 @@ #include "hb-ot-cmap-table.hh" #include "hb-ot-glyf-table.hh" +#include "hb-ot-layout-gdef-table.hh" +#include "hb-ot-layout-gpos-table.hh" #include "hb-ot-cff1-table.hh" #include "hb-ot-color-colr-table.hh" #include "hb-ot-var-fvar-table.hh" @@ -137,7 +139,25 @@ static inline void hb_set_t *layout_variation_indices, hb_map_t *layout_variation_idx_map) { - hb_ot_layout_collect_variation_indices (face, glyphset, gpos_lookups, layout_variation_indices, layout_variation_idx_map); + hb_blob_ptr_t gdef = hb_sanitize_context_t ().reference_table (face); + hb_blob_ptr_t gpos = hb_sanitize_context_t ().reference_table (face); + + if (!gdef->has_data ()) + { + gdef.destroy (); + gpos.destroy (); + return; + } + OT::hb_collect_variation_indices_context_t c (layout_variation_indices, glyphset, gpos_lookups); + gdef->collect_variation_indices (&c); + + if (hb_ot_layout_has_positioning (face)) + gpos->collect_variation_indices (&c); + + gdef->remap_layout_variation_indices (layout_variation_indices, layout_variation_idx_map); + + gdef.destroy (); + gpos.destroy (); } #endif diff --git a/test/subset/data/Makefile.am b/test/subset/data/Makefile.am index 05ad13b4c..61e5594fe 100644 --- a/test/subset/data/Makefile.am +++ b/test/subset/data/Makefile.am @@ -22,6 +22,7 @@ EXTRA_DIST += \ expected/layout.gsub6 \ expected/layout.gdef \ expected/layout.context \ + expected/layout.gdef-varstore \ expected/cmap \ expected/cmap14 \ expected/sbix \ diff --git a/test/subset/data/Makefile.sources b/test/subset/data/Makefile.sources index ea250f3c1..a42321fef 100644 --- a/test/subset/data/Makefile.sources +++ b/test/subset/data/Makefile.sources @@ -22,6 +22,7 @@ DISABLED_TESTS = \ tests/layout.gsub6.tests \ tests/layout.gdef.tests \ tests/layout.context.tests \ + tests/layout.gdef-varstore.tests \ $(NULL) XFAIL_TESTS = \ diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,42,43,57.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,42,43,57.otf new file mode 100644 index 0000000000000000000000000000000000000000..745b740bcc184420df68fb960271df1cc7d43f05 GIT binary patch literal 4960 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 A+5i9m literal 0 HcmV?d00001 diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,42,43.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,42,43.otf new file mode 100644 index 0000000000000000000000000000000000000000..729b23c2499a0390e3dcd00e755e8cd3087fc395 GIT binary patch literal 4540 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 literal 0 HcmV?d00001 diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,56,57.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41,56,57.otf new file mode 100644 index 0000000000000000000000000000000000000000..8263d7843b6c525544fe80a3565377b5e6f1606d GIT binary patch literal 4152 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 literal 0 HcmV?d00001 diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.41.otf new file mode 100644 index 0000000000000000000000000000000000000000..2396fc44fecb85971189754dc72d9217c14ffb9e GIT binary patch literal 3468 zcmb_fYfN0n6+UzCz8Dt!now{nH(EP{_<=Fr+Ssw92ryWdLs(){;x$%Y!$v4kELFCg@F%U>ghZ7ZRf^kK{ZZMfs#N_EHBl>7X%-h8`pw+C z7_3OH)!t=hzVn##m@_l?;;F6m&>FfxDjh#?@SywX-IiP;`hrMJ9I7ij^5qt~LBv7R zv1dVFRbM?plvxG(oag8c_Y0%#okSKPKYp~ftoFl4{~Cq-*P#FAJ?CxR)STZ%kh{N6k6Yr#l=Jkn9XJ=cPXuGd4FZE^2iw=dZr>F%E@;PU}pck|puXiDBH&3S0b z`9c#GyArK({;zzov7rfn>;m~#lT&6|5QF7kBmRYLt5^BE&^xFma0j;m)(_^Z;sE#WAQ)7V~KZ?;Xz&3hsV(k z#nI`bXqWtHG$N#u7kVX)^e~W|F*+c4;`wQwZDBMvIAu_}9?r7|lk-heR}<0rpAxa; zY|^n1j%7Uh+Mbu38M-s`gXU>nZwuw|+s~&IObX>?&L)CMT|e790^{L4r}K8q5J?|k zWTk2zK_1^$Py-9uDHD5q9p%t^+JJqKPn&5Q71J(ylAfjtI!qqys^fHuny8IBa2f{L z8P*0@VeK0(tV(!zbQ8CQHLHt1&Ru*X?}03Wb{=g9w_?phS`gU9$27Z(W8QRcv@5I) zjSZkKeUq<*G#BsP#)F!*KG`1aO@uW2`N_UGhQaYZc!~8~mge>FF8*rYWOrDz88uCH z&b}OknP4%uEhvfjYs2A-y-)Ecy5d6<1JUSS{!!$@CZ79?j>|iF>iGO;0X_BN;%AYL zzR4f|ZY!S%BD9`LcuIJ~!{g6=0@D+k_0#GU<@1HkJ9|P~cr<`5IO_r3b$3r}5>|U> z3i#hs{tIKn;h{Gh#s?=i^3(_Yv5}CDWX}J5vKKl(y4(}%e4H=L^y#oE_%B9AMlX)N z(Yc4GPA~W`H=t1dw@Y|xX7=oyiwB?N3tA#J@EtyJxDcsicTG$ot>`vhpWMx{G83cu za_hZjn)9}}MUjd8AWsd~v~@v9-wDo&VulnYd&`~;^C=UBb; z)mykDeg?g2i(j5;L&;Pn6~}R0oKR&%5jWE_#>jq1Zngnji%qp!tcoH|uDBPLpR$T_ z53YhTDpPKK^-tl6d0eIryQNG+(Iq1iQK@J-=!JzG>_Qht3x0wwTUs*urMYDf8(5vt zwq!u^eKZ3z+6T(O3U+bS#3~)3853Jp=vb)%x3{5hqhfZZB)W;n%GWUahTXag-W)GGw#L7I29{ToBT}Dlx7n<$*pvo zIEx(0brY|lt;#zlUJLtwF|h{wpPP6cZB^HsIGYZsEaj{>NI8z+A!l>n7tt^9O?8i6-UX#m>$Xa{~l`70vtvQ81zL%RvGEmX8>ZXL9Q z2QO@$k=71Evsrqpfy56aS_iB*qHc|dxn1!k60CDlRFihJy|jKQ_agHOgG@@S@W$lCB;gs~WR;eKT2rI#^Z zM0*lrJDOOrBHE2sf_^vjN*+4CDp(BCv#{2HxX!}QA+sXSgO{$2sFql@Rz%T;u@e3b zs%ly1!7KB1vmR#t!|1NAyk2A>h!Li;yqx`>~nbs_q`=}mOd$6~Ay7!Q4 zRaIQ_#H_5r!&qHe-}`I1(qp>z|C_h8mHRyzH!m*Gr5obg?`s|=c{%8hEK3DXlXrI^ zkQ+!zf8QB8rT4x8jrpP%_dNS@okZeWLp%;}H?##>{eo!soeE%JQuhD)z7$@iXXap8 zrgh;}yl2GQBcGJuDPMr$4RoNo_6Y8BM%h$=o2?pq^Bj%PG`%hLiCIZ}ON;hzG+~37 zoryI7jW?pfQ&yl=TwyGs`>$=g6SN2zO|rP6~2$&>E4ah@K4`+bFFQQ$@~FS9Ed~vmj3+OAO4$ z?C3>~f^smdnaEC3oMj?J@l}9_ImP;lj3l*&tu=EHGL50`(kFHq%VzlCloUL&92uv` k)h>3?Cm-Ds|5XvIQ)a$(DzCfXA4S_ssT32^drVOO0Xz7^n*aa+ literal 0 HcmV?d00001 diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.42,57.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.default.42,57.otf new file mode 100644 index 0000000000000000000000000000000000000000..2315ed9b9a120ab4f0c005c623839de755e52a22 GIT binary patch literal 4208 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 literal 0 HcmV?d00001 diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,42,43,57.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,42,43,57.otf new file mode 100644 index 0000000000000000000000000000000000000000..1e691e376c2acd6f31e47a108a2fde5b099df216 GIT binary patch literal 4772 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 Z6e>r?Y`wWUMt;Me z_x|t4`Op2&T~kSki4v)SG_-T&>ea?_`lyzO?hxs!*OcaOy1r!a&qN8o0&n|z(BIXZ z+(k4g3-lq==6S~L{@No%dLiGrxg@{j;}J_S0V z%3QmjG#h}@hX8%GxvHYie6C;e(6s8vAV>&0QUJS=`ib>$bn_HRy*H-!oR8Y3`_R?#beVR*&baJaq_~3U8d| zAT$+wp$U)n?i$7Zt;%qFThJ1If)8Gb3=Lh14!v6;^D9eu(d#lVJhPmew)SW9R~jL= z-ZggArSl={J!5mvOdjY6%-~)_YAKJ%k$1msmboX8&(poG3~)U&oS7cC%jcTI@yOtQ z!?c_0Z?EM(uiNJ{cy33y$Ln+X&K*{wmu#xT4Ky`;g?Abr_cS%G=AKL* zdF2E%m%WIrYzq5W| z1<%@X{3(8}G2}SmGw8*ZVoc||yCvE82#BR(S7|AZCgK&IOer*l(r6l`Qzp%(Y;62o zT1qRZfL7C5T2Gs(l(y3gR7QKKnhubS?0E58$U{Lof!*0p->0|e0=+|*={NL8dY^96 z#}uJ^Ove&fGMmEgNr}=dDI3e>Gki(Lp76Q+Zm%ny>wN~D*X@^iCYSki?uLd7;01&L zjerh77oY)f1aK6P$8|Ecg8npcY+0{CbixMc2FQG_Sa7j^alHy1GCc0YlA~ij1Jsej z>84J*&(PN1f{icpZyo7u>V6jc;zHvZex&ai?sqKbuvGGpxkYH7sfCUsbj)j*$(^^v zR+f3w0&X+t$`p~;5GQk3ha6o%v5OET+;|H0iLga{CiiE|#vVTD2-Tw{v3IWMXLUVQ zk;CWr*^r8@fa{}Dch^~$&)Kw<&$4&51zS2hH}dy78q#^{59>~?4l`_|0Ip( z190hg-KMu=&w;|>;$gkkq7mnS22)eHqz2j`ogkfLrMY4(B>oFI7BG>V55ynax`U8~Rq!^5ERhlhs;Mk7pRr9xXf0g`Qi7|!r&Zc}jy zuWzS{Yw()(ssR?Y zN?|`yaXsa-t12ExT#8rmc$y<6tN4Wbc`{Bp(h8M7kqlC`iYJg!s#ozz6feD|;)yg{ z`hkik!T+CB+yMU{s`zA@t$9?%lWC2nK*b-SOpRN`Q)rduHCjm)+D~;#rzr~-JFBDF$$Db2&rru?$WJgSq8foP#B$ezH^9BW$&EfK*CUoR@& zRztH|iM9a}3orq7@LqwwRUnsx&=gkl;VTEf1+)x4S78X76l^53QViw)_AwWl6|@^3 zgdeMFYl3wlhIa-09zZ@K2YFnCN+l0bM>QQ9m1RRGhnB!g6+G^Py~uVqp0xn6V%fA1 zkc<05=;e;7{`2Km1dlcxEfrYJy~w$W)~FqM7QB((h;E5ht3ehA@GM097*#Z?bAR3c zSL9E#dKmkM(H-B*&8VdcneIXzFQU@V&h25lcPU1TC&B?luO!qOPl=*Vkv(hKGF|abOe1Pmbj3}vVp`N0s}c{U zXK}cT8U+>4ux6q literal 0 HcmV?d00001 diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,56,57.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41,56,57.otf new file mode 100644 index 0000000000000000000000000000000000000000..6b2063d2da6c83c5f8be374aba9ef590b8cf0a2b GIT binary patch literal 3964 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 G1ovMT_lpw% literal 0 HcmV?d00001 diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.drop-hints.41.otf new file mode 100644 index 0000000000000000000000000000000000000000..c828aca003e7a9873e8566f117296b9002334522 GIT binary patch literal 3280 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 literal 0 HcmV?d00001 diff --git a/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,42.otf b/test/subset/data/expected/layout.gdef-varstore/AdobeVFPrototype.keep-gdef-gpos.41,42.otf new file mode 100644 index 0000000000000000000000000000000000000000..749daaf4dfc3d31aae854a5f50ce0cfb520c1bb7 GIT binary patch literal 4436 zcmb_g3vg7`8UD}RS8@`<5^180#Y+eg5kibS6p)6H1PXx-kVa5Z*CY~($zrmw2`nM+ z?C#y&JT?pKLI_f=^kGKLw4<%oNZZjmqgH3yu{yQYI@KvoThX$i8{B^9-kT7ttupP| z`Op3T|NPJMpU1sxD=)W^l@S?<)|QmyKbYA5eIhoK$b7@PqT-S?&sZAKw9`bibzPZl z+t4)+CqR#bes+Dunyv5LI`$``w5LJexe4^+hGX{;O@}`1w{2UTe`m1qAdyAr-@C1R zP5Dc+-yguZAM{`B`|b5vb=l2CGi1<9Dr@a~DV4%RNlAjfALDN+H4Fr|oZ4!2T*C z(}ul{24~`R%11sPjLSrjH4sT;qT~ykQnO>m8G~12gy=596d^XzmkNPV8U;Gh3aDTL z)t`bhA)}2>?IC0WFp}U8GfxHy#0fer-S)PkEaw?7)(n;Nv0E_n#XUsm|rv0(cj!LIG>L>73G^eV;qty?=s0TNUHim5*FRjdR70qns85dpCfz& zAA2=6KK^Qa{N-wyzkVw(eNyJdL#w!L$8auxtQF(V3;F#`S$y1iF~4JQ9`Eh%oy+~! zj0zr;V=sT#E_0=K4bSp>v%yv7dU6z>H{e~!@yO;u>+G|eKH0zneqSJ9RX&Mv#UJnn z9zCqmvxXh+EN=O9AfW1g68yV@L9Y)c{a``)#$V0d%DtNM+-wDd0iQjaH@+Uvi+uYX1k|V~iuE!g*dvJBGw2C+>|4g`J)WSad2}_Ozw^k={L$7>`_X{aES3~w z=2+Q<9qI1qSY2c!5{~>K5{^DS6zD<@-d=Rw5p+rraKtfz`NXKo^BP{$1gFlnM zeS1uTl0P$LB4Phh;rBE8ppqZ3OvuHMD zQ4TGjT z)ubI4r9W>Ptc@KQ+2cYeu0n2(OVP+lZ@|;GgJ18CboX@*3~b@A^tWX3jGr_eU&~|n zj-7QXv7O^*`Qd%)Yf%aKaDyKfL_4J_f6 zL!0?_KK_euq4LIfhC8xK|k&(Y$<=7ibkFo-+PfD>PBQVW$yN692PX_2sDIP%$( zxP*TI+090WYE=`|dIN3<#(KrAA^D{3U~bf&>~6|u*Me&_8%#!%B#GNZ+)|TmO;Mo@ zm(dz3l-~O6obbeKvM$5kl1@NSR-+P;;r7E`GpH73V*f!9y-}qL6S(v-~|I2orrX|>KzA*)oU zJ+0%@VgEfHx5EBMIzEFI7_QdwbXspH)bXn*$KccPnN(zW zg4U9Q_EHno({7w*HRMDU@+psQ!kH(dj#U`HkE(&sS4W+YUO|iTbE&^vvQNt7;zV>% zEyixZsX0}*0#d?*9kw1&t(8EsPW4uX5eF~X~VeUKDdH^EjOeoJU2Y!=}Z zwyD@eWED7-|J}wSNLJJRupsO>bzK{@i*b5a!)^oO5i!V@d8kq25P8(m{>iai$mG$j zuu=<)d!R3(y&um;fS9pdS_)W(ektUZP09YN#a9Z8F5E5En9bdYxt7-J6}cU}iQ0&2 ziCL>h6b*P5!@owAPRd-G_y6Sii?psp|4L*pujMx6Qj19MLmm$x(=U(p^BRR;S#v_N zP+dorsM?o%yCi!FlP{}^tnQepHMkP1Q|tTrT2A#iQTzYR+k}q*>IMCAaj3F%8Sk`JrW zf1MHWsiy&ZM?OCTxVUGv4DpeO(Q6x=^$uaYv1XSO55$4~|MeX>>76C9X}WdcRpcdZ z)NGPmyK0;av$%G1`BvO-jM7oB6|@<%wx4`>vwcdHCuX9TpdsL&0AYieg^85`8gB`D zt}GdE5h~3-)p^8H#2ba6CEp}(n)Iwj8{|pebVCQG2();@2dbqO2n5{cQ{FJEF1?j#x)=Q7irVsB)Jg}4Vol)h-G=@P3+B}U|4;DG zRacc)ro@#3ACnJ$X*C2fWzvh_g}wCZT1!)W3+)DP18=G=Z`wurVvsBWjj^u0w(7a^ z3uVw>L}XaEtA4j7{2t{XK4D)b0v4W0WT3e56A9@7{q*76&_nb%VTve0ZHolpG@TZ5 zt*oZiQF4kTiiz}2Z2>Z%GHB8Xi=>ypjL>teP8zwSC<}S&@2maAJh*&3=eTvS(>vIl z!Oh35KHE`;$vCn6YEHGkbFj5@ID-c*ic-i^CxBFC*CB&Is^bL`8g0G?b^Pnqp1$sZ zde5Cacs?*OaXvKhc9qQE%i%>Y$-Kb7n432ppU022qu(-~GuS+fPgt(zbPlKU{=xp) z++j+6ga_XUhW2^$c|hm0HOjn0aUO8Z;bWne&DN2&gUzm`{HWb+_qj|lU$zgsW$tRv z;Qp@8bUtx=)yOQK8c6WCekt=FPX<2~8m(w>+ugS3^X}&jM;38^`;l}WSaMYwTL3?+ zPu|DJte3j`y5M}Ed3;5O(&O4c*pR`0bj;@J8GtlYI&toZ5_&v%u4SZape^fn8-KgV ze$dl?NcqLw5p$3G5+lrvC$eA^2Cm9M`g zkB6F;ab)8f)A4*wsA3vsq<_FL2d!@(KH4w;< z`BO(_{#i*j&wN{Tc;nR-?ekTCUvB#2y*#is_->67D4lq>e~-8I>GKsQxBTH5o88@F z-@N7ID*NLyf8@g@V#)wrH@;%OAK{DX+Vo75=3dss*`rG6!Qk2Unt`r^bFvjhX?vx+ zuhT7zcbt;>rzJ~x&G5Ve9x_jy?RL)P83Hqhi(Si@F;G1ITC&X-tn-d}J>Czz9^Way zb3YIV`q6ZI(I_s|gY{9WSM;hf$G#|~I6;Hp`C~&)Pu$ES%eExMDGBj!){Q92Zburwv@sxIkRvUA%xCp0N~66O%AIKm z370&PF4YDE(*nh}AdW>M=kydq@svo@DTUJL`}9MaO&K(wvS<-4qm{IZ@@XxZsgyR+ z6Z9liQ4Kvsd&ow1>Lv#bk(Un95&AhjPbcU%bcW8-Il4d>>Cf~DeL-Kbi|hlquMX5f)E3m`+#vHllK~mvFj*mx`CS}KAcQe8 zA21mZrBZPZ1W=DugN+d+k<(-qk4U-pGhp+@Fn^NX}L zb`0%vm}G9x;#QNPLPa@*v0UCV)ZqoWzrO=!Jne@OgRr|6))xq`4s{H*I!(sN2@}{m zR%3+&)|K2Cl6>AH*nsv8Jj3Sg9_VtrALj22w&4hPwfQi1=##XBTT+_+)c(XaK$qkgk-q2_xEoB!pI)=CutI@HvKuXr=xNCkgPTA7^ znmnFNQk_O8P>$59(bFhaI-${tG*3FE(Miz%7mYSS{}&oPo#yFo)97SctIN~qTWGGX zSEExXUw4AmP(AIUW@?}vw4JKSf_2KFY+6W5LFHnu>S-$uCK;MY4e(+&o&~TU;ff|P-##lSKO^e^ zdn}es)3gh#A~tbzr;}veUTtCUbj|wG4Y)@cC1Ve)r1dx#_E0ZARbN)|#0>NnMu_@v zRH1`d3=?w!9&aTPnZ)Ao)}r$4vL+)IFWz7TFZE8!rb(|wc%3{cOVVNe1TUVjf%S__ z6*!{XH5tNDb4BnEP0A#74+_2#73NUIdP#^imJ&sr!h6>B=pCwdVmcACiWQAIis=z& zBuYG(k;R}DF$yl0Va`N!D#uwoToi9+C@ewDuZT$H5?PWKgXlA{=^BR&XUPoTB&r9n pi2q+A0ZJ4jcGE}iyq~ISD3eCNw>_z->*Q_7+mA0SY??YqO`R@rvhW9rRy8KicAJ z^RIqLE+Y9U)}2J)Rrt?B$?*kyPTahCb_-UBzC+j|_{L);Gc3{~z(gyi;sj{SOiA$Q ztLsNFSX3$|>IdI?Q zjSWn756tGuCBLe=WabJuHQENwC2(r;%n6NM(N<0V=ic!6@T4#Nv|PFoUs<`ayz-ky zr~GiYtbE%k%VYV{{mpCJ{`;0QyK=Ey=M9Qi{e9DO$y8d6ntWCFu*1cN$;{+cfVjq<8S3%;6w)DR#|Vr-CU+=t3MW7LM$s$wWYwPXUh|x)wgt1~?U&*T zgo0Tq3(-JKRnPa0LU}05ZoeJYmoyt7q{geCKpbCIkOMO%Q3|EeX3C%~l#O$cL)&Q= z70^CB5c7#<%)UiznB4LY2%ZEcLPWnZ9Vyk#upo zKZ0p!q90bmy_YrhYG|K)y??qp%LP_tMoJCkOyJUTAzr@Z=j^$`aPdk3rqLsaOUfJ~QzsO|byG|cP-M`Z3 z#q!mvRjb)&3IaFbhG|Xdp=#v^xOKR}rq@1u8#Us`;HxtGv^%Xc8LVW&b)4WEs*Ebf zL3}}<#dpaivOzUlO%}67QTXO^MObSkWuKA^%|f=QV{UUYR=$OEVyv<_fjFC66}?aPEsS_ z?b@mz+y`k7egW;5Po6cNe5wa`6V`T6{s!4PaIpmsbe+?*Re-ZuvsR52A0X}>(B6o= zHNuzk;AE-2&{d$-qC?PGMy04l3?)3PqY8Ys9@eoNoQ-q}8d#5ClPH5^DV0+lR$5WV z&S*Y3H(2m$esCPkbOBN8*7GqJpcWoNbRIejdG_`c=5}=6v3%N(UWjo&_zEA}ze;Ef z(2LO40Kd+|&JiOcFM*cG4QGpYtrcFhVJ?S#9jjd9dGyYFp48*WKMwE4T-G3#CU|-h zahyY>kM{LpiPHaCGQnA@ouhhW?a|gA@IHW?8?xfmZp``|JdW1&`F%K->n$d7|G!yF zXnEL@UU^YKS8wp!?{k_!jac8(wHmCy{<2ZO1)<0nCpdsH<*r`mCFSDmDrFUwwUl9o9}F6E2wQ}IvY{5Xie` z6SqX93p|)L3>NYKp&p<@NqmYv{@@n=YXrScng7!1tnS>uIOHOe)sJQ1Zt~H``+C9 z&N=rx=bm$a&b`l;pKl|pAPON`n3a|Kbl2g~US9cJFeGLBLy!-|E zuTFjs_O0lR{#LlFuwrUid@a%VKJa%Gl@{)xT5=Lua=@o=M*EwyW|jf}DfnY0#f6(< z!t;R-YXYBE0zp`TG6?=v@bM+3_G-&>gucUm3_h~7uzClXazTnnROYh6(&A%av=L=X{Y`;%n-vZR$_tA-ksKaqKXVy6h_C5RkgQM8aZ?w?fzdNl9;eYiD`y zEj)DEKRkRoF#KAv%5Ti$oM%*C?7N3;YX+0}iF&l#FQst=Jk`|}&n~Mr&5@uv+uUul7@v6dSSNq9>_R@fT~4>#s$KB2=5n{WAK$0*69>y{ zrgGTD9=EQ0!Sktx#x^HRx*&q`t-qSKira$9)8aKWx}8CG;+m#o&>i%j+VP^wgM}R} zJxjRPf6y_Te^lOAdvFT>!>RlD>VrwQ=d2CH9?Da>doI`Z!bpRswY_O?M@vWJzT3F5 ztIgfo@p1+Sl!yEicQ$6TV{aP!SN!gS_upOmMj)l{J8#3GYE9E>9#wgNy~>Z>&8>}4 z>a2IVoXuq|9SwDv++)32Yp7q!S_1oTI&ktgf9O8m+1%UG?sB?%>t=9gqo%n#TbwRO zhjrpdcfTI^wlkFEbKspSUwdnZ%NpyC^47Y6IlO?M+o)+SpN;)7HTFhW z=)MEsmvoppaPg5fXq5_)-iAYlLS7E<@Jf>dSPhegJ&#v-9G!ufh4=FlTHw~9Q~O?Y zc$z!?GgSWWQI-FicPA&k76=D+)faQ?ley_=B0pRG$NSiyJ@ooE&7VK~ddIH5+C!&{ zp5O5MBQ*^@dm7enc>dmo2UTA2=lOiR>Kvd;F3oN6wYeQ#6^Xp&NVVZ!^6;snTHyYn zQ}x?AoA*yo!EDvNh{5WSoj1Oq@`rizd0YR?l^n1QpK5i_;29E=z;fdWVfN>KzHdT} zcc`rIcwcYdJAJ+07kus(Alf=mwf3RXJSh9iM=7Ul)n%@Iqm=joj2leKbHv===0E{g8e^r|B&^ zL+{Z0^bvhR7idV32oVwD262;^ERsbw9Ccg2r6L8m+dNKJ+f+8Yt)VWbN96=oc?!dK ztxbl5(v4D&A_o-PLX)Fghq4!CA&1J{fXZVvVrCzn<3zA6+iipsO)CX=Wzl{>AW zhjn4M_2!~1c3`_{^iry)#pWA{FnbvirF%T%XwE*wgceobdj{7fXU zV1CW{+3x<*bv*p@HP8tO#MbofO6Q^}-1|yEEpl`(=L2OAAP_S;tUZ`6SEGKaU`6KM zd~fT9==6V*$@HNVpYhsG2EQj3k1QWChm@Oew&BE3q!i~=9px%^nr%8s(b9%#|Ci6; zAb%3rd};72)>Ep$sjh^WO`##7iXu-WdEQ-q7A(rN z;fTwmRm#~f&&!^KO*Js$tTF(gs(U3p!wHI&XwogjV09*fH{&Z$J6ISQ0k3~YULJXJ zOh1!Efz%2KNBdfoAT6+h*BZ2fRo-LJCamVe1|2d66N=S+(U6-dMXV0e2*)fO1}!L3 zcnn%0i|`t>339`x2*Isr(2$2xjQFWRn<-7aY0zQBip8KUG)tLa(BW776ig|~d_x{V zR;A3KBPms>HRy3aBL5=TS1=D*a8O!poQ> zDgwF`ZMPt|jMXgwO7>6)TibPOSwNQQz2%~%9F#1(VZ9jhRt#Tu0x7j_gRK<2chKFi zxd=rs z3Evc&3oE6txDEQ!+s*h^qsS3UqB~L2P~Qn$+L-9SnSVL3ScME+jM3Z*pGzs*n2}YG zjn0jnEjelx@S+mm#pplC;gjxIg-mYM;Q0i5)qUt+l>>ON=)v@z??OcxSadhtgx86prT-#GH10#Ws zoRXV;_Ck9Z@}fLj2xou}C1qQ21*DZ*A1TI}5!8~1O%kO)@_r++3Ndno zp!L}Kl8d5A;FOUwWRdN4Qdiag=>b=hbl?qDvuOlZd28(!G4aLa|{}i|=?Z^lenpA18 zD3?ri$rd|4=o|I_>;Lm|@4_O+8P@etL|pRpjVGmQONm{;rG?A$SK=%bGy!utkCtO^ z@4_GY06nY6Kq8dnzqc%(qe#mn!h{?L@VHqRv5IiqJak@MG-M%Z$d$LC~~e8#A=}^8K?AK zG_RhbTPIBG zq7jFT0gteX@dk%oDkcbA==C=AC}MO!WvpRxCB6IWv$48PfpU1_mblu4zbDPkpbRLC It~1H~3zjPsy#N3J literal 0 HcmV?d00001 diff --git a/test/subset/data/fonts/AdobeVFPrototype.otf b/test/subset/data/fonts/AdobeVFPrototype.otf new file mode 100644 index 0000000000000000000000000000000000000000..2f1b173910401482395148c8670f07da86644daa GIT binary patch literal 120400 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