Apply morx if there's no GSUB!
This commit is contained in:
parent
3417037eb1
commit
14ff3cbe0f
|
@ -63,9 +63,14 @@ hb_ot_shape_planner_t::compile (hb_ot_shape_plan_t &plan,
|
||||||
plan.kerning_requested = !!plan.kern_mask;
|
plan.kerning_requested = !!plan.kern_mask;
|
||||||
plan.has_gpos_mark = !!plan.map.get_1_mask (HB_TAG ('m','a','r','k'));
|
plan.has_gpos_mark = !!plan.map.get_1_mask (HB_TAG ('m','a','r','k'));
|
||||||
|
|
||||||
|
plan.apply_morx = !hb_ot_layout_has_substitution (face) &&
|
||||||
|
hb_aat_layout_has_substitution (face);
|
||||||
|
|
||||||
bool disable_gpos = plan.shaper->gpos_tag &&
|
bool disable_gpos = plan.shaper->gpos_tag &&
|
||||||
plan.shaper->gpos_tag != plan.map.chosen_script[1];
|
plan.shaper->gpos_tag != plan.map.chosen_script[1];
|
||||||
plan.fallback_positioning = disable_gpos || !hb_ot_layout_has_positioning (face);
|
plan.apply_gpos = !disable_gpos && hb_ot_layout_has_positioning (face);
|
||||||
|
|
||||||
|
plan.fallback_positioning = !plan.apply_gpos;
|
||||||
plan.fallback_glyph_classes = !hb_ot_layout_has_glyph_classes (face);
|
plan.fallback_glyph_classes = !hb_ot_layout_has_glyph_classes (face);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -217,6 +222,12 @@ _hb_ot_shaper_shape_plan_data_create (hb_shape_plan_t *shape_plan,
|
||||||
|
|
||||||
hb_ot_shape_planner_t planner (shape_plan);
|
hb_ot_shape_planner_t planner (shape_plan);
|
||||||
|
|
||||||
|
/* Ugly that we have to do this here...
|
||||||
|
* If we are going to apply morx, choose default shaper. */
|
||||||
|
if (!hb_ot_layout_has_substitution (planner.face) &&
|
||||||
|
hb_aat_layout_has_substitution (planner.face))
|
||||||
|
planner.shaper = &_hb_ot_complex_shaper_default;
|
||||||
|
else
|
||||||
planner.shaper = hb_ot_shape_complex_categorize (&planner);
|
planner.shaper = hb_ot_shape_complex_categorize (&planner);
|
||||||
|
|
||||||
hb_ot_shape_collect_features (&planner, &shape_plan->props,
|
hb_ot_shape_collect_features (&planner, &shape_plan->props,
|
||||||
|
@ -661,10 +672,10 @@ hb_ot_substitute_complex (hb_ot_shape_context_t *c)
|
||||||
if (c->plan->fallback_glyph_classes)
|
if (c->plan->fallback_glyph_classes)
|
||||||
hb_synthesize_glyph_classes (c);
|
hb_synthesize_glyph_classes (c);
|
||||||
|
|
||||||
c->plan->substitute (c->font, buffer);
|
if (unlikely (c->plan->apply_morx))
|
||||||
|
|
||||||
if (0) /* XXX Call morx instead. */
|
|
||||||
hb_aat_layout_substitute (c->font, c->buffer);
|
hb_aat_layout_substitute (c->font, c->buffer);
|
||||||
|
else
|
||||||
|
c->plan->substitute (c->font, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void
|
static inline void
|
||||||
|
@ -784,7 +795,7 @@ hb_ot_position_complex (hb_ot_shape_context_t *c)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (likely (!c->plan->fallback_positioning))
|
if (c->plan->apply_gpos)
|
||||||
c->plan->position (c->font, c->buffer);
|
c->plan->position (c->font, c->buffer);
|
||||||
|
|
||||||
switch (c->plan->shaper->zero_width_marks)
|
switch (c->plan->shaper->zero_width_marks)
|
||||||
|
|
|
@ -49,6 +49,11 @@ struct hb_ot_shape_plan_t
|
||||||
bool fallback_positioning : 1;
|
bool fallback_positioning : 1;
|
||||||
bool fallback_glyph_classes : 1;
|
bool fallback_glyph_classes : 1;
|
||||||
|
|
||||||
|
bool apply_morx : 1;
|
||||||
|
|
||||||
|
bool apply_gpos : 1;
|
||||||
|
|
||||||
|
|
||||||
inline void collect_lookups (hb_tag_t table_tag, hb_set_t *lookups) const
|
inline void collect_lookups (hb_tag_t table_tag, hb_set_t *lookups) const
|
||||||
{
|
{
|
||||||
unsigned int table_index;
|
unsigned int table_index;
|
||||||
|
|
|
@ -1,38 +1,6 @@
|
||||||
# Non-Unicode cmap
|
# Non-Unicode cmap
|
||||||
tests/CMAP-3.tests
|
tests/CMAP-3.tests
|
||||||
|
|
||||||
# Not hooked up
|
|
||||||
tests/MORX-1.tests
|
|
||||||
tests/MORX-2.tests
|
|
||||||
tests/MORX-3.tests
|
|
||||||
tests/MORX-4.tests
|
|
||||||
tests/MORX-5.tests
|
|
||||||
tests/MORX-6.tests
|
|
||||||
tests/MORX-7.tests
|
|
||||||
tests/MORX-8.tests
|
|
||||||
tests/MORX-9.tests
|
|
||||||
tests/MORX-10.tests
|
|
||||||
tests/MORX-11.tests
|
|
||||||
tests/MORX-12.tests
|
|
||||||
tests/MORX-13.tests
|
|
||||||
tests/MORX-14.tests
|
|
||||||
tests/MORX-16.tests
|
|
||||||
tests/MORX-17.tests
|
|
||||||
tests/MORX-18.tests
|
|
||||||
tests/MORX-19.tests
|
|
||||||
tests/MORX-20.tests
|
|
||||||
tests/MORX-21.tests
|
|
||||||
tests/MORX-22.tests
|
|
||||||
tests/MORX-23.tests
|
|
||||||
tests/MORX-25.tests
|
|
||||||
tests/MORX-26.tests
|
|
||||||
tests/MORX-27.tests
|
|
||||||
tests/MORX-28.tests
|
|
||||||
tests/MORX-29.tests
|
|
||||||
tests/MORX-30.tests
|
|
||||||
tests/MORX-31.tests
|
|
||||||
tests/MORX-32.tests
|
|
||||||
|
|
||||||
# Rounding differences
|
# Rounding differences
|
||||||
tests/SHARAN-1.tests
|
tests/SHARAN-1.tests
|
||||||
tests/SHBALI-1.tests
|
tests/SHBALI-1.tests
|
||||||
|
|
|
@ -28,12 +28,6 @@ TESTS = \
|
||||||
tests/HVAR-2.tests \
|
tests/HVAR-2.tests \
|
||||||
tests/KERN-1.tests \
|
tests/KERN-1.tests \
|
||||||
tests/KERN-2.tests \
|
tests/KERN-2.tests \
|
||||||
tests/SHBALI-3.tests \
|
|
||||||
tests/SHKNDA-1.tests \
|
|
||||||
$(NULL)
|
|
||||||
|
|
||||||
DISBALED_TESTS = \
|
|
||||||
tests/CMAP-3.tests \
|
|
||||||
tests/MORX-10.tests \
|
tests/MORX-10.tests \
|
||||||
tests/MORX-11.tests \
|
tests/MORX-11.tests \
|
||||||
tests/MORX-12.tests \
|
tests/MORX-12.tests \
|
||||||
|
@ -56,7 +50,6 @@ DISBALED_TESTS = \
|
||||||
tests/MORX-2.tests \
|
tests/MORX-2.tests \
|
||||||
tests/MORX-30.tests \
|
tests/MORX-30.tests \
|
||||||
tests/MORX-31.tests \
|
tests/MORX-31.tests \
|
||||||
tests/MORX-32.tests \
|
|
||||||
tests/MORX-3.tests \
|
tests/MORX-3.tests \
|
||||||
tests/MORX-4.tests \
|
tests/MORX-4.tests \
|
||||||
tests/MORX-5.tests \
|
tests/MORX-5.tests \
|
||||||
|
@ -64,9 +57,16 @@ DISBALED_TESTS = \
|
||||||
tests/MORX-7.tests \
|
tests/MORX-7.tests \
|
||||||
tests/MORX-8.tests \
|
tests/MORX-8.tests \
|
||||||
tests/MORX-9.tests \
|
tests/MORX-9.tests \
|
||||||
|
tests/SHBALI-3.tests \
|
||||||
|
tests/SHKNDA-1.tests \
|
||||||
|
$(NULL)
|
||||||
|
|
||||||
|
DISBALED_TESTS = \
|
||||||
|
tests/CMAP-3.tests \
|
||||||
tests/SHARAN-1.tests \
|
tests/SHARAN-1.tests \
|
||||||
tests/SHBALI-1.tests \
|
tests/SHBALI-1.tests \
|
||||||
tests/SHBALI-2.tests \
|
tests/SHBALI-2.tests \
|
||||||
tests/SHKNDA-2.tests \
|
tests/SHKNDA-2.tests \
|
||||||
tests/SHKNDA-3.tests \
|
tests/SHKNDA-3.tests \
|
||||||
|
tests/MORX-32.tests \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
Loading…
Reference in New Issue