{
char tagname[4];
OTF_Tag tag;
- int negate = 0;
+ int use_it = 1;
if (*features == '*')
{
/* Consume all remaining features. */
- /* We are sure that the last LookupCount elements of
- lookup_indices are free to be used for this work. */
- int *free_table = (lookup_indices + (LookupList->LookupCount
- * FeatureList->FeatureCount));
-
- for (i = 0; i < LookupList->LookupCount; i++)
- free_table[i] = 0;
for (i = 0; i < FeatureList->FeatureCount; i++)
if (! feature_table[i])
{
feature = FeatureList->Feature + i;
for (j = 0; j < feature->LookupCount; j++)
- free_table[feature->LookupListIndex[j]] = 1;
+ lookup_indices[n++] = feature->LookupListIndex[j];
}
- for (i = 0; i < LookupList->LookupCount; i++)
- if (free_table[i])
- lookup_indices[n++] = i;
break;
}
if (*features == '~')
- negate = 1, features++;
+ use_it = -1, features++;
for (i = 0; *features && *features != ','; i++, features++)
tagname[i] = *features;
if (*features)
feature = FeatureList->Feature + i;
if (tag == feature->FeatureTag)
{
- if (! negate)
+ if (feature_table[i])
+ break;
+ if (use_it > 0)
for (j = 0; j < feature->LookupCount; j++)
lookup_indices[n++] = feature->LookupListIndex[j];
- feature_table[i] = 1;
+ feature_table[i] = use_it;
break;
}
}
if (subtable->Format == 1)
{
OTF_GPOS_MarkLig1 *mark_lig1 = &subtable->u.mark_lig1;
- unsigned class = g->MarkAttachClass;
OTF_Glyph *ligg;
int coverage_idx_lig;
OTF_MarkRecord *mark_record;
- OTF_ComponentRecord *cmp_record;
OTF_LigatureAttach *attach;
int *num_class = alloca (sizeof (int) * mark_lig1->ClassCount);
int j;