| 1 | #ifndef OT_LAYOUT_GPOS_COMMON_HH |
| 2 | #define OT_LAYOUT_GPOS_COMMON_HH |
| 3 | |
| 4 | namespace OT { |
| 5 | namespace Layout { |
| 6 | namespace GPOS_impl { |
| 7 | |
| 8 | enum attach_type_t { |
| 9 | ATTACH_TYPE_NONE = 0X00, |
| 10 | |
| 11 | /* Each attachment should be either a mark or a cursive; can't be both. */ |
| 12 | ATTACH_TYPE_MARK = 0X01, |
| 13 | ATTACH_TYPE_CURSIVE = 0X02, |
| 14 | }; |
| 15 | |
| 16 | /* buffer **position** var allocations */ |
| 17 | #define attach_chain() var.i16[0] /* glyph to which this attaches to, relative to current glyphs; negative for going back, positive for forward. */ |
| 18 | #define attach_type() var.u8[2] /* attachment type */ |
| 19 | /* Note! if attach_chain() is zero, the value of attach_type() is irrelevant. */ |
| 20 | |
| 21 | template<typename Iterator, typename SrcLookup> |
| 22 | static void SinglePos_serialize (hb_serialize_context_t *c, |
| 23 | const SrcLookup *src, |
| 24 | Iterator it, |
| 25 | const hb_hashmap_t<unsigned, hb_pair_t<unsigned, int>> *layout_variation_idx_delta_map, |
| 26 | bool all_axes_pinned); |
| 27 | |
| 28 | |
| 29 | } |
| 30 | } |
| 31 | } |
| 32 | |
| 33 | #endif // OT_LAYOUT_GPOS_COMMON_HH |
| 34 | |