@@ -1238,6 +1238,48 @@ def test_glyph_color_palette_layers_no_unicode_mapping(ufo_module):
12381238 assert ufo ["a.color1" ].unicode is None
12391239
12401240
1241+ def test_glyph_color_palette_layers_postscript_names (ufo_module ):
1242+ """Test that color layer glyphs get unique postscript names with .colorN suffix."""
1243+ font = generate_minimal_font (format_version = 3 )
1244+ # Add a glyph with unicode (production name will be auto-generated)
1245+ glyph_with_unicode = add_glyph (font , "Acaron" )
1246+ glyph_with_unicode .unicode = "01CD"
1247+
1248+ # Add a glyph without unicode but with suffix
1249+ glyph_with_suffix = add_glyph (font , "caroncomb.alt" )
1250+
1251+ # Add color palette layers
1252+ for glyph in [glyph_with_unicode , glyph_with_suffix ]:
1253+ color0 = GSLayer ()
1254+ color1 = GSLayer ()
1255+ color0 .attributes ["colorPalette" ] = 0
1256+ color1 .attributes ["colorPalette" ] = 1
1257+ glyph .layers .append (color0 )
1258+ glyph .layers .append (color1 )
1259+
1260+ ds = to_designspace (font , ufo_module = ufo_module , minimal = True )
1261+ ufo = ds .sources [0 ].font
1262+
1263+ postscriptNames = ufo .lib .get ("public.postscriptNames" , {})
1264+
1265+ # Color layer glyphs should have unique postscript names with .colorN suffix
1266+ assert postscriptNames .get ("Acaron" ) == "uni01CD"
1267+ assert postscriptNames .get ("Acaron.color0" ) == "uni01CD.color0"
1268+ assert postscriptNames .get ("Acaron.color1" ) == "uni01CD.color1"
1269+
1270+ assert postscriptNames .get ("caroncomb.alt" ) == "uni030C.alt"
1271+ assert postscriptNames .get ("caroncomb.alt.color0" ) == "uni030C.alt.color0"
1272+ assert postscriptNames .get ("caroncomb.alt.color1" ) == "uni030C.alt.color1"
1273+
1274+ # Color layer glyphs should not have unicode values
1275+ assert ufo ["Acaron" ].unicode == 0x01CD
1276+ assert ufo ["Acaron.color0" ].unicode is None
1277+ assert ufo ["Acaron.color1" ].unicode is None
1278+ assert ufo ["caroncomb.alt" ].unicode is None
1279+ assert ufo ["caroncomb.alt.color0" ].unicode is None
1280+ assert ufo ["caroncomb.alt.color1" ].unicode is None
1281+
1282+
12411283def test_glyph_color_layers_components_2 (ufo_module ):
12421284 filename = os .path .join (
12431285 os .path .dirname (__file__ ), ".." , "data" , "ColorComponents.glyphs"
0 commit comments