+hb_bool_t
+_hb_ot_layout_check_glyph_property (hb_face_t *face,
+ hb_glyph_info_t *ginfo,
+ unsigned int lookup_props,
+ unsigned int *property_out)
+{
+ unsigned int property;
+
+ property = _hb_ot_layout_get_glyph_property (face, ginfo);
+ (void) (property_out && (*property_out = property));
+
+ return _hb_ot_layout_match_properties (face, ginfo->codepoint, property, lookup_props);
+}
+
+hb_bool_t
+_hb_ot_layout_skip_mark (hb_face_t *face,
+ hb_glyph_info_t *ginfo,
+ unsigned int lookup_props,
+ unsigned int *property_out)
+{
+ unsigned int property;
+
+ property = _hb_ot_layout_get_glyph_property (face, ginfo);
+ (void) (property_out && (*property_out = property));
+
+ /* If it's a mark, skip it we don't accept it. */
+ if (unlikely (property & HB_OT_LAYOUT_GLYPH_CLASS_MARK))
+ return !_hb_ot_layout_match_properties (face, ginfo->codepoint, property, lookup_props);
+
+ /* If not a mark, don't skip. */
+ return false;
+}
+
+
+