{"course":{"slug":"vector-and-print","title":"Vectors, Logos and Things That Get Printed","url":"https://addaly.com/learn/vector-and-print","level":"beginner","track":"create"},"lesson":{"slug":"boolean-aftermath","title":"Booleans, and the mess they leave behind","url":"https://addaly.com/learn/vector-and-print/boolean-aftermath","position":13,"of":73,"minutes":9,"answer":"A boolean splits paths at every intersection and restitches the survivors, so it adds nodes, hands the result a fill you did not choose, and destroys the inputs: clean up immediately, set colour afterwards.","keyIdea":"A boolean splits paths at every intersection and restitches the survivors, so it adds nodes, hands the result a fill you did not choose, and destroys the inputs: clean up immediately, set colour afterwards, and keep a locked copy of the sources."},"body":{"format":"markdown","text":"## What a boolean actually computes\n\nUnion, difference, intersection and exclusion are not shape tools. They are set operations on filled regions, and the program computes them the same way every time:\n\n1. Find every point where the input paths intersect.\n2. Split all paths at those points into segments.\n3. Decide, for each segment, whether it lies on the boundary of the result.\n4. Stitch the surviving segments into new closed paths.\n\nThree consequences fall straight out of that, and they are the whole lesson.\n\n> Figure: What a boolean computes, every time. Steps: 1. Find crossings (Every point where the inputs intersect); 2. Split there (Each path is cut into segments); 3. Keep or drop (Is this segment on the new boundary?); 4. Stitch up (Survivors joined into closed paths). Two things follow from step two and you will meet both. Every old crossing survives as a new node with handles the solver chose, and the inputs are gone, so duplicate onto a locked source layer before you start and set the colour afterwards.\n\n## One: every intersection becomes a node\n\nWeld two circles and the result has the original anchors *plus* two new ones where the outlines crossed. Do six booleans in a row and the node count compounds. A mark that should be forty nodes arrives at three hundred, and it prints the same but cuts, stitches and enlarges badly.\n\nClean up after every boolean, not at the end:\n\n- Delete nodes that sit on a straight run or in the middle of a smooth curve. Select them and press **Ctrl+Delete** in Illustrator (delete without breaking the path) or **Ctrl+Delete** in Inkscape (delete preserving shape).\n- Look specifically at the new nodes at the old intersections. They almost always have handles the algorithm chose, not handles you would have chosen.\n- Do not reach for Simplify. Simplify averages across the whole path and rounds off the corners you meant to keep. It is a last resort on traced artwork, not a cleanup for your own drawing.\n\n## Two: appearance is inherited, and the rule differs\n\nWhich object's fill does the result take?\n\n- **Illustrator Pathfinder**: the *bottom* object's appearance for Unite, the *top* object's for Intersect in some versions. This has changed across releases; test rather than trust.\n- **Inkscape**: the *bottom* object's style for Union and Difference.\n- **CorelDRAW Weld**: the *target* object's, where the target is whichever you selected last (or the bottom, if you used a marquee).\n\nThe practical habit: set the colour after the boolean, never before. You will stop losing five minutes a day to it.\n\n## Three: it is destructive, and the escapes are not equal\n\n- **Affinity Designer**: hold **Alt** while clicking a boolean. You get a live compound whose children stay editable and movable, updating the result. This is the best implementation of the four.\n- **Illustrator**: **Alt+click** a Pathfinder button makes a compound shape. Components remain editable until you press *Expand*. The Shape Builder tool (**Shift+M**) is different and better for fast work: drag across regions to merge, **Alt+drag** to delete a region, and you see the result as you go.\n- **CorelDRAW**: the Shaping docker has *Leave original: source / target* checkboxes. Tick them and the inputs survive beside the result.\n- **Inkscape**: no live booleans in the Path menu. The *Boolean operation* Live Path Effect (1.x) gets close, and otherwise you duplicate first (**Ctrl+D**) and stash the copy on a locked layer.\n\n> Make a layer called `source`, put an untouched copy of every input on it, and lock it. Thirty seconds now against an afternoon later.\n\n## Division is the underused one\n\nDivision (Illustrator's *Divide*, Inkscape's Cut Path / Division, CorelDRAW's *Simplify* and *Front Minus Back* family) cuts every input into separate pieces along every intersection and keeps them all.\n\nThis is how you build a mark whose parts must line up exactly: draw the whole silhouette, draw the cutting lines across it, divide, then colour the pieces. The edges are shared by construction, so there is no hairline gap between them and no overlap. Trying to achieve the same result by drawing each piece separately is how you get the thin white line that shows on press.\n\n## The failure to watch for: self-intersection\n\nA path that crosses itself, or two identical paths stacked exactly, makes the boolean solver's job ambiguous. Symptoms: the operation does nothing, or produces a shape with a stray sliver, or produces zero-area artefacts you cannot see but a cutting plotter finds.\n\nBefore a boolean on anything traced or imported: run Union on the object *with itself* to clean overlaps, then check the node count. Inkscape's Edit ▸ *Select Same* and the XML editor let you spot duplicate paths; Illustrator's Document Info panel gives object counts."},"check":{"question":"A mark built from six successive Weld and Trim operations is sent to a vinyl plotter. The cut has small stray nicks that do not appear anywhere in the on-screen artwork. What is the most likely cause?","options":[{"text":"The blade pressure was too high, so the plotter cut through the backing sheet at every change of direction.","correct":false,"tempting":"Excess pressure cuts the backing along the whole path, not as isolated nicks at a few points, and it would not correlate with the boolean history."},{"text":"The file was exported as SVG, which stores coordinates at reduced precision and rounds some nodes onto each other.","correct":false,"tempting":"SVG precision loss moves points by fractions of a micron at normal export settings; it does not create new geometry for the blade to follow."},{"text":"The strokes were not converted to outlines, so the plotter cut the centreline of each stroke as an extra path.","correct":false,"tempting":"Uncut strokes produce a full extra outline through the middle of every shape, which would be obvious, not a few small nicks."},{"text":"Zero-area slivers left by the boolean solver where two inputs overlapped almost exactly.","correct":true}]},"prev":{"slug":"continuity-and-the-kink","title":"The kink you can see but cannot find","url":"https://addaly.com/learn/vector-and-print/continuity-and-the-kink"},"next":{"slug":"offsets-and-the-miter-spike","title":"Offsets, and the spike that appears at a sharp corner","url":"https://addaly.com/learn/vector-and-print/offsets-and-the-miter-spike"},"authorship":"Founder and series editor: Dr Mustafa Mun. Written by AI models to a written standard. Exam keys checked blind by a second model: 3,665 of 3,666 agreed. Academic review invited.","review":{"status":"Draft, open for academic review"},"cite":"Addaly (2026) 'Booleans, and the mess they leave behind', in Vectors, Logos and Things That Get Printed. Edited by M. Mun. Addaly. Available at: https://addaly.com/learn/vector-and-print/boolean-aftermath (Accessed: 13 October 2026).","licence":{"name":"CC BY-NC-SA 4.0","url":"https://creativecommons.org/licenses/by-nc-sa/4.0/"},"reader":{"schema":1,"title":"Booleans, and the mess they leave behind","courseTitle":"Vectors, Logos and Things That Get Printed","module":{"index":2,"slug":"drawing-curves","title":"Drawing curves people will pay for"},"answer":null,"keyIdea":"A boolean splits paths at every intersection and restitches the survivors, so it adds nodes, hands the result a fill you did not choose, and destroys the inputs: clean up immediately, set colour afterwards, and keep a locked copy of the sources.","hero":{"kind":"figure","figure":{"t":"figure","label":"Figure","figure":{"type":"flow","steps":[{"label":"Find crossings","detail":"Every point where the inputs intersect"},{"label":"Split there","detail":"Each path is cut into segments"},{"label":"Keep or drop","detail":"Is this segment on the new boundary?"},{"label":"Stitch up","detail":"Survivors joined into closed paths"}],"title":"What a boolean computes, every time","caption":"Two things follow from step two and you will meet both. Every old crossing survives as a new node with handles the solver chose, and the inputs are gone, so duplicate onto a locked source layer before you start and set the colour afterwards."},"alt":"Figure: What a boolean computes, every time. Steps: 1. Find crossings (Every point where the inputs intersect); 2. Split there (Each path is cut into segments); 3. Keep or drop (Is this segment on the new boundary?); 4. Stitch up (Survivors joined into closed paths). Two things follow from step two and you will meet both. Every old crossing survives as a new node with handles the solver chose, and the inputs are gone, so duplicate onto a locked source layer before you start and set the colour afterwards."}},"blocks":[{"t":"h2","id":"what-a-boolean-actually-computes","runs":[{"text":"What a boolean actually computes"}]},{"t":"p","runs":[{"text":"Union, difference, intersection and exclusion are not shape tools. They are set operations on filled regions, and the program computes them the same way every time:"}]},{"t":"ol","start":1,"items":[[{"text":"Find every point where the input paths intersect."}],[{"text":"Split all paths at those points into segments."}],[{"text":"Decide, for each segment, whether it lies on the boundary of the result."}],[{"text":"Stitch the surviving segments into new closed paths."}]]},{"t":"p","runs":[{"text":"Three consequences fall straight out of that, and they are the whole lesson."}]},{"t":"h2","id":"one-every-intersection-becomes-a-node","runs":[{"text":"One: every intersection becomes a node"}]},{"t":"p","runs":[{"text":"Weld two circles and the result has the original anchors "},{"text":"plus","i":true},{"text":" two new ones where the outlines crossed. Do six booleans in a row and the node count compounds. A mark that should be forty nodes arrives at three hundred, and it prints the same but cuts, stitches and enlarges badly."}]},{"t":"p","runs":[{"text":"Clean up after every boolean, not at the end:"}]},{"t":"ul","items":[[{"text":"Delete nodes that sit on a straight run or in the middle of a smooth curve. Select them and press "},{"text":"Ctrl+Delete","b":true},{"text":" in Illustrator (delete without breaking the path) or "},{"text":"Ctrl+Delete","b":true},{"text":" in Inkscape (delete preserving shape)."}],[{"text":"Look specifically at the new nodes at the old intersections. They almost always have handles the algorithm chose, not handles you would have chosen."}],[{"text":"Do not reach for Simplify. Simplify averages across the whole path and rounds off the corners you meant to keep. It is a last resort on traced artwork, not a cleanup for your own drawing."}]]},{"t":"h2","id":"two-appearance-is-inherited-and-the-rule-differs","runs":[{"text":"Two: appearance is inherited, and the rule differs"}]},{"t":"p","runs":[{"text":"Which object’s fill does the result take?"}]},{"t":"ul","items":[[{"text":"Illustrator Pathfinder","b":true},{"text":": the "},{"text":"bottom","i":true},{"text":" object’s appearance for Unite, the "},{"text":"top","i":true},{"text":" object’s for Intersect in some versions. This has changed across releases; test rather than trust."}],[{"text":"Inkscape","b":true},{"text":": the "},{"text":"bottom","i":true},{"text":" object’s style for Union and Difference."}],[{"text":"CorelDRAW Weld","b":true},{"text":": the "},{"text":"target","i":true},{"text":" object’s, where the target is whichever you selected last (or the bottom, if you used a marquee)."}]]},{"t":"p","runs":[{"text":"The practical habit: set the colour after the boolean, never before. You will stop losing five minutes a day to it."}]},{"t":"h2","id":"three-it-is-destructive-and-the-escapes-are-not-equal","runs":[{"text":"Three: it is destructive, and the escapes are not equal"}]},{"t":"ul","items":[[{"text":"Affinity Designer","b":true},{"text":": hold "},{"text":"Alt","b":true},{"text":" while clicking a boolean. You get a live compound whose children stay editable and movable, updating the result. This is the best implementation of the four."}],[{"text":"Illustrator","b":true},{"text":": "},{"text":"Alt+click","b":true},{"text":" a Pathfinder button makes a compound shape. Components remain editable until you press "},{"text":"Expand","i":true},{"text":". The Shape Builder tool ("},{"text":"Shift+M","b":true},{"text":") is different and better for fast work: drag across regions to merge, "},{"text":"Alt+drag","b":true},{"text":" to delete a region, and you see the result as you go."}],[{"text":"CorelDRAW","b":true},{"text":": the Shaping docker has "},{"text":"Leave original: source / target","i":true},{"text":" checkboxes. Tick them and the inputs survive beside the result."}],[{"text":"Inkscape","b":true},{"text":": no live booleans in the Path menu. The "},{"text":"Boolean operation","i":true},{"text":" Live Path Effect (1.x) gets close, and otherwise you duplicate first ("},{"text":"Ctrl+D","b":true},{"text":") and stash the copy on a locked layer."}]]},{"t":"quote","runs":[{"text":"Make a layer called "},{"text":"source","code":true},{"text":", put an untouched copy of every input on it, and lock it. Thirty seconds now against an afternoon later."}]},{"t":"h2","id":"division-is-the-underused-one","runs":[{"text":"Division is the underused one"}]},{"t":"p","runs":[{"text":"Division (Illustrator’s "},{"text":"Divide","i":true},{"text":", Inkscape’s Cut Path / Division, CorelDRAW’s "},{"text":"Simplify","i":true},{"text":" and "},{"text":"Front Minus Back","i":true},{"text":" family) cuts every input into separate pieces along every intersection and keeps them all."}]},{"t":"p","runs":[{"text":"This is how you build a mark whose parts must line up exactly: draw the whole silhouette, draw the cutting lines across it, divide, then colour the pieces. The edges are shared by construction, so there is no hairline gap between them and no overlap. Trying to achieve the same result by drawing each piece separately is how you get the thin white line that shows on press."}]},{"t":"h2","id":"the-failure-to-watch-for-self-intersection","runs":[{"text":"The failure to watch for: self-intersection"}]},{"t":"p","runs":[{"text":"A path that crosses itself, or two identical paths stacked exactly, makes the boolean solver’s job ambiguous. Symptoms: the operation does nothing, or produces a shape with a stray sliver, or produces zero-area artefacts you cannot see but a cutting plotter finds."}]},{"t":"p","runs":[{"text":"Before a boolean on anything traced or imported: run Union on the object "},{"text":"with itself","i":true},{"text":" to clean overlaps, then check the node count. Inkscape’s Edit ▸ "},{"text":"Select Same","i":true},{"text":" and the XML editor let you spot duplicate paths; Illustrator’s Document Info panel gives object counts."}]}],"check":{"question":[{"text":"A mark built from six successive Weld and Trim operations is sent to a vinyl plotter. The cut has small stray nicks that do not appear anywhere in the on-screen artwork. What is the most likely cause?"}],"options":[{"text":[{"text":"The blade pressure was too high, so the plotter cut through the backing sheet at every change of direction."}],"correct":false,"tempting":[{"text":"Excess pressure cuts the backing along the whole path, not as isolated nicks at a few points, and it would not correlate with the boolean history."}]},{"text":[{"text":"The file was exported as SVG, which stores coordinates at reduced precision and rounds some nodes onto each other."}],"correct":false,"tempting":[{"text":"SVG precision loss moves points by fractions of a micron at normal export settings; it does not create new geometry for the blade to follow."}]},{"text":[{"text":"The strokes were not converted to outlines, so the plotter cut the centreline of each stroke as an extra path."}],"correct":false,"tempting":[{"text":"Uncut strokes produce a full extra outline through the middle of every shape, which would be obvious, not a few small nicks."}]},{"text":[{"text":"Zero-area slivers left by the boolean solver where two inputs overlapped almost exactly."}],"correct":true,"tempting":null}],"order":[1,0,3,2],"why":null},"prev":{"slug":"continuity-and-the-kink","title":"The kink you can see but cannot find","minutes":9},"next":{"slug":"offsets-and-the-miter-spike","title":"Offsets, and the spike that appears at a sharp corner","minutes":8}}}