Fix SVG display again (bug#44655)

* src/image.c (svg_load_image): Fall back to
rsvg_handle_get_dimensions if we can't calculate the size of the
image.
This commit is contained in:
Alan Third 2020-11-15 17:21:03 +00:00
parent de7d9e1f88
commit ca8e37eaf6

View file

@ -9903,30 +9903,21 @@ svg_load_image (struct frame *f, struct image *img, char *contents,
viewbox_width = viewbox.x + viewbox.width;
viewbox_height = viewbox.y + viewbox.height;
}
#else
/* The function used above to get the geometry of the visible area
of the SVG are only available in librsvg 2.46 and above, so in
certain circumstances this code path can result in some parts of
the SVG being cropped. */
RsvgDimensionData dimension_data;
rsvg_handle_get_dimensions (rsvg_handle, &dimension_data);
viewbox_width = dimension_data.width;
viewbox_height = dimension_data.height;
#endif
if (viewbox_width == 0 || viewbox_height == 0)
{
/* We do not have any usable dimensions, so make some up. The
values below are supposedly the default values most web
browsers use for SVGs with no set size. */
/* FIXME: At this stage we should perhaps consider rendering the
image out to a bitmap and getting the dimensions from
that. */
viewbox_width = 300;
viewbox_height = 150;
}
#endif
{
/* The functions used above to get the geometry of the visible
area of the SVG are only available in librsvg 2.46 and above,
so in certain circumstances this code path can result in some
parts of the SVG being cropped. */
RsvgDimensionData dimension_data;
rsvg_handle_get_dimensions (rsvg_handle, &dimension_data);
viewbox_width = dimension_data.width;
viewbox_height = dimension_data.height;
}
compute_image_size (viewbox_width, viewbox_height, img->spec,
&width, &height);