diff --git a/src/hb-set-private.hh b/src/hb-set-private.hh index 550b7f2149726207822bf396437417972e8e17f2..8beff37d47da91a8d3ee1c75351aaeafa0646818 100644 --- a/src/hb-set-private.hh +++ b/src/hb-set-private.hh @@ -54,9 +54,9 @@ struct hb_set_digest_common_bits_t } inline void add_range (hb_codepoint_t a, hb_codepoint_t b) { - /* TODO Speedup. */ - for (unsigned int i = a; i < b + 1; i++) - add (i); + /* The negation here stands for ~(x-1). */ + mask &= -(1 << _hb_bit_storage (a ^ b)); + value &= mask; } inline bool may_have (hb_codepoint_t g) const {