Gerber export to PCB doesn’t handle negative objects correctly

First of all, I’d like to say upfront that the ability to export Gerber files to pcbnew is extremely useful.
But, I found a case where the export is not doing the right thing (but I understand that fixing this might be complicated.

I have a Gerber file with some text on it. This is a screenshot of window when loaded into gerbview:

When this file is exported to pcbnew, this is what it looks like:

The “counters” (negative areas in the character) are correctly exported, as shown by a sketch view:

But, they are not subtracted from the character outline. I suspect that pcbnew probably doesn’t support that sort of logical operation. What needs to happen is that the character needs to be “fractured” into primitives that pcbnew supports.

Has anyone seen this before, and is there a work-around?

My guess on what is going on:

The original software, whatever it is, has used polygonal shapes and negative apertures to create letter shapes when it has exported to gerber. To me it looks like the shapes are correct in the PCB file but as you said, KiCad doesn’t convert the negative items to holes.

KiCad uses another strategy for export, although it doesn’t matter here directly because we are talking about gerber → KiCad conversion. KiCad creates a “seam” which is the outline going in two directions overlapping itself. You can see this in exported zone fills if you turn on “Sketch Polygons” option in the gerber viewer. You can also create holes in zones manually from the GUI.

However, KiCad doesn’t support creating holes in graphic polygons even though it supports the holes – only in zone fills. I don’t know why.

You can try this workaround (I should have your gerber to really test it): select all the outer outlines of the letters. Use context menu → Create from Selection → Create Zone, make sure they are in the Silk layer (I assume that’s the correct layer for them). Then select all the hole shapes. Create Rule areas in the Silk layer with “Keep out zone fills”. Fill all zones with ‘B’. Now you should have proper letters with holes.

There’s one drawback: KiCad always rounds zone fill corners even when you choose not to. But they are so small that it won’t be visible in the fabricated board.

Not for this case, but I vaguely remember that some other graphic import – probably SVG – had that problem and it was fixed. I you report this, maybe it can be fixed. What I would like to see even more would be: 1. zone fills without corner rounding; 2. converting zone fills to polygons (not outlines, but fills).

It’s also possible to write a plugin for this. I have written code which can convert fills to polygons. It should be easy to do polygon → polygon conversion with negative holes.

Yet another workaround is to just replace the letters manually with native KiCad text using a similar looking font.

Thanks for the response.
I’ll try your work-around later.

Yes, this works.

Cumbersome, but good to know how to handle this in the future.