Get the fix we want
This commit is contained in:
parent
299ae2fb0b
commit
59a4e934ee
@ -706,7 +706,7 @@ class Builder(object):
|
|||||||
|
|
||||||
key = (self.script_, language, self.cur_feature_name_)
|
key = (self.script_, language, self.cur_feature_name_)
|
||||||
lookups = self.features_.get((key[0], 'dflt', key[2]))
|
lookups = self.features_.get((key[0], 'dflt', key[2]))
|
||||||
if language != 'dflt' and include_default and lookups:
|
if (language == 'dflt' or include_default) and lookups:
|
||||||
self.features_[key] = lookups[:]
|
self.features_[key] = lookups[:]
|
||||||
else:
|
else:
|
||||||
self.features_[key] = []
|
self.features_[key] = []
|
||||||
|
@ -65,7 +65,7 @@ class BuilderTest(unittest.TestCase):
|
|||||||
spec9a spec9b spec9c1 spec9c2 spec9c3 spec9d spec9e spec9f spec9g
|
spec9a spec9b spec9c1 spec9c2 spec9c3 spec9d spec9e spec9f spec9g
|
||||||
spec10
|
spec10
|
||||||
bug453 bug457 bug463 bug501 bug502 bug504 bug505 bug506 bug509
|
bug453 bug457 bug463 bug501 bug502 bug504 bug505 bug506 bug509
|
||||||
bug512 bug514 bug568 bug633
|
bug512 bug514 bug568 bug633 bug1307
|
||||||
name size size2 multiple_feature_blocks omitted_GlyphClassDef
|
name size size2 multiple_feature_blocks omitted_GlyphClassDef
|
||||||
ZeroValue_SinglePos_horizontal ZeroValue_SinglePos_vertical
|
ZeroValue_SinglePos_horizontal ZeroValue_SinglePos_vertical
|
||||||
ZeroValue_PairPos_horizontal ZeroValue_PairPos_vertical
|
ZeroValue_PairPos_horizontal ZeroValue_PairPos_vertical
|
||||||
|
65
Tests/feaLib/data/bug1307.fea
Normal file
65
Tests/feaLib/data/bug1307.fea
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
# Test of features and languagesystems
|
||||||
|
|
||||||
|
lookup a {
|
||||||
|
sub a by A;
|
||||||
|
} a;
|
||||||
|
|
||||||
|
lookup b {
|
||||||
|
sub b by B;
|
||||||
|
} b;
|
||||||
|
|
||||||
|
lookup c {
|
||||||
|
sub c by C;
|
||||||
|
} c;
|
||||||
|
|
||||||
|
lookup d {
|
||||||
|
sub d by D;
|
||||||
|
} d;
|
||||||
|
|
||||||
|
lookup e {
|
||||||
|
sub e by E;
|
||||||
|
} e;
|
||||||
|
|
||||||
|
lookup f {
|
||||||
|
sub f by F;
|
||||||
|
} f;
|
||||||
|
|
||||||
|
lookup g {
|
||||||
|
sub g by G;
|
||||||
|
} g;
|
||||||
|
|
||||||
|
lookup h {
|
||||||
|
sub h by H;
|
||||||
|
} h;
|
||||||
|
|
||||||
|
lookup i {
|
||||||
|
sub i by I;
|
||||||
|
} i;
|
||||||
|
|
||||||
|
languagesystem DFLT dflt;
|
||||||
|
languagesystem DFLT FRE;
|
||||||
|
languagesystem DFLT ABC;
|
||||||
|
languagesystem latn dflt;
|
||||||
|
languagesystem latn ABC;
|
||||||
|
|
||||||
|
feature smcp {
|
||||||
|
lookup a;
|
||||||
|
} smcp;
|
||||||
|
|
||||||
|
feature liga {
|
||||||
|
lookup b;
|
||||||
|
script DFLT;
|
||||||
|
lookup c;
|
||||||
|
language dflt;
|
||||||
|
lookup d;
|
||||||
|
language FRE;
|
||||||
|
lookup e;
|
||||||
|
script latn;
|
||||||
|
lookup f;
|
||||||
|
language dflt;
|
||||||
|
lookup g;
|
||||||
|
language FRE;
|
||||||
|
lookup h;
|
||||||
|
language DEF exclude_dflt;
|
||||||
|
lookup i;
|
||||||
|
} liga;
|
215
Tests/feaLib/data/bug1307.ttx
Normal file
215
Tests/feaLib/data/bug1307.ttx
Normal file
@ -0,0 +1,215 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ttFont>
|
||||||
|
|
||||||
|
<GSUB>
|
||||||
|
<Version value="0x00010000"/>
|
||||||
|
<ScriptList>
|
||||||
|
<!-- ScriptCount=2 -->
|
||||||
|
<ScriptRecord index="0">
|
||||||
|
<ScriptTag value="DFLT"/>
|
||||||
|
<Script>
|
||||||
|
<DefaultLangSys>
|
||||||
|
<ReqFeatureIndex value="65535"/>
|
||||||
|
<!-- FeatureCount=2 -->
|
||||||
|
<FeatureIndex index="0" value="4"/>
|
||||||
|
<FeatureIndex index="1" value="6"/>
|
||||||
|
</DefaultLangSys>
|
||||||
|
<!-- LangSysCount=2 -->
|
||||||
|
<LangSysRecord index="0">
|
||||||
|
<LangSysTag value="ABC "/>
|
||||||
|
<LangSys>
|
||||||
|
<ReqFeatureIndex value="65535"/>
|
||||||
|
<!-- FeatureCount=2 -->
|
||||||
|
<FeatureIndex index="0" value="0"/>
|
||||||
|
<FeatureIndex index="1" value="6"/>
|
||||||
|
</LangSys>
|
||||||
|
</LangSysRecord>
|
||||||
|
<LangSysRecord index="1">
|
||||||
|
<LangSysTag value="FRE "/>
|
||||||
|
<LangSys>
|
||||||
|
<ReqFeatureIndex value="65535"/>
|
||||||
|
<!-- FeatureCount=2 -->
|
||||||
|
<FeatureIndex index="0" value="2"/>
|
||||||
|
<FeatureIndex index="1" value="6"/>
|
||||||
|
</LangSys>
|
||||||
|
</LangSysRecord>
|
||||||
|
</Script>
|
||||||
|
</ScriptRecord>
|
||||||
|
<ScriptRecord index="1">
|
||||||
|
<ScriptTag value="latn"/>
|
||||||
|
<Script>
|
||||||
|
<DefaultLangSys>
|
||||||
|
<ReqFeatureIndex value="65535"/>
|
||||||
|
<!-- FeatureCount=2 -->
|
||||||
|
<FeatureIndex index="0" value="5"/>
|
||||||
|
<FeatureIndex index="1" value="6"/>
|
||||||
|
</DefaultLangSys>
|
||||||
|
<!-- LangSysCount=3 -->
|
||||||
|
<LangSysRecord index="0">
|
||||||
|
<LangSysTag value="ABC "/>
|
||||||
|
<LangSys>
|
||||||
|
<ReqFeatureIndex value="65535"/>
|
||||||
|
<!-- FeatureCount=2 -->
|
||||||
|
<FeatureIndex index="0" value="0"/>
|
||||||
|
<FeatureIndex index="1" value="6"/>
|
||||||
|
</LangSys>
|
||||||
|
</LangSysRecord>
|
||||||
|
<LangSysRecord index="1">
|
||||||
|
<LangSysTag value="DEF "/>
|
||||||
|
<LangSys>
|
||||||
|
<ReqFeatureIndex value="65535"/>
|
||||||
|
<!-- FeatureCount=1 -->
|
||||||
|
<FeatureIndex index="0" value="1"/>
|
||||||
|
</LangSys>
|
||||||
|
</LangSysRecord>
|
||||||
|
<LangSysRecord index="2">
|
||||||
|
<LangSysTag value="FRE "/>
|
||||||
|
<LangSys>
|
||||||
|
<ReqFeatureIndex value="65535"/>
|
||||||
|
<!-- FeatureCount=1 -->
|
||||||
|
<FeatureIndex index="0" value="3"/>
|
||||||
|
</LangSys>
|
||||||
|
</LangSysRecord>
|
||||||
|
</Script>
|
||||||
|
</ScriptRecord>
|
||||||
|
</ScriptList>
|
||||||
|
<FeatureList>
|
||||||
|
<!-- FeatureCount=7 -->
|
||||||
|
<FeatureRecord index="0">
|
||||||
|
<FeatureTag value="liga"/>
|
||||||
|
<Feature>
|
||||||
|
<!-- LookupCount=1 -->
|
||||||
|
<LookupListIndex index="0" value="1"/>
|
||||||
|
</Feature>
|
||||||
|
</FeatureRecord>
|
||||||
|
<FeatureRecord index="1">
|
||||||
|
<FeatureTag value="liga"/>
|
||||||
|
<Feature>
|
||||||
|
<!-- LookupCount=1 -->
|
||||||
|
<LookupListIndex index="0" value="8"/>
|
||||||
|
</Feature>
|
||||||
|
</FeatureRecord>
|
||||||
|
<FeatureRecord index="2">
|
||||||
|
<FeatureTag value="liga"/>
|
||||||
|
<Feature>
|
||||||
|
<!-- LookupCount=4 -->
|
||||||
|
<LookupListIndex index="0" value="1"/>
|
||||||
|
<LookupListIndex index="1" value="2"/>
|
||||||
|
<LookupListIndex index="2" value="3"/>
|
||||||
|
<LookupListIndex index="3" value="4"/>
|
||||||
|
</Feature>
|
||||||
|
</FeatureRecord>
|
||||||
|
<FeatureRecord index="3">
|
||||||
|
<FeatureTag value="liga"/>
|
||||||
|
<Feature>
|
||||||
|
<!-- LookupCount=4 -->
|
||||||
|
<LookupListIndex index="0" value="1"/>
|
||||||
|
<LookupListIndex index="1" value="5"/>
|
||||||
|
<LookupListIndex index="2" value="6"/>
|
||||||
|
<LookupListIndex index="3" value="7"/>
|
||||||
|
</Feature>
|
||||||
|
</FeatureRecord>
|
||||||
|
<FeatureRecord index="4">
|
||||||
|
<FeatureTag value="liga"/>
|
||||||
|
<Feature>
|
||||||
|
<!-- LookupCount=3 -->
|
||||||
|
<LookupListIndex index="0" value="1"/>
|
||||||
|
<LookupListIndex index="1" value="2"/>
|
||||||
|
<LookupListIndex index="2" value="3"/>
|
||||||
|
</Feature>
|
||||||
|
</FeatureRecord>
|
||||||
|
<FeatureRecord index="5">
|
||||||
|
<FeatureTag value="liga"/>
|
||||||
|
<Feature>
|
||||||
|
<!-- LookupCount=3 -->
|
||||||
|
<LookupListIndex index="0" value="1"/>
|
||||||
|
<LookupListIndex index="1" value="5"/>
|
||||||
|
<LookupListIndex index="2" value="6"/>
|
||||||
|
</Feature>
|
||||||
|
</FeatureRecord>
|
||||||
|
<FeatureRecord index="6">
|
||||||
|
<FeatureTag value="smcp"/>
|
||||||
|
<Feature>
|
||||||
|
<!-- LookupCount=1 -->
|
||||||
|
<LookupListIndex index="0" value="0"/>
|
||||||
|
</Feature>
|
||||||
|
</FeatureRecord>
|
||||||
|
</FeatureList>
|
||||||
|
<LookupList>
|
||||||
|
<!-- LookupCount=9 -->
|
||||||
|
<Lookup index="0">
|
||||||
|
<LookupType value="1"/>
|
||||||
|
<LookupFlag value="0"/>
|
||||||
|
<!-- SubTableCount=1 -->
|
||||||
|
<SingleSubst index="0">
|
||||||
|
<Substitution in="a" out="A"/>
|
||||||
|
</SingleSubst>
|
||||||
|
</Lookup>
|
||||||
|
<Lookup index="1">
|
||||||
|
<LookupType value="1"/>
|
||||||
|
<LookupFlag value="0"/>
|
||||||
|
<!-- SubTableCount=1 -->
|
||||||
|
<SingleSubst index="0">
|
||||||
|
<Substitution in="b" out="B"/>
|
||||||
|
</SingleSubst>
|
||||||
|
</Lookup>
|
||||||
|
<Lookup index="2">
|
||||||
|
<LookupType value="1"/>
|
||||||
|
<LookupFlag value="0"/>
|
||||||
|
<!-- SubTableCount=1 -->
|
||||||
|
<SingleSubst index="0">
|
||||||
|
<Substitution in="c" out="C"/>
|
||||||
|
</SingleSubst>
|
||||||
|
</Lookup>
|
||||||
|
<Lookup index="3">
|
||||||
|
<LookupType value="1"/>
|
||||||
|
<LookupFlag value="0"/>
|
||||||
|
<!-- SubTableCount=1 -->
|
||||||
|
<SingleSubst index="0">
|
||||||
|
<Substitution in="d" out="D"/>
|
||||||
|
</SingleSubst>
|
||||||
|
</Lookup>
|
||||||
|
<Lookup index="4">
|
||||||
|
<LookupType value="1"/>
|
||||||
|
<LookupFlag value="0"/>
|
||||||
|
<!-- SubTableCount=1 -->
|
||||||
|
<SingleSubst index="0">
|
||||||
|
<Substitution in="e" out="E"/>
|
||||||
|
</SingleSubst>
|
||||||
|
</Lookup>
|
||||||
|
<Lookup index="5">
|
||||||
|
<LookupType value="1"/>
|
||||||
|
<LookupFlag value="0"/>
|
||||||
|
<!-- SubTableCount=1 -->
|
||||||
|
<SingleSubst index="0">
|
||||||
|
<Substitution in="f" out="F"/>
|
||||||
|
</SingleSubst>
|
||||||
|
</Lookup>
|
||||||
|
<Lookup index="6">
|
||||||
|
<LookupType value="1"/>
|
||||||
|
<LookupFlag value="0"/>
|
||||||
|
<!-- SubTableCount=1 -->
|
||||||
|
<SingleSubst index="0">
|
||||||
|
<Substitution in="g" out="G"/>
|
||||||
|
</SingleSubst>
|
||||||
|
</Lookup>
|
||||||
|
<Lookup index="7">
|
||||||
|
<LookupType value="1"/>
|
||||||
|
<LookupFlag value="0"/>
|
||||||
|
<!-- SubTableCount=1 -->
|
||||||
|
<SingleSubst index="0">
|
||||||
|
<Substitution in="h" out="H"/>
|
||||||
|
</SingleSubst>
|
||||||
|
</Lookup>
|
||||||
|
<Lookup index="8">
|
||||||
|
<LookupType value="1"/>
|
||||||
|
<LookupFlag value="0"/>
|
||||||
|
<!-- SubTableCount=1 -->
|
||||||
|
<SingleSubst index="0">
|
||||||
|
<Substitution in="i" out="I"/>
|
||||||
|
</SingleSubst>
|
||||||
|
</Lookup>
|
||||||
|
</LookupList>
|
||||||
|
</GSUB>
|
||||||
|
|
||||||
|
</ttFont>
|
@ -22,7 +22,7 @@
|
|||||||
<DefaultLangSys>
|
<DefaultLangSys>
|
||||||
<ReqFeatureIndex value="65535"/>
|
<ReqFeatureIndex value="65535"/>
|
||||||
<!-- FeatureCount=1 -->
|
<!-- FeatureCount=1 -->
|
||||||
<FeatureIndex index="0" value="0"/>
|
<FeatureIndex index="0" value="1"/>
|
||||||
</DefaultLangSys>
|
</DefaultLangSys>
|
||||||
<!-- LangSysCount=1 -->
|
<!-- LangSysCount=1 -->
|
||||||
<LangSysRecord index="0">
|
<LangSysRecord index="0">
|
||||||
|
@ -65,16 +65,18 @@
|
|||||||
<FeatureRecord index="0">
|
<FeatureRecord index="0">
|
||||||
<FeatureTag value="liga"/>
|
<FeatureTag value="liga"/>
|
||||||
<Feature>
|
<Feature>
|
||||||
<!-- LookupCount=2 -->
|
<!-- LookupCount=3 -->
|
||||||
<LookupListIndex index="0" value="2"/>
|
<LookupListIndex index="0" value="1"/>
|
||||||
<LookupListIndex index="1" value="3"/>
|
<LookupListIndex index="1" value="2"/>
|
||||||
|
<LookupListIndex index="2" value="3"/>
|
||||||
</Feature>
|
</Feature>
|
||||||
</FeatureRecord>
|
</FeatureRecord>
|
||||||
<FeatureRecord index="1">
|
<FeatureRecord index="1">
|
||||||
<FeatureTag value="liga"/>
|
<FeatureTag value="liga"/>
|
||||||
<Feature>
|
<Feature>
|
||||||
<!-- LookupCount=1 -->
|
<!-- LookupCount=2 -->
|
||||||
<LookupListIndex index="0" value="2"/>
|
<LookupListIndex index="0" value="1"/>
|
||||||
|
<LookupListIndex index="1" value="2"/>
|
||||||
</Feature>
|
</Feature>
|
||||||
</FeatureRecord>
|
</FeatureRecord>
|
||||||
<FeatureRecord index="2">
|
<FeatureRecord index="2">
|
||||||
|
@ -19,6 +19,11 @@
|
|||||||
<ScriptRecord index="1">
|
<ScriptRecord index="1">
|
||||||
<ScriptTag value="cyrl"/>
|
<ScriptTag value="cyrl"/>
|
||||||
<Script>
|
<Script>
|
||||||
|
<DefaultLangSys>
|
||||||
|
<ReqFeatureIndex value="65535"/>
|
||||||
|
<!-- FeatureCount=1 -->
|
||||||
|
<FeatureIndex index="0" value="3"/>
|
||||||
|
</DefaultLangSys>
|
||||||
<!-- LangSysCount=1 -->
|
<!-- LangSysCount=1 -->
|
||||||
<LangSysRecord index="0">
|
<LangSysRecord index="0">
|
||||||
<LangSysTag value="SRB "/>
|
<LangSysTag value="SRB "/>
|
||||||
@ -74,16 +79,20 @@
|
|||||||
<FeatureRecord index="0">
|
<FeatureRecord index="0">
|
||||||
<FeatureTag value="liga"/>
|
<FeatureTag value="liga"/>
|
||||||
<Feature>
|
<Feature>
|
||||||
<!-- LookupCount=2 -->
|
<!-- LookupCount=4 -->
|
||||||
<LookupListIndex index="0" value="2"/>
|
<LookupListIndex index="0" value="0"/>
|
||||||
<LookupListIndex index="1" value="3"/>
|
<LookupListIndex index="1" value="1"/>
|
||||||
|
<LookupListIndex index="2" value="2"/>
|
||||||
|
<LookupListIndex index="3" value="3"/>
|
||||||
</Feature>
|
</Feature>
|
||||||
</FeatureRecord>
|
</FeatureRecord>
|
||||||
<FeatureRecord index="1">
|
<FeatureRecord index="1">
|
||||||
<FeatureTag value="liga"/>
|
<FeatureTag value="liga"/>
|
||||||
<Feature>
|
<Feature>
|
||||||
<!-- LookupCount=1 -->
|
<!-- LookupCount=3 -->
|
||||||
<LookupListIndex index="0" value="4"/>
|
<LookupListIndex index="0" value="0"/>
|
||||||
|
<LookupListIndex index="1" value="1"/>
|
||||||
|
<LookupListIndex index="2" value="4"/>
|
||||||
</Feature>
|
</Feature>
|
||||||
</FeatureRecord>
|
</FeatureRecord>
|
||||||
<FeatureRecord index="2">
|
<FeatureRecord index="2">
|
||||||
@ -104,8 +113,10 @@
|
|||||||
<FeatureRecord index="4">
|
<FeatureRecord index="4">
|
||||||
<FeatureTag value="liga"/>
|
<FeatureTag value="liga"/>
|
||||||
<Feature>
|
<Feature>
|
||||||
<!-- LookupCount=1 -->
|
<!-- LookupCount=3 -->
|
||||||
<LookupListIndex index="0" value="2"/>
|
<LookupListIndex index="0" value="0"/>
|
||||||
|
<LookupListIndex index="1" value="1"/>
|
||||||
|
<LookupListIndex index="2" value="2"/>
|
||||||
</Feature>
|
</Feature>
|
||||||
</FeatureRecord>
|
</FeatureRecord>
|
||||||
</FeatureList>
|
</FeatureList>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user