Path elements with transparent fills removed
tinder-darraghburke opened this issue · 5 comments
Hi, hope you're doing well! Thanks for all your work on SwiftDraw!
Just reaching out again about another issue we're running into - we noticed that elements with transparent
fills are removed from the final output. For example, we have the following SVG:
Here are the relevant elements:
<path fill="transparent"
d="m1.055 8.448.657-.37c.552-.317.84-.95.683-1.532l-.131-.74A1.493 1.493 0 0 1 3.63 4.062l.762-.052a1.461 1.461 0 0 0 1.34-1.084l.21-.74a1.45 1.45 0 0 1 1.97-.977l.71.29c.578.238 1.235.08 1.655-.396l.5-.581a1.449 1.449 0 0 1 2.18-.053l.5.581c.42.476 1.103.608 1.68.37l.789-.29c.814-.344 1.76.105 1.997.95l.21.74c.158.608.71 1.031 1.34 1.057l.762.027a1.46 1.46 0 0 1 1.392 1.717l-.131.74c-.105.608.21 1.242.762 1.532l.657.37c.762.397.998 1.427.499 2.14l-.447.634a1.474 1.474 0 0 0 0 1.718l.447.607a1.49 1.49 0 0 1-.473 2.167l-.657.37c-.552.317-.84.925-.735 1.559l.13.74a1.491 1.491 0 0 1-1.365 1.743l-.762.053a1.461 1.461 0 0 0-1.34 1.083l-.21.74a1.45 1.45 0 0 1-1.97.977l-.71-.29a1.459 1.459 0 0 0-1.655.396l-.5.581a1.458 1.458 0 0 1-2.207.027l-.499-.581c-.42-.476-1.103-.608-1.681-.37l-.71.29c-.814.344-1.76-.105-1.997-.95l-.21-.74c-.157-.608-.71-1.031-1.34-1.057l-.762-.027a1.461 1.461 0 0 1-1.392-1.717l.131-.74a1.475 1.475 0 0 0-.762-1.532l-.656-.37c-.762-.396-.999-1.427-.5-2.14l.447-.634a1.474 1.474 0 0 0 0-1.718l-.447-.607a1.49 1.49 0 0 1 .473-2.167Z"
class="multicolor-0:custom hierarchical-0:secondary SFSymbolsPreviewtransparent" data-fill="secondary" />
<path fill="currentColor" fill-rule="evenodd"
d="m1.712 8.078-.657.37a1.49 1.49 0 0 0-.473 2.167l.447.607a1.474 1.474 0 0 1 0 1.718l-.447.634c-.499.713-.262 1.744.5 2.14l.656.37c.552.29.867.924.762 1.532l-.131.74c-.158.872.5 1.69 1.392 1.717l.762.027c.63.026 1.183.449 1.34 1.056l.21.74c.237.846 1.183 1.295 1.997.951l.71-.29c.578-.238 1.26-.106 1.681.37l.5.58a1.456 1.456 0 0 0 2.206-.026l.5-.58a1.459 1.459 0 0 1 1.655-.397l.71.29a1.45 1.45 0 0 0 1.97-.977l.21-.74a1.461 1.461 0 0 1 1.34-1.083l.762-.053a1.493 1.493 0 0 0 1.366-1.744l-.131-.74a1.495 1.495 0 0 1 .735-1.558l.657-.37a1.49 1.49 0 0 0 .473-2.167l-.447-.607a1.474 1.474 0 0 1 0-1.718l.447-.634c.5-.713.263-1.743-.5-2.14l-.656-.37a1.475 1.475 0 0 1-.762-1.532l.131-.74a1.46 1.46 0 0 0-1.392-1.717l-.762-.027a1.437 1.437 0 0 1-1.34-1.056l-.21-.74c-.237-.846-1.183-1.295-1.997-.951l-.788.29c-.578.238-1.261.106-1.682-.37l-.499-.58a1.449 1.449 0 0 0-2.18.052l-.5.581a1.459 1.459 0 0 1-1.655.397l-.71-.291a1.45 1.45 0 0 0-1.97.978l-.21.74a1.461 1.461 0 0 1-1.34 1.083l-.762.052a1.493 1.493 0 0 0-1.366 1.744l.131.74c.158.581-.131 1.215-.683 1.532Zm14.891-1.105c.437 0 .822.158 1.13.474.308.29.462.712.462 1.134 0 .422-.18.843-.488 1.16l-6.136 6.812a1.474 1.474 0 0 1-1.104.474c-.41 0-.796-.158-1.104-.474l-3.08-3.675c-.309-.29-.463-.712-.463-1.133 0-.422.154-.818.462-1.134a1.572 1.572 0 0 1 1.13-.475c.41 0 .796.159 1.104.475l1.951 1.748L15.5 7.447a1.474 1.474 0 0 1 1.104-.474Z"
clip-rule="evenodd" data-fill="primary" />
The first element is removed from the final output. I'm guessing this is an optimization with the idea that transparent elements wouldn't be visible in the final symbol, but we'd actually like to retain the layer since we want it to be dynamically recolorable. Is it possible to support this? Perhaps elements with classnames indicating they support recoloring should be preserved, even when their fill is transparent?
Thanks @tinder-darraghburke for reporting this 🙏🏼. This issue was part bug and part optimisation and I believe it is now fixed on develop
. Please try it out and let me know if it fulfils your purpose.
The named color transparent
was previously not parsed correctly and has been fixed.
Your suggestion of including all layers with SFSymbol annotations is smart and I think it works well. The intention of the optimisation was to hide invisible layers in SVGs from unknown sources. Layers that include the supported SFSymbol class annotations will not be from unknown sources and can safely be included 👍🏻.
Amazing! Thanks so much for the quick resolution @swhitty!
Would love to test this out - would you be able to release another version of the CLI with these changes?
Sure, try this notarized build from develop
SwiftDraw.dmg.zip
Included within 0.15.0 release
This is fantastic, thank you so much!