diff options
Diffstat (limited to 'Tests/colorLib/unbuilder_test.py')
-rw-r--r-- | Tests/colorLib/unbuilder_test.py | 210 |
1 files changed, 210 insertions, 0 deletions
diff --git a/Tests/colorLib/unbuilder_test.py b/Tests/colorLib/unbuilder_test.py new file mode 100644 index 00000000..81169e03 --- /dev/null +++ b/Tests/colorLib/unbuilder_test.py @@ -0,0 +1,210 @@ +from fontTools.ttLib.tables import otTables as ot +from fontTools.colorLib.builder import buildColrV1 +from fontTools.colorLib.unbuilder import unbuildColrV1 +import pytest + + +TEST_COLOR_GLYPHS = { + "glyph00010": { + "Format": int(ot.PaintFormat.PaintColrLayers), + "Layers": [ + { + "Format": int(ot.PaintFormat.PaintGlyph), + "Paint": { + "Format": int(ot.PaintFormat.PaintSolid), + "Color": {"PaletteIndex": 2, "Alpha": 0.5}, + }, + "Glyph": "glyph00011", + }, + { + "Format": int(ot.PaintFormat.PaintGlyph), + "Paint": { + "Format": int(ot.PaintFormat.PaintVarLinearGradient), + "ColorLine": { + "Extend": "repeat", + "ColorStop": [ + { + "StopOffset": (0.0, 0), + "Color": {"PaletteIndex": 3, "Alpha": (1.0, 0)}, + }, + { + "StopOffset": (0.5, 0), + "Color": {"PaletteIndex": 4, "Alpha": (1.0, 0)}, + }, + { + "StopOffset": (1.0, 0), + "Color": {"PaletteIndex": 5, "Alpha": (1.0, 0)}, + }, + ], + }, + "x0": (1, 0), + "y0": (2, 0), + "x1": (-3, 0), + "y1": (-4, 0), + "x2": (5, 0), + "y2": (6, 0), + }, + "Glyph": "glyph00012", + }, + { + "Format": int(ot.PaintFormat.PaintGlyph), + "Paint": { + "Format": int(ot.PaintFormat.PaintVarTransform), + "Paint": { + "Format": int(ot.PaintFormat.PaintRadialGradient), + "ColorLine": { + "Extend": "pad", + "ColorStop": [ + { + "StopOffset": 0, + "Color": {"PaletteIndex": 6, "Alpha": 1.0}, + }, + { + "StopOffset": 1.0, + "Color": {"PaletteIndex": 7, "Alpha": 0.4}, + }, + ], + }, + "x0": 7, + "y0": 8, + "r0": 9, + "x1": 10, + "y1": 11, + "r1": 12, + }, + "Transform": { + "xx": (-13.0, 0), + "yx": (14.0, 0), + "xy": (15.0, 0), + "yy": (-17.0, 0), + "dx": (18.0, 0), + "dy": (19.0, 0), + }, + }, + "Glyph": "glyph00013", + }, + { + "Format": int(ot.PaintFormat.PaintVarTranslate), + "Paint": { + "Format": int(ot.PaintFormat.PaintRotate), + "Paint": { + "Format": int(ot.PaintFormat.PaintVarSkew), + "Paint": { + "Format": int(ot.PaintFormat.PaintGlyph), + "Paint": { + "Format": int(ot.PaintFormat.PaintSolid), + "Color": {"PaletteIndex": 2, "Alpha": 0.5}, + }, + "Glyph": "glyph00011", + }, + "xSkewAngle": (-11.0, 0), + "ySkewAngle": (5.0, 0), + "centerX": (253.0, 0), + "centerY": (254.0, 0), + }, + "angle": 45.0, + "centerX": 255.0, + "centerY": 256.0, + }, + "dx": (257.0, 0), + "dy": (258.0, 0), + }, + ], + }, + "glyph00014": { + "Format": int(ot.PaintFormat.PaintComposite), + "SourcePaint": { + "Format": int(ot.PaintFormat.PaintColrGlyph), + "Glyph": "glyph00010", + }, + "CompositeMode": "src_over", + "BackdropPaint": { + "Format": int(ot.PaintFormat.PaintTransform), + "Paint": { + "Format": int(ot.PaintFormat.PaintColrGlyph), + "Glyph": "glyph00010", + }, + "Transform": { + "xx": 1.0, + "yx": 0.0, + "xy": 0.0, + "yy": 1.0, + "dx": 300.0, + "dy": 0.0, + }, + }, + }, + "glyph00015": { + "Format": int(ot.PaintFormat.PaintGlyph), + "Paint": { + "Format": int(ot.PaintFormat.PaintSweepGradient), + "ColorLine": { + "Extend": "pad", + "ColorStop": [ + { + "StopOffset": 0.0, + "Color": {"PaletteIndex": 3, "Alpha": 1.0}, + }, + { + "StopOffset": 1.0, + "Color": {"PaletteIndex": 5, "Alpha": 1.0}, + }, + ], + }, + "centerX": 259, + "centerY": 300, + "startAngle": 45.0, + "endAngle": 135.0, + }, + "Glyph": "glyph00011", + }, + "glyph00016": { + "Format": int(ot.PaintFormat.PaintColrLayers), + "Layers": [ + { + "Format": int(ot.PaintFormat.PaintGlyph), + "Paint": { + "Format": int(ot.PaintFormat.PaintVarSolid), + "Color": {"PaletteIndex": 2, "Alpha": (0.5, 0)}, + }, + "Glyph": "glyph00011", + }, + { + "Format": int(ot.PaintFormat.PaintGlyph), + "Paint": { + "Format": int(ot.PaintFormat.PaintVarLinearGradient), + "ColorLine": { + "Extend": "repeat", + "ColorStop": [ + { + "StopOffset": (0.0, 0), + "Color": {"PaletteIndex": 3, "Alpha": (1.0, 0)}, + }, + { + "StopOffset": (0.5, 0), + "Color": {"PaletteIndex": 4, "Alpha": (1.0, 0)}, + }, + { + "StopOffset": (1.0, 0), + "Color": {"PaletteIndex": 5, "Alpha": (1.0, 0)}, + }, + ], + }, + "x0": (1, 0), + "y0": (2, 0), + "x1": (-3, 0), + "y1": (-4, 0), + "x2": (5, 0), + "y2": (6, 0), + }, + "Glyph": "glyph00012", + }, + ], + }, +} + + +def test_unbuildColrV1(): + layersV1, baseGlyphsV1 = buildColrV1(TEST_COLOR_GLYPHS) + colorGlyphs = unbuildColrV1(layersV1, baseGlyphsV1) + assert colorGlyphs == TEST_COLOR_GLYPHS |