1 #ifndef OT_LAYOUT_GPOS_MARKRECORD_HH 2 #define OT_LAYOUT_GPOS_MARKRECORD_HH 3 4 namespace OT { 5 namespace Layout { 6 namespace GPOS_impl { 7 8 struct MarkRecord 9 { 10 friend struct MarkArray; 11 12 public: 13 HBUINT16 klass; /* Class defined for this mark */ 14 Offset16To<Anchor> 15 markAnchor; /* Offset to Anchor table--from 16 * beginning of MarkArray table */ 17 public: 18 DEFINE_SIZE_STATIC (4); 19 get_classOT::Layout::GPOS_impl::MarkRecord20 unsigned get_class () const { return (unsigned) klass; } sanitizeOT::Layout::GPOS_impl::MarkRecord21 bool sanitize (hb_sanitize_context_t *c, const void *base) const 22 { 23 TRACE_SANITIZE (this); 24 return_trace (c->check_struct (this) && markAnchor.sanitize (c, base)); 25 } 26 subsetOT::Layout::GPOS_impl::MarkRecord27 bool subset (hb_subset_context_t *c, 28 const void *src_base, 29 const hb_map_t *klass_mapping) const 30 { 31 TRACE_SUBSET (this); 32 auto *out = c->serializer->embed (this); 33 if (unlikely (!out)) return_trace (false); 34 35 out->klass = klass_mapping->get (klass); 36 return_trace (out->markAnchor.serialize_subset (c, markAnchor, src_base)); 37 } 38 collect_variation_indicesOT::Layout::GPOS_impl::MarkRecord39 void collect_variation_indices (hb_collect_variation_indices_context_t *c, 40 const void *src_base) const 41 { 42 (src_base+markAnchor).collect_variation_indices (c); 43 } 44 }; 45 46 47 } 48 } 49 } 50 51 #endif /* OT_LAYOUT_GPOS_MARKRECORD_HH */ 52