We're looking at ways to improve this but it's pretty tricky; I have no good solution for you right now. It's a very important feature and I agree that it's tantalizing and frustrating when it doesn't work.
I happened to have done some similar frontend project to rasterize svg to png (or jpeg), using a canvas drawing the svg, and convert canvas to Image blob, and then to png or jpeg, works mostly good, but when the svg is embedding some image at a url or calling textPath with some special font, it has to embed all image or font file as base64 binary for it be able to work, and it indeed work
https://stackoverflow.com/a/3976034 might be a good point,
so, I suggest Observablehq can either implement that solution, or make another API like ${await FileAttachment("sea-ice.jpg").base64()} for people can refer the based64 encoded image into the svg