1

I'm trying to draw Sheldon Cooper in Inkscape 1.0 on Linux. So, I've draw the basic outline using circles & Beziers:

Sheldon

All those lines are paths with no fill and black stroke. Now I'm trying to color the image. I know about the bucket tool (U), but it creates a small white gap between the border and the fill:

White gaps

I know about outsets, but it fills like a hack. So, I've decided to cut those fills from big shapes using boolean operations:

Preparing boolean

Now I just need to cut that green rectangle using the hair outline path.The problem is that Sheldon's hair and head is not a… I don't know how to say, but it's not a single path. It's a combination (Path → Combine) of two Beziers. Here I've colored them with different colors:

Separate lines

And so I fill that Inkscape just cannot understand that the hair is a closed region and use it in boolean operations. None of them doesn't work.

I fill like I need to somehow make a real union of all the paths, but union of hair and skull operation just vanished the hair:

Failed union

And in the path editing mode, the Inkscape does no allow me to join the end node of the hair (left or rigth end) into the middle of the skull silhouette:

Failed join

Finally, I've tried to convert all the strokes into fills (Path → Stroke to Path), but:

  1. This way I lose the way of easily modifying the outline
  2. This conversion results in some artifacts (here, the mouth): Artifacts

What am I missing?

2
  • Similar to this question. As told here, the current bucket fill tool in imprecise because creates fills based on bitmap pixels of the screen, but there is a workaround. Commented May 27, 2020 at 5:51
  • Yeah, I've seen that. I've tried to convert strokes to fill, but there are two flaws, IMO. I've pointed that.
    – madhead
    Commented May 27, 2020 at 8:59

2 Answers 2

1

The Problem

Unfortunately, vector objects don't do "T" shapes – that is the reason, why you cannot join one curve to the middle of another. Basically each vertex can only have (up to) two neighbours on the path. So one way or another, you will either have to use some workaround (like expanding the fill) or change your work flow from the start.

The Solution

What you can do right now is to retrace the closed shapes that you want to fill. I would do it by making an extra layer with duplicates of all your shapes and then edit them together (cut them up and join them in different combinations that will give you the closed shapes). You can then fill these (give them fill color) and send them to background, so that your original lines are visible at the top. Or use these as a mask or so on.

Had you only used closed shapes in the original line art, you could have avoided or at least minimized extra work.

1
1

One trick to cover the gaps that the paint bucket leaves at the edges is to make a copy of your artwork into a new layer. Make the original invisible in the objects panel (=close the eye) and reduce the stroke width to 0,5 px in the copy. They will be rendered 1px wide which is the minimum.

Fill the areas you want in the copy and delete unwanted parts.

Move the filled areas to the background and make the original strokes visible. They very likely cover the gaps which the paint bucket invariably eaves behind.

This isn't enough if you are not going to have any strokes in the final version. You must edit the paths with the node tool and adjust the layering order so that possible too big shapes are in the bottom. Fortunately Inkscape has very well Working snaps for node editing and inserting & removing nodes is fast.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.