According to standards, a pseudo-element with a combination of
attr, and a
background-color (something like
mask-image: url(attr(src url));) should work, but in practice… it doesn’t.
attr is only supported in
content at the moment, despite the spec saying it should be usable anywhere.
Another idea is using
filter with a color-transforming SVG filter like
feColorMatrix. I’m not sure whether browsers support applying SVG filters to non-SVG elements, but if they do, this might just work! It’s entirely CSS, too.
In the end, though, the easy way is of course to hard-code pseudo-elements for all the current image radicals. To be honest, that’ll probably work just fine, and won’t be at any real risk of breaking in the future. Any radicals added from now on will most likely be part of the custom font (although I suppose there’s a chaaaaance ).