From 5c83b5be4753e2c458d97f6544ce4bb2102014bb Mon Sep 17 00:00:00 2001 From: rsheeter Date: Wed, 4 Nov 2020 21:59:30 -0800 Subject: [PATCH] Don't generate a PaintColrLayers for a list of 1 --- Lib/fontTools/colorLib/builder.py | 9 +++++++-- Tests/colorLib/builder_test.py | 12 +++++++----- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/Lib/fontTools/colorLib/builder.py b/Lib/fontTools/colorLib/builder.py index 52251d5c7..4d8e5fa63 100644 --- a/Lib/fontTools/colorLib/builder.py +++ b/Lib/fontTools/colorLib/builder.py @@ -524,8 +524,13 @@ class LayerCollector: layerGlyph, paint = paint return buildPaintGlyph(self, layerGlyph, paint) elif isinstance(paint, list): - # implicit PaintColrLayers - return self.buildColrLayers(paint) + # implicit PaintColrLayers for a list of > 1 + if len(paint) == 0: + raise ValueError("An empty list is hard to paint") + elif len(paint) == 1: + return self.build(paint[0]) + else: + return self.buildColrLayers(paint) elif isinstance(paint, collections.abc.Mapping): kwargs = dict(paint) fmt = kwargs.pop("format") diff --git a/Tests/colorLib/builder_test.py b/Tests/colorLib/builder_test.py index 73bccb02a..2685b9c65 100644 --- a/Tests/colorLib/builder_test.py +++ b/Tests/colorLib/builder_test.py @@ -643,7 +643,7 @@ def assertNoV0Content(colr): def test_build_layerv1list_empty(): - # Nobody uses PaintColorLayers (format 8), no layerlist + # Nobody uses PaintColrLayers (format 8), no layerlist colr = builder.buildCOLR( { "a": { @@ -651,7 +651,8 @@ def test_build_layerv1list_empty(): "paint": {"format": 1, "paletteIndex": 2, "alpha": 0.8}, "glyph": "b", }, - "b": { + # A list of 1 shouldn't become a PaintColrLayers + "b": [{ "format": 4, # PaintGlyph "paint": { "format": 2, @@ -664,7 +665,7 @@ def test_build_layerv1list_empty(): "p2": (2, 2), }, "glyph": "bb", - }, + }], } ) @@ -836,7 +837,7 @@ class BuildCOLRTest(object): "p1": (3, 4), "p2": (2, 2), }, - ) + ), ], } ) @@ -860,7 +861,8 @@ class BuildCOLRTest(object): "p1": (3, 4), "p2": (2, 2), }, - ) + ), + ("f", {"format": 1, "paletteIndex": 2, "alpha": 0.8}), ], } )