From 4a9a5c0b06e8aa5d15327242609a7c766d3e0e94 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Fri, 21 May 2010 13:33:46 +0100 Subject: [PATCH] Don't allocate bits for features not available --- src/hb-ot-shape.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/hb-ot-shape.cc b/src/hb-ot-shape.cc index 84f3432d6..8e5d6d841 100644 --- a/src/hb-ot-shape.cc +++ b/src/hb-ot-shape.cc @@ -125,6 +125,11 @@ setup_lookups (hb_face_t *face, unsigned int global_values = 0; for (i = 0; i < num_features; i++) { + if (!hb_ot_layout_language_find_feature (face, table_tag, script_index, language_index, + features[i].tag, + &feature_index)) + continue; + unsigned int bits_needed = _hb_bit_storage (features[i].value); if (!bits_needed) continue; @@ -132,10 +137,7 @@ setup_lookups (hb_face_t *face, unsigned int value = features[i].value << last_bit_used; last_bit_used += bits_needed; - if (hb_ot_layout_language_find_feature (face, table_tag, script_index, language_index, - features[i].tag, - &feature_index)) - add_feature (face, table_tag, feature_index, mask, lookups, num_lookups, room_lookups); + add_feature (face, table_tag, feature_index, mask, lookups, num_lookups, room_lookups); if (features[i].start == 0 && features[i].end == (unsigned int)-1) global_values |= value;