[varc] Add ConditionSets

This commit is contained in:
Behdad Esfahbod 2024-03-20 15:36:32 -06:00
parent c155632e8f
commit 74f870f4ef
9 changed files with 287 additions and 291 deletions

View File

@ -2693,6 +2693,22 @@ def prune_post_subset(self, font, options):
if comp.axisIndicesIndex is not None:
comp.axisIndicesIndex = mapping[comp.axisIndicesIndex]
conditionSetList = table.ConditionSetList
if conditionSetList is not None:
conditionSets = conditionSetList.ConditionSet
usedIndices = set()
for glyph in table.VarCompositeGlyphs.VarCompositeGlyph:
for comp in glyph.components:
if comp.conditionSetIndex is not None:
usedIndices.add(comp.conditionSetIndex)
usedIndices = sorted(usedIndices)
conditionSetList.ConditionSet = _list_subset(conditionSets, usedIndices)
mapping = {old: new for new, old in enumerate(usedIndices)}
for glyph in table.VarCompositeGlyphs.VarCompositeGlyph:
for comp in glyph.components:
if comp.conditionSetIndex is not None:
comp.conditionSetIndex = mapping[comp.conditionSetIndex]
return True

View File

@ -3168,6 +3168,25 @@ otData = [
),
],
),
(
"ConditionSetList",
[
(
"uint32",
"ConditionSetCount",
None,
None,
"Number of condition-set tables in the ConditionSet array",
),
(
"LOffset",
"ConditionSet",
"ConditionSetCount",
0,
"Array of condition-set tables.",
),
],
),
(
"ConditionSet",
[
@ -3377,6 +3396,7 @@ otData = [
),
("LOffset", "Coverage", None, None, ""),
("LOffset", "MultiVarStore", None, None, "(may be NULL)"),
("LOffset", "ConditionSetList", None, None, "(may be NULL)"),
("LOffset", "AxisIndicesList", None, None, "(may be NULL)"),
("LOffset", "VarCompositeGlyphs", None, None, ""),
],

View File

@ -60,7 +60,7 @@ class VarComponentFlags(IntFlag):
HAVE_TRANSLATE_Y = 1 << 5
HAVE_ROTATION = 1 << 6
USE_MY_METRICS = 1 << 7
HAVE_CONDITION = 1 << 7
HAVE_SCALE_X = 1 << 8
HAVE_SCALE_Y = 1 << 9
@ -158,6 +158,7 @@ class VarComponent:
def populateDefaults(self, propagator=None):
self.flags = 0
self.glyphName = None
self.conditionSetIndex = None
self.axisIndicesIndex = None
self.axisValues = ()
self.axisValuesVarIndex = NO_VARIATION_INDEX
@ -174,6 +175,9 @@ class VarComponent:
i += gidSize
self.glyphName = font.glyphOrder[glyphID]
if flags & VarComponentFlags.HAVE_CONDITION:
self.conditionSetIndex, i = _read_uint32var(data, i)
if flags & VarComponentFlags.HAVE_AXES:
self.axisIndicesIndex, i = _read_uint32var(data, i)
else:
@ -244,6 +248,10 @@ class VarComponent:
flags &= ~VarComponentFlags.GID_IS_24BIT
data.append(_packer[2](glyphID))
if self.conditionSetIndex is not None:
flags |= VarComponentFlags.HAVE_CONDITION
data.append(_write_uint32var(self.conditionSetIndex))
numAxes = len(self.axisValues)
if numAxes:
@ -293,6 +301,8 @@ class VarComponent:
write("glyphName", self.glyphName)
if self.conditionSetIndex is not None:
write("conditionSetIndex", self.conditionSetIndex)
if self.axisIndicesIndex is not None:
write("axisIndicesIndex", self.axisIndicesIndex)
if (
@ -332,6 +342,8 @@ class VarComponent:
if name == "glyphName":
self.glyphName = v
elif name == "conditionSetIndex":
self.conditionSetIndex = safeEval(v)
elif name == "axisIndicesIndex":
self.axisIndicesIndex = safeEval(v)
elif name == "axisValues":

View File

@ -299,6 +299,28 @@ class _TTGlyphVARC(_TTGlyph):
)
for comp in glyph.components:
if comp.flags & VarComponentFlags.HAVE_CONDITION:
conditionSet = varc.ConditionSetList.ConditionSet[
comp.conditionSetIndex
]
# Evaluate condition
show = True
for condition in conditionSet.ConditionTable:
if condition.Format == 1:
axisIndex = condition.AxisIndex
axisTag = fvarAxes[axisIndex].axisTag
axisValue = self.glyphSet.location[axisTag]
minValue = condition.FilterRangeMinValue
maxValue = condition.FilterRangeMaxValue
if not (minValue <= axisValue <= maxValue):
show = False
break
else:
show = False # Unkonwn condition format
if not show:
continue
location = {}
if comp.axisIndicesIndex is not None:
axisIndices = varc.AxisIndicesList.Item[comp.axisIndicesIndex]

Binary file not shown.

View File

@ -58,12 +58,12 @@
<hmtx>
<mtx name=".notdef" width="500" lsb="0"/>
<mtx name="glyph00003" width="460" lsb="0"/>
<mtx name="glyph00004" width="460" lsb="0"/>
<mtx name="glyph00004" width="460" lsb="-3"/>
<mtx name="glyph00005" width="460" lsb="0"/>
<mtx name="glyph00006" width="460" lsb="0"/>
<mtx name="glyph00006" width="460" lsb="340"/>
<mtx name="glyph00007" width="460" lsb="0"/>
<mtx name="glyph00008" width="460" lsb="340"/>
<mtx name="glyph00009" width="460" lsb="-3"/>
<mtx name="glyph00008" width="460" lsb="0"/>
<mtx name="glyph00009" width="460" lsb="0"/>
<mtx name="glyph00010" width="460" lsb="45"/>
<mtx name="uniAC00" width="460" lsb="0"/>
<mtx name="uniAC01" width="460" lsb="0"/>
@ -94,31 +94,7 @@
<TTGlyph name="glyph00003"/><!-- contains no outline data -->
<TTGlyph name="glyph00004"/><!-- contains no outline data -->
<TTGlyph name="glyph00005"/><!-- contains no outline data -->
<TTGlyph name="glyph00006"/><!-- contains no outline data -->
<TTGlyph name="glyph00007"/><!-- contains no outline data -->
<TTGlyph name="glyph00008" xMin="340" yMin="-41" xMax="450" yMax="402">
<contour>
<pt x="358" y="157" on="1"/>
<pt x="450" y="157" on="1"/>
<pt x="450" y="192" on="1"/>
<pt x="358" y="192" on="1"/>
</contour>
<contour>
<pt x="340" y="-41" on="1"/>
<pt x="378" y="-41" on="1"/>
<pt x="378" y="402" on="1"/>
<pt x="340" y="402" on="1"/>
</contour>
<instructions/>
</TTGlyph>
<TTGlyph name="glyph00009" xMin="-3" yMin="-17" xMax="420" yMax="349">
<TTGlyph name="glyph00004" xMin="-3" yMin="-17" xMax="420" yMax="349">
<contour>
<pt x="3" y="-17" on="1"/>
<pt x="100" y="-6" on="0"/>
@ -140,6 +116,30 @@
<instructions/>
</TTGlyph>
<TTGlyph name="glyph00005"/><!-- contains no outline data -->
<TTGlyph name="glyph00006" xMin="340" yMin="-41" xMax="450" yMax="402">
<contour>
<pt x="358" y="157" on="1"/>
<pt x="450" y="157" on="1"/>
<pt x="450" y="192" on="1"/>
<pt x="358" y="192" on="1"/>
</contour>
<contour>
<pt x="340" y="-41" on="1"/>
<pt x="378" y="-41" on="1"/>
<pt x="378" y="402" on="1"/>
<pt x="340" y="402" on="1"/>
</contour>
<instructions/>
</TTGlyph>
<TTGlyph name="glyph00007"/><!-- contains no outline data -->
<TTGlyph name="glyph00008"/><!-- contains no outline data -->
<TTGlyph name="glyph00009"/><!-- contains no outline data -->
<TTGlyph name="glyph00010" xMin="45" yMin="-17" xMax="420" yMax="349">
<contour>
<pt x="420" y="-17" on="1"/>
@ -161,6 +161,36 @@
</glyf>
<name>
<namerecord nameID="1" platformID="1" platEncID="0" langID="0x0" unicode="True">
rcjk
</namerecord>
<namerecord nameID="2" platformID="1" platEncID="0" langID="0x0" unicode="True">
varc
</namerecord>
<namerecord nameID="256" platformID="1" platEncID="0" langID="0x0" unicode="True">
Weight
</namerecord>
<namerecord nameID="257" platformID="1" platEncID="0" langID="0x0" unicode="True">
OpticalSize
</namerecord>
<namerecord nameID="258" platformID="1" platEncID="0" langID="0x0" unicode="True">
0000
</namerecord>
<namerecord nameID="259" platformID="1" platEncID="0" langID="0x0" unicode="True">
0001
</namerecord>
<namerecord nameID="260" platformID="1" platEncID="0" langID="0x0" unicode="True">
0002
</namerecord>
<namerecord nameID="261" platformID="1" platEncID="0" langID="0x0" unicode="True">
0003
</namerecord>
<namerecord nameID="262" platformID="1" platEncID="0" langID="0x0" unicode="True">
0004
</namerecord>
<namerecord nameID="263" platformID="1" platEncID="0" langID="0x0" unicode="True">
0005
</namerecord>
<namerecord nameID="1" platformID="3" platEncID="1" langID="0x409">
rcjk
</namerecord>
@ -191,30 +221,6 @@
<namerecord nameID="263" platformID="3" platEncID="1" langID="0x409">
0005
</namerecord>
<namerecord nameID="264" platformID="3" platEncID="1" langID="0x409">
0006
</namerecord>
<namerecord nameID="265" platformID="3" platEncID="1" langID="0x409">
0007
</namerecord>
<namerecord nameID="266" platformID="3" platEncID="1" langID="0x409">
0008
</namerecord>
<namerecord nameID="267" platformID="3" platEncID="1" langID="0x409">
0009
</namerecord>
<namerecord nameID="268" platformID="3" platEncID="1" langID="0x409">
0010
</namerecord>
<namerecord nameID="269" platformID="3" platEncID="1" langID="0x409">
0011
</namerecord>
<namerecord nameID="270" platformID="3" platEncID="1" langID="0x409">
0012
</namerecord>
<namerecord nameID="271" platformID="3" platEncID="1" langID="0x409">
0013
</namerecord>
</name>
<post>
@ -235,10 +241,10 @@
<Glyph value="uniAC00"/>
<Glyph value="uniAC01"/>
<Glyph value="glyph00003"/>
<Glyph value="glyph00004"/>
<Glyph value="glyph00005"/>
<Glyph value="glyph00006"/>
<Glyph value="glyph00007"/>
<Glyph value="glyph00008"/>
<Glyph value="glyph00009"/>
</Coverage>
<MultiVarStore Format="1">
<Format value="1"/>
@ -285,88 +291,88 @@
<VarRegionIndex index="0" value="0"/>
<VarRegionIndex index="1" value="1"/>
<VarRegionIndex index="2" value="2"/>
<Item index="0" value="[-964, 0, 406, 0, 16384, 0, 0, 0, 0]"/>
<Item index="1" value="[-295, -327, 0, 1092, 273, 393, 0, 0, 0, 0, 0, 0, 0, 0, 0]"/>
<Item index="2" value="[0, 0, 0, 6, 0, 0]"/>
<Item index="3" value="[-328, 0, 2185, 0, 1546, 0, 0, 0, 0]"/>
<Item index="4" value="[0, -5, -26, 0, 0, 0]"/>
<Item index="5" value="[0, -327, 0, 1704, 0, 0, 0, 0, 0]"/>
<Item index="6" value="[0, 0, 0, 8, 0, 0]"/>
<Item index="0" value="[0, -327, 0, 1704, 0, 0, 0, 0, 0]"/>
<Item index="1" value="[0, 0, 0, 8, 0, 0]"/>
<Item index="2" value="[-295, -327, 0, 1092, 273, 393, 0, 0, 0, 0, 0, 0, 0, 0, 0]"/>
<Item index="3" value="[0, 0, 0, 6, 0, 0]"/>
<Item index="4" value="[-964, 0, 406, 0, 16384, 0, 0, 0, 0]"/>
<Item index="5" value="[-328, 0, 2185, 0, 1546, 0, 0, 0, 0]"/>
<Item index="6" value="[0, -5, -26, 0, 0, 0]"/>
</MultiVarData>
</MultiVarStore>
<AxisIndicesList>
<Item index="0" value="[2, 3, 4]"/>
<Item index="1" value="[2, 3, 4, 5, 6]"/>
<Item index="2" value="[4]"/>
<Item index="1" value="[4]"/>
<Item index="2" value="[2, 3, 4, 5, 6]"/>
</AxisIndicesList>
<VarCompositeGlyphs>
<VarCompositeGlyph index="0">
<VarComponent index="0">
<glyphName value="glyph00007"/>
<glyphName value="glyph00003"/>
</VarComponent>
<VarComponent index="1">
<glyphName value="glyph00003"/>
<glyphName value="glyph00005"/>
</VarComponent>
</VarCompositeGlyph>
<VarCompositeGlyph index="1">
<VarComponent index="0">
<glyphName value="glyph00005"/>
<glyphName value="glyph00007"/>
</VarComponent>
<VarComponent index="1">
<glyphName value="glyph00004"/>
<glyphName value="glyph00008"/>
</VarComponent>
<VarComponent index="2">
<glyphName value="glyph00006"/>
<glyphName value="glyph00009"/>
</VarComponent>
</VarCompositeGlyph>
<VarCompositeGlyph index="2">
<VarComponent index="0">
<glyphName value="glyph00008"/>
<axisIndicesIndex value="2"/>
<axisValues value="[0.2159]"/>
<translateX value="-6.0"/>
<glyphName value="glyph00004"/>
<axisIndicesIndex value="0"/>
<axisValues value="[-0.258, 0.05, -0.5178]"/>
<axisValuesVarIndex value="0"/>
<transformVarIndex value="1"/>
<translateX value="-5.0"/>
<translateY value="12.0"/>
</VarComponent>
</VarCompositeGlyph>
<VarCompositeGlyph index="3">
<VarComponent index="0">
<glyphName value="glyph00008"/>
<axisIndicesIndex value="0"/>
<axisValues value="[-0.8047, 0.0, 0.4839]"/>
<axisValuesVarIndex value="0"/>
<translateX value="-3.0"/>
<glyphName value="glyph00006"/>
<axisIndicesIndex value="1"/>
<axisValues value="[0.2159]"/>
<translateX value="-6.0"/>
</VarComponent>
</VarCompositeGlyph>
<VarCompositeGlyph index="4">
<VarComponent index="0">
<glyphName value="glyph00009"/>
<axisIndicesIndex value="1"/>
<glyphName value="glyph00004"/>
<axisIndicesIndex value="2"/>
<axisValues value="[-0.54, 0.04, -0.5178, 0.0, 0.0]"/>
<axisValuesVarIndex value="1"/>
<transformVarIndex value="2"/>
<axisValuesVarIndex value="2"/>
<transformVarIndex value="3"/>
<translateX value="-5.0"/>
<translateY value="24.0"/>
</VarComponent>
</VarCompositeGlyph>
<VarCompositeGlyph index="5">
<VarComponent index="0">
<glyphName value="glyph00010"/>
<glyphName value="glyph00006"/>
<axisIndicesIndex value="0"/>
<axisValues value="[-0.776, -0.3566, 0.0]"/>
<axisValuesVarIndex value="3"/>
<transformVarIndex value="4"/>
<translateX value="53.0"/>
<translateY value="-231.0"/>
<axisValues value="[-0.8047, 0.0, 0.4839]"/>
<axisValuesVarIndex value="4"/>
<translateX value="-3.0"/>
</VarComponent>
</VarCompositeGlyph>
<VarCompositeGlyph index="6">
<VarComponent index="0">
<glyphName value="glyph00009"/>
<glyphName value="glyph00010"/>
<axisIndicesIndex value="0"/>
<axisValues value="[-0.258, 0.05, -0.5178]"/>
<axisValues value="[-0.776, -0.3566, 0.0]"/>
<axisValuesVarIndex value="5"/>
<transformVarIndex value="6"/>
<translateX value="-5.0"/>
<translateY value="12.0"/>
<translateX value="53.0"/>
<translateY value="-231.0"/>
</VarComponent>
</VarCompositeGlyph>
</VarCompositeGlyphs>
@ -453,201 +459,12 @@
<MaxValue>1.0</MaxValue>
<AxisNameID>263</AxisNameID>
</Axis>
<!-- 0006 -->
<Axis>
<AxisTag>0006</AxisTag>
<Flags>0x0</Flags>
<MinValue>-1.0</MinValue>
<DefaultValue>0.0</DefaultValue>
<MaxValue>1.0</MaxValue>
<AxisNameID>264</AxisNameID>
</Axis>
<!-- 0007 -->
<Axis>
<AxisTag>0007</AxisTag>
<Flags>0x0</Flags>
<MinValue>-1.0</MinValue>
<DefaultValue>0.0</DefaultValue>
<MaxValue>1.0</MaxValue>
<AxisNameID>265</AxisNameID>
</Axis>
<!-- 0008 -->
<Axis>
<AxisTag>0008</AxisTag>
<Flags>0x0</Flags>
<MinValue>-1.0</MinValue>
<DefaultValue>0.0</DefaultValue>
<MaxValue>1.0</MaxValue>
<AxisNameID>266</AxisNameID>
</Axis>
<!-- 0009 -->
<Axis>
<AxisTag>0009</AxisTag>
<Flags>0x0</Flags>
<MinValue>-1.0</MinValue>
<DefaultValue>0.0</DefaultValue>
<MaxValue>1.0</MaxValue>
<AxisNameID>267</AxisNameID>
</Axis>
<!-- 0010 -->
<Axis>
<AxisTag>0010</AxisTag>
<Flags>0x0</Flags>
<MinValue>-1.0</MinValue>
<DefaultValue>0.0</DefaultValue>
<MaxValue>1.0</MaxValue>
<AxisNameID>268</AxisNameID>
</Axis>
<!-- 0011 -->
<Axis>
<AxisTag>0011</AxisTag>
<Flags>0x0</Flags>
<MinValue>-1.0</MinValue>
<DefaultValue>0.0</DefaultValue>
<MaxValue>1.0</MaxValue>
<AxisNameID>269</AxisNameID>
</Axis>
<!-- 0012 -->
<Axis>
<AxisTag>0012</AxisTag>
<Flags>0x0</Flags>
<MinValue>-1.0</MinValue>
<DefaultValue>0.0</DefaultValue>
<MaxValue>1.0</MaxValue>
<AxisNameID>270</AxisNameID>
</Axis>
<!-- 0013 -->
<Axis>
<AxisTag>0013</AxisTag>
<Flags>0x0</Flags>
<MinValue>-1.0</MinValue>
<DefaultValue>0.0</DefaultValue>
<MaxValue>1.0</MaxValue>
<AxisNameID>271</AxisNameID>
</Axis>
</fvar>
<gvar>
<version value="1"/>
<reserved value="0"/>
<glyphVariations glyph="glyph00008">
<tuple>
<coord axis="wght" value="1.0"/>
<delta pt="0" x="0" y="-15"/>
<delta pt="1" x="10" y="-15"/>
<delta pt="2" x="10" y="15"/>
<delta pt="3" x="0" y="15"/>
<delta pt="4" x="-25" y="-10"/>
<delta pt="5" x="10" y="-10"/>
<delta pt="6" x="10" y="10"/>
<delta pt="7" x="-25" y="10"/>
<delta pt="8" x="0" y="0"/>
<delta pt="9" x="0" y="0"/>
<delta pt="10" x="0" y="0"/>
<delta pt="11" x="0" y="0"/>
</tuple>
<tuple>
<coord axis="0000" value="-1.0"/>
<delta pt="0" x="0" y="0"/>
<delta pt="1" x="0" y="0"/>
<delta pt="2" x="0" y="0"/>
<delta pt="3" x="0" y="0"/>
<delta pt="4" x="0" y="229"/>
<delta pt="5" x="0" y="229"/>
<delta pt="6" x="0" y="0"/>
<delta pt="7" x="0" y="0"/>
<delta pt="8" x="0" y="0"/>
<delta pt="9" x="0" y="0"/>
<delta pt="10" x="0" y="0"/>
<delta pt="11" x="0" y="0"/>
</tuple>
<tuple>
<coord axis="0002" value="1.0"/>
<delta pt="0" x="0" y="202"/>
<delta pt="1" x="0" y="202"/>
<delta pt="2" x="0" y="202"/>
<delta pt="3" x="0" y="202"/>
<delta pt="4" x="0" y="0"/>
<delta pt="5" x="0" y="0"/>
<delta pt="6" x="0" y="0"/>
<delta pt="7" x="0" y="0"/>
<delta pt="8" x="0" y="0"/>
<delta pt="9" x="0" y="0"/>
<delta pt="10" x="0" y="0"/>
<delta pt="11" x="0" y="0"/>
</tuple>
<tuple>
<coord axis="0001" value="1.0"/>
<delta pt="0" x="0" y="0"/>
<delta pt="1" x="0" y="0"/>
<delta pt="2" x="0" y="0"/>
<delta pt="3" x="0" y="0"/>
<delta pt="4" x="0" y="6"/>
<delta pt="5" x="0" y="6"/>
<delta pt="6" x="0" y="0"/>
<delta pt="7" x="0" y="0"/>
<delta pt="8" x="0" y="0"/>
<delta pt="9" x="0" y="0"/>
<delta pt="10" x="0" y="0"/>
<delta pt="11" x="0" y="0"/>
</tuple>
<tuple>
<coord axis="0003" value="-1.0"/>
<delta pt="0" x="0" y="0"/>
<delta pt="1" x="-50" y="0"/>
<delta pt="2" x="-50" y="0"/>
<delta pt="3" x="0" y="0"/>
<delta pt="4" x="0" y="0"/>
<delta pt="5" x="0" y="0"/>
<delta pt="6" x="0" y="0"/>
<delta pt="7" x="0" y="0"/>
<delta pt="8" x="0" y="0"/>
<delta pt="9" x="0" y="0"/>
<delta pt="10" x="0" y="0"/>
<delta pt="11" x="0" y="0"/>
</tuple>
<tuple>
<coord axis="wght" value="1.0"/>
<coord axis="0000" value="-1.0"/>
<delta pt="0" x="0" y="0"/>
<delta pt="1" x="0" y="0"/>
<delta pt="2" x="0" y="0"/>
<delta pt="3" x="0" y="0"/>
<delta pt="4" x="0" y="0"/>
<delta pt="5" x="0" y="0"/>
<delta pt="6" x="0" y="0"/>
<delta pt="7" x="0" y="0"/>
<delta pt="8" x="0" y="0"/>
<delta pt="9" x="0" y="0"/>
<delta pt="10" x="0" y="0"/>
<delta pt="11" x="0" y="0"/>
</tuple>
<tuple>
<coord axis="wght" value="1.0"/>
<coord axis="0002" value="1.0"/>
<delta pt="0" x="0" y="0"/>
<delta pt="1" x="0" y="0"/>
<delta pt="2" x="0" y="0"/>
<delta pt="3" x="0" y="0"/>
<delta pt="4" x="0" y="0"/>
<delta pt="5" x="0" y="0"/>
<delta pt="6" x="0" y="0"/>
<delta pt="7" x="0" y="0"/>
<delta pt="8" x="0" y="0"/>
<delta pt="9" x="0" y="0"/>
<delta pt="10" x="0" y="0"/>
<delta pt="11" x="0" y="0"/>
</tuple>
</glyphVariations>
<glyphVariations glyph="glyph00009">
<glyphVariations glyph="glyph00004">
<tuple>
<coord axis="wght" value="1.0"/>
<delta pt="0" x="5" y="-10"/>
@ -1080,6 +897,115 @@
<delta pt="19" x="0" y="0"/>
</tuple>
</glyphVariations>
<glyphVariations glyph="glyph00006">
<tuple>
<coord axis="wght" value="1.0"/>
<delta pt="0" x="0" y="-15"/>
<delta pt="1" x="10" y="-15"/>
<delta pt="2" x="10" y="15"/>
<delta pt="3" x="0" y="15"/>
<delta pt="4" x="-25" y="-10"/>
<delta pt="5" x="10" y="-10"/>
<delta pt="6" x="10" y="10"/>
<delta pt="7" x="-25" y="10"/>
<delta pt="8" x="0" y="0"/>
<delta pt="9" x="0" y="0"/>
<delta pt="10" x="0" y="0"/>
<delta pt="11" x="0" y="0"/>
</tuple>
<tuple>
<coord axis="0000" value="-1.0"/>
<delta pt="0" x="0" y="0"/>
<delta pt="1" x="0" y="0"/>
<delta pt="2" x="0" y="0"/>
<delta pt="3" x="0" y="0"/>
<delta pt="4" x="0" y="229"/>
<delta pt="5" x="0" y="229"/>
<delta pt="6" x="0" y="0"/>
<delta pt="7" x="0" y="0"/>
<delta pt="8" x="0" y="0"/>
<delta pt="9" x="0" y="0"/>
<delta pt="10" x="0" y="0"/>
<delta pt="11" x="0" y="0"/>
</tuple>
<tuple>
<coord axis="0002" value="1.0"/>
<delta pt="0" x="0" y="202"/>
<delta pt="1" x="0" y="202"/>
<delta pt="2" x="0" y="202"/>
<delta pt="3" x="0" y="202"/>
<delta pt="4" x="0" y="0"/>
<delta pt="5" x="0" y="0"/>
<delta pt="6" x="0" y="0"/>
<delta pt="7" x="0" y="0"/>
<delta pt="8" x="0" y="0"/>
<delta pt="9" x="0" y="0"/>
<delta pt="10" x="0" y="0"/>
<delta pt="11" x="0" y="0"/>
</tuple>
<tuple>
<coord axis="0001" value="1.0"/>
<delta pt="0" x="0" y="0"/>
<delta pt="1" x="0" y="0"/>
<delta pt="2" x="0" y="0"/>
<delta pt="3" x="0" y="0"/>
<delta pt="4" x="0" y="6"/>
<delta pt="5" x="0" y="6"/>
<delta pt="6" x="0" y="0"/>
<delta pt="7" x="0" y="0"/>
<delta pt="8" x="0" y="0"/>
<delta pt="9" x="0" y="0"/>
<delta pt="10" x="0" y="0"/>
<delta pt="11" x="0" y="0"/>
</tuple>
<tuple>
<coord axis="0003" value="-1.0"/>
<delta pt="0" x="0" y="0"/>
<delta pt="1" x="-50" y="0"/>
<delta pt="2" x="-50" y="0"/>
<delta pt="3" x="0" y="0"/>
<delta pt="4" x="0" y="0"/>
<delta pt="5" x="0" y="0"/>
<delta pt="6" x="0" y="0"/>
<delta pt="7" x="0" y="0"/>
<delta pt="8" x="0" y="0"/>
<delta pt="9" x="0" y="0"/>
<delta pt="10" x="0" y="0"/>
<delta pt="11" x="0" y="0"/>
</tuple>
<tuple>
<coord axis="wght" value="1.0"/>
<coord axis="0000" value="-1.0"/>
<delta pt="0" x="0" y="0"/>
<delta pt="1" x="0" y="0"/>
<delta pt="2" x="0" y="0"/>
<delta pt="3" x="0" y="0"/>
<delta pt="4" x="0" y="0"/>
<delta pt="5" x="0" y="0"/>
<delta pt="6" x="0" y="0"/>
<delta pt="7" x="0" y="0"/>
<delta pt="8" x="0" y="0"/>
<delta pt="9" x="0" y="0"/>
<delta pt="10" x="0" y="0"/>
<delta pt="11" x="0" y="0"/>
</tuple>
<tuple>
<coord axis="wght" value="1.0"/>
<coord axis="0002" value="1.0"/>
<delta pt="0" x="0" y="0"/>
<delta pt="1" x="0" y="0"/>
<delta pt="2" x="0" y="0"/>
<delta pt="3" x="0" y="0"/>
<delta pt="4" x="0" y="0"/>
<delta pt="5" x="0" y="0"/>
<delta pt="6" x="0" y="0"/>
<delta pt="7" x="0" y="0"/>
<delta pt="8" x="0" y="0"/>
<delta pt="9" x="0" y="0"/>
<delta pt="10" x="0" y="0"/>
<delta pt="11" x="0" y="0"/>
</tuple>
</glyphVariations>
<glyphVariations glyph="glyph00010">
<tuple>
<coord axis="wght" value="1.0"/>

Binary file not shown.

View File

@ -9,7 +9,7 @@ DATA_DIR = os.path.join(CURR_DIR, "data")
class VarCompositeTest(unittest.TestCase):
def test_trim_varComposite_glyph(self):
def test_basic(self):
font_path = os.path.join(DATA_DIR, "..", "..", "data", "varc-ac00-ac01.ttf")
font = TTFont(font_path)
varc = font["VARC"]
@ -18,10 +18,10 @@ class VarCompositeTest(unittest.TestCase):
"uniAC00",
"uniAC01",
"glyph00003",
"glyph00004",
"glyph00005",
"glyph00006",
"glyph00007",
"glyph00008",
"glyph00009",
]
font_path = os.path.join(DATA_DIR, "..", "..", "data", "varc-6868.ttf")
@ -31,11 +31,11 @@ class VarCompositeTest(unittest.TestCase):
assert varc.table.Coverage.glyphs == [
"uni6868",
"glyph00002",
"glyph00003",
"glyph00004",
"glyph00005",
"glyph00007",
]
def test_varComposite_basic(self):
def test_roundtrip(self):
font_path = os.path.join(DATA_DIR, "..", "..", "data", "varc-ac00-ac01.ttf")
font = TTFont(font_path)
tables = [

View File

@ -226,7 +226,7 @@ class TTGlyphSetTest(object):
(
"addVarComponent",
(
"glyph00007",
"glyph00003",
DecomposedTransform(
translateX=0,
translateY=0,
@ -244,7 +244,7 @@ class TTGlyphSetTest(object):
(
"addVarComponent",
(
"glyph00003",
"glyph00005",
DecomposedTransform(
translateX=0,
translateY=0,