According to standards, a pseudo-element with a combination of mask-image
, 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 feBlend
or 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
).