Before this change, feaLib had assigned a lookup index at the same time as compiling each lookup. For chains, the implicit assumption was that the chain's targets would always come before the contexual chain. Normally this was indeed the case, but feaLib (and also makeotf) sometimes merge several chain targets into one single lookup, and then this assumption was not true anymore. In the new version, the lookups get compiled in a separate pass, after assigning lookup indices. https://github.com/behdad/fonttools/issues/463
275 lines
8.7 KiB
XML
275 lines
8.7 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<ttFont>
|
|
|
|
<GSUB>
|
|
<Version value="1.0"/>
|
|
<ScriptList>
|
|
<!-- ScriptCount=1 -->
|
|
<ScriptRecord index="0">
|
|
<ScriptTag value="DFLT"/>
|
|
<Script>
|
|
<DefaultLangSys>
|
|
<ReqFeatureIndex value="65535"/>
|
|
<!-- FeatureCount=1 -->
|
|
<FeatureIndex index="0" value="0"/>
|
|
</DefaultLangSys>
|
|
<!-- LangSysCount=0 -->
|
|
</Script>
|
|
</ScriptRecord>
|
|
</ScriptList>
|
|
<FeatureList>
|
|
<!-- FeatureCount=1 -->
|
|
<FeatureRecord index="0">
|
|
<FeatureTag value="test"/>
|
|
<Feature>
|
|
<!-- LookupCount=5 -->
|
|
<LookupListIndex index="0" value="1"/>
|
|
<LookupListIndex index="1" value="4"/>
|
|
<LookupListIndex index="2" value="6"/>
|
|
<LookupListIndex index="3" value="8"/>
|
|
<LookupListIndex index="4" value="9"/>
|
|
</Feature>
|
|
</FeatureRecord>
|
|
</FeatureList>
|
|
<LookupList>
|
|
<!-- LookupCount=10 -->
|
|
<Lookup index="0">
|
|
<!-- LookupType=1 -->
|
|
<LookupFlag value="0"/>
|
|
<!-- SubTableCount=1 -->
|
|
<SingleSubst index="0">
|
|
<Substitution in="A" out="A.sc"/>
|
|
</SingleSubst>
|
|
</Lookup>
|
|
<Lookup index="1">
|
|
<!-- LookupType=6 -->
|
|
<LookupFlag value="0"/>
|
|
<!-- SubTableCount=2 -->
|
|
<ChainContextSubst index="0" Format="3">
|
|
<!-- BacktrackGlyphCount=2 -->
|
|
<BacktrackCoverage index="0">
|
|
<Glyph value="three"/>
|
|
</BacktrackCoverage>
|
|
<BacktrackCoverage index="1">
|
|
<Glyph value="one"/>
|
|
<Glyph value="two"/>
|
|
</BacktrackCoverage>
|
|
<!-- InputGlyphCount=1 -->
|
|
<InputCoverage index="0">
|
|
<Glyph value="A"/>
|
|
</InputCoverage>
|
|
<!-- LookAheadGlyphCount=0 -->
|
|
<!-- SubstCount=1 -->
|
|
<SubstLookupRecord index="0">
|
|
<SequenceIndex value="0"/>
|
|
<LookupListIndex value="0"/>
|
|
</SubstLookupRecord>
|
|
</ChainContextSubst>
|
|
<ChainContextSubst index="1" Format="3">
|
|
<!-- BacktrackGlyphCount=0 -->
|
|
<!-- InputGlyphCount=1 -->
|
|
<InputCoverage index="0">
|
|
<Glyph value="B"/>
|
|
<Glyph value="C"/>
|
|
<Glyph value="D"/>
|
|
</InputCoverage>
|
|
<!-- LookAheadGlyphCount=2 -->
|
|
<LookAheadCoverage index="0">
|
|
<Glyph value="seven"/>
|
|
</LookAheadCoverage>
|
|
<LookAheadCoverage index="1">
|
|
<Glyph value="eight"/>
|
|
<Glyph value="nine"/>
|
|
</LookAheadCoverage>
|
|
<!-- SubstCount=1 -->
|
|
<SubstLookupRecord index="0">
|
|
<SequenceIndex value="0"/>
|
|
<LookupListIndex value="2"/>
|
|
</SubstLookupRecord>
|
|
</ChainContextSubst>
|
|
</Lookup>
|
|
<Lookup index="2">
|
|
<!-- LookupType=1 -->
|
|
<LookupFlag value="0"/>
|
|
<!-- SubTableCount=1 -->
|
|
<SingleSubst index="0">
|
|
<Substitution in="B" out="B.sc"/>
|
|
<Substitution in="C" out="C.sc"/>
|
|
<Substitution in="D" out="D.sc"/>
|
|
</SingleSubst>
|
|
</Lookup>
|
|
<Lookup index="3">
|
|
<!-- LookupType=2 -->
|
|
<LookupFlag value="0"/>
|
|
<!-- SubTableCount=1 -->
|
|
<MultipleSubst index="0">
|
|
<Substitution in="c_t" out="c,t"/>
|
|
</MultipleSubst>
|
|
</Lookup>
|
|
<Lookup index="4">
|
|
<!-- LookupType=6 -->
|
|
<LookupFlag value="0"/>
|
|
<!-- SubTableCount=1 -->
|
|
<ChainContextSubst index="0" Format="3">
|
|
<!-- BacktrackGlyphCount=3 -->
|
|
<BacktrackCoverage index="0">
|
|
<Glyph value="E"/>
|
|
</BacktrackCoverage>
|
|
<BacktrackCoverage index="1">
|
|
<Glyph value="D"/>
|
|
<Glyph value="d"/>
|
|
</BacktrackCoverage>
|
|
<BacktrackCoverage index="2">
|
|
<Glyph value="A"/>
|
|
<Glyph value="B"/>
|
|
<Glyph value="C"/>
|
|
<Glyph value="a"/>
|
|
<Glyph value="b"/>
|
|
<Glyph value="c"/>
|
|
</BacktrackCoverage>
|
|
<!-- InputGlyphCount=1 -->
|
|
<InputCoverage index="0">
|
|
<Glyph value="c_t"/>
|
|
</InputCoverage>
|
|
<!-- LookAheadGlyphCount=3 -->
|
|
<LookAheadCoverage index="0">
|
|
<Glyph value="V"/>
|
|
</LookAheadCoverage>
|
|
<LookAheadCoverage index="1">
|
|
<Glyph value="W"/>
|
|
<Glyph value="w"/>
|
|
</LookAheadCoverage>
|
|
<LookAheadCoverage index="2">
|
|
<Glyph value="X"/>
|
|
<Glyph value="Y"/>
|
|
<Glyph value="Z"/>
|
|
<Glyph value="x"/>
|
|
<Glyph value="y"/>
|
|
<Glyph value="z"/>
|
|
</LookAheadCoverage>
|
|
<!-- SubstCount=1 -->
|
|
<SubstLookupRecord index="0">
|
|
<SequenceIndex value="0"/>
|
|
<LookupListIndex value="3"/>
|
|
</SubstLookupRecord>
|
|
</ChainContextSubst>
|
|
</Lookup>
|
|
<Lookup index="5">
|
|
<!-- LookupType=3 -->
|
|
<LookupFlag value="0"/>
|
|
<!-- SubTableCount=1 -->
|
|
<AlternateSubst index="0">
|
|
<AlternateSet glyph="e">
|
|
<Alternate glyph="e"/>
|
|
<Alternate glyph="e.begin"/>
|
|
</AlternateSet>
|
|
</AlternateSubst>
|
|
</Lookup>
|
|
<Lookup index="6">
|
|
<!-- LookupType=6 -->
|
|
<LookupFlag value="0"/>
|
|
<!-- SubTableCount=1 -->
|
|
<ChainContextSubst index="0" Format="3">
|
|
<!-- BacktrackGlyphCount=1 -->
|
|
<BacktrackCoverage index="0">
|
|
<Glyph value="space"/>
|
|
<Glyph value="semicolon"/>
|
|
<Glyph value="comma"/>
|
|
</BacktrackCoverage>
|
|
<!-- InputGlyphCount=1 -->
|
|
<InputCoverage index="0">
|
|
<Glyph value="e"/>
|
|
</InputCoverage>
|
|
<!-- LookAheadGlyphCount=0 -->
|
|
<!-- SubstCount=1 -->
|
|
<SubstLookupRecord index="0">
|
|
<SequenceIndex value="0"/>
|
|
<LookupListIndex value="5"/>
|
|
</SubstLookupRecord>
|
|
</ChainContextSubst>
|
|
</Lookup>
|
|
<Lookup index="7">
|
|
<!-- LookupType=4 -->
|
|
<LookupFlag value="0"/>
|
|
<!-- SubTableCount=1 -->
|
|
<LigatureSubst index="0">
|
|
<LigatureSet glyph="C">
|
|
<Ligature components="T" glyph="c_t"/>
|
|
<Ligature components="t" glyph="c_t"/>
|
|
</LigatureSet>
|
|
<LigatureSet glyph="c">
|
|
<Ligature components="T" glyph="c_t"/>
|
|
<Ligature components="t" glyph="c_t"/>
|
|
</LigatureSet>
|
|
</LigatureSubst>
|
|
</Lookup>
|
|
<Lookup index="8">
|
|
<!-- LookupType=6 -->
|
|
<LookupFlag value="0"/>
|
|
<!-- SubTableCount=1 -->
|
|
<ChainContextSubst index="0" Format="3">
|
|
<!-- BacktrackGlyphCount=1 -->
|
|
<BacktrackCoverage index="0">
|
|
<Glyph value="A"/>
|
|
</BacktrackCoverage>
|
|
<!-- InputGlyphCount=2 -->
|
|
<InputCoverage index="0">
|
|
<Glyph value="C"/>
|
|
<Glyph value="c"/>
|
|
</InputCoverage>
|
|
<InputCoverage index="1">
|
|
<Glyph value="T"/>
|
|
<Glyph value="t"/>
|
|
</InputCoverage>
|
|
<!-- LookAheadGlyphCount=1 -->
|
|
<LookAheadCoverage index="0">
|
|
<Glyph value="Z"/>
|
|
</LookAheadCoverage>
|
|
<!-- SubstCount=1 -->
|
|
<SubstLookupRecord index="0">
|
|
<SequenceIndex value="0"/>
|
|
<LookupListIndex value="7"/>
|
|
</SubstLookupRecord>
|
|
</ChainContextSubst>
|
|
</Lookup>
|
|
<Lookup index="9">
|
|
<!-- LookupType=6 -->
|
|
<LookupFlag value="0"/>
|
|
<!-- SubTableCount=1 -->
|
|
<ChainContextSubst index="0" Format="3">
|
|
<!-- BacktrackGlyphCount=3 -->
|
|
<BacktrackCoverage index="0">
|
|
<Glyph value="E"/>
|
|
</BacktrackCoverage>
|
|
<BacktrackCoverage index="1">
|
|
<Glyph value="D"/>
|
|
</BacktrackCoverage>
|
|
<BacktrackCoverage index="2">
|
|
<Glyph value="A"/>
|
|
</BacktrackCoverage>
|
|
<!-- InputGlyphCount=1 -->
|
|
<InputCoverage index="0">
|
|
<Glyph value="c_t"/>
|
|
</InputCoverage>
|
|
<!-- LookAheadGlyphCount=3 -->
|
|
<LookAheadCoverage index="0">
|
|
<Glyph value="V"/>
|
|
</LookAheadCoverage>
|
|
<LookAheadCoverage index="1">
|
|
<Glyph value="W"/>
|
|
</LookAheadCoverage>
|
|
<LookAheadCoverage index="2">
|
|
<Glyph value="X"/>
|
|
</LookAheadCoverage>
|
|
<!-- SubstCount=1 -->
|
|
<SubstLookupRecord index="0">
|
|
<SequenceIndex value="0"/>
|
|
<LookupListIndex value="4"/>
|
|
</SubstLookupRecord>
|
|
</ChainContextSubst>
|
|
</Lookup>
|
|
</LookupList>
|
|
</GSUB>
|
|
|
|
</ttFont>
|