[ot-shape] Fix application of kern table if GPOS kern is missing
Was broken sometime after we implemented kerx and tweaking it. Fixes https://github.com/harfbuzz/harfbuzz/issues/3043
This commit is contained in:
parent
1060b04938
commit
79e8b30609
|
@ -151,7 +151,7 @@ hb_ot_shape_planner_t::compile (hb_ot_shape_plan_t &plan,
|
||||||
|
|
||||||
bool has_gsub = hb_ot_layout_has_substitution (face);
|
bool has_gsub = hb_ot_layout_has_substitution (face);
|
||||||
bool has_gpos = !disable_gpos && hb_ot_layout_has_positioning (face);
|
bool has_gpos = !disable_gpos && hb_ot_layout_has_positioning (face);
|
||||||
if (0)
|
if (false)
|
||||||
;
|
;
|
||||||
#ifndef HB_NO_AAT_SHAPE
|
#ifndef HB_NO_AAT_SHAPE
|
||||||
else if (hb_aat_layout_has_positioning (face) && !(has_gsub && has_gpos))
|
else if (hb_aat_layout_has_positioning (face) && !(has_gsub && has_gpos))
|
||||||
|
@ -174,6 +174,8 @@ hb_ot_shape_planner_t::compile (hb_ot_shape_plan_t &plan,
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
plan.apply_fallback_kern = !(plan.apply_gpos || plan.apply_kerx || plan.apply_kern);
|
||||||
|
|
||||||
plan.zero_marks = script_zero_marks &&
|
plan.zero_marks = script_zero_marks &&
|
||||||
!plan.apply_kerx &&
|
!plan.apply_kerx &&
|
||||||
(!plan.apply_kern
|
(!plan.apply_kern
|
||||||
|
@ -274,11 +276,12 @@ hb_ot_shape_plan_t::position (hb_font_t *font,
|
||||||
else if (this->apply_kerx)
|
else if (this->apply_kerx)
|
||||||
hb_aat_layout_position (this, font, buffer);
|
hb_aat_layout_position (this, font, buffer);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef HB_NO_OT_KERN
|
#ifndef HB_NO_OT_KERN
|
||||||
else if (this->apply_kern)
|
if (this->apply_kern)
|
||||||
hb_ot_layout_kern (this, font, buffer);
|
hb_ot_layout_kern (this, font, buffer);
|
||||||
#endif
|
#endif
|
||||||
else
|
else if (this->apply_fallback_kern)
|
||||||
_hb_ot_shape_fallback_kern (this, font, buffer);
|
_hb_ot_shape_fallback_kern (this, font, buffer);
|
||||||
|
|
||||||
#ifndef HB_NO_AAT_SHAPE
|
#ifndef HB_NO_AAT_SHAPE
|
||||||
|
|
|
@ -112,6 +112,7 @@ struct hb_ot_shape_plan_t
|
||||||
#else
|
#else
|
||||||
static constexpr bool apply_kern = false;
|
static constexpr bool apply_kern = false;
|
||||||
#endif
|
#endif
|
||||||
|
bool apply_fallback_kern : 1;
|
||||||
#ifndef HB_NO_AAT_SHAPE
|
#ifndef HB_NO_AAT_SHAPE
|
||||||
bool apply_kerx : 1;
|
bool apply_kerx : 1;
|
||||||
bool apply_morx : 1;
|
bool apply_morx : 1;
|
||||||
|
|
|
@ -53,6 +53,7 @@ TESTS = \
|
||||||
tests/tibetan-contractions-1.tests \
|
tests/tibetan-contractions-1.tests \
|
||||||
tests/tibetan-contractions-2.tests \
|
tests/tibetan-contractions-2.tests \
|
||||||
tests/tibetan-vowels.tests \
|
tests/tibetan-vowels.tests \
|
||||||
|
tests/tt-kern-gpos.tests \
|
||||||
tests/use-indic3.tests \
|
tests/use-indic3.tests \
|
||||||
tests/use-marchen.tests \
|
tests/use-marchen.tests \
|
||||||
tests/use-syllable.tests \
|
tests/use-syllable.tests \
|
||||||
|
|
Binary file not shown.
|
@ -53,6 +53,7 @@ in_house_tests = [
|
||||||
'tibetan-contractions-1.tests',
|
'tibetan-contractions-1.tests',
|
||||||
'tibetan-contractions-2.tests',
|
'tibetan-contractions-2.tests',
|
||||||
'tibetan-vowels.tests',
|
'tibetan-vowels.tests',
|
||||||
|
'tt-kern-gpos.tests',
|
||||||
'use-indic3.tests',
|
'use-indic3.tests',
|
||||||
'use-marchen.tests',
|
'use-marchen.tests',
|
||||||
'use-syllable.tests',
|
'use-syllable.tests',
|
||||||
|
|
|
@ -0,0 +1 @@
|
||||||
|
../fonts/b121d4306b2e3add5abbaad21d95fcf04aacbd64.ttf::U+0041,U+0043,U+0041,U+0042:[A=0+1275|C=1@-20,0+1272|A=2+1296|B=3+1327]
|
Loading…
Reference in New Issue