varLib/merger_test: test merging ClipBoxes

This commit is contained in:
Cosimo Lupo 2022-06-28 18:23:06 +01:00
parent d85aa2d119
commit c2887caf95

View File

@ -1,6 +1,6 @@
from copy import deepcopy from copy import deepcopy
import string import string
from fontTools.colorLib.builder import LayerListBuilder from fontTools.colorLib.builder import LayerListBuilder, buildClipList
from fontTools.misc.testTools import getXML from fontTools.misc.testTools import getXML
from fontTools.varLib.merger import COLRVariationMerger from fontTools.varLib.merger import COLRVariationMerger
from fontTools.varLib.models import VariationModel from fontTools.varLib.models import VariationModel
@ -712,3 +712,76 @@ class COLRVariationMergerTest:
assert compile_decompile(out, ttFont) == out assert compile_decompile(out, ttFont) == out
assert dump_xml(out, ttFont) == expected_xml assert dump_xml(out, ttFont) == expected_xml
assert merger.varIdxes == expected_varIdxes assert merger.varIdxes == expected_varIdxes
def test_merge_ClipList(self, ttFont):
clipLists = [
buildClipList(clips)
for clips in [
{
"A": (0, 0, 1000, 1000),
"B": (0, 0, 1000, 1000),
"C": (0, 0, 1000, 1000),
"D": (0, 0, 1000, 1000),
},
{
# non-default masters' clip boxes can be 'sparse'
# (i.e. can omit explicit clip box for some glyphs)
# "A": (0, 0, 1000, 1000),
"B": (10, 0, 1000, 1000),
"C": (20, 20, 1020, 1020),
"D": (20, 20, 1020, 1020),
},
]
]
out = deepcopy(clipLists[0])
model = VariationModel([{}, {"ZZZZ": 1.0}])
merger = COLRVariationMerger(model, ["ZZZZ"], ttFont)
merger.mergeThings(out, clipLists)
assert compile_decompile(out, ttFont) == out
assert dump_xml(out, ttFont) == [
'<ClipList Format="1">',
" <Clip>",
' <Glyph value="A"/>',
' <ClipBox Format="1">',
' <xMin value="0"/>',
' <yMin value="0"/>',
' <xMax value="1000"/>',
' <yMax value="1000"/>',
" </ClipBox>",
" </Clip>",
" <Clip>",
' <Glyph value="B"/>',
' <ClipBox Format="2">',
' <xMin value="0"/>',
' <yMin value="0"/>',
' <xMax value="1000"/>',
' <yMax value="1000"/>',
' <VarIndexBase value="0"/>',
" </ClipBox>",
" </Clip>",
" <Clip>",
' <Glyph value="C"/>',
' <Glyph value="D"/>',
' <ClipBox Format="2">',
' <xMin value="0"/>',
' <yMin value="0"/>',
' <xMax value="1000"/>',
' <yMax value="1000"/>',
' <VarIndexBase value="4"/>',
" </ClipBox>",
" </Clip>",
"</ClipList>",
]
assert merger.varIdxes == [
0,
NO_VARIATION_INDEX,
NO_VARIATION_INDEX,
NO_VARIATION_INDEX,
1,
1,
1,
1,
]