[trak] Fix, and hook up Works beautifully! Test coming.
diff --git a/src/hb-aat-layout.cc b/src/hb-aat-layout.cc index 73ab06d..2b86ba8 100644 --- a/src/hb-aat-layout.cc +++ b/src/hb-aat-layout.cc
@@ -37,7 +37,7 @@ #include "hb-aat-ltag-table.hh" // Just so we compile it; unused otherwise. /* - * morx/kerx/trak/ankr + * morx/kerx/trak */ static inline const AAT::morx& @@ -82,6 +82,12 @@ *blob = hb_ot_face_data (face)->ankr.get_blob (); return ankr; } +static inline const AAT::trak& +_get_trak (hb_face_t *face) +{ + if (unlikely (!hb_ot_shaper_face_data_ensure (face))) return Null(AAT::trak); + return *(hb_ot_face_data (face)->trak.get ()); +} hb_bool_t @@ -124,3 +130,20 @@ ankr, ankr_blob->data + ankr_blob->length); kerx.apply (&c); } + +hb_bool_t +hb_aat_layout_has_tracking (hb_face_t *face) +{ + return _get_trak (face).has_data (); +} + +void +hb_aat_layout_track (hb_ot_shape_plan_t *plan, + hb_font_t *font, + hb_buffer_t *buffer) +{ + const AAT::trak& trak = _get_trak (font->face); + + AAT::hb_aat_apply_context_t c (plan, font, buffer); + trak.apply (&c); +}