Skip to content

Path elements with transparent fills removed #27

@tinder-darraghburke

Description

@tinder-darraghburke

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:

verified-true

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions