Merge pull request #1815 from khaledhosny/fealib-flag-fix

[feaLib] Don’t reset lookupflag in nested lookups
This commit is contained in:
Khaled Hosny 2020-01-30 13:06:42 +02:00 committed by GitHub
commit 014991d710
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 151 additions and 6 deletions

View File

@ -679,15 +679,17 @@ class Builder(object):
self.cur_lookup_name_ = name self.cur_lookup_name_ = name
self.named_lookups_[name] = None self.named_lookups_[name] = None
self.cur_lookup_ = None self.cur_lookup_ = None
self.lookupflag_ = 0 if self.cur_feature_name_ is None:
self.lookupflag_markFilterSet_ = None self.lookupflag_ = 0
self.lookupflag_markFilterSet_ = None
def end_lookup_block(self): def end_lookup_block(self):
assert self.cur_lookup_name_ is not None assert self.cur_lookup_name_ is not None
self.cur_lookup_name_ = None self.cur_lookup_name_ = None
self.cur_lookup_ = None self.cur_lookup_ = None
self.lookupflag_ = 0 if self.cur_feature_name_ is None:
self.lookupflag_markFilterSet_ = None self.lookupflag_ = 0
self.lookupflag_markFilterSet_ = None
def add_lookup_call(self, lookup_name): def add_lookup_call(self, lookup_name):
assert lookup_name in self.named_lookups_, lookup_name assert lookup_name in self.named_lookups_, lookup_name

View File

@ -95,3 +95,42 @@ feature test {
lookup M; lookup M;
lookup N; lookup N;
} test; } test;
feature test {
lookupflag IgnoreMarks;
lookup O {
pos one 1;
} O;
lookup P {
pos one 1;
} P;
} test;
feature test {
lookup Q {
pos one 1;
} Q;
lookup R {
pos one 1;
} R;
} test;
feature test {
lookup S {
lookupflag IgnoreMarks;
pos one 1;
} S;
lookup T {
pos one 1;
} T;
} test;
feature test {
lookup U {
pos one 1;
} U;
lookup V {
lookupflag IgnoreMarks;
pos one 1;
} V;
} test;

View File

@ -61,7 +61,7 @@
<FeatureRecord index="0"> <FeatureRecord index="0">
<FeatureTag value="test"/> <FeatureTag value="test"/>
<Feature> <Feature>
<!-- LookupCount=14 --> <!-- LookupCount=22 -->
<LookupListIndex index="0" value="0"/> <LookupListIndex index="0" value="0"/>
<LookupListIndex index="1" value="1"/> <LookupListIndex index="1" value="1"/>
<LookupListIndex index="2" value="2"/> <LookupListIndex index="2" value="2"/>
@ -76,11 +76,19 @@
<LookupListIndex index="11" value="11"/> <LookupListIndex index="11" value="11"/>
<LookupListIndex index="12" value="12"/> <LookupListIndex index="12" value="12"/>
<LookupListIndex index="13" value="13"/> <LookupListIndex index="13" value="13"/>
<LookupListIndex index="14" value="14"/>
<LookupListIndex index="15" value="15"/>
<LookupListIndex index="16" value="16"/>
<LookupListIndex index="17" value="17"/>
<LookupListIndex index="18" value="18"/>
<LookupListIndex index="19" value="19"/>
<LookupListIndex index="20" value="20"/>
<LookupListIndex index="21" value="21"/>
</Feature> </Feature>
</FeatureRecord> </FeatureRecord>
</FeatureList> </FeatureList>
<LookupList> <LookupList>
<!-- LookupCount=14 --> <!-- LookupCount=22 -->
<Lookup index="0"> <Lookup index="0">
<LookupType value="1"/> <LookupType value="1"/>
<LookupFlag value="1"/> <LookupFlag value="1"/>
@ -253,6 +261,102 @@
<Value XAdvance="1"/> <Value XAdvance="1"/>
</SinglePos> </SinglePos>
</Lookup> </Lookup>
<Lookup index="14">
<LookupType value="1"/>
<LookupFlag value="8"/>
<!-- SubTableCount=1 -->
<SinglePos index="0" Format="1">
<Coverage>
<Glyph value="one"/>
</Coverage>
<ValueFormat value="4"/>
<Value XAdvance="1"/>
</SinglePos>
</Lookup>
<Lookup index="15">
<LookupType value="1"/>
<LookupFlag value="8"/>
<!-- SubTableCount=1 -->
<SinglePos index="0" Format="1">
<Coverage>
<Glyph value="one"/>
</Coverage>
<ValueFormat value="4"/>
<Value XAdvance="1"/>
</SinglePos>
</Lookup>
<Lookup index="16">
<LookupType value="1"/>
<LookupFlag value="0"/>
<!-- SubTableCount=1 -->
<SinglePos index="0" Format="1">
<Coverage>
<Glyph value="one"/>
</Coverage>
<ValueFormat value="4"/>
<Value XAdvance="1"/>
</SinglePos>
</Lookup>
<Lookup index="17">
<LookupType value="1"/>
<LookupFlag value="0"/>
<!-- SubTableCount=1 -->
<SinglePos index="0" Format="1">
<Coverage>
<Glyph value="one"/>
</Coverage>
<ValueFormat value="4"/>
<Value XAdvance="1"/>
</SinglePos>
</Lookup>
<Lookup index="18">
<LookupType value="1"/>
<LookupFlag value="8"/>
<!-- SubTableCount=1 -->
<SinglePos index="0" Format="1">
<Coverage>
<Glyph value="one"/>
</Coverage>
<ValueFormat value="4"/>
<Value XAdvance="1"/>
</SinglePos>
</Lookup>
<Lookup index="19">
<LookupType value="1"/>
<LookupFlag value="8"/>
<!-- SubTableCount=1 -->
<SinglePos index="0" Format="1">
<Coverage>
<Glyph value="one"/>
</Coverage>
<ValueFormat value="4"/>
<Value XAdvance="1"/>
</SinglePos>
</Lookup>
<Lookup index="20">
<LookupType value="1"/>
<LookupFlag value="0"/>
<!-- SubTableCount=1 -->
<SinglePos index="0" Format="1">
<Coverage>
<Glyph value="one"/>
</Coverage>
<ValueFormat value="4"/>
<Value XAdvance="1"/>
</SinglePos>
</Lookup>
<Lookup index="21">
<LookupType value="1"/>
<LookupFlag value="8"/>
<!-- SubTableCount=1 -->
<SinglePos index="0" Format="1">
<Coverage>
<Glyph value="one"/>
</Coverage>
<ValueFormat value="4"/>
<Value XAdvance="1"/>
</SinglePos>
</Lookup>
</LookupList> </LookupList>
</GPOS> </GPOS>