They happen when lines meet where the width of the feature isn’t an exact multiple of the extruder’s width and the printer has trouble filling in the void. Usually they’re fairly invisible, but when printing white on black, they stand out like a sore thumb.
I’m wondering if there’s a good simple way of avoid this problem in the slicer. The ultimate fix of course is to print a square sheet of white PLA under the white letter, but I’d rather not mess with my model because it’s quite complex already.
This is a fairly common complaint with the output produced by any slicer using the Arachne perimeter generator, which includes Prusa and its derivatives by default now, and also Cura.
If you are using Prusa or a derivative you can switch back from the Arachne perimeter generator to Classic in your “Layer and Perimeters” tab. If you can’t stomach not using Arachne for whatever reason, you could try messing with the “Perimeter Transitioning Threshold Angle” setting. There is some additional wordage on all of the above here. TL;DR: The Arachne generator attempts to build perimeters out of variable line widths and explicitly does not go back and fill in tiny voids like these with a separate operation. The point is that it’s not supposed to have to, but as you can see it doesn’t always work out that way.
As others have pointed out, doing an ironing pass on your top layer may help conceal this from an aesthetic standpoint but won’t do anything for you structurally (i.e. for anyone running into this issue with a shape they hope to be watertight. The nuclear option would be to instruct the slicer to do an ironing pass on every layer which may help your print look boss at the end of things but will certainly also take forever.
Yes I do use arachne. I did try to change it to classic when I was messing with my 3D-printed lens experiment, and while arachne wasn’t perfect, it left fewer artifacts inside the “lens” than classic.
I’ll try to revisit classic for this one print.
I’ll try ironing, This one is purely an esthetic problem. The part is just a cover for a case that holds electronic bits inside.