Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Boolean] Cannot read property 'getLength' of null at propagateWinding #1351

Closed
adamdyson opened this issue Jun 26, 2017 · 1 comment
Closed

Comments

@adamdyson
Copy link

Please see the example and error message below (using node, paper-jsdom, v0.11.4).

Error

TypeError: Cannot read property 'getLength' of null
    at propagateWinding (./node_modules/paper/dist/paper-full.js:10273:19)
    at traceBoolean (./node_modules/paper/dist/paper-full.js:9905:6)
    at CompoundPath.unite (./node_modules/paper/dist/paper-full.js:10491:11)
    at uniteTextPaths (./paperjs.js:111:21)
    at Socket.<anonymous> (./paperjs.js:26:3)
    at emitNone (events.js:91:20)
    at Socket.emit (events.js:188:7)
    at endReadableNT (_stream_readable.js:975:12)
    at _combinedTickCallback (internal/process/next_tick.js:80:11)
    at process._tickCallback (internal/process/next_tick.js:104:9)

Example

	var paper = require('paper-jsdom');
	
	var paths = [
		{
			"x":"0",
			"y":"72",
			"d":"M 39.796875 -44.296875 C 39.796875 -43.285156 39.660156 -42.363281 39.390625 -41.53125 C 39.117188 -40.707031 38.75 -39.992188 38.28125 -39.390625 C 37.8125 -38.796875 37.238281 -38.332031 36.5625 -38 C 35.882812 -37.675781 35.144531 -37.515625 34.34375 -37.515625 C 33.4375 -37.515625 32.613281 -37.707031 31.875 -38.09375 C 31.132812 -38.476562 30.492188 -39.035156 29.953125 -39.765625 C 30.847656 -40.421875 31.5625 -41.289062 32.09375 -42.375 C 32.632812 -43.46875 32.90625 -44.632812 32.90625 -45.875 C 32.90625 -47.425781 32.445312 -48.648438 31.53125 -49.546875 C 30.625 -50.453125 29.375 -50.90625 27.78125 -50.90625 C 26.8125 -50.90625 25.921875 -50.722656 25.109375 -50.359375 C 24.304688 -49.992188 23.617188 -49.488281 23.046875 -48.84375 C 22.472656 -48.207031 22.023438 -47.441406 21.703125 -46.546875 C 21.390625 -45.660156 21.234375 -44.6875 21.234375 -43.625 C 21.234375 -42.03125 21.617188 -40.53125 22.390625 -39.125 C 23.171875 -37.71875 24.144531 -36.332031 25.3125 -34.96875 C 26.488281 -33.613281 27.753906 -32.238281 29.109375 -30.84375 C 30.472656 -29.457031 31.738281 -27.972656 32.90625 -26.390625 C 34.082031 -24.804688 35.054688 -23.09375 35.828125 -21.25 C 36.597656 -19.414062 36.984375 -17.382812 36.984375 -15.15625 C 36.984375 -12.789062 36.488281 -10.601562 35.5 -8.59375 C 34.519531 -6.59375 33.15625 -4.859375 31.40625 -3.390625 C 29.664062 -1.929688 27.617188 -0.785156 25.265625 0.046875 C 22.910156 0.878906 20.359375 1.296875 17.609375 1.296875 C 15.316406 1.296875 13.238281 0.992188 11.375 0.390625 C 9.507812 -0.203125 7.914062 -1.050781 6.59375 -2.15625 C 5.269531 -3.269531 4.242188 -4.597656 3.515625 -6.140625 C 2.785156 -7.691406 2.421875 -9.421875 2.421875 -11.328125 C 2.421875 -12.921875 2.675781 -14.40625 3.1875 -15.78125 C 3.707031 -17.164062 4.410156 -18.367188 5.296875 -19.390625 C 6.191406 -20.410156 7.25 -21.210938 8.46875 -21.796875 C 9.6875 -22.378906 10.988281 -22.671875 12.375 -22.671875 C 14.0625 -22.671875 15.476562 -22.25 16.625 -21.40625 C 17.78125 -20.5625 18.5 -19.40625 18.78125 -17.9375 C 17.507812 -17.9375 16.367188 -17.757812 15.359375 -17.40625 C 14.359375 -17.050781 13.503906 -16.554688 12.796875 -15.921875 C 12.097656 -15.296875 11.550781 -14.53125 11.15625 -13.625 C 10.769531 -12.71875 10.578125 -11.703125 10.578125 -10.578125 C 10.578125 -8.472656 11.191406 -6.804688 12.421875 -5.578125 C 13.660156 -4.347656 15.320312 -3.734375 17.40625 -3.734375 C 18.664062 -3.734375 19.832031 -3.957031 20.90625 -4.40625 C 21.988281 -4.863281 22.914062 -5.488281 23.6875 -6.28125 C 24.46875 -7.082031 25.078125 -8.035156 25.515625 -9.140625 C 25.960938 -10.242188 26.1875 -11.441406 26.1875 -12.734375 C 26.1875 -14.046875 25.96875 -15.300781 25.53125 -16.5 C 25.101562 -17.707031 24.523438 -18.878906 23.796875 -20.015625 C 23.078125 -21.160156 22.257812 -22.28125 21.34375 -23.375 C 20.425781 -24.476562 19.488281 -25.585938 18.53125 -26.703125 C 17.570312 -27.816406 16.632812 -28.9375 15.71875 -30.0625 C 14.800781 -31.1875 13.976562 -32.335938 13.25 -33.515625 C 12.53125 -34.703125 11.953125 -35.925781 11.515625 -37.1875 C 11.078125 -38.457031 10.859375 -39.796875 10.859375 -41.203125 C 10.859375 -43.097656 11.265625 -44.847656 12.078125 -46.453125 C 12.890625 -48.066406 14.015625 -49.457031 15.453125 -50.625 C 16.890625 -51.800781 18.59375 -52.722656 20.5625 -53.390625 C 22.53125 -54.054688 24.675781 -54.390625 27 -54.390625 C 28.945312 -54.390625 30.703125 -54.148438 32.265625 -53.671875 C 33.835938 -53.191406 35.179688 -52.507812 36.296875 -51.625 C 37.410156 -50.75 38.269531 -49.6875 38.875 -48.4375 C 39.488281 -47.195312 39.796875 -45.816406 39.796875 -44.296875 Z M 39.796875 -44.296875"
		},
		{
			"x":"41.027344",
			"y":"72",
			"d":"M 30.09375 -12.90625 C 29.082031 -11.21875 27.925781 -9.578125 26.625 -7.984375 C 25.332031 -6.390625 23.867188 -4.96875 22.234375 -3.71875 C 20.609375 -2.476562 18.804688 -1.476562 16.828125 -0.71875 C 14.847656 0.0390625 12.671875 0.421875 10.296875 0.421875 C 8.585938 0.421875 7.039062 0.207031 5.65625 -0.21875 C 4.28125 -0.65625 3.097656 -1.332031 2.109375 -2.25 C 1.128906 -3.164062 0.375 -4.34375 -0.15625 -5.78125 C -0.6875 -7.226562 -0.953125 -8.96875 -0.953125 -11 C -0.953125 -12.382812 -0.8125 -13.976562 -0.53125 -15.78125 C -0.25 -17.59375 0.191406 -19.445312 0.796875 -21.34375 C 1.410156 -23.238281 2.222656 -25.097656 3.234375 -26.921875 C 4.242188 -28.753906 5.460938 -30.390625 6.890625 -31.828125 C 8.316406 -33.273438 9.988281 -34.4375 11.90625 -35.3125 C 13.832031 -36.195312 16.03125 -36.640625 18.5 -36.640625 C 20.113281 -36.640625 21.429688 -36.441406 22.453125 -36.046875 C 23.472656 -35.660156 24.28125 -35.148438 24.875 -34.515625 C 25.46875 -33.890625 25.875 -33.160156 26.09375 -32.328125 C 26.320312 -31.492188 26.4375 -30.632812 26.4375 -29.75 C 26.4375 -27.65625 25.976562 -25.710938 25.0625 -23.921875 C 24.15625 -22.128906 22.929688 -20.566406 21.390625 -19.234375 C 19.859375 -17.898438 18.09375 -16.820312 16.09375 -16 C 14.101562 -15.175781 12.03125 -14.695312 9.875 -14.5625 C 9.832031 -14.019531 9.789062 -13.507812 9.75 -13.03125 C 9.71875 -12.550781 9.703125 -12.097656 9.703125 -11.671875 C 9.703125 -10.453125 9.8125 -9.445312 10.03125 -8.65625 C 10.257812 -7.875 10.585938 -7.257812 11.015625 -6.8125 C 11.453125 -6.375 11.992188 -6.066406 12.640625 -5.890625 C 13.285156 -5.710938 14.039062 -5.625 14.90625 -5.625 C 16.332031 -5.625 17.625 -5.8125 18.78125 -6.1875 C 19.945312 -6.5625 21.035156 -7.078125 22.046875 -7.734375 C 23.054688 -8.390625 24.007812 -9.160156 24.90625 -10.046875 C 25.8125 -10.941406 26.722656 -11.894531 27.640625 -12.90625 Z M 10.4375 -18 C 11.800781 -18.09375 13.113281 -18.476562 14.375 -19.15625 C 15.644531 -19.84375 16.757812 -20.726562 17.71875 -21.8125 C 18.675781 -22.90625 19.441406 -24.148438 20.015625 -25.546875 C 20.597656 -26.941406 20.890625 -28.390625 20.890625 -29.890625 C 20.890625 -30.773438 20.757812 -31.488281 20.5 -32.03125 C 20.238281 -32.570312 19.769531 -32.84375 19.09375 -32.84375 C 18.175781 -32.84375 17.273438 -32.398438 16.390625 -31.515625 C 15.515625 -30.640625 14.691406 -29.5 13.921875 -28.09375 C 13.148438 -26.6875 12.460938 -25.097656 11.859375 -23.328125 C 11.265625 -21.554688 10.789062 -19.78125 10.4375 -18 Z M 10.4375 -18"
		},
		{
			"x":"68.660156",
			"y":"72",
			"d":"M 22.25 -12.90625 C 21.570312 -10.957031 20.816406 -9.269531 19.984375 -7.84375 C 19.148438 -6.414062 18.28125 -5.207031 17.375 -4.21875 C 16.476562 -3.238281 15.554688 -2.441406 14.609375 -1.828125 C 13.660156 -1.222656 12.738281 -0.753906 11.84375 -0.421875 C 10.957031 -0.0859375 10.109375 0.132812 9.296875 0.25 C 8.492188 0.363281 7.773438 0.421875 7.140625 0.421875 C 6.054688 0.421875 5.046875 0.257812 4.109375 -0.0625 C 3.171875 -0.394531 2.359375 -0.910156 1.671875 -1.609375 C 0.984375 -2.316406 0.4375 -3.207031 0.03125 -4.28125 C -0.363281 -5.363281 -0.5625 -6.664062 -0.5625 -8.1875 C -0.5625 -8.84375 -0.515625 -9.5625 -0.421875 -10.34375 C -0.328125 -11.132812 -0.1875 -11.988281 0 -12.90625 L 4.328125 -33.125 L 1.9375 -33.125 L 2.53125 -36 L 4.890625 -36 L 7.0625 -45.953125 L 17.71875 -47.390625 L 15.265625 -36 L 19.578125 -36 L 19.015625 -33.125 L 14.703125 -33.125 L 10.09375 -11.53125 C 9.976562 -11.132812 9.898438 -10.742188 9.859375 -10.359375 C 9.828125 -9.972656 9.8125 -9.59375 9.8125 -9.21875 C 9.8125 -8.207031 10.046875 -7.507812 10.515625 -7.125 C 10.984375 -6.738281 11.722656 -6.546875 12.734375 -6.546875 C 13.429688 -6.546875 14.113281 -6.703125 14.78125 -7.015625 C 15.445312 -7.328125 16.0625 -7.765625 16.625 -8.328125 C 17.1875 -8.890625 17.691406 -9.5625 18.140625 -10.34375 C 18.585938 -11.132812 18.953125 -11.988281 19.234375 -12.90625 Z M 22.25 -12.90625"
		},
		{
			"x":"87.890625",
			"y":"72",
			"d":"M -2.8125 0 L 7.625 -48.96875 L 18.28125 -50.421875 L 14.421875 -32.34375 C 15.191406 -33.1875 15.957031 -33.863281 16.71875 -34.375 C 17.476562 -34.894531 18.222656 -35.296875 18.953125 -35.578125 C 19.679688 -35.859375 20.363281 -36.046875 21 -36.140625 C 21.644531 -36.234375 22.25 -36.28125 22.8125 -36.28125 C 23.96875 -36.28125 25.035156 -36.128906 26.015625 -35.828125 C 27.003906 -35.523438 27.851562 -35.046875 28.5625 -34.390625 C 29.28125 -33.734375 29.835938 -32.890625 30.234375 -31.859375 C 30.628906 -30.828125 30.828125 -29.59375 30.828125 -28.15625 C 30.828125 -27.195312 30.738281 -26.160156 30.5625 -25.046875 C 30.394531 -23.929688 30.179688 -22.796875 29.921875 -21.640625 C 29.660156 -20.484375 29.382812 -19.328125 29.09375 -18.171875 C 28.800781 -17.023438 28.523438 -15.925781 28.265625 -14.875 C 28.003906 -13.820312 27.785156 -12.84375 27.609375 -11.9375 C 27.441406 -11.03125 27.359375 -10.238281 27.359375 -9.5625 C 27.359375 -8.675781 27.5625 -7.953125 27.96875 -7.390625 C 28.375 -6.828125 29.128906 -6.546875 30.234375 -6.546875 C 31.378906 -6.546875 32.175781 -6.695312 32.625 -7 C 32.457031 -5.6875 32.128906 -4.566406 31.640625 -3.640625 C 31.148438 -2.710938 30.546875 -1.941406 29.828125 -1.328125 C 29.117188 -0.722656 28.320312 -0.28125 27.4375 0 C 26.5625 0.28125 25.644531 0.421875 24.6875 0.421875 C 23.300781 0.421875 22.144531 0.191406 21.21875 -0.265625 C 20.289062 -0.722656 19.546875 -1.332031 18.984375 -2.09375 C 18.421875 -2.851562 18.019531 -3.71875 17.78125 -4.6875 C 17.550781 -5.664062 17.4375 -6.671875 17.4375 -7.703125 C 17.4375 -8.921875 17.601562 -10.34375 17.9375 -11.96875 C 18.28125 -13.601562 18.648438 -15.273438 19.046875 -16.984375 C 19.453125 -18.691406 19.820312 -20.34375 20.15625 -21.9375 C 20.5 -23.53125 20.671875 -24.898438 20.671875 -26.046875 C 20.671875 -28.515625 19.804688 -29.75 18.078125 -29.75 C 17.460938 -29.75 16.890625 -29.597656 16.359375 -29.296875 C 15.835938 -29.003906 15.347656 -28.59375 14.890625 -28.0625 C 14.429688 -27.539062 14.015625 -26.925781 13.640625 -26.21875 C 13.265625 -25.519531 12.9375 -24.773438 12.65625 -23.984375 L 7.5625 0 Z M -2.8125 0"
		},
		{
			"x":"136.125",
			"y":"72",
			"d":"M 6.78125 0 L 16.5625 -45.8125 L 27.21875 -47.21875 L 18.5625 -6.859375 C 19.875 -5.898438 21.242188 -5.421875 22.671875 -5.421875 C 24.109375 -5.421875 25.445312 -5.863281 26.6875 -6.75 C 27.925781 -7.644531 29.054688 -8.859375 30.078125 -10.390625 C 31.097656 -11.921875 32.003906 -13.71875 32.796875 -15.78125 C 33.597656 -17.84375 34.273438 -20.050781 34.828125 -22.40625 C 35.378906 -24.769531 35.796875 -27.195312 36.078125 -29.6875 C 36.359375 -32.1875 36.5 -34.65625 36.5 -37.09375 C 36.5 -39.53125 36.242188 -41.609375 35.734375 -43.328125 C 35.234375 -45.054688 34.519531 -46.460938 33.59375 -47.546875 C 32.664062 -48.640625 31.554688 -49.4375 30.265625 -49.9375 C 28.984375 -50.445312 27.554688 -50.703125 25.984375 -50.703125 C 23.304688 -50.703125 20.816406 -50.300781 18.515625 -49.5 C 16.222656 -48.707031 14.234375 -47.550781 12.546875 -46.03125 C 10.859375 -44.519531 9.535156 -42.6875 8.578125 -40.53125 C 7.617188 -38.375 7.140625 -35.925781 7.140625 -33.1875 C 7.140625 -32.269531 7.191406 -31.523438 7.296875 -30.953125 C 7.398438 -30.378906 7.507812 -29.921875 7.625 -29.578125 C 7.75 -29.242188 7.863281 -28.984375 7.96875 -28.796875 C 8.070312 -28.609375 8.125 -28.441406 8.125 -28.296875 C 5.707031 -28.296875 3.816406 -28.800781 2.453125 -29.8125 C 1.097656 -30.820312 0.421875 -32.546875 0.421875 -34.984375 C 0.421875 -36.617188 0.742188 -38.226562 1.390625 -39.8125 C 2.035156 -41.394531 2.941406 -42.890625 4.109375 -44.296875 C 5.285156 -45.703125 6.691406 -46.992188 8.328125 -48.171875 C 9.972656 -49.359375 11.785156 -50.382812 13.765625 -51.25 C 15.742188 -52.125 17.867188 -52.800781 20.140625 -53.28125 C 22.421875 -53.757812 24.78125 -54 27.21875 -54 C 29.53125 -54 31.613281 -53.738281 33.46875 -53.21875 C 35.320312 -52.707031 36.960938 -51.988281 38.390625 -51.0625 C 39.816406 -50.132812 41.039062 -49.03125 42.0625 -47.75 C 43.082031 -46.476562 43.914062 -45.070312 44.5625 -43.53125 C 45.207031 -42 45.679688 -40.359375 45.984375 -38.609375 C 46.285156 -36.867188 46.4375 -35.085938 46.4375 -33.265625 C 46.4375 -30.515625 46.191406 -27.753906 45.703125 -24.984375 C 45.210938 -22.222656 44.523438 -19.578125 43.640625 -17.046875 C 42.765625 -14.515625 41.710938 -12.15625 40.484375 -9.96875 C 39.253906 -7.78125 37.898438 -5.875 36.421875 -4.25 C 34.941406 -2.632812 33.363281 -1.363281 31.6875 -0.4375 C 30.019531 0.488281 28.296875 0.953125 26.515625 0.953125 C 25.109375 0.953125 23.675781 0.644531 22.21875 0.03125 C 20.769531 -0.570312 19.269531 -1.546875 17.71875 -2.890625 L 17.125 0 Z M 6.78125 0"
		},
		{
			"x":"183.867188",
			"y":"72",
			"d":"M 24.1875 5.765625 C 23.675781 8.347656 22.929688 10.4375 21.953125 12.03125 C 20.984375 13.625 19.898438 14.863281 18.703125 15.75 C 17.503906 16.644531 16.253906 17.242188 14.953125 17.546875 C 13.660156 17.847656 12.414062 18 11.21875 18 C 10.113281 18 9.070312 17.851562 8.09375 17.5625 C 7.125 17.269531 6.273438 16.835938 5.546875 16.265625 C 4.828125 15.691406 4.25 14.960938 3.8125 14.078125 C 3.382812 13.203125 3.171875 12.175781 3.171875 11 C 3.171875 9.5 3.523438 8.175781 4.234375 7.03125 C 4.953125 5.882812 5.875 4.882812 7 4.03125 C 8.125 3.175781 9.382812 2.441406 10.78125 1.828125 C 12.175781 1.222656 13.550781 0.707031 14.90625 0.28125 L 15.78125 -3.59375 C 15.007812 -2.75 14.238281 -2.0625 13.46875 -1.53125 C 12.695312 -1 11.945312 -0.59375 11.21875 -0.3125 C 10.488281 -0.03125 9.785156 0.160156 9.109375 0.265625 C 8.429688 0.367188 7.773438 0.421875 7.140625 0.421875 C 6.054688 0.421875 5.046875 0.257812 4.109375 -0.0625 C 3.171875 -0.394531 2.359375 -0.910156 1.671875 -1.609375 C 0.984375 -2.316406 0.4375 -3.207031 0.03125 -4.28125 C -0.363281 -5.363281 -0.5625 -6.664062 -0.5625 -8.1875 C -0.5625 -8.84375 -0.515625 -9.5625 -0.421875 -10.34375 C -0.328125 -11.132812 -0.1875 -11.988281 0 -12.90625 L 4.890625 -36 L 15.265625 -36 L 10.09375 -11.53125 C 9.945312 -10.925781 9.875 -10.316406 9.875 -9.703125 C 9.875 -9.285156 9.910156 -8.890625 9.984375 -8.515625 C 10.054688 -8.140625 10.171875 -7.800781 10.328125 -7.5 C 10.492188 -7.207031 10.710938 -6.972656 10.984375 -6.796875 C 11.253906 -6.628906 11.601562 -6.546875 12.03125 -6.546875 C 12.6875 -6.546875 13.300781 -6.691406 13.875 -6.984375 C 14.445312 -7.273438 14.96875 -7.679688 15.4375 -8.203125 C 15.90625 -8.734375 16.320312 -9.363281 16.6875 -10.09375 C 17.050781 -10.820312 17.375 -11.609375 17.65625 -12.453125 L 22.671875 -36 L 33.046875 -36 L 25.90625 -2.609375 C 27.007812 -2.984375 28.003906 -3.429688 28.890625 -3.953125 C 29.785156 -4.484375 30.601562 -5.148438 31.34375 -5.953125 C 32.082031 -6.765625 32.75 -7.734375 33.34375 -8.859375 C 33.945312 -9.984375 34.492188 -11.332031 34.984375 -12.90625 L 38 -12.90625 C 37.28125 -10.507812 36.421875 -8.515625 35.421875 -6.921875 C 34.421875 -5.328125 33.359375 -4.019531 32.234375 -3 C 31.109375 -1.988281 29.945312 -1.210938 28.75 -0.671875 C 27.5625 -0.128906 26.40625 0.28125 25.28125 0.5625 Z M 14.171875 3.90625 C 13.234375 4.257812 12.34375 4.640625 11.5 5.046875 C 10.65625 5.453125 9.910156 5.898438 9.265625 6.390625 C 8.617188 6.890625 8.101562 7.4375 7.71875 8.03125 C 7.332031 8.632812 7.140625 9.296875 7.140625 10.015625 C 7.140625 10.273438 7.1875 10.546875 7.28125 10.828125 C 7.375 11.109375 7.519531 11.363281 7.71875 11.59375 C 7.914062 11.832031 8.164062 12.019531 8.46875 12.15625 C 8.78125 12.300781 9.144531 12.375 9.5625 12.375 C 10.3125 12.375 11.078125 11.851562 11.859375 10.8125 C 12.648438 9.769531 13.28125 8.160156 13.75 5.984375 Z M 14.171875 3.90625"
		},
		{
			"x":"218.847656",
			"y":"72",
			"d":"M 30.515625 -12.90625 C 28.640625 -10.726562 26.757812 -8.925781 24.875 -7.5 C 22.988281 -6.082031 21.203125 -4.882812 19.515625 -3.90625 C 18.765625 -3.101562 17.925781 -2.425781 17 -1.875 C 16.070312 -1.332031 15.109375 -0.890625 14.109375 -0.546875 C 13.117188 -0.203125 12.113281 0.0390625 11.09375 0.1875 C 10.070312 0.34375 9.101562 0.421875 8.1875 0.421875 C 6.382812 0.421875 4.820312 0.144531 3.5 -0.40625 C 2.175781 -0.957031 1.078125 -1.671875 0.203125 -2.546875 C -0.660156 -3.429688 -1.296875 -4.414062 -1.703125 -5.5 C -2.117188 -6.59375 -2.328125 -7.691406 -2.328125 -8.796875 C -2.328125 -9.640625 -2.210938 -10.414062 -1.984375 -11.125 C -1.765625 -11.84375 -1.476562 -12.484375 -1.125 -13.046875 C -0.769531 -13.609375 -0.363281 -14.09375 0.09375 -14.5 C 0.550781 -14.914062 1.023438 -15.238281 1.515625 -15.46875 C 3.523438 -19.082031 5.222656 -22.648438 6.609375 -26.171875 C 7.992188 -29.703125 9.25 -33.25 10.375 -36.8125 L 21.03125 -38.21875 C 21.164062 -35.101562 21.296875 -32.398438 21.421875 -30.109375 C 21.554688 -27.828125 21.679688 -25.847656 21.796875 -24.171875 C 21.910156 -22.492188 22.015625 -21.066406 22.109375 -19.890625 C 22.203125 -18.722656 22.289062 -17.6875 22.375 -16.78125 C 22.457031 -15.882812 22.515625 -15.066406 22.546875 -14.328125 C 22.585938 -13.585938 22.609375 -12.820312 22.609375 -12.03125 C 22.609375 -11.488281 22.585938 -10.992188 22.546875 -10.546875 C 22.515625 -10.097656 22.441406 -9.675781 22.328125 -9.28125 C 23.378906 -9.894531 24.332031 -10.5 25.1875 -11.09375 C 26.039062 -11.6875 26.8125 -12.289062 27.5 -12.90625 Z M 1.515625 -10.296875 C 1.515625 -8.609375 1.847656 -7.347656 2.515625 -6.515625 C 3.179688 -5.691406 4.3125 -5.28125 5.90625 -5.28125 C 6.707031 -5.28125 7.484375 -5.390625 8.234375 -5.609375 C 8.984375 -5.828125 9.648438 -6.203125 10.234375 -6.734375 C 10.816406 -7.265625 11.285156 -7.953125 11.640625 -8.796875 C 11.992188 -9.640625 12.171875 -10.691406 12.171875 -11.953125 C 12.171875 -12.566406 12.148438 -13.160156 12.109375 -13.734375 C 12.078125 -14.304688 12.035156 -14.914062 11.984375 -15.5625 C 11.941406 -16.207031 11.878906 -16.925781 11.796875 -17.71875 C 11.710938 -18.519531 11.617188 -19.445312 11.515625 -20.5 C 11.410156 -21.550781 11.296875 -22.769531 11.171875 -24.15625 C 11.054688 -25.539062 10.929688 -27.15625 10.796875 -29 C 10.066406 -26.65625 9.207031 -24.378906 8.21875 -22.171875 C 7.238281 -19.972656 6.148438 -17.71875 4.953125 -15.40625 C 5.421875 -15.144531 5.8125 -14.8125 6.125 -14.40625 C 6.445312 -14.007812 6.609375 -13.507812 6.609375 -12.90625 C 6.609375 -12.457031 6.535156 -12.019531 6.390625 -11.59375 C 6.253906 -11.175781 6.046875 -10.796875 5.765625 -10.453125 C 5.484375 -10.117188 5.148438 -9.851562 4.765625 -9.65625 C 4.378906 -9.457031 3.941406 -9.359375 3.453125 -9.359375 C 3.046875 -9.359375 2.664062 -9.414062 2.3125 -9.53125 C 1.96875 -9.644531 1.703125 -9.898438 1.515625 -10.296875 Z M 1.515625 -10.296875"
		},
		{
			"x":"246.339844",
			"y":"72",
			"d":"M 40.46875 -27.359375 C 39.0625 -25.878906 37.242188 -24.625 35.015625 -23.59375 C 32.785156 -22.5625 30.347656 -21.820312 27.703125 -21.375 C 27.421875 -18.050781 26.78125 -15.050781 25.78125 -12.375 C 24.789062 -9.707031 23.53125 -7.4375 22 -5.5625 C 20.476562 -3.6875 18.734375 -2.242188 16.765625 -1.234375 C 14.796875 -0.222656 12.710938 0.28125 10.515625 0.28125 C 8.847656 0.28125 7.304688 0.078125 5.890625 -0.328125 C 4.472656 -0.742188 3.253906 -1.398438 2.234375 -2.296875 C 1.210938 -3.203125 0.414062 -4.375 -0.15625 -5.8125 C -0.726562 -7.257812 -1.015625 -9.015625 -1.015625 -11.078125 C -1.015625 -12.484375 -0.867188 -14.082031 -0.578125 -15.875 C -0.285156 -17.664062 0.179688 -19.507812 0.828125 -21.40625 C 1.472656 -23.3125 2.304688 -25.171875 3.328125 -26.984375 C 4.347656 -28.796875 5.585938 -30.414062 7.046875 -31.84375 C 8.515625 -33.28125 10.207031 -34.4375 12.125 -35.3125 C 14.050781 -36.195312 16.242188 -36.640625 18.703125 -36.640625 C 24.867188 -36.640625 27.953125 -32.804688 27.953125 -25.140625 L 27.953125 -25.0625 C 28.066406 -25.019531 28.175781 -25 28.28125 -25 C 28.382812 -25 28.53125 -25 28.71875 -25 C 29.5625 -25 30.46875 -25.117188 31.4375 -25.359375 C 32.414062 -25.609375 33.394531 -25.929688 34.375 -26.328125 C 35.363281 -26.734375 36.328125 -27.195312 37.265625 -27.71875 C 38.203125 -28.25 39.054688 -28.785156 39.828125 -29.328125 Z M 21.734375 -21.171875 C 20.984375 -21.359375 20.472656 -21.722656 20.203125 -22.265625 C 19.929688 -22.816406 19.796875 -23.457031 19.796875 -24.1875 C 19.796875 -25.195312 20 -26.023438 20.40625 -26.671875 C 20.820312 -27.316406 21.367188 -27.789062 22.046875 -28.09375 C 21.992188 -28.863281 21.910156 -29.507812 21.796875 -30.03125 C 21.679688 -30.5625 21.515625 -31 21.296875 -31.34375 C 21.085938 -31.6875 20.828125 -31.925781 20.515625 -32.0625 C 20.203125 -32.207031 19.796875 -32.28125 19.296875 -32.28125 C 18.429688 -32.28125 17.597656 -31.941406 16.796875 -31.265625 C 16.003906 -30.597656 15.25 -29.710938 14.53125 -28.609375 C 13.820312 -27.515625 13.164062 -26.257812 12.5625 -24.84375 C 11.96875 -23.425781 11.457031 -21.96875 11.03125 -20.46875 C 10.613281 -18.96875 10.285156 -17.484375 10.046875 -16.015625 C 9.816406 -14.546875 9.703125 -13.21875 9.703125 -12.03125 C 9.703125 -10.832031 9.765625 -9.859375 9.890625 -9.109375 C 10.023438 -8.359375 10.238281 -7.765625 10.53125 -7.328125 C 10.820312 -6.898438 11.203125 -6.601562 11.671875 -6.4375 C 12.140625 -6.269531 12.710938 -6.1875 13.390625 -6.1875 C 14.265625 -6.1875 15.140625 -6.570312 16.015625 -7.34375 C 16.890625 -8.125 17.703125 -9.179688 18.453125 -10.515625 C 19.203125 -11.847656 19.863281 -13.425781 20.4375 -15.25 C 21.019531 -17.082031 21.453125 -19.054688 21.734375 -21.171875 Z M 21.734375 -21.171875"
		},
		{
			"x":"277.945312",
			"y":"72",
			"d":"M -2.75 0 L 4.890625 -36 L 15.265625 -36 L 14.484375 -32.28125 C 15.253906 -33.144531 16.019531 -33.835938 16.78125 -34.359375 C 17.550781 -34.890625 18.296875 -35.296875 19.015625 -35.578125 C 19.742188 -35.859375 20.429688 -36.046875 21.078125 -36.140625 C 21.722656 -36.234375 22.328125 -36.28125 22.890625 -36.28125 C 24.035156 -36.28125 25.097656 -36.128906 26.078125 -35.828125 C 27.066406 -35.523438 27.914062 -35.046875 28.625 -34.390625 C 29.34375 -33.734375 29.898438 -32.890625 30.296875 -31.859375 C 30.703125 -30.828125 30.90625 -29.59375 30.90625 -28.15625 C 30.90625 -27.195312 30.816406 -26.160156 30.640625 -25.046875 C 30.460938 -23.929688 30.242188 -22.796875 29.984375 -21.640625 C 29.734375 -20.484375 29.457031 -19.328125 29.15625 -18.171875 C 28.863281 -17.023438 28.585938 -15.925781 28.328125 -14.875 C 28.078125 -13.820312 27.863281 -12.84375 27.6875 -11.9375 C 27.507812 -11.03125 27.421875 -10.238281 27.421875 -9.5625 C 27.421875 -8.675781 27.625 -7.953125 28.03125 -7.390625 C 28.445312 -6.828125 29.207031 -6.546875 30.3125 -6.546875 C 31.5 -6.546875 32.296875 -6.695312 32.703125 -7 C 32.535156 -5.6875 32.203125 -4.566406 31.703125 -3.640625 C 31.210938 -2.710938 30.613281 -1.941406 29.90625 -1.328125 C 29.207031 -0.722656 28.410156 -0.28125 27.515625 0 C 26.628906 0.28125 25.71875 0.421875 24.78125 0.421875 C 23.40625 0.421875 22.25 0.191406 21.3125 -0.265625 C 20.375 -0.722656 19.625 -1.332031 19.0625 -2.09375 C 18.5 -2.851562 18.097656 -3.71875 17.859375 -4.6875 C 17.628906 -5.664062 17.515625 -6.671875 17.515625 -7.703125 C 17.515625 -8.921875 17.679688 -10.34375 18.015625 -11.96875 C 18.359375 -13.601562 18.726562 -15.273438 19.125 -16.984375 C 19.519531 -18.691406 19.890625 -20.34375 20.234375 -21.9375 C 20.578125 -23.53125 20.75 -24.898438 20.75 -26.046875 C 20.75 -28.515625 19.878906 -29.75 18.140625 -29.75 C 17.484375 -29.75 16.875 -29.570312 16.3125 -29.21875 C 15.75 -28.863281 15.234375 -28.382812 14.765625 -27.78125 C 14.296875 -27.1875 13.875 -26.484375 13.5 -25.671875 C 13.125 -24.867188 12.796875 -24.007812 12.515625 -23.09375 L 7.625 0 Z M -2.75 0"
		}
	];
	
	var children = [];
	
	paper.setup(new paper.Size(600, 600));
	
	for (var i = 0; i < paths.length; i++)
	{
		var d = paths[i]['d'];
		var x = paths[i]['x'];
		var y = paths[i]['y'];
		
		var path = new paper.CompoundPath({ insert: false });
		path.setPathData(d);
		path.position.x += parseFloat(x);
		path.position.y += parseFloat(y);
		path.fillColor = '#000000';
		
		children.push(path);
	}
	
	var child = children[0];
	var length = children.length;
	var outline = null;
	
	for (var c = 0; c < length; c++)
	{
		if (c < length - 1)
		{
			try
			{
				var next = children[c + 1];
				outline = child.unite(next);
				child = outline;
			}
			catch (error)
			{
				throw error;
			}
		}
	}
	
	var contour = new paper.CompoundPath(outline.pathData);
	contour.fillColor = '#000000';
	
	var svg = paper.project.exportSVG({ bounds: 'content', asString: true });
	
	console.log(svg);
@sasensi
Copy link
Contributor

sasensi commented Nov 9, 2018

This bug can be reduced to this:

var item1 = new CompoundPath(new Path([10, 10], [100, 100]), new Path([150, 25]));
var item2 = new Path([20, 80], [80, 20]);
item1.unite(item2);

It happens when doing a boolean operation between a path and a compound path containing a path with a single segment and another path which is crossing first path.

An easy workaround for your case is to sanitize compound paths by removing single segment paths which are anyway useless for display.
Here is a sketch demonstrating this workaround. It uses this function to sanitize compound paths:

function sanitizePath(compoundPath) {
    compoundPath.children.forEach(path => {
        if (path.segments.length <= 1) {
            path.remove();
        }
    });
}

@lehni lehni closed this as completed in 978cd94 Jun 22, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants