提交 4a9a5c0b 编写于 作者: B Behdad Esfahbod

Don't allocate bits for features not available

上级 e53d7714
...@@ -125,6 +125,11 @@ setup_lookups (hb_face_t *face, ...@@ -125,6 +125,11 @@ setup_lookups (hb_face_t *face,
unsigned int global_values = 0; unsigned int global_values = 0;
for (i = 0; i < num_features; i++) 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); unsigned int bits_needed = _hb_bit_storage (features[i].value);
if (!bits_needed) if (!bits_needed)
continue; continue;
...@@ -132,10 +137,7 @@ setup_lookups (hb_face_t *face, ...@@ -132,10 +137,7 @@ setup_lookups (hb_face_t *face,
unsigned int value = features[i].value << last_bit_used; unsigned int value = features[i].value << last_bit_used;
last_bit_used += bits_needed; last_bit_used += bits_needed;
if (hb_ot_layout_language_find_feature (face, table_tag, script_index, language_index, add_feature (face, table_tag, feature_index, mask, lookups, num_lookups, room_lookups);
features[i].tag,
&feature_index))
add_feature (face, table_tag, feature_index, mask, lookups, num_lookups, room_lookups);
if (features[i].start == 0 && features[i].end == (unsigned int)-1) if (features[i].start == 0 && features[i].end == (unsigned int)-1)
global_values |= value; global_values |= value;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册