Knockouts on copper layer not working logically

When trying to put inverted text on the copper layer, you would think that the “knockout” feature is made for that. But instead it makes a copper box around the text and then removes the copper from that box – but not the PCB – so the text AND the box are printed in copper, making it invisible.

The logical behaviour should be to NOT put a box around it if it’s on one of the copper layers, and instead just subtract the copper from the text.

(Even better would be to have copper “restrict” layers, but that would be way to easy and convenient, ha ha.)

That this feature is called “Knockout” instead of “Invert” (which is what it’s doing on the text layers) suggests that it was originally intended to work this way but that idea got lost along the way.

For me both the “normal” and the “knockout” versions seem to work as expected:


What KiCad version are you using? I am using the current V7.0.9
You can check the Release Notes | KiCad EDA for whether this was a recently fixed bug.

Application: KiCad PCB Editor x86_64 on x86_64

Version: 7.0.9-7.0.9~ubuntu20.04.1, release build

	wxWidgets 3.2.2
	FreeType 2.10.1
	HarfBuzz 6.0.0
	FontConfig 2.13.1
	libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh/0.9.3/openssl/zlib nghttp2/1.40.0 librtmp/2.3

Platform: Linux Mint 20.3, 64 bit, Little endian, wxGTK, xfce, x11

Build Info:
	Date: Nov  8 2023 19:01:27
	wxWidgets: 3.2.1 (wchar_t,wx containers) GTK+ 3.24
	Boost: 1.71.0
	OCC: 7.5.2
	Curl: 7.88.1
	ngspice: 38
	Compiler: GCC 9.4.0 with C++ ABI 1013

Build settings: