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
 {
===  

Reply via email to