[config] Add HB_NO_OT_KERN, enabled by HB_MINI / HB_NO_LEGACY
Part of https://github.com/harfbuzz/harfbuzz/issues/1652
This commit is contained in:
parent
2e3e929d2b
commit
588697afd0
|
@ -101,6 +101,7 @@
|
||||||
|
|
||||||
#ifdef HB_NO_LEGACY
|
#ifdef HB_NO_LEGACY
|
||||||
#define HB_NO_FALLBACK_SHAPE
|
#define HB_NO_FALLBACK_SHAPE
|
||||||
|
#define HB_NO_OT_KERN
|
||||||
#define HB_NO_OT_LAYOUT_BLACKLIST
|
#define HB_NO_OT_LAYOUT_BLACKLIST
|
||||||
#define HB_NO_OT_SHAPE_FALLBACK
|
#define HB_NO_OT_SHAPE_FALLBACK
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -50,7 +50,6 @@ HB_OT_TABLE (OT, head)
|
||||||
HB_OT_ACCELERATOR (OT, cmap)
|
HB_OT_ACCELERATOR (OT, cmap)
|
||||||
HB_OT_ACCELERATOR (OT, hmtx)
|
HB_OT_ACCELERATOR (OT, hmtx)
|
||||||
HB_OT_ACCELERATOR (OT, post)
|
HB_OT_ACCELERATOR (OT, post)
|
||||||
HB_OT_TABLE (OT, kern)
|
|
||||||
HB_OT_ACCELERATOR (OT, name)
|
HB_OT_ACCELERATOR (OT, name)
|
||||||
HB_OT_TABLE (OT, OS2)
|
HB_OT_TABLE (OT, OS2)
|
||||||
HB_OT_TABLE (OT, STAT)
|
HB_OT_TABLE (OT, STAT)
|
||||||
|
@ -73,6 +72,11 @@ HB_OT_TABLE (OT, fvar)
|
||||||
HB_OT_TABLE (OT, avar)
|
HB_OT_TABLE (OT, avar)
|
||||||
HB_OT_TABLE (OT, MVAR)
|
HB_OT_TABLE (OT, MVAR)
|
||||||
|
|
||||||
|
/* Legacy kern. */
|
||||||
|
#ifndef HB_NO_OT_KERN
|
||||||
|
HB_OT_TABLE (OT, kern)
|
||||||
|
#endif
|
||||||
|
|
||||||
/* OpenType shaping. */
|
/* OpenType shaping. */
|
||||||
HB_OT_ACCELERATOR (OT, GDEF)
|
HB_OT_ACCELERATOR (OT, GDEF)
|
||||||
HB_OT_ACCELERATOR (OT, GSUB)
|
HB_OT_ACCELERATOR (OT, GSUB)
|
||||||
|
|
|
@ -62,6 +62,7 @@
|
||||||
* kern
|
* kern
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifndef HB_NO_OT_KERN
|
||||||
/**
|
/**
|
||||||
* hb_ot_layout_has_kerning:
|
* hb_ot_layout_has_kerning:
|
||||||
* @face: The #hb_face_t to work on
|
* @face: The #hb_face_t to work on
|
||||||
|
@ -78,7 +79,6 @@ hb_ot_layout_has_kerning (hb_face_t *face)
|
||||||
return face->table.kern->has_data ();
|
return face->table.kern->has_data ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* hb_ot_layout_has_machine_kerning:
|
* hb_ot_layout_has_machine_kerning:
|
||||||
* @face: The #hb_face_t to work on
|
* @face: The #hb_face_t to work on
|
||||||
|
@ -95,7 +95,6 @@ hb_ot_layout_has_machine_kerning (hb_face_t *face)
|
||||||
return face->table.kern->has_state_machine ();
|
return face->table.kern->has_state_machine ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* hb_ot_layout_has_cross_kerning:
|
* hb_ot_layout_has_cross_kerning:
|
||||||
* @face: The #hb_face_t to work on
|
* @face: The #hb_face_t to work on
|
||||||
|
@ -128,6 +127,7 @@ hb_ot_layout_kern (const hb_ot_shape_plan_t *plan,
|
||||||
|
|
||||||
kern.apply (&c);
|
kern.apply (&c);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -157,18 +157,28 @@ hb_ot_shape_planner_t::compile (hb_ot_shape_plan_t &plan,
|
||||||
plan.apply_kerx = true;
|
plan.apply_kerx = true;
|
||||||
else
|
else
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef HB_NO_OT_KERN
|
||||||
if (hb_ot_layout_has_kerning (face))
|
if (hb_ot_layout_has_kerning (face))
|
||||||
plan.apply_kern = true;
|
plan.apply_kern = true;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
plan.zero_marks = script_zero_marks &&
|
plan.zero_marks = script_zero_marks &&
|
||||||
!plan.apply_kerx &&
|
!plan.apply_kerx &&
|
||||||
(!plan.apply_kern || !hb_ot_layout_has_machine_kerning (face));
|
(!plan.apply_kern
|
||||||
|
#ifndef HB_NO_OT_KERN
|
||||||
|
|| !hb_ot_layout_has_machine_kerning (face)
|
||||||
|
#endif
|
||||||
|
);
|
||||||
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.adjust_mark_positioning_when_zeroing = !plan.apply_gpos &&
|
plan.adjust_mark_positioning_when_zeroing = !plan.apply_gpos &&
|
||||||
!plan.apply_kerx &&
|
!plan.apply_kerx &&
|
||||||
(!plan.apply_kern || !hb_ot_layout_has_cross_kerning (face));
|
(!plan.apply_kern
|
||||||
|
#ifndef HB_NO_OT_KERN
|
||||||
|
|| !hb_ot_layout_has_cross_kerning (face)
|
||||||
|
#endif
|
||||||
|
);
|
||||||
|
|
||||||
plan.fallback_mark_positioning = plan.adjust_mark_positioning_when_zeroing &&
|
plan.fallback_mark_positioning = plan.adjust_mark_positioning_when_zeroing &&
|
||||||
script_fallback_mark_positioning;
|
script_fallback_mark_positioning;
|
||||||
|
@ -237,8 +247,10 @@ 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
|
||||||
else if (this->apply_kern)
|
else if (this->apply_kern)
|
||||||
hb_ot_layout_kern (this, font, buffer);
|
hb_ot_layout_kern (this, font, buffer);
|
||||||
|
#endif
|
||||||
else
|
else
|
||||||
_hb_ot_shape_fallback_kern (this, font, buffer);
|
_hb_ot_shape_fallback_kern (this, font, buffer);
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,11 @@ struct hb_ot_shape_plan_t
|
||||||
bool adjust_mark_positioning_when_zeroing : 1;
|
bool adjust_mark_positioning_when_zeroing : 1;
|
||||||
|
|
||||||
bool apply_gpos : 1;
|
bool apply_gpos : 1;
|
||||||
|
#ifndef HB_NO_OT_KERN
|
||||||
bool apply_kern : 1;
|
bool apply_kern : 1;
|
||||||
|
#else
|
||||||
|
static constexpr bool apply_kern = false;
|
||||||
|
#endif
|
||||||
#ifndef HB_NO_SHAPE_AAT
|
#ifndef HB_NO_SHAPE_AAT
|
||||||
bool apply_kerx : 1;
|
bool apply_kerx : 1;
|
||||||
bool apply_morx : 1;
|
bool apply_morx : 1;
|
||||||
|
|
Loading…
Reference in New Issue