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