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