Run morx if run is horizontal or GSUB doesn't exist

This commit is contained in:
Ebrahim Byagowi 2020-01-24 22:19:03 +03:30
parent 5897697250
commit f9070cfef8
1 changed files with 11 additions and 2 deletions

View File

@ -48,6 +48,16 @@
#include "hb-aat-layout.hh" #include "hb-aat-layout.hh"
#ifndef HB_NO_AAT_SHAPE
static inline bool
_hb_apply_morx (hb_face_t *face, const hb_segment_properties_t *props)
{
/* https://github.com/harfbuzz/harfbuzz/issues/2124 */
return hb_aat_layout_has_substitution (face) &&
(HB_DIRECTION_IS_HORIZONTAL (props->direction) || !hb_ot_layout_has_substitution (face));
}
#endif
/** /**
* SECTION:hb-ot-shape * SECTION:hb-ot-shape
* @title: hb-ot-shape * @title: hb-ot-shape
@ -70,8 +80,7 @@ hb_ot_shape_planner_t::hb_ot_shape_planner_t (hb_face_t *fac
map (face, props), map (face, props),
aat_map (face, props) aat_map (face, props)
#ifndef HB_NO_AAT_SHAPE #ifndef HB_NO_AAT_SHAPE
/* https://github.com/harfbuzz/harfbuzz/issues/2124 */ , apply_morx (_hb_apply_morx (face, props))
, apply_morx (HB_DIRECTION_IS_HORIZONTAL(props->direction) && hb_aat_layout_has_substitution (face))
#endif #endif
{ {
shaper = hb_ot_shape_complex_categorize (this); shaper = hb_ot_shape_complex_categorize (this);