[layout] Try to speed up collect_lookups some more
Barely made a dent :(.
This commit is contained in:
parent
eb44bfc864
commit
e98af6d1ed
@ -555,6 +555,8 @@ struct Feature
|
||||
unsigned int *lookup_count /* IN/OUT */,
|
||||
unsigned int *lookup_tags /* OUT */) const
|
||||
{ return lookupIndex.get_indexes (start_index, lookup_count, lookup_tags); }
|
||||
inline void add_lookup_indexes_to (hb_set_t *lookup_indexes) const
|
||||
{ lookupIndex.add_indexes_to (lookup_indexes); }
|
||||
|
||||
inline const FeatureParams &get_feature_params (void) const
|
||||
{ return this+featureParams; }
|
||||
|
@ -828,29 +828,14 @@ hb_ot_layout_collect_lookups (hb_face_t *face,
|
||||
const hb_tag_t *features,
|
||||
hb_set_t *lookup_indexes /* OUT */)
|
||||
{
|
||||
const OT::GSUBGPOS &g = get_gsubgpos_table (face, table_tag);
|
||||
|
||||
hb_auto_t<hb_set_t> feature_indexes;
|
||||
hb_ot_layout_collect_features (face, table_tag, scripts, languages, features, &feature_indexes);
|
||||
|
||||
for (hb_codepoint_t feature_index = HB_SET_VALUE_INVALID;
|
||||
hb_set_next (&feature_indexes, &feature_index);)
|
||||
{
|
||||
unsigned int lookup_indices[32];
|
||||
unsigned int offset, len;
|
||||
|
||||
offset = 0;
|
||||
do {
|
||||
len = ARRAY_LENGTH (lookup_indices);
|
||||
hb_ot_layout_feature_get_lookups (face,
|
||||
table_tag,
|
||||
feature_index,
|
||||
offset, &len,
|
||||
lookup_indices);
|
||||
|
||||
for (unsigned int i = 0; i < len; i++)
|
||||
lookup_indexes->add (lookup_indices[i]);
|
||||
|
||||
offset += len;
|
||||
} while (len == ARRAY_LENGTH (lookup_indices));
|
||||
}
|
||||
g.get_feature (feature_index).add_lookup_indexes_to (lookup_indexes);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user