I think I have gotten to the bottom of the segfault problem. Pretty sure it is the librsvg people being clever/helpful somewhere between Werner's version and current.
rsvg_handle_get_intrinsic_dimensions() for this header (literal from a a previous message in this thread): <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">... </svg> is supposed to fail to return any width and height, which is probably what Werner's older librsvg does. And the ft demo code would set the svg dimension to units_per_EM when it fails. dimension_svg.width = units_per_EM; dimension_svg.height = units_per_EM; but in my newer/current librsvg it returns with a success of 1x1 (I think that's just a "convenient assumption" to go for unit square for intended size when there is no info ), so it is out by a factor of 1000x1000 . I'll see if I can find the actual change, but I believe the below is the correct fix: === @@ -243,6 +243,10 @@ { dimension_svg.width = (int)out_width.length; /* XXX rounding? */ dimension_svg.height = (int)out_height.length; + if (((int)out_width.length == 1) && ((int)out_height.length == 1)) { + dimension_svg.width = units_per_EM; + dimension_svg.height = units_per_EM; + } } else { ===