[kerx] Hook up to shaper
diff --git a/src/hb-aat-layout.cc b/src/hb-aat-layout.cc
index 71932e7..3fd4f9f 100644
--- a/src/hb-aat-layout.cc
+++ b/src/hb-aat-layout.cc
@@ -54,6 +54,21 @@
*blob = hb_ot_face_data (face)->morx.get_blob ();
return morx;
}
+static inline const AAT::kerx&
+_get_kerx (hb_face_t *face, hb_blob_t **blob = nullptr)
+{
+ if (unlikely (!hb_ot_shaper_face_data_ensure (face)))
+ {
+ if (blob)
+ *blob = hb_blob_get_empty ();
+ return Null(AAT::kerx);
+ }
+ const AAT::kerx& kerx = *(hb_ot_face_data (face)->kerx.get ());
+ if (blob)
+ *blob = hb_ot_face_data (face)->kerx.get_blob ();
+ return kerx;
+}
+
hb_bool_t
hb_aat_layout_has_substitution (hb_face_t *face)
@@ -73,19 +88,21 @@
morx.apply (&c);
}
+
+hb_bool_t
+hb_aat_layout_has_positioning (hb_face_t *face)
+{
+ return _get_kerx (face).has_data ();
+}
+
void
hb_aat_layout_position (hb_ot_shape_plan_t *plan,
hb_font_t *font,
hb_buffer_t *buffer)
{
-#if 0
hb_blob_t *blob;
- const AAT::ankr& ankr = _get_ankr (font->face, &blob);
const AAT::kerx& kerx = _get_kerx (font->face, &blob);
- const AAT::trak& trak = _get_trak (font->face, &blob);
- AAT::hb_aat_apply_context_t c (font, buffer, blob);
- kerx.apply (&c, &ankr);
- trak.apply (&c);
-#endif
+ AAT::hb_aat_apply_context_t c (plan, font, buffer, blob);
+ kerx.apply (&c);
}