Why would you build a class `SVGImage` that *requires* a file as input? I realize that you might need that for the Cairo backend, but whatever code deals with Cairo should also deal with its oddities, ie. read the data out of a file and pass it to this class.