}
if (alternate_subst
- ? (lookup_type != 3 && lookup_type != 5 && lookup_type != 6)
+ ? (alternate_subst == 1
+ && lookup_type != 3 && lookup_type != 5 && lookup_type != 6)
: (lookup_type == 3))
continue;
OTF_GSUB_Alternate1 *alt1 = &subtable->u.alternate1;
OTF_AlternateSet *altset = alt1->AlternateSet + coverage_idx;
- gstring_subst (otf, gstring, gidx, gidx + 1, flag,
- altset->Alternate, altset->GlyphCount);
+ if (alternate_subst == 1)
+ gstring_subst (otf, gstring, gidx, gidx + 1, flag,
+ altset->Alternate, altset->GlyphCount);
+ else
+ gstring_subst (otf, gstring, gidx, gidx + 1, flag,
+ altset->Alternate, 1);
gidx += altset->GlyphCount;;
}
else
rule->LookupRecord[k].LookupListIndex,
gstring,
gidx + rule->LookupRecord[k].SequenceIndex,
- alternate_subst);
+ alternate_subst ? alternate_subst : 2);
gidx += rule->GlyphCount + (gstring->used - orig_used);
break;
}
rule->LookupRecord[k].LookupListIndex,
gstring,
gidx + rule->LookupRecord[k].SequenceIndex,
- alternate_subst);
+ alternate_subst ? alternate_subst : 2);
gidx += rule->GlyphCount + (gstring->used - orig_used);
break;
}
context3->LookupRecord[j].LookupListIndex,
gstring,
gidx + context3->LookupRecord[j].SequenceIndex,
- alternate_subst);
+ alternate_subst ? alternate_subst : 2);
gidx += context3->GlyphCount + (gstring->used - orig_used);
}
break;
rule->LookupRecord[k].LookupListIndex,
gstring,
gidx + rule->LookupRecord[k].SequenceIndex,
- alternate_subst);
+ alternate_subst ? alternate_subst : 2);
gidx += rule->InputGlyphCount + (gstring->used - orig_used);
break;
}
rule->LookupRecord[k].LookupListIndex,
gstring,
gidx + rule->LookupRecord[k].SequenceIndex,
- alternate_subst);
+ alternate_subst ? alternate_subst : 2);
gidx += rule->InputGlyphCount + (gstring->used - orig_used);
break;
}
context3->LookupRecord[j].LookupListIndex,
gstring,
gidx + context3->LookupRecord[j].SequenceIndex,
- alternate_subst);
+ alternate_subst ? alternate_subst : 2);
gidx += context3->InputGlyphCount + (gstring->used - orig_used);
}
break;