CSS shape() landed in Firefox 148. It's similar to path(), but allows the full expressiveness of CSS…
shape() - CSS | MDN

The shape() CSS function is used to define a shape for the clip-path and offset-path properties. It combines an initial starting point with a series of shape commands that define the path of the shape. The shape() function is a member of the <basic-shape> data type.

MDN Web Docs

Here's the heart demo https://random-stuff.jakearchibald.com/heart-css-shape/

Note that the :hover applies to a wrapper, otherwise the clipped area is used for hit-testing - an old gotcha reminiscent of the Flash days.

Heart CSS shape

Ohh this SVG path to CSS shape() convertor is better, as it lets you control the viewbox https://path-to-shape.netlify.app/
Path to CSS Shape

Convert SVG path data to CSS shape() function.

@firefoxwebdevs I wonder how cursed of a use case would it be to use the shape() function for icons

@petafloppa could be fun for animation!

In Firefox and Chrome, you can use SVG, but override the path using the `d` property in CSS https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/Attribute/d - but unfortunately it doesn't work in Safari.

d - SVG | MDN

The d attribute defines a path to be drawn.

MDN Web Docs

@petafloppa that’s also what I thought about ☺

Having icons that work everywhere without custom fonts or inlined SVG data URI could make stuff much nicer.
@firefoxwebdevs

@firefoxwebdevs nice! Thank you for the info!