[mort] Make it compile / hook it up Untested.
diff --git a/src/hb-aat-layout.cc b/src/hb-aat-layout.cc index 59157c2..2b4f578 100644 --- a/src/hb-aat-layout.cc +++ b/src/hb-aat-layout.cc
@@ -133,20 +133,20 @@ * mort/morx/kerx/trak */ -// static inline const AAT::mort& -// _get_mort (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::mort); -// } -// const AAT::morx& mort = *(hb_ot_face_data (face)->mort.get ()); -// if (blob) -// *blob = hb_ot_face_data (face)->mort.get_blob (); -// return mort; -// } +static inline const AAT::mort& +_get_mort (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::mort); + } + const AAT::mort& mort = *(hb_ot_face_data (face)->mort.get ()); + if (blob) + *blob = hb_ot_face_data (face)->mort.get_blob (); + return mort; +} static inline const AAT::morx& _get_morx (hb_face_t *face, hb_blob_t **blob = nullptr) { @@ -214,7 +214,8 @@ hb_bool_t hb_aat_layout_has_substitution (hb_face_t *face) { - return _get_morx (face).has_data (); + return _get_morx (face).has_data () || + _get_mort (face).has_data (); } void @@ -223,10 +224,22 @@ hb_buffer_t *buffer) { hb_blob_t *blob; - const AAT::morx& morx = _get_morx (font->face, &blob); - AAT::hb_aat_apply_context_t c (plan, font, buffer, blob); - morx.apply (&c); + const AAT::morx& morx = _get_morx (font->face, &blob); + if (morx.has_data ()) + { + AAT::hb_aat_apply_context_t c (plan, font, buffer, blob); + morx.apply (&c); + return; + } + + const AAT::mort& mort = _get_mort (font->face, &blob); + if (mort.has_data ()) + { + AAT::hb_aat_apply_context_t c (plan, font, buffer, blob); + mort.apply (&c); + return; + } }