|
|
|
@ -516,39 +516,39 @@ struct hb_apply_context_t |
|
|
|
|
inline bool |
|
|
|
|
match_properties_mark (hb_codepoint_t glyph, |
|
|
|
|
unsigned int glyph_props, |
|
|
|
|
unsigned int lookup_props) const |
|
|
|
|
unsigned int match_props) const |
|
|
|
|
{ |
|
|
|
|
/* If using mark filtering sets, the high short of
|
|
|
|
|
* lookup_props has the set index. |
|
|
|
|
* match_props has the set index. |
|
|
|
|
*/ |
|
|
|
|
if (lookup_props & LookupFlag::UseMarkFilteringSet) |
|
|
|
|
return gdef.mark_set_covers (lookup_props >> 16, glyph); |
|
|
|
|
if (match_props & LookupFlag::UseMarkFilteringSet) |
|
|
|
|
return gdef.mark_set_covers (match_props >> 16, glyph); |
|
|
|
|
|
|
|
|
|
/* The second byte of lookup_props has the meaning
|
|
|
|
|
/* The second byte of match_props has the meaning
|
|
|
|
|
* "ignore marks of attachment type different than |
|
|
|
|
* the attachment type specified." |
|
|
|
|
*/ |
|
|
|
|
if (lookup_props & LookupFlag::MarkAttachmentType) |
|
|
|
|
return (lookup_props & LookupFlag::MarkAttachmentType) == (glyph_props & LookupFlag::MarkAttachmentType); |
|
|
|
|
if (match_props & LookupFlag::MarkAttachmentType) |
|
|
|
|
return (match_props & LookupFlag::MarkAttachmentType) == (glyph_props & LookupFlag::MarkAttachmentType); |
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
inline bool |
|
|
|
|
check_glyph_property (const hb_glyph_info_t *info, |
|
|
|
|
unsigned int lookup_props) const |
|
|
|
|
unsigned int match_props) const |
|
|
|
|
{ |
|
|
|
|
hb_codepoint_t glyph = info->codepoint; |
|
|
|
|
unsigned int glyph_props = _hb_glyph_info_get_glyph_props (info); |
|
|
|
|
|
|
|
|
|
/* Not covered, if, for example, glyph class is ligature and
|
|
|
|
|
* lookup_props includes LookupFlags::IgnoreLigatures |
|
|
|
|
* match_props includes LookupFlags::IgnoreLigatures |
|
|
|
|
*/ |
|
|
|
|
if (glyph_props & lookup_props & LookupFlag::IgnoreFlags) |
|
|
|
|
if (glyph_props & match_props & LookupFlag::IgnoreFlags) |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
if (unlikely (glyph_props & HB_OT_LAYOUT_GLYPH_PROPS_MARK)) |
|
|
|
|
return match_properties_mark (glyph, glyph_props, lookup_props); |
|
|
|
|
return match_properties_mark (glyph, glyph_props, match_props); |
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|