[otlLib] choose most compact contextual lookup format (#3439)
* [otlLib] chose most compact contextual lookup format Fixes https://github.com/fonttools/fonttools/issues/2934
This commit is contained in:
parent
1e989abec4
commit
96054e8152
@ -6,6 +6,7 @@ from fontTools.ttLib.tables import otTables as ot
|
||||
from fontTools.ttLib.tables.otBase import (
|
||||
ValueRecord,
|
||||
valueRecordFormatDict,
|
||||
OTLOffsetOverflowError,
|
||||
OTTableWriter,
|
||||
CountReference,
|
||||
)
|
||||
@ -350,16 +351,14 @@ class ChainContextualBuilder(LookupBuilder):
|
||||
return [x for x in ruleset if len(x.rules) > 0]
|
||||
|
||||
def getCompiledSize_(self, subtables):
|
||||
size = 0
|
||||
for st in subtables:
|
||||
w = OTTableWriter()
|
||||
w["LookupType"] = CountReference(
|
||||
{"LookupType": st.LookupType}, "LookupType"
|
||||
)
|
||||
if not subtables:
|
||||
return 0
|
||||
# We need to make a copy here because compiling
|
||||
# modifies the subtable (finalizing formats etc.)
|
||||
copy.deepcopy(st).compile(w, self.font)
|
||||
size += len(w.getAllData())
|
||||
table = self.buildLookup_(copy.deepcopy(subtables))
|
||||
w = OTTableWriter()
|
||||
table.compile(w, self.font)
|
||||
size = len(w.getAllData())
|
||||
return size
|
||||
|
||||
def build(self):
|
||||
@ -414,7 +413,7 @@ class ChainContextualBuilder(LookupBuilder):
|
||||
if candidates[i]:
|
||||
try:
|
||||
self.getCompiledSize_(candidates[i])
|
||||
except Exception as e:
|
||||
except OTLOffsetOverflowError as e:
|
||||
log.warning(
|
||||
"Contextual format %i at %s overflowed (%s)"
|
||||
% (i, str(self.location), e)
|
||||
|
@ -62,9 +62,11 @@
|
||||
<Lookup index="1">
|
||||
<LookupType value="5"/>
|
||||
<LookupFlag value="0"/>
|
||||
<!-- SubTableCount=1 -->
|
||||
<ContextSubst index="0" Format="2">
|
||||
<Coverage>
|
||||
<!-- SubTableCount=3 -->
|
||||
<ContextSubst index="0" Format="3">
|
||||
<!-- GlyphCount=3 -->
|
||||
<!-- SubstCount=0 -->
|
||||
<Coverage index="0">
|
||||
<Glyph value="a"/>
|
||||
<Glyph value="b"/>
|
||||
<Glyph value="c"/>
|
||||
@ -92,91 +94,160 @@
|
||||
<Glyph value="y"/>
|
||||
<Glyph value="z"/>
|
||||
</Coverage>
|
||||
<ClassDef>
|
||||
<ClassDef glyph="A" class="3"/>
|
||||
<ClassDef glyph="B" class="3"/>
|
||||
<ClassDef glyph="C" class="3"/>
|
||||
<ClassDef glyph="D" class="3"/>
|
||||
<ClassDef glyph="E" class="3"/>
|
||||
<ClassDef glyph="F" class="3"/>
|
||||
<ClassDef glyph="G" class="3"/>
|
||||
<ClassDef glyph="H" class="3"/>
|
||||
<ClassDef glyph="I" class="2"/>
|
||||
<ClassDef glyph="J" class="2"/>
|
||||
<ClassDef glyph="K" class="2"/>
|
||||
<ClassDef glyph="L" class="2"/>
|
||||
<ClassDef glyph="M" class="2"/>
|
||||
<ClassDef glyph="N" class="2"/>
|
||||
<ClassDef glyph="O" class="2"/>
|
||||
<ClassDef glyph="P" class="2"/>
|
||||
<ClassDef glyph="Q" class="2"/>
|
||||
<ClassDef glyph="R" class="2"/>
|
||||
<ClassDef glyph="S" class="2"/>
|
||||
<ClassDef glyph="T" class="2"/>
|
||||
<ClassDef glyph="U" class="2"/>
|
||||
<ClassDef glyph="V" class="2"/>
|
||||
<ClassDef glyph="W" class="2"/>
|
||||
<ClassDef glyph="X" class="2"/>
|
||||
<ClassDef glyph="Y" class="2"/>
|
||||
<ClassDef glyph="Z" class="2"/>
|
||||
<ClassDef glyph="a" class="1"/>
|
||||
<ClassDef glyph="b" class="1"/>
|
||||
<ClassDef glyph="c" class="1"/>
|
||||
<ClassDef glyph="d" class="1"/>
|
||||
<ClassDef glyph="e" class="1"/>
|
||||
<ClassDef glyph="f" class="1"/>
|
||||
<ClassDef glyph="g" class="1"/>
|
||||
<ClassDef glyph="h" class="1"/>
|
||||
<ClassDef glyph="i" class="1"/>
|
||||
<ClassDef glyph="j" class="1"/>
|
||||
<ClassDef glyph="k" class="1"/>
|
||||
<ClassDef glyph="l" class="1"/>
|
||||
<ClassDef glyph="m" class="1"/>
|
||||
<ClassDef glyph="n" class="1"/>
|
||||
<ClassDef glyph="o" class="1"/>
|
||||
<ClassDef glyph="p" class="1"/>
|
||||
<ClassDef glyph="q" class="1"/>
|
||||
<ClassDef glyph="r" class="1"/>
|
||||
<ClassDef glyph="s" class="1"/>
|
||||
<ClassDef glyph="t" class="1"/>
|
||||
<ClassDef glyph="u" class="1"/>
|
||||
<ClassDef glyph="v" class="1"/>
|
||||
<ClassDef glyph="w" class="1"/>
|
||||
<ClassDef glyph="x" class="1"/>
|
||||
<ClassDef glyph="y" class="1"/>
|
||||
<ClassDef glyph="z" class="1"/>
|
||||
</ClassDef>
|
||||
<!-- SubClassSetCount=4 -->
|
||||
<SubClassSet index="0">
|
||||
<!-- SubClassRuleCount=0 -->
|
||||
</SubClassSet>
|
||||
<SubClassSet index="1">
|
||||
<!-- SubClassRuleCount=3 -->
|
||||
<SubClassRule index="0">
|
||||
<Coverage index="1">
|
||||
<Glyph value="A"/>
|
||||
<Glyph value="B"/>
|
||||
<Glyph value="C"/>
|
||||
<Glyph value="D"/>
|
||||
<Glyph value="E"/>
|
||||
<Glyph value="F"/>
|
||||
<Glyph value="G"/>
|
||||
<Glyph value="H"/>
|
||||
</Coverage>
|
||||
<Coverage index="2">
|
||||
<Glyph value="I"/>
|
||||
<Glyph value="J"/>
|
||||
<Glyph value="K"/>
|
||||
<Glyph value="L"/>
|
||||
<Glyph value="M"/>
|
||||
<Glyph value="N"/>
|
||||
<Glyph value="O"/>
|
||||
<Glyph value="P"/>
|
||||
<Glyph value="Q"/>
|
||||
<Glyph value="R"/>
|
||||
<Glyph value="S"/>
|
||||
<Glyph value="T"/>
|
||||
<Glyph value="U"/>
|
||||
<Glyph value="V"/>
|
||||
<Glyph value="W"/>
|
||||
<Glyph value="X"/>
|
||||
<Glyph value="Y"/>
|
||||
<Glyph value="Z"/>
|
||||
</Coverage>
|
||||
</ContextSubst>
|
||||
<ContextSubst index="1" Format="3">
|
||||
<!-- GlyphCount=3 -->
|
||||
<!-- SubstCount=0 -->
|
||||
<Class index="0" value="3"/>
|
||||
<Class index="1" value="2"/>
|
||||
</SubClassRule>
|
||||
<SubClassRule index="1">
|
||||
<Coverage index="0">
|
||||
<Glyph value="a"/>
|
||||
<Glyph value="b"/>
|
||||
<Glyph value="c"/>
|
||||
<Glyph value="d"/>
|
||||
<Glyph value="e"/>
|
||||
<Glyph value="f"/>
|
||||
<Glyph value="g"/>
|
||||
<Glyph value="h"/>
|
||||
<Glyph value="i"/>
|
||||
<Glyph value="j"/>
|
||||
<Glyph value="k"/>
|
||||
<Glyph value="l"/>
|
||||
<Glyph value="m"/>
|
||||
<Glyph value="n"/>
|
||||
<Glyph value="o"/>
|
||||
<Glyph value="p"/>
|
||||
<Glyph value="q"/>
|
||||
<Glyph value="r"/>
|
||||
<Glyph value="s"/>
|
||||
<Glyph value="t"/>
|
||||
<Glyph value="u"/>
|
||||
<Glyph value="v"/>
|
||||
<Glyph value="w"/>
|
||||
<Glyph value="x"/>
|
||||
<Glyph value="y"/>
|
||||
<Glyph value="z"/>
|
||||
</Coverage>
|
||||
<Coverage index="1">
|
||||
<Glyph value="A"/>
|
||||
<Glyph value="B"/>
|
||||
<Glyph value="C"/>
|
||||
<Glyph value="D"/>
|
||||
<Glyph value="E"/>
|
||||
<Glyph value="F"/>
|
||||
<Glyph value="G"/>
|
||||
<Glyph value="H"/>
|
||||
</Coverage>
|
||||
<Coverage index="2">
|
||||
<Glyph value="I"/>
|
||||
<Glyph value="J"/>
|
||||
<Glyph value="K"/>
|
||||
<Glyph value="L"/>
|
||||
<Glyph value="M"/>
|
||||
<Glyph value="N"/>
|
||||
<Glyph value="O"/>
|
||||
<Glyph value="P"/>
|
||||
<Glyph value="Q"/>
|
||||
<Glyph value="R"/>
|
||||
<Glyph value="S"/>
|
||||
<Glyph value="T"/>
|
||||
<Glyph value="U"/>
|
||||
<Glyph value="V"/>
|
||||
<Glyph value="W"/>
|
||||
<Glyph value="X"/>
|
||||
<Glyph value="Y"/>
|
||||
<Glyph value="Z"/>
|
||||
</Coverage>
|
||||
</ContextSubst>
|
||||
<ContextSubst index="2" Format="3">
|
||||
<!-- GlyphCount=3 -->
|
||||
<!-- SubstCount=0 -->
|
||||
<Class index="0" value="3"/>
|
||||
<Class index="1" value="2"/>
|
||||
</SubClassRule>
|
||||
<SubClassRule index="2">
|
||||
<!-- GlyphCount=3 -->
|
||||
<!-- SubstCount=0 -->
|
||||
<Class index="0" value="2"/>
|
||||
<Class index="1" value="3"/>
|
||||
</SubClassRule>
|
||||
</SubClassSet>
|
||||
<SubClassSet index="2">
|
||||
<!-- SubClassRuleCount=0 -->
|
||||
</SubClassSet>
|
||||
<SubClassSet index="3">
|
||||
<!-- SubClassRuleCount=0 -->
|
||||
</SubClassSet>
|
||||
<Coverage index="0">
|
||||
<Glyph value="a"/>
|
||||
<Glyph value="b"/>
|
||||
<Glyph value="c"/>
|
||||
<Glyph value="d"/>
|
||||
<Glyph value="e"/>
|
||||
<Glyph value="f"/>
|
||||
<Glyph value="g"/>
|
||||
<Glyph value="h"/>
|
||||
<Glyph value="i"/>
|
||||
<Glyph value="j"/>
|
||||
<Glyph value="k"/>
|
||||
<Glyph value="l"/>
|
||||
<Glyph value="m"/>
|
||||
<Glyph value="n"/>
|
||||
<Glyph value="o"/>
|
||||
<Glyph value="p"/>
|
||||
<Glyph value="q"/>
|
||||
<Glyph value="r"/>
|
||||
<Glyph value="s"/>
|
||||
<Glyph value="t"/>
|
||||
<Glyph value="u"/>
|
||||
<Glyph value="v"/>
|
||||
<Glyph value="w"/>
|
||||
<Glyph value="x"/>
|
||||
<Glyph value="y"/>
|
||||
<Glyph value="z"/>
|
||||
</Coverage>
|
||||
<Coverage index="1">
|
||||
<Glyph value="I"/>
|
||||
<Glyph value="J"/>
|
||||
<Glyph value="K"/>
|
||||
<Glyph value="L"/>
|
||||
<Glyph value="M"/>
|
||||
<Glyph value="N"/>
|
||||
<Glyph value="O"/>
|
||||
<Glyph value="P"/>
|
||||
<Glyph value="Q"/>
|
||||
<Glyph value="R"/>
|
||||
<Glyph value="S"/>
|
||||
<Glyph value="T"/>
|
||||
<Glyph value="U"/>
|
||||
<Glyph value="V"/>
|
||||
<Glyph value="W"/>
|
||||
<Glyph value="X"/>
|
||||
<Glyph value="Y"/>
|
||||
<Glyph value="Z"/>
|
||||
</Coverage>
|
||||
<Coverage index="2">
|
||||
<Glyph value="A"/>
|
||||
<Glyph value="B"/>
|
||||
<Glyph value="C"/>
|
||||
<Glyph value="D"/>
|
||||
<Glyph value="E"/>
|
||||
<Glyph value="F"/>
|
||||
<Glyph value="G"/>
|
||||
<Glyph value="H"/>
|
||||
</Coverage>
|
||||
</ContextSubst>
|
||||
</Lookup>
|
||||
<Lookup index="2">
|
||||
|
@ -72,9 +72,41 @@
|
||||
<Lookup index="1">
|
||||
<LookupType value="6"/>
|
||||
<LookupFlag value="0"/>
|
||||
<!-- SubTableCount=1 -->
|
||||
<ChainContextSubst index="0" Format="2">
|
||||
<Coverage>
|
||||
<!-- SubTableCount=3 -->
|
||||
<ChainContextSubst index="0" Format="3">
|
||||
<!-- BacktrackGlyphCount=2 -->
|
||||
<BacktrackCoverage index="0">
|
||||
<Glyph value="I"/>
|
||||
<Glyph value="J"/>
|
||||
<Glyph value="K"/>
|
||||
<Glyph value="L"/>
|
||||
<Glyph value="M"/>
|
||||
<Glyph value="N"/>
|
||||
<Glyph value="O"/>
|
||||
<Glyph value="P"/>
|
||||
<Glyph value="Q"/>
|
||||
<Glyph value="R"/>
|
||||
<Glyph value="S"/>
|
||||
<Glyph value="T"/>
|
||||
<Glyph value="U"/>
|
||||
<Glyph value="V"/>
|
||||
<Glyph value="W"/>
|
||||
<Glyph value="X"/>
|
||||
<Glyph value="Y"/>
|
||||
<Glyph value="Z"/>
|
||||
</BacktrackCoverage>
|
||||
<BacktrackCoverage index="1">
|
||||
<Glyph value="A"/>
|
||||
<Glyph value="B"/>
|
||||
<Glyph value="C"/>
|
||||
<Glyph value="D"/>
|
||||
<Glyph value="E"/>
|
||||
<Glyph value="F"/>
|
||||
<Glyph value="G"/>
|
||||
<Glyph value="H"/>
|
||||
</BacktrackCoverage>
|
||||
<!-- InputGlyphCount=3 -->
|
||||
<InputCoverage index="0">
|
||||
<Glyph value="a"/>
|
||||
<Glyph value="b"/>
|
||||
<Glyph value="c"/>
|
||||
@ -101,134 +133,227 @@
|
||||
<Glyph value="x"/>
|
||||
<Glyph value="y"/>
|
||||
<Glyph value="z"/>
|
||||
</Coverage>
|
||||
<BacktrackClassDef>
|
||||
<ClassDef glyph="A" class="2"/>
|
||||
<ClassDef glyph="B" class="2"/>
|
||||
<ClassDef glyph="C" class="2"/>
|
||||
<ClassDef glyph="D" class="2"/>
|
||||
<ClassDef glyph="E" class="2"/>
|
||||
<ClassDef glyph="F" class="2"/>
|
||||
<ClassDef glyph="G" class="2"/>
|
||||
<ClassDef glyph="H" class="2"/>
|
||||
<ClassDef glyph="I" class="1"/>
|
||||
<ClassDef glyph="J" class="1"/>
|
||||
<ClassDef glyph="K" class="1"/>
|
||||
<ClassDef glyph="L" class="1"/>
|
||||
<ClassDef glyph="M" class="1"/>
|
||||
<ClassDef glyph="N" class="1"/>
|
||||
<ClassDef glyph="O" class="1"/>
|
||||
<ClassDef glyph="P" class="1"/>
|
||||
<ClassDef glyph="Q" class="1"/>
|
||||
<ClassDef glyph="R" class="1"/>
|
||||
<ClassDef glyph="S" class="1"/>
|
||||
<ClassDef glyph="T" class="1"/>
|
||||
<ClassDef glyph="U" class="1"/>
|
||||
<ClassDef glyph="V" class="1"/>
|
||||
<ClassDef glyph="W" class="1"/>
|
||||
<ClassDef glyph="X" class="1"/>
|
||||
<ClassDef glyph="Y" class="1"/>
|
||||
<ClassDef glyph="Z" class="1"/>
|
||||
</BacktrackClassDef>
|
||||
<InputClassDef>
|
||||
<ClassDef glyph="A" class="3"/>
|
||||
<ClassDef glyph="B" class="3"/>
|
||||
<ClassDef glyph="C" class="3"/>
|
||||
<ClassDef glyph="D" class="3"/>
|
||||
<ClassDef glyph="E" class="3"/>
|
||||
<ClassDef glyph="F" class="3"/>
|
||||
<ClassDef glyph="G" class="3"/>
|
||||
<ClassDef glyph="H" class="3"/>
|
||||
<ClassDef glyph="I" class="2"/>
|
||||
<ClassDef glyph="J" class="2"/>
|
||||
<ClassDef glyph="K" class="2"/>
|
||||
<ClassDef glyph="L" class="2"/>
|
||||
<ClassDef glyph="M" class="2"/>
|
||||
<ClassDef glyph="N" class="2"/>
|
||||
<ClassDef glyph="O" class="2"/>
|
||||
<ClassDef glyph="P" class="2"/>
|
||||
<ClassDef glyph="Q" class="2"/>
|
||||
<ClassDef glyph="R" class="2"/>
|
||||
<ClassDef glyph="S" class="2"/>
|
||||
<ClassDef glyph="T" class="2"/>
|
||||
<ClassDef glyph="U" class="2"/>
|
||||
<ClassDef glyph="V" class="2"/>
|
||||
<ClassDef glyph="W" class="2"/>
|
||||
<ClassDef glyph="X" class="2"/>
|
||||
<ClassDef glyph="Y" class="2"/>
|
||||
<ClassDef glyph="Z" class="2"/>
|
||||
<ClassDef glyph="a" class="1"/>
|
||||
<ClassDef glyph="b" class="1"/>
|
||||
<ClassDef glyph="c" class="1"/>
|
||||
<ClassDef glyph="d" class="1"/>
|
||||
<ClassDef glyph="e" class="1"/>
|
||||
<ClassDef glyph="f" class="1"/>
|
||||
<ClassDef glyph="g" class="1"/>
|
||||
<ClassDef glyph="h" class="1"/>
|
||||
<ClassDef glyph="i" class="1"/>
|
||||
<ClassDef glyph="j" class="1"/>
|
||||
<ClassDef glyph="k" class="1"/>
|
||||
<ClassDef glyph="l" class="1"/>
|
||||
<ClassDef glyph="m" class="1"/>
|
||||
<ClassDef glyph="n" class="1"/>
|
||||
<ClassDef glyph="o" class="1"/>
|
||||
<ClassDef glyph="p" class="1"/>
|
||||
<ClassDef glyph="q" class="1"/>
|
||||
<ClassDef glyph="r" class="1"/>
|
||||
<ClassDef glyph="s" class="1"/>
|
||||
<ClassDef glyph="t" class="1"/>
|
||||
<ClassDef glyph="u" class="1"/>
|
||||
<ClassDef glyph="v" class="1"/>
|
||||
<ClassDef glyph="w" class="1"/>
|
||||
<ClassDef glyph="x" class="1"/>
|
||||
<ClassDef glyph="y" class="1"/>
|
||||
<ClassDef glyph="z" class="1"/>
|
||||
</InputClassDef>
|
||||
<LookAheadClassDef>
|
||||
</LookAheadClassDef>
|
||||
<!-- ChainSubClassSetCount=4 -->
|
||||
<ChainSubClassSet index="0">
|
||||
<!-- ChainSubClassRuleCount=0 -->
|
||||
</ChainSubClassSet>
|
||||
<ChainSubClassSet index="1">
|
||||
<!-- ChainSubClassRuleCount=3 -->
|
||||
<ChainSubClassRule index="0">
|
||||
<!-- BacktrackGlyphCount=2 -->
|
||||
<Backtrack index="0" value="1"/>
|
||||
<Backtrack index="1" value="2"/>
|
||||
<!-- InputGlyphCount=3 -->
|
||||
<Input index="0" value="3"/>
|
||||
<Input index="1" value="2"/>
|
||||
</InputCoverage>
|
||||
<InputCoverage index="1">
|
||||
<Glyph value="A"/>
|
||||
<Glyph value="B"/>
|
||||
<Glyph value="C"/>
|
||||
<Glyph value="D"/>
|
||||
<Glyph value="E"/>
|
||||
<Glyph value="F"/>
|
||||
<Glyph value="G"/>
|
||||
<Glyph value="H"/>
|
||||
</InputCoverage>
|
||||
<InputCoverage index="2">
|
||||
<Glyph value="I"/>
|
||||
<Glyph value="J"/>
|
||||
<Glyph value="K"/>
|
||||
<Glyph value="L"/>
|
||||
<Glyph value="M"/>
|
||||
<Glyph value="N"/>
|
||||
<Glyph value="O"/>
|
||||
<Glyph value="P"/>
|
||||
<Glyph value="Q"/>
|
||||
<Glyph value="R"/>
|
||||
<Glyph value="S"/>
|
||||
<Glyph value="T"/>
|
||||
<Glyph value="U"/>
|
||||
<Glyph value="V"/>
|
||||
<Glyph value="W"/>
|
||||
<Glyph value="X"/>
|
||||
<Glyph value="Y"/>
|
||||
<Glyph value="Z"/>
|
||||
</InputCoverage>
|
||||
<!-- LookAheadGlyphCount=0 -->
|
||||
<!-- SubstCount=0 -->
|
||||
</ChainSubClassRule>
|
||||
<ChainSubClassRule index="1">
|
||||
</ChainContextSubst>
|
||||
<ChainContextSubst index="1" Format="3">
|
||||
<!-- BacktrackGlyphCount=2 -->
|
||||
<Backtrack index="0" value="2"/>
|
||||
<Backtrack index="1" value="1"/>
|
||||
<BacktrackCoverage index="0">
|
||||
<Glyph value="A"/>
|
||||
<Glyph value="B"/>
|
||||
<Glyph value="C"/>
|
||||
<Glyph value="D"/>
|
||||
<Glyph value="E"/>
|
||||
<Glyph value="F"/>
|
||||
<Glyph value="G"/>
|
||||
<Glyph value="H"/>
|
||||
</BacktrackCoverage>
|
||||
<BacktrackCoverage index="1">
|
||||
<Glyph value="I"/>
|
||||
<Glyph value="J"/>
|
||||
<Glyph value="K"/>
|
||||
<Glyph value="L"/>
|
||||
<Glyph value="M"/>
|
||||
<Glyph value="N"/>
|
||||
<Glyph value="O"/>
|
||||
<Glyph value="P"/>
|
||||
<Glyph value="Q"/>
|
||||
<Glyph value="R"/>
|
||||
<Glyph value="S"/>
|
||||
<Glyph value="T"/>
|
||||
<Glyph value="U"/>
|
||||
<Glyph value="V"/>
|
||||
<Glyph value="W"/>
|
||||
<Glyph value="X"/>
|
||||
<Glyph value="Y"/>
|
||||
<Glyph value="Z"/>
|
||||
</BacktrackCoverage>
|
||||
<!-- InputGlyphCount=3 -->
|
||||
<Input index="0" value="3"/>
|
||||
<Input index="1" value="2"/>
|
||||
<InputCoverage index="0">
|
||||
<Glyph value="a"/>
|
||||
<Glyph value="b"/>
|
||||
<Glyph value="c"/>
|
||||
<Glyph value="d"/>
|
||||
<Glyph value="e"/>
|
||||
<Glyph value="f"/>
|
||||
<Glyph value="g"/>
|
||||
<Glyph value="h"/>
|
||||
<Glyph value="i"/>
|
||||
<Glyph value="j"/>
|
||||
<Glyph value="k"/>
|
||||
<Glyph value="l"/>
|
||||
<Glyph value="m"/>
|
||||
<Glyph value="n"/>
|
||||
<Glyph value="o"/>
|
||||
<Glyph value="p"/>
|
||||
<Glyph value="q"/>
|
||||
<Glyph value="r"/>
|
||||
<Glyph value="s"/>
|
||||
<Glyph value="t"/>
|
||||
<Glyph value="u"/>
|
||||
<Glyph value="v"/>
|
||||
<Glyph value="w"/>
|
||||
<Glyph value="x"/>
|
||||
<Glyph value="y"/>
|
||||
<Glyph value="z"/>
|
||||
</InputCoverage>
|
||||
<InputCoverage index="1">
|
||||
<Glyph value="A"/>
|
||||
<Glyph value="B"/>
|
||||
<Glyph value="C"/>
|
||||
<Glyph value="D"/>
|
||||
<Glyph value="E"/>
|
||||
<Glyph value="F"/>
|
||||
<Glyph value="G"/>
|
||||
<Glyph value="H"/>
|
||||
</InputCoverage>
|
||||
<InputCoverage index="2">
|
||||
<Glyph value="I"/>
|
||||
<Glyph value="J"/>
|
||||
<Glyph value="K"/>
|
||||
<Glyph value="L"/>
|
||||
<Glyph value="M"/>
|
||||
<Glyph value="N"/>
|
||||
<Glyph value="O"/>
|
||||
<Glyph value="P"/>
|
||||
<Glyph value="Q"/>
|
||||
<Glyph value="R"/>
|
||||
<Glyph value="S"/>
|
||||
<Glyph value="T"/>
|
||||
<Glyph value="U"/>
|
||||
<Glyph value="V"/>
|
||||
<Glyph value="W"/>
|
||||
<Glyph value="X"/>
|
||||
<Glyph value="Y"/>
|
||||
<Glyph value="Z"/>
|
||||
</InputCoverage>
|
||||
<!-- LookAheadGlyphCount=0 -->
|
||||
<!-- SubstCount=0 -->
|
||||
</ChainSubClassRule>
|
||||
<ChainSubClassRule index="2">
|
||||
</ChainContextSubst>
|
||||
<ChainContextSubst index="2" Format="3">
|
||||
<!-- BacktrackGlyphCount=2 -->
|
||||
<Backtrack index="0" value="1"/>
|
||||
<Backtrack index="1" value="2"/>
|
||||
<BacktrackCoverage index="0">
|
||||
<Glyph value="I"/>
|
||||
<Glyph value="J"/>
|
||||
<Glyph value="K"/>
|
||||
<Glyph value="L"/>
|
||||
<Glyph value="M"/>
|
||||
<Glyph value="N"/>
|
||||
<Glyph value="O"/>
|
||||
<Glyph value="P"/>
|
||||
<Glyph value="Q"/>
|
||||
<Glyph value="R"/>
|
||||
<Glyph value="S"/>
|
||||
<Glyph value="T"/>
|
||||
<Glyph value="U"/>
|
||||
<Glyph value="V"/>
|
||||
<Glyph value="W"/>
|
||||
<Glyph value="X"/>
|
||||
<Glyph value="Y"/>
|
||||
<Glyph value="Z"/>
|
||||
</BacktrackCoverage>
|
||||
<BacktrackCoverage index="1">
|
||||
<Glyph value="A"/>
|
||||
<Glyph value="B"/>
|
||||
<Glyph value="C"/>
|
||||
<Glyph value="D"/>
|
||||
<Glyph value="E"/>
|
||||
<Glyph value="F"/>
|
||||
<Glyph value="G"/>
|
||||
<Glyph value="H"/>
|
||||
</BacktrackCoverage>
|
||||
<!-- InputGlyphCount=3 -->
|
||||
<Input index="0" value="2"/>
|
||||
<Input index="1" value="3"/>
|
||||
<InputCoverage index="0">
|
||||
<Glyph value="a"/>
|
||||
<Glyph value="b"/>
|
||||
<Glyph value="c"/>
|
||||
<Glyph value="d"/>
|
||||
<Glyph value="e"/>
|
||||
<Glyph value="f"/>
|
||||
<Glyph value="g"/>
|
||||
<Glyph value="h"/>
|
||||
<Glyph value="i"/>
|
||||
<Glyph value="j"/>
|
||||
<Glyph value="k"/>
|
||||
<Glyph value="l"/>
|
||||
<Glyph value="m"/>
|
||||
<Glyph value="n"/>
|
||||
<Glyph value="o"/>
|
||||
<Glyph value="p"/>
|
||||
<Glyph value="q"/>
|
||||
<Glyph value="r"/>
|
||||
<Glyph value="s"/>
|
||||
<Glyph value="t"/>
|
||||
<Glyph value="u"/>
|
||||
<Glyph value="v"/>
|
||||
<Glyph value="w"/>
|
||||
<Glyph value="x"/>
|
||||
<Glyph value="y"/>
|
||||
<Glyph value="z"/>
|
||||
</InputCoverage>
|
||||
<InputCoverage index="1">
|
||||
<Glyph value="I"/>
|
||||
<Glyph value="J"/>
|
||||
<Glyph value="K"/>
|
||||
<Glyph value="L"/>
|
||||
<Glyph value="M"/>
|
||||
<Glyph value="N"/>
|
||||
<Glyph value="O"/>
|
||||
<Glyph value="P"/>
|
||||
<Glyph value="Q"/>
|
||||
<Glyph value="R"/>
|
||||
<Glyph value="S"/>
|
||||
<Glyph value="T"/>
|
||||
<Glyph value="U"/>
|
||||
<Glyph value="V"/>
|
||||
<Glyph value="W"/>
|
||||
<Glyph value="X"/>
|
||||
<Glyph value="Y"/>
|
||||
<Glyph value="Z"/>
|
||||
</InputCoverage>
|
||||
<InputCoverage index="2">
|
||||
<Glyph value="A"/>
|
||||
<Glyph value="B"/>
|
||||
<Glyph value="C"/>
|
||||
<Glyph value="D"/>
|
||||
<Glyph value="E"/>
|
||||
<Glyph value="F"/>
|
||||
<Glyph value="G"/>
|
||||
<Glyph value="H"/>
|
||||
</InputCoverage>
|
||||
<!-- LookAheadGlyphCount=0 -->
|
||||
<!-- SubstCount=0 -->
|
||||
</ChainSubClassRule>
|
||||
</ChainSubClassSet>
|
||||
<ChainSubClassSet index="2">
|
||||
<!-- ChainSubClassRuleCount=0 -->
|
||||
</ChainSubClassSet>
|
||||
<ChainSubClassSet index="3">
|
||||
<!-- ChainSubClassRuleCount=0 -->
|
||||
</ChainSubClassSet>
|
||||
</ChainContextSubst>
|
||||
</Lookup>
|
||||
<Lookup index="2">
|
||||
|
@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<ttFont sfntVersion="true" ttLibVersion="3.0">
|
||||
<ttFont>
|
||||
|
||||
<GSUB>
|
||||
<Version value="0x00010000"/>
|
||||
@ -32,115 +32,111 @@
|
||||
<Lookup index="0">
|
||||
<LookupType value="6"/>
|
||||
<LookupFlag value="0"/>
|
||||
<!-- SubTableCount=1 -->
|
||||
<ChainContextSubst index="0" Format="2">
|
||||
<Coverage>
|
||||
<Glyph value="a"/>
|
||||
</Coverage>
|
||||
<BacktrackClassDef>
|
||||
<ClassDef glyph="a" class="1"/>
|
||||
<ClassDef glyph="b" class="1"/>
|
||||
<ClassDef glyph="c" class="1"/>
|
||||
<ClassDef glyph="d" class="1"/>
|
||||
<ClassDef glyph="e" class="1"/>
|
||||
<ClassDef glyph="f" class="1"/>
|
||||
<ClassDef glyph="g" class="1"/>
|
||||
<ClassDef glyph="h" class="1"/>
|
||||
<ClassDef glyph="i" class="1"/>
|
||||
<ClassDef glyph="j" class="1"/>
|
||||
<ClassDef glyph="k" class="1"/>
|
||||
<ClassDef glyph="l" class="1"/>
|
||||
<ClassDef glyph="m" class="1"/>
|
||||
<ClassDef glyph="n" class="1"/>
|
||||
<ClassDef glyph="o" class="1"/>
|
||||
<ClassDef glyph="p" class="1"/>
|
||||
<ClassDef glyph="q" class="1"/>
|
||||
<ClassDef glyph="r" class="1"/>
|
||||
<ClassDef glyph="s" class="1"/>
|
||||
<ClassDef glyph="t" class="1"/>
|
||||
<ClassDef glyph="u" class="1"/>
|
||||
<ClassDef glyph="v" class="1"/>
|
||||
<ClassDef glyph="w" class="1"/>
|
||||
<ClassDef glyph="x" class="1"/>
|
||||
<ClassDef glyph="y" class="1"/>
|
||||
<ClassDef glyph="z" class="1"/>
|
||||
</BacktrackClassDef>
|
||||
<InputClassDef>
|
||||
<ClassDef glyph="a" class="1"/>
|
||||
<ClassDef glyph="d" class="2"/>
|
||||
<ClassDef glyph="n" class="3"/>
|
||||
</InputClassDef>
|
||||
<LookAheadClassDef>
|
||||
<ClassDef glyph="a" class="1"/>
|
||||
<ClassDef glyph="b" class="1"/>
|
||||
<ClassDef glyph="c" class="1"/>
|
||||
<ClassDef glyph="d" class="1"/>
|
||||
<ClassDef glyph="e" class="1"/>
|
||||
<ClassDef glyph="f" class="1"/>
|
||||
<ClassDef glyph="g" class="1"/>
|
||||
<ClassDef glyph="h" class="1"/>
|
||||
<ClassDef glyph="i" class="1"/>
|
||||
<ClassDef glyph="j" class="1"/>
|
||||
<ClassDef glyph="k" class="1"/>
|
||||
<ClassDef glyph="l" class="1"/>
|
||||
<ClassDef glyph="m" class="1"/>
|
||||
<ClassDef glyph="n" class="1"/>
|
||||
<ClassDef glyph="o" class="1"/>
|
||||
<ClassDef glyph="p" class="1"/>
|
||||
<ClassDef glyph="q" class="1"/>
|
||||
<ClassDef glyph="r" class="1"/>
|
||||
<ClassDef glyph="s" class="1"/>
|
||||
<ClassDef glyph="t" class="1"/>
|
||||
<ClassDef glyph="u" class="1"/>
|
||||
<ClassDef glyph="v" class="1"/>
|
||||
<ClassDef glyph="w" class="1"/>
|
||||
<ClassDef glyph="x" class="1"/>
|
||||
<ClassDef glyph="y" class="1"/>
|
||||
<ClassDef glyph="z" class="1"/>
|
||||
</LookAheadClassDef>
|
||||
<!-- ChainSubClassSetCount=4 -->
|
||||
<ChainSubClassSet index="0">
|
||||
<!-- ChainSubClassRuleCount=0 -->
|
||||
</ChainSubClassSet>
|
||||
<ChainSubClassSet index="1">
|
||||
<!-- ChainSubClassRuleCount=3 -->
|
||||
<ChainSubClassRule index="0">
|
||||
<!-- SubTableCount=3 -->
|
||||
<ChainContextSubst index="0" Format="3">
|
||||
<!-- BacktrackGlyphCount=1 -->
|
||||
<Backtrack index="0" value="1"/>
|
||||
<BacktrackCoverage index="0">
|
||||
<Glyph value="a"/>
|
||||
<Glyph value="b"/>
|
||||
<Glyph value="c"/>
|
||||
<Glyph value="d"/>
|
||||
<Glyph value="e"/>
|
||||
<Glyph value="f"/>
|
||||
<Glyph value="g"/>
|
||||
<Glyph value="h"/>
|
||||
<Glyph value="i"/>
|
||||
<Glyph value="j"/>
|
||||
<Glyph value="k"/>
|
||||
<Glyph value="l"/>
|
||||
<Glyph value="m"/>
|
||||
<Glyph value="n"/>
|
||||
<Glyph value="o"/>
|
||||
<Glyph value="p"/>
|
||||
<Glyph value="q"/>
|
||||
<Glyph value="r"/>
|
||||
<Glyph value="s"/>
|
||||
<Glyph value="t"/>
|
||||
<Glyph value="u"/>
|
||||
<Glyph value="v"/>
|
||||
<Glyph value="w"/>
|
||||
<Glyph value="x"/>
|
||||
<Glyph value="y"/>
|
||||
<Glyph value="z"/>
|
||||
</BacktrackCoverage>
|
||||
<!-- InputGlyphCount=3 -->
|
||||
<Input index="0" value="3"/>
|
||||
<Input index="1" value="2"/>
|
||||
<InputCoverage index="0">
|
||||
<Glyph value="a"/>
|
||||
</InputCoverage>
|
||||
<InputCoverage index="1">
|
||||
<Glyph value="n"/>
|
||||
</InputCoverage>
|
||||
<InputCoverage index="2">
|
||||
<Glyph value="d"/>
|
||||
</InputCoverage>
|
||||
<!-- LookAheadGlyphCount=0 -->
|
||||
<!-- SubstCount=0 -->
|
||||
</ChainSubClassRule>
|
||||
<ChainSubClassRule index="1">
|
||||
</ChainContextSubst>
|
||||
<ChainContextSubst index="1" Format="3">
|
||||
<!-- BacktrackGlyphCount=0 -->
|
||||
<!-- InputGlyphCount=3 -->
|
||||
<Input index="0" value="3"/>
|
||||
<Input index="1" value="2"/>
|
||||
<InputCoverage index="0">
|
||||
<Glyph value="a"/>
|
||||
</InputCoverage>
|
||||
<InputCoverage index="1">
|
||||
<Glyph value="n"/>
|
||||
</InputCoverage>
|
||||
<InputCoverage index="2">
|
||||
<Glyph value="d"/>
|
||||
</InputCoverage>
|
||||
<!-- LookAheadGlyphCount=1 -->
|
||||
<LookAhead index="0" value="1"/>
|
||||
<LookAheadCoverage index="0">
|
||||
<Glyph value="a"/>
|
||||
<Glyph value="b"/>
|
||||
<Glyph value="c"/>
|
||||
<Glyph value="d"/>
|
||||
<Glyph value="e"/>
|
||||
<Glyph value="f"/>
|
||||
<Glyph value="g"/>
|
||||
<Glyph value="h"/>
|
||||
<Glyph value="i"/>
|
||||
<Glyph value="j"/>
|
||||
<Glyph value="k"/>
|
||||
<Glyph value="l"/>
|
||||
<Glyph value="m"/>
|
||||
<Glyph value="n"/>
|
||||
<Glyph value="o"/>
|
||||
<Glyph value="p"/>
|
||||
<Glyph value="q"/>
|
||||
<Glyph value="r"/>
|
||||
<Glyph value="s"/>
|
||||
<Glyph value="t"/>
|
||||
<Glyph value="u"/>
|
||||
<Glyph value="v"/>
|
||||
<Glyph value="w"/>
|
||||
<Glyph value="x"/>
|
||||
<Glyph value="y"/>
|
||||
<Glyph value="z"/>
|
||||
</LookAheadCoverage>
|
||||
<!-- SubstCount=0 -->
|
||||
</ChainSubClassRule>
|
||||
<ChainSubClassRule index="2">
|
||||
</ChainContextSubst>
|
||||
<ChainContextSubst index="2" Format="3">
|
||||
<!-- BacktrackGlyphCount=0 -->
|
||||
<!-- InputGlyphCount=3 -->
|
||||
<Input index="0" value="3"/>
|
||||
<Input index="1" value="2"/>
|
||||
<InputCoverage index="0">
|
||||
<Glyph value="a"/>
|
||||
</InputCoverage>
|
||||
<InputCoverage index="1">
|
||||
<Glyph value="n"/>
|
||||
</InputCoverage>
|
||||
<InputCoverage index="2">
|
||||
<Glyph value="d"/>
|
||||
</InputCoverage>
|
||||
<!-- LookAheadGlyphCount=0 -->
|
||||
<!-- SubstCount=1 -->
|
||||
<SubstLookupRecord index="0">
|
||||
<SequenceIndex value="0"/>
|
||||
<LookupListIndex value="1"/>
|
||||
</SubstLookupRecord>
|
||||
</ChainSubClassRule>
|
||||
</ChainSubClassSet>
|
||||
<ChainSubClassSet index="2">
|
||||
<!-- ChainSubClassRuleCount=0 -->
|
||||
</ChainSubClassSet>
|
||||
<ChainSubClassSet index="3">
|
||||
<!-- ChainSubClassRuleCount=0 -->
|
||||
</ChainSubClassSet>
|
||||
</ChainContextSubst>
|
||||
</Lookup>
|
||||
<Lookup index="1">
|
||||
|
Loading…
x
Reference in New Issue
Block a user