parent
70416de298
commit
ce47613889
|
@ -225,7 +225,8 @@ struct hb_apply_context_t
|
||||||
|
|
||||||
inline bool should_mark_skip_current_glyph (void) const
|
inline bool should_mark_skip_current_glyph (void) const
|
||||||
{
|
{
|
||||||
return _hb_ot_layout_skip_mark (face, &buffer->cur(), lookup_props, NULL);
|
unsigned int property;
|
||||||
|
return _hb_ot_layout_skip_mark (face, &buffer->cur(), lookup_props, &property);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -107,9 +107,31 @@ _hb_ot_layout_get_glyph_property (hb_face_t *face,
|
||||||
return info->props_cache();
|
return info->props_cache();
|
||||||
}
|
}
|
||||||
|
|
||||||
static hb_bool_t
|
static inline hb_bool_t
|
||||||
|
_hb_ot_layout_match_properties_mark (hb_face_t *face,
|
||||||
|
hb_codepoint_t glyph,
|
||||||
|
unsigned int glyph_props,
|
||||||
|
unsigned int lookup_props)
|
||||||
|
{
|
||||||
|
/* If using mark filtering sets, the high short of
|
||||||
|
* lookup_props has the set index.
|
||||||
|
*/
|
||||||
|
if (lookup_props & LookupFlag::UseMarkFilteringSet)
|
||||||
|
return _get_gdef (face).mark_set_covers (lookup_props >> 16, glyph);
|
||||||
|
|
||||||
|
/* The second byte of lookup_props has the meaning
|
||||||
|
* "ignore marks of attachment type different than
|
||||||
|
* the attachment type specified."
|
||||||
|
*/
|
||||||
|
if (lookup_props & LookupFlag::MarkAttachmentType && glyph_props & LookupFlag::MarkAttachmentType)
|
||||||
|
return (lookup_props & LookupFlag::MarkAttachmentType) == (glyph_props & LookupFlag::MarkAttachmentType);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline hb_bool_t
|
||||||
_hb_ot_layout_match_properties (hb_face_t *face,
|
_hb_ot_layout_match_properties (hb_face_t *face,
|
||||||
hb_codepoint_t codepoint,
|
hb_codepoint_t glyph,
|
||||||
unsigned int glyph_props,
|
unsigned int glyph_props,
|
||||||
unsigned int lookup_props)
|
unsigned int lookup_props)
|
||||||
{
|
{
|
||||||
|
@ -119,21 +141,8 @@ _hb_ot_layout_match_properties (hb_face_t *face,
|
||||||
if (glyph_props & lookup_props & LookupFlag::IgnoreFlags)
|
if (glyph_props & lookup_props & LookupFlag::IgnoreFlags)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (glyph_props & HB_OT_LAYOUT_GLYPH_CLASS_MARK)
|
if (unlikely (glyph_props & HB_OT_LAYOUT_GLYPH_CLASS_MARK))
|
||||||
{
|
return _hb_ot_layout_match_properties_mark (face, glyph, glyph_props, lookup_props);
|
||||||
/* If using mark filtering sets, the high short of
|
|
||||||
* lookup_props has the set index.
|
|
||||||
*/
|
|
||||||
if (lookup_props & LookupFlag::UseMarkFilteringSet)
|
|
||||||
return _get_gdef (face).mark_set_covers (lookup_props >> 16, codepoint);
|
|
||||||
|
|
||||||
/* The second byte of lookup_props has the meaning
|
|
||||||
* "ignore marks of attachment type different than
|
|
||||||
* the attachment type specified."
|
|
||||||
*/
|
|
||||||
if (lookup_props & LookupFlag::MarkAttachmentType && glyph_props & LookupFlag::MarkAttachmentType)
|
|
||||||
return (lookup_props & LookupFlag::MarkAttachmentType) == (glyph_props & LookupFlag::MarkAttachmentType);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -161,7 +170,8 @@ _hb_ot_layout_skip_mark (hb_face_t *face,
|
||||||
unsigned int property;
|
unsigned int property;
|
||||||
|
|
||||||
property = _hb_ot_layout_get_glyph_property (face, ginfo);
|
property = _hb_ot_layout_get_glyph_property (face, ginfo);
|
||||||
(void) (property_out && (*property_out = property));
|
if (property_out)
|
||||||
|
*property_out = property;
|
||||||
|
|
||||||
/* If it's a mark, skip it we don't accept it. */
|
/* If it's a mark, skip it we don't accept it. */
|
||||||
if (unlikely (property & HB_OT_LAYOUT_GLYPH_CLASS_MARK))
|
if (unlikely (property & HB_OT_LAYOUT_GLYPH_CLASS_MARK))
|
||||||
|
|
Loading…
Reference in New Issue