I've noticed there's a slight gap between shapes and lines in which bucket-fill is applied (to the enclosed areas found therein) and the colour fill in Inkscape, is there any way of removing this gap (besides the older-fashion manual way by manipulating the borders of the bucket fill, which is very tedious)?
The area of fill (inset/outset) can be controlled by using grow/shrink option displayed in control panel when paint bucket is selected. Setting this value less than 0 (negative) makes the fill path smaller (ref image 1). Here I have set the value to -5px.
Setting the value greater than 1 (positive) makes the fill path larger than the enclosed area (ref image 2). Have set this value to +5 px.
Thus the required fill can be achieved by varying the values.
- Select all the Paths with :tool_selector:
- Duplicate them (Ctrl+D)
- Convert them to paths (Ctrl+Alt+C)
- Create a union from the paths (Ctrl+Shift+ + )
- Break Apart the new shape (Ctrl+Shift+k)
One of the shape is an exact fill. delete all others.
This is a much more fool proof solution for a complex graphic like a map or a drawing with lot of small regions and turns.
Using the bucket fill tool in Inkscape generates an additional object with dimensions and shape extrapolated from the strokes enclosing an area.
This will lead to some visible rounding errors at the new object's border:
Here is how to remove this white line between the stroke of the original and the new fill object:
- Select the fill object.
- Open the Fill & Stroke menu for this object (ShiftCtrlF)
- Define a stroke with a color identical to the fill
- Make the stroke width > 1 px.
- Lower the fill object below the original stroke (PageDown)
Paraphrasing from this link. As of Inkscape 0.92.4, Inkscape fills by rendering a image of whats on screen, doing a pixel-based flood fill of the image, traces the resulting pixel image with a path, and outputs that path.
This means you will always get imperfect flood fills, even if you adjust the fill's inset/outset parameter. Yes, this is dumb. Yes, there is currently no way around this.
Here is another article discussing the need for vector-fill feature in Inkscape.