diff --git a/plugins/convertPathData.js b/plugins/convertPathData.js index 9c529f7b..3af2aa18 100644 --- a/plugins/convertPathData.js +++ b/plugins/convertPathData.js @@ -276,7 +276,8 @@ function filters(path, params) { point = [0, 0], prev = { point: [0, 0] - }; + }, + index = 0; path = path.filter(function(item) { @@ -284,6 +285,8 @@ function filters(path, params) { data = item.data; point = item.point; + index++; + if (data) { if (params.floatPrecision) { @@ -308,19 +311,25 @@ function filters(path, params) { } } - // remove useless path segments + // remove useless non-first path segments if (params.removeUseless) { // m 0,0 / l 0,0 / h 0 / v 0 / q 0,0 0,0 / t 0,0 / c 0,0 0,0 0,0 / s 0,0 0,0 if ( - 'mlhvqtcs'.indexOf(instruction) > -1 && + ( + 'lhvqtcs'.indexOf(instruction) > -1 || + (instruction === 'm' && index > 1) + ) && data.every(function(i) { return i === 0; }) ) { return false; } // M25,25 L25,25 C 25,25 25,25 25,25 - if ('MLHVQTCS'.indexOf(instruction) > -1) { + if ( + 'LHVQTCS'.indexOf(instruction) > -1 || + (instruction === 'M' && index > 1) + ) { var i = -1, every = data.every(function(d) { return d - prev.point[++i % 2] === 0; diff --git a/test/plugins/convertPathData.07.should.svg b/test/plugins/convertPathData.07.should.svg index 9085b044..69587506 100644 --- a/test/plugins/convertPathData.07.should.svg +++ b/test/plugins/convertPathData.07.should.svg @@ -1,5 +1,5 @@ - +