|
|
|
@ -1900,13 +1900,16 @@ struct ClassDefFormat2_4 |
|
|
|
|
|
|
|
|
|
bool intersects (const hb_set_t *glyphs) const |
|
|
|
|
{ |
|
|
|
|
/* TODO Speed up, using hb_set_next() and bsearch()? */ |
|
|
|
|
for (auto &range : rangeRecord) |
|
|
|
|
if (rangeRecord.len > glyphs->get_population () * hb_bit_storage ((unsigned) rangeRecord.len) / 2) |
|
|
|
|
{ |
|
|
|
|
if (range.intersects (*glyphs) && range.value) |
|
|
|
|
return true; |
|
|
|
|
for (hb_codepoint_t g = HB_SET_VALUE_INVALID; glyphs->next (&g);) |
|
|
|
|
if (get_class (g)) |
|
|
|
|
return true; |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
return false; |
|
|
|
|
|
|
|
|
|
return hb_any (+ hb_iter (rangeRecord) |
|
|
|
|
| hb_map ([glyphs] (const RangeRecord<Types> &range) { return range.intersects (*glyphs) && range.value; })); |
|
|
|
|
} |
|
|
|
|
bool intersects_class (const hb_set_t *glyphs, uint16_t klass) const |
|
|
|
|
{ |
|
|
|
|