Request: Defined Scalability

As it turns out, depending on how you are exporting from Illustrator, more than this is needed. I suspect you know all this, as it was one of your excellent posts that got me interested to investigate the topic, but I will post it for others’ benefit.

When exporting SVG, both AI and Inkscape export in “user units” which are pixels. Depending on how you export, it will also put a “viewbox” around the drawing. The viewbox specifies the size in physical dimensions (mm or in typically) as well as user units. So with that, in theory, external programs reading the file, like GFUI, can correctly determine the mapping between the two coordinate systems and hence the physical size of paths within the SVG.

However, if you use Illustrator’s “Asset Export” feature and the SVG file format, it does not include the viewbox. This means that the external program has to guess the mapping from pixels to physical units. Unfortunately, Inkscape’s guess is 96 pixels-per-inch (ppi or dpi), and Illustrator’s is 72. The GFUI default also appears to be 96, as does that of Fusion 360. 72/96 is 0.75. So this is why when stuff is missized it is always 75% of the correct size.

In addition, depending on how big the viewbox is, there can be a significant loss of precision. In general, specify 3 decimal places in export, and that shouldn’t be an issue.

So here are my rules:

  1. Always uncheck “Responsive” in SVG settings when exporting SVG from Illustrator
  2. If using the “Asset Export” feature, use another format. PDF set to High Quality Print settings works well. Other means of exporting from Illustrator (Exportfor Screens, Save As,…) don’t have this issue, so feel free to use SVG there.
  3. Always double check the size in the GFUI using the rulers.
  4. Specify 3 decimal places in the export settings

Also, notable is no matter what I did, SVG with viewbox or not, when going from Illustrator to Inkscape, I found it miscaled things by that 72/96 ratio. Same for Illustrator to Fusion 360. I ended up just manually fixing that by scaling things in the destination program by 1.333 (~96/72).

2 Likes