Problem/Motivation

Many SVG files get exported without width and height attributes. This module will then apply a default value of 64 for both attributes.
As setting these attributes on the <img> tag gets more and more important these days, we should make another attempt to retrieve width and height through the viewBox attribute.

Proposed resolution

In svg_image_get_image_file_dimensions(), try to read width and height from the viewBox attribute if the first attempt is not successful.

Issue fork svg_image-3227734

Command icon Show commands

Start within a Git clone of the project using the version control instructions.

Or, if you do not have SSH keys set up on git.drupalcode.org:

Comments

mrshowerman created an issue. See original summary.

mrshowerman’s picture

Here's a first patch.

mrshowerman’s picture

Assigned: mrshowerman » Unassigned
Status: Active » Needs review
mrshowerman’s picture

StatusFileSize
new1.07 KB
new558 bytes
qazema’s picture

We applied the patch on a Drupal 9.4.5 installation and it works well.

FalkNisius made their first commit to this issue’s fork.

FalkNisius’s picture

Sorry, that I react late. Thanks for the work.

My team runs in the issue with missing width and height, and the approach should be changed.

The actual code prefers the width and height attribute from the svg-tag. Most exporters write 100% to that attributes, and it results to a width and height of 100 pixel, because the code strips the % sign.

The viewBox attribute is more usual and should be preferred if it exists.

The code depends on the letter case of the attributes, that is not always given, that viewBox is written as camel case.

The first two values of viewBox should not be ignored, they can have positive and negative values. The values in the viewBox can be float. We have to build a difference between the right and left corner values. At least the absolute values of the difference should be used.

bronismateusz’s picture

Version: 8.x-1.x-dev » 3.x-dev
Priority: Normal » Major
Status: Needs review » Needs work

I tested patch #4 and it only works when the image style uses crop or scale and crop. Then the values for width and height are actually passed on correctly. If these filters are not applied, then these attributes are missing, for the img field.
In addition, I also see that the rotate or desaturate filter does not work either.

bronismateusz’s picture

I have prepared a patch that fixes the addition of width and height attributes for the other filters in the image style.

milos.kroulik made their first commit to this issue’s fork.

mrshowerman’s picture

Left a few notes on the MR.

jennypanighetti’s picture

MR#32 as a patch worked great for me!

firewaller’s picture

Status: Needs work » Reviewed & tested by the community

The MR#32 changes work for us as well!

krystianbrzoza made their first commit to this issue’s fork.