processing4 icon indicating copy to clipboard operation
processing4 copied to clipboard

loadShape() problems with SVGs that have . starting a number in a path

Open benfry opened this issue 3 years ago • 2 comments

Re-saving the SVG in 1.0 format with Illustrator instead of 1.1 will fix the issue, but the problem seems to be that a leading . in the SVG path code won't render properly, for instance:

  • M3,.6 – parse to M, 3, .6 (may be fixed with https://github.com/processing/processing4/commit/9ef40ba48c284ae52e7eae759af325486ca85f1e)
  • M.6.7 – parse to M, .6, and .7
  • …etc

This caused a problem with the variable icons, which was fixed commit 805306fd1b4eeeac35bf1c29693d751edf349f57, so using the previous version of the SVGs should do the trick for testing.

Test code:

static final String[] names = { 
  "array", "boolean", "byte", "char", "double", "float",  
  "integer", "long", "object", "short", "string"
};

void setup() {
  size(250, 550);
  textAlign(LEFT, CENTER);
  textSize(24);
  fill(0);

  int each = 50;
  int pos = 0;
  for (String name : names) {
    PShape s = loadShape(name + ".svg");
    shape(s, 0, pos, each, each);
    text(name, 60, pos + each/2);
    pos += each;
  }
  saveFrame("issue.png");
}

issue

benfry avatar Jul 30 '22 23:07 benfry

This may be the same as https://github.com/processing/processing4/issues/515

benfry avatar Jul 31 '22 00:07 benfry

I worked with SVG files had also caused ArrayIndexOutOfBoundsException due to the parsing of the path data and in my case the exception was gone with Processing 4.2 , so It seems the fix for #515 also fixes #518 ? thanks @benfry for the fix

haschdl avatar Mar 08 '23 20:03 haschdl