From da88bf06237c885064fd429992e63f3d5b807419 Mon Sep 17 00:00:00 2001 From: Jakob Guddas Date: Fri, 3 Mar 2023 22:28:28 +0100 Subject: [PATCH 1/3] fix: useless path collapsing for segments that are not start and end --- plugins/convertPathData.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/plugins/convertPathData.js b/plugins/convertPathData.js index f9e07c428..bea332309 100644 --- a/plugins/convertPathData.js +++ b/plugins/convertPathData.js @@ -766,8 +766,13 @@ function filters(path, params, { maybeHasStrokeAndLinecap, hasMarkerMid }) { } } - // remove useless non-first path segments - if (params.removeUseless && !maybeHasStrokeAndLinecap) { + // remove useless non-start/end path segments + var isStart = !path[index - 1] || path[index - 1].command === 'm'; + var isEnd = !path[index + 1] || path[index + 1].command === 'm'; + if ( + params.removeUseless && + (!maybeHasStrokeAndLinecap || !(isStart || isEnd)) + ) { // 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 ( (command === 'l' || From a016143179e74bc404bb719abbbc132ffa94c6ab Mon Sep 17 00:00:00 2001 From: Jakob Guddas Date: Fri, 3 Mar 2023 22:29:36 +0100 Subject: [PATCH 2/3] fix: don't remove useless path segments when there are mid markers --- plugins/convertPathData.js | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/convertPathData.js b/plugins/convertPathData.js index bea332309..49b037332 100644 --- a/plugins/convertPathData.js +++ b/plugins/convertPathData.js @@ -771,6 +771,7 @@ function filters(path, params, { maybeHasStrokeAndLinecap, hasMarkerMid }) { var isEnd = !path[index + 1] || path[index + 1].command === 'm'; if ( params.removeUseless && + !hasMarkerMid && (!maybeHasStrokeAndLinecap || !(isStart || isEnd)) ) { // 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 From 9e18f0713f5831a84d6f35e2593e164cc26c0f63 Mon Sep 17 00:00:00 2001 From: Jakob Guddas Date: Sat, 4 Mar 2023 11:03:52 +0100 Subject: [PATCH 3/3] feat: remove useless move segments --- plugins/convertPathData.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/plugins/convertPathData.js b/plugins/convertPathData.js index 49b037332..5319b3f74 100644 --- a/plugins/convertPathData.js +++ b/plugins/convertPathData.js @@ -774,9 +774,10 @@ function filters(path, params, { maybeHasStrokeAndLinecap, hasMarkerMid }) { !hasMarkerMid && (!maybeHasStrokeAndLinecap || !(isStart || isEnd)) ) { - // 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 + // 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 ( - (command === 'l' || + (command === 'm' || + command === 'l' || command === 'h' || command === 'v' || command === 'q' ||