提交 a1f7b285 编写于 作者: B Behdad Esfahbod

[otlayout] Switch over from old is_a_ligature() to IS_LIGATED

Impact should be minimal and positive.
上级 09675a81
...@@ -409,7 +409,7 @@ struct hb_apply_context_t ...@@ -409,7 +409,7 @@ struct hb_apply_context_t
if (unlikely (_hb_glyph_info_is_default_ignorable (&info) && if (unlikely (_hb_glyph_info_is_default_ignorable (&info) &&
(ignore_zwnj || !_hb_glyph_info_is_zwnj (&info)) && (ignore_zwnj || !_hb_glyph_info_is_zwnj (&info)) &&
(ignore_zwj || !_hb_glyph_info_is_zwj (&info)) && (ignore_zwj || !_hb_glyph_info_is_zwj (&info)) &&
!_hb_glyph_info_is_ligated (&info))) !_hb_glyph_info_ligated (&info)))
return SKIP_MAYBE; return SKIP_MAYBE;
return SKIP_NO; return SKIP_NO;
......
...@@ -306,7 +306,7 @@ _hb_glyph_info_get_lig_id (const hb_glyph_info_t *info) ...@@ -306,7 +306,7 @@ _hb_glyph_info_get_lig_id (const hb_glyph_info_t *info)
} }
static inline bool static inline bool
_hb_glyph_info_is_ligated (const hb_glyph_info_t *info) _hb_glyph_info_ligated_internal (const hb_glyph_info_t *info)
{ {
return !!(info->lig_props() & IS_LIG_BASE); return !!(info->lig_props() & IS_LIG_BASE);
} }
...@@ -314,7 +314,7 @@ _hb_glyph_info_is_ligated (const hb_glyph_info_t *info) ...@@ -314,7 +314,7 @@ _hb_glyph_info_is_ligated (const hb_glyph_info_t *info)
static inline unsigned int static inline unsigned int
_hb_glyph_info_get_lig_comp (const hb_glyph_info_t *info) _hb_glyph_info_get_lig_comp (const hb_glyph_info_t *info)
{ {
if (_hb_glyph_info_is_ligated (info)) if (_hb_glyph_info_ligated_internal (info))
return 0; return 0;
else else
return info->lig_props() & 0x0F; return info->lig_props() & 0x0F;
...@@ -324,7 +324,7 @@ static inline unsigned int ...@@ -324,7 +324,7 @@ static inline unsigned int
_hb_glyph_info_get_lig_num_comps (const hb_glyph_info_t *info) _hb_glyph_info_get_lig_num_comps (const hb_glyph_info_t *info)
{ {
if ((info->glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE) && if ((info->glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_LIGATURE) &&
_hb_glyph_info_is_ligated (info)) _hb_glyph_info_ligated_internal (info))
return info->lig_props() & 0x0F; return info->lig_props() & 0x0F;
else else
return 1; return 1;
...@@ -370,6 +370,12 @@ _hb_glyph_info_is_mark (const hb_glyph_info_t *info) ...@@ -370,6 +370,12 @@ _hb_glyph_info_is_mark (const hb_glyph_info_t *info)
return !!(info->glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_MARK); return !!(info->glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_MARK);
} }
static inline bool
_hb_glyph_info_ligated (const hb_glyph_info_t *info)
{
return !!(info->glyph_props() & HB_OT_LAYOUT_GLYPH_PROPS_LIGATED);
}
/* Allocation / deallocation. */ /* Allocation / deallocation. */
inline void inline void
......
...@@ -141,7 +141,7 @@ static inline bool ...@@ -141,7 +141,7 @@ static inline bool
is_one_of (const hb_glyph_info_t &info, unsigned int flags) is_one_of (const hb_glyph_info_t &info, unsigned int flags)
{ {
/* If it ligated, all bets are off. */ /* If it ligated, all bets are off. */
if (_hb_glyph_info_is_ligated (&info)) return false; if (_hb_glyph_info_ligated (&info)) return false;
return !!(FLAG (info.indic_category()) & flags); return !!(FLAG (info.indic_category()) & flags);
} }
...@@ -1406,7 +1406,7 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan, ...@@ -1406,7 +1406,7 @@ final_reordering_syllable (const hb_ot_shape_plan_t *plan,
if (start + 1 < end && if (start + 1 < end &&
info[start].indic_position() == POS_RA_TO_BECOME_REPH && info[start].indic_position() == POS_RA_TO_BECOME_REPH &&
((info[start].indic_category() == OT_Repha) ^ ((info[start].indic_category() == OT_Repha) ^
_hb_glyph_info_is_ligated (&info[start]))) _hb_glyph_info_ligated (&info[start])))
{ {
unsigned int new_reph_pos; unsigned int new_reph_pos;
reph_position_t reph_pos = indic_plan->config->reph_pos; reph_position_t reph_pos = indic_plan->config->reph_pos;
......
...@@ -151,7 +151,7 @@ static inline bool ...@@ -151,7 +151,7 @@ static inline bool
is_one_of (const hb_glyph_info_t &info, unsigned int flags) is_one_of (const hb_glyph_info_t &info, unsigned int flags)
{ {
/* If it ligated, all bets are off. */ /* If it ligated, all bets are off. */
if (_hb_glyph_info_is_ligated (&info)) return false; if (_hb_glyph_info_ligated (&info)) return false;
return !!(FLAG (info.myanmar_category()) & flags); return !!(FLAG (info.myanmar_category()) & flags);
} }
......
...@@ -548,7 +548,7 @@ hb_ot_hide_default_ignorables (hb_ot_shape_context_t *c) ...@@ -548,7 +548,7 @@ hb_ot_hide_default_ignorables (hb_ot_shape_context_t *c)
unsigned int j = 0; unsigned int j = 0;
for (unsigned int i = 0; i < count; i++) for (unsigned int i = 0; i < count; i++)
{ {
if (unlikely (!_hb_glyph_info_is_ligated (&info[i]) && if (unlikely (!_hb_glyph_info_ligated (&info[i]) &&
_hb_glyph_info_is_default_ignorable (&info[i]))) _hb_glyph_info_is_default_ignorable (&info[i])))
{ {
if (space_status == SPACE_DONT_KNOW) if (space_status == SPACE_DONT_KNOW)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册