< prev index next >

src/java.desktop/share/native/libfontmanager/harfbuzz/hb-ot-maxp-table.hh

Print this page

        

*** 25,36 **** */ #ifndef HB_OT_MAXP_TABLE_HH #define HB_OT_MAXP_TABLE_HH ! #include "hb-open-type-private.hh" ! #include "hb-subset-plan.hh" namespace OT { /* --- 25,35 ---- */ #ifndef HB_OT_MAXP_TABLE_HH #define HB_OT_MAXP_TABLE_HH ! #include "hb-open-type.hh" namespace OT { /*
*** 40,50 **** #define HB_OT_TAG_maxp HB_TAG('m','a','x','p') struct maxpV1Tail { ! inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); return_trace (c->check_struct (this)); } --- 39,49 ---- #define HB_OT_TAG_maxp HB_TAG('m','a','x','p') struct maxpV1Tail { ! bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); return_trace (c->check_struct (this)); }
*** 70,126 **** }; struct maxp { ! static const hb_tag_t tableTag = HB_OT_TAG_maxp; ! inline unsigned int get_num_glyphs (void) const ! { ! return numGlyphs; ! } ! inline void set_num_glyphs (unsigned int count) { numGlyphs.set (count); } ! inline bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); if (unlikely (!c->check_struct (this))) return_trace (false); if (version.major == 1) { const maxpV1Tail &v1 = StructAfter<maxpV1Tail> (*this); ! return v1.sanitize (c); } return_trace (likely (version.major == 0 && version.minor == 0x5000u)); } ! inline bool subset (hb_subset_plan_t *plan) const { ! hb_blob_t *maxp_blob = OT::Sanitizer<OT::maxp>().sanitize (hb_face_reference_table (plan->source, HB_OT_TAG_maxp)); hb_blob_t *maxp_prime_blob = hb_blob_copy_writable_or_fail (maxp_blob); hb_blob_destroy (maxp_blob); if (unlikely (!maxp_prime_blob)) { return false; } ! OT::maxp *maxp_prime = (OT::maxp *) hb_blob_get_data (maxp_prime_blob, nullptr); ! maxp_prime->set_num_glyphs (plan->glyphs.len); if (plan->drop_hints) drop_hint_fields (plan, maxp_prime); bool result = plan->add_table (HB_OT_TAG_maxp, maxp_prime_blob); hb_blob_destroy (maxp_prime_blob); return result; } ! static inline void drop_hint_fields (hb_subset_plan_t *plan, OT::maxp *maxp_prime) { if (maxp_prime->version.major == 1) { maxpV1Tail &v1 = StructAfter<maxpV1Tail> (*maxp_prime); v1.maxZones.set (1); --- 69,122 ---- }; struct maxp { ! static constexpr hb_tag_t tableTag = HB_OT_TAG_maxp; ! unsigned int get_num_glyphs () const { return numGlyphs; } ! void set_num_glyphs (unsigned int count) { numGlyphs.set (count); } ! bool sanitize (hb_sanitize_context_t *c) const { TRACE_SANITIZE (this); if (unlikely (!c->check_struct (this))) return_trace (false); if (version.major == 1) { const maxpV1Tail &v1 = StructAfter<maxpV1Tail> (*this); ! return_trace (v1.sanitize (c)); } return_trace (likely (version.major == 0 && version.minor == 0x5000u)); } ! bool subset (hb_subset_plan_t *plan) const { ! hb_blob_t *maxp_blob = hb_sanitize_context_t().reference_table<maxp> (plan->source); hb_blob_t *maxp_prime_blob = hb_blob_copy_writable_or_fail (maxp_blob); hb_blob_destroy (maxp_blob); if (unlikely (!maxp_prime_blob)) { return false; } ! maxp *maxp_prime = (maxp *) hb_blob_get_data (maxp_prime_blob, nullptr); ! maxp_prime->set_num_glyphs (plan->glyphs.length); if (plan->drop_hints) drop_hint_fields (plan, maxp_prime); bool result = plan->add_table (HB_OT_TAG_maxp, maxp_prime_blob); hb_blob_destroy (maxp_prime_blob); return result; } ! static void drop_hint_fields (hb_subset_plan_t *plan HB_UNUSED, maxp *maxp_prime) { if (maxp_prime->version.major == 1) { maxpV1Tail &v1 = StructAfter<maxpV1Tail> (*maxp_prime); v1.maxZones.set (1);
< prev index next >