diff --git a/lib/components/primitive-components/SilkscreenText.ts b/lib/components/primitive-components/SilkscreenText.ts
index 3232c8446..6bdf11375 100644
--- a/lib/components/primitive-components/SilkscreenText.ts
+++ b/lib/components/primitive-components/SilkscreenText.ts
@@ -67,6 +67,24 @@ export class SilkscreenText extends PrimitiveComponent<
this._footprinterFontSize ??
1
+ // Build knockout padding object from uniform or individual padding props
+ const uniformPadding = props.knockoutPadding ?? 0
+ const hasKnockoutPadding =
+ props.knockoutPadding !== undefined ||
+ props.knockoutPaddingLeft !== undefined ||
+ props.knockoutPaddingRight !== undefined ||
+ props.knockoutPaddingTop !== undefined ||
+ props.knockoutPaddingBottom !== undefined
+
+ const knockoutPadding = hasKnockoutPadding
+ ? {
+ left: props.knockoutPaddingLeft ?? uniformPadding,
+ right: props.knockoutPaddingRight ?? uniformPadding,
+ top: props.knockoutPaddingTop ?? uniformPadding,
+ bottom: props.knockoutPaddingBottom ?? uniformPadding,
+ }
+ : undefined
+
for (const layer of targetLayers) {
const pcb_silkscreen_text = db.pcb_silkscreen_text.insert({
anchor_alignment: props.anchorAlignment,
@@ -82,6 +100,8 @@ export class SilkscreenText extends PrimitiveComponent<
pcb_component_id: container.pcb_component_id!,
subcircuit_id: subcircuit?.subcircuit_id ?? undefined,
pcb_group_id: this.getGroup()?.pcb_group_id ?? undefined,
+ is_knockout: props.isKnockout,
+ knockout_padding: knockoutPadding,
})
this.pcb_silkscreen_text_ids.push(
pcb_silkscreen_text.pcb_silkscreen_text_id,
diff --git a/package.json b/package.json
index 41bcb236e..49ce13633 100644
--- a/package.json
+++ b/package.json
@@ -65,7 +65,7 @@
"circuit-json-to-gltf": "^0.0.62",
"circuit-json-to-simple-3d": "^0.0.9",
"circuit-json-to-spice": "^0.0.33",
- "circuit-to-svg": "^0.0.325",
+ "circuit-to-svg": "^0.0.327",
"concurrently": "^9.1.2",
"connectivity-map": "^1.0.0",
"debug": "^4.3.6",
diff --git a/tests/components/normal-components/__snapshots__/all-components-display-name-schematic.snap.svg b/tests/components/normal-components/__snapshots__/all-components-display-name-schematic.snap.svg
index df635f58d..61f40a628 100644
--- a/tests/components/normal-components/__snapshots__/all-components-display-name-schematic.snap.svg
+++ b/tests/components/normal-components/__snapshots__/all-components-display-name-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -2,-1-2,0-2,1-2,2-2,3-2,4-2,5-2,6-2,7-2,8-2,9-2,10-2,11-2,12-2,13-2,14-2,15-2,16-2,17-2,18-2,19-1,-1-1,0-1,1-1,2-1,3-1,4-1,5-1,6-1,7-1,8-1,9-1,10-1,11-1,12-1,13-1,14-1,15-1,16-1,17-1,18-1,190,-10,00,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,180,191,-11,01,11,21,31,41,51,61,71,81,91,101,111,121,131,141,151,161,171,181,192,-12,02,12,22,32,42,52,62,72,82,92,102,112,122,132,142,152,162,172,182,193,-13,03,13,23,33,43,53,63,73,83,93,103,113,123,133,143,153,163,173,183,194,-14,04,14,24,34,44,54,64,74,84,94,104,114,124,134,144,154,164,174,184,195,-15,05,15,25,35,45,55,65,75,85,95,105,115,125,135,145,155,165,175,185,196,-16,06,16,26,36,46,56,66,76,86,96,106,116,126,136,146,156,166,176,186,197,-17,07,17,27,37,47,57,67,77,87,97,107,117,127,137,147,157,167,177,187,198,-18,08,18,28,38,48,58,68,78,88,98,108,118,128,138,148,158,168,178,188,199,-19,09,19,29,39,49,59,69,79,89,99,109,119,129,139,149,159,169,179,189,1910,-110,010,110,210,310,410,510,610,710,810,910,1010,1110,1210,1310,1410,1510,1610,1710,1810,1911,-111,011,111,211,311,411,511,611,711,811,911,1011,1111,1211,1311,1411,1511,1611,1711,1811,1912,-112,012,112,212,312,412,512,612,712,812,912,1012,1112,1212,1312,1412,1512,1612,1712,1812,1913,-113,013,113,213,313,413,513,613,713,813,913,1013,1113,1213,1313,1413,1513,1613,1713,1813,1914,-114,014,114,214,314,414,514,614,714,814,914,1014,1114,1214,1314,1414,1514,1614,1714,1814,1915,-115,015,115,215,315,415,515,615,715,815,915,1015,1115,1215,1315,1415,1515,1615,1715,1815,1916,-116,016,116,216,316,416,516,616,716,816,916,1016,1116,1216,1316,1416,1516,1616,1716,1816,1917,-117,017,117,217,317,417,517,617,717,817,917,1017,1117,1217,1317,1417,1517,1617,1717,1817,1918,-118,018,118,218,318,418,518,618,718,818,918,1018,1118,1218,1318,1418,1518,1618,1718,1818,1919,-119,019,119,219,319,419,519,619,719,819,919,1019,1119,1219,1319,1419,1519,1619,1719,1819,1920,-120,020,120,220,320,420,520,620,720,820,920,1020,1120,1220,1320,1420,1520,1620,1720,1820,1921,-121,021,121,221,321,421,521,621,721,821,921,1021,1121,1221,1321,1421,1521,1621,1721,1821,1922,-122,022,122,222,322,422,522,622,722,822,922,1022,1122,1222,1322,1422,1522,1622,1722,1822,1923,-123,023,123,223,323,423,523,623,723,823,923,1023,1123,1223,1323,1423,1523,1623,1723,1823,1924,-124,024,124,224,324,424,524,624,724,824,924,1024,1124,1224,1324,1424,1524,1624,1724,1824,1925,-125,025,125,225,325,425,525,625,725,825,925,1025,1125,1225,1325,1425,1525,1625,1725,1825,1926,-126,026,126,226,326,426,526,626,726,826,926,1026,1126,1226,1326,1426,1526,1626,1726,1826,19BatteryDisplayNameCapacitorDisplayName10uF10MHz / 10pFCrystalDisplayNameCurrentSourceDisplayName1ADiodeFuseDisplayName1A / 10VInductorDisplayName10HLedDisplayNameMosfetDisplayName10kΩPotentiometerDisplayNamePushButtonDisplayNameResistorDisplayName1kΩ10MHz / 10pFResonatorDisplayNameSolderJumperDisplayNameSwitchDisplayNameTestPointDisplayNameTransistorDisplayNameVoltageSourceDisplayName5V
\ No newline at end of file
diff --git a/tests/components/normal-components/__snapshots__/board-schematic-manual-edits-schematic.snap.svg b/tests/components/normal-components/__snapshots__/board-schematic-manual-edits-schematic.snap.svg
index 9522bab0b..57438cc2f 100644
--- a/tests/components/normal-components/__snapshots__/board-schematic-manual-edits-schematic.snap.svg
+++ b/tests/components/normal-components/__snapshots__/board-schematic-manual-edits-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -7,-6-7,-5-7,-4-7,-3-7,-2-7,-1-7,0-7,1-7,2-7,3-7,4-7,5-7,6-6,-6-6,-5-6,-4-6,-3-6,-2-6,-1-6,0-6,1-6,2-6,3-6,4-6,5-6,6-5,-6-5,-5-5,-4-5,-3-5,-2-5,-1-5,0-5,1-5,2-5,3-5,4-5,5-5,6-4,-6-4,-5-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-4,4-4,5-4,6-3,-6-3,-5-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-3,4-3,5-3,6-2,-6-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-2,6-1,-6-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,4-1,5-1,60,-60,-50,-40,-30,-20,-10,00,10,20,30,40,50,61,-61,-51,-41,-31,-21,-11,01,11,21,31,41,51,62,-62,-52,-42,-32,-22,-12,02,12,22,32,42,52,63,-63,-53,-43,-33,-23,-13,03,13,23,33,43,53,64,-64,-54,-44,-34,-24,-14,04,14,24,34,44,54,65,-65,-55,-45,-35,-25,-15,05,15,25,35,45,55,66,-66,-56,-46,-36,-26,-16,06,16,26,36,46,56,67,-67,-57,-47,-37,-27,-17,07,17,27,37,47,57,6R110kΩC110uF
\ No newline at end of file
diff --git a/tests/components/normal-components/__snapshots__/capacitor-polarized-schematic.snap.svg b/tests/components/normal-components/__snapshots__/capacitor-polarized-schematic.snap.svg
index be9fcf202..e602f1e25 100644
--- a/tests/components/normal-components/__snapshots__/capacitor-polarized-schematic.snap.svg
+++ b/tests/components/normal-components/__snapshots__/capacitor-polarized-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -6,-3-6,-2-6,-1-6,0-6,1-6,2-5,-3-5,-2-5,-1-5,0-5,1-5,2-4,-3-4,-2-4,-1-4,0-4,1-4,2-3,-3-3,-2-3,-1-3,0-3,1-3,2-2,-3-2,-2-2,-1-2,0-2,1-2,2-1,-3-1,-2-1,-1-1,0-1,1-1,20,-30,-20,-10,00,10,21,-31,-21,-11,01,11,22,-32,-22,-12,02,12,2U11IN12IN23IN34IN45IN56IN67IN78IN89OUT110OUT211OUT312OUT413OUT514OUT615OUT716OUT8R210kΩR310kΩR410kΩ
\ No newline at end of file
diff --git a/tests/components/normal-components/__snapshots__/chip-complex-schematic-crossings-schematic.snap.svg b/tests/components/normal-components/__snapshots__/chip-complex-schematic-crossings-schematic.snap.svg
index 8c0d18739..b42880b48 100644
--- a/tests/components/normal-components/__snapshots__/chip-complex-schematic-crossings-schematic.snap.svg
+++ b/tests/components/normal-components/__snapshots__/chip-complex-schematic-crossings-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -2,-1-2,0-2,1-1,-1-1,0-1,10,-10,00,11,-11,01,12,-12,02,18MHz / 15pFX3
\ No newline at end of file
diff --git a/tests/components/normal-components/__snapshots__/crystal.test.tsx-crystal-four-pin-schematic.snap.svg b/tests/components/normal-components/__snapshots__/crystal.test.tsx-crystal-four-pin-schematic.snap.svg
index 95c2bfcc4..39d522109 100644
--- a/tests/components/normal-components/__snapshots__/crystal.test.tsx-crystal-four-pin-schematic.snap.svg
+++ b/tests/components/normal-components/__snapshots__/crystal.test.tsx-crystal-four-pin-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,4-1,50,-50,-40,-30,-20,-10,00,10,20,30,40,51,-51,-41,-31,-21,-11,01,11,21,31,41,52,-52,-42,-32,-22,-12,02,12,22,32,42,5X116MHz / 22pF16MHz / 22pFX2X316MHz / 22pF
\ No newline at end of file
diff --git a/tests/components/normal-components/__snapshots__/crystal.test.tsx-crystal-two-pin-schematic.snap.svg b/tests/components/normal-components/__snapshots__/crystal.test.tsx-crystal-two-pin-schematic.snap.svg
index a7924f1b9..96d5be151 100644
--- a/tests/components/normal-components/__snapshots__/crystal.test.tsx-crystal-two-pin-schematic.snap.svg
+++ b/tests/components/normal-components/__snapshots__/crystal.test.tsx-crystal-two-pin-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -2,-1-2,0-2,1-1,-1-1,0-1,10,-10,00,11,-11,01,12,-12,02,11MHz / 20pFX1
\ No newline at end of file
diff --git a/tests/components/normal-components/__snapshots__/current-source-schematic.snap.svg b/tests/components/normal-components/__snapshots__/current-source-schematic.snap.svg
index 45ddd0eac..19558179c 100644
--- a/tests/components/normal-components/__snapshots__/current-source-schematic.snap.svg
+++ b/tests/components/normal-components/__snapshots__/current-source-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -2,-3-2,-2-2,-1-2,0-2,1-1,-3-1,-2-1,-1-1,0-1,10,-30,-20,-10,00,11,-31,-21,-11,01,12,-32,-22,-12,02,13,-33,-23,-13,03,14,-34,-24,-14,04,15,-35,-25,-15,05,16,-36,-26,-16,06,17,-37,-27,-17,07,18,-38,-28,-18,08,1IS_DC1AR11kΩIS_AC2A p-p 1kHzR21kΩIS_SQUARE500mA p-p 100HzR31kΩ
\ No newline at end of file
diff --git a/tests/components/normal-components/__snapshots__/diode-variants-schematic.snap.svg b/tests/components/normal-components/__snapshots__/diode-variants-schematic.snap.svg
index 5f2e12d19..640c14d6d 100644
--- a/tests/components/normal-components/__snapshots__/diode-variants-schematic.snap.svg
+++ b/tests/components/normal-components/__snapshots__/diode-variants-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -2,-4-2,-3-2,-2-2,-1-2,0-2,1-1,-4-1,-3-1,-2-1,-1-1,0-1,10,-40,-30,-20,-10,00,11,-41,-31,-21,-11,01,12,-42,-32,-22,-12,02,1D1D2D3D4
\ No newline at end of file
diff --git a/tests/components/normal-components/__snapshots__/internally-connected-pins-numbers-schematic.snap.svg b/tests/components/normal-components/__snapshots__/internally-connected-pins-numbers-schematic.snap.svg
index 9e642c519..33c22f275 100644
--- a/tests/components/normal-components/__snapshots__/internally-connected-pins-numbers-schematic.snap.svg
+++ b/tests/components/normal-components/__snapshots__/internally-connected-pins-numbers-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -2,-1-2,0-2,1-2,2-2,3-2,4-2,5-1,-1-1,0-1,1-1,2-1,3-1,4-1,50,-10,00,10,20,30,40,51,-11,01,11,21,31,41,52,-12,02,12,22,32,42,5SW1SW2SW3
\ No newline at end of file
diff --git a/tests/components/normal-components/__snapshots__/led-variants-schematic.snap.svg b/tests/components/normal-components/__snapshots__/led-variants-schematic.snap.svg
index dcf516a60..80c5b6f86 100644
--- a/tests/components/normal-components/__snapshots__/led-variants-schematic.snap.svg
+++ b/tests/components/normal-components/__snapshots__/led-variants-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -2,-2-2,-1-2,0-2,1-1,-2-1,-1-1,0-1,10,-20,-10,00,11,-21,-11,01,12,-22,-12,02,1RedLED1LED2Red
\ No newline at end of file
diff --git a/tests/components/normal-components/__snapshots__/potentiometer-schematic.snap.svg b/tests/components/normal-components/__snapshots__/potentiometer-schematic.snap.svg
index 1407b0ae3..3b151f59c 100644
--- a/tests/components/normal-components/__snapshots__/potentiometer-schematic.snap.svg
+++ b/tests/components/normal-components/__snapshots__/potentiometer-schematic.snap.svg
@@ -22,4 +22,4 @@
.pin-number { fill: rgb(169, 0, 0); }
.port-label { fill: rgb(0, 100, 100); }
.component-name { fill: rgb(0, 100, 100); }
- -2,-2-2,-1-2,0-2,1-2,2-1,-2-1,-1-1,0-1,1-1,20,-20,-10,00,10,21,-21,-11,01,11,22,-22,-12,02,12,23,-23,-13,03,13,24,-24,-14,04,14,25,-25,-15,05,15,26,-26,-16,06,16,27,-27,-17,07,17,210kΩP110kΩP210kΩP310kΩP4
\ No newline at end of file
+ -2,-2-2,-1-2,0-2,1-2,2-1,-2-1,-1-1,0-1,1-1,20,-20,-10,00,10,21,-21,-11,01,11,22,-22,-12,02,12,23,-23,-13,03,13,24,-24,-14,04,14,25,-25,-15,05,15,26,-26,-16,06,16,27,-27,-17,07,17,210kΩP110kΩP210kΩP310kΩP4
\ No newline at end of file
diff --git a/tests/components/normal-components/__snapshots__/pushbutton-pin-configurations-schematic.snap.svg b/tests/components/normal-components/__snapshots__/pushbutton-pin-configurations-schematic.snap.svg
index 628a96182..b0690f923 100644
--- a/tests/components/normal-components/__snapshots__/pushbutton-pin-configurations-schematic.snap.svg
+++ b/tests/components/normal-components/__snapshots__/pushbutton-pin-configurations-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -2,-6-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-1,-6-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,20,-60,-50,-40,-30,-20,-10,00,10,21,-61,-51,-41,-31,-21,-11,01,11,22,-62,-52,-42,-32,-22,-12,02,12,23,-63,-53,-43,-33,-23,-13,03,13,24,-64,-54,-44,-34,-24,-14,04,14,25,-65,-55,-45,-35,-25,-15,05,15,26,-66,-56,-46,-36,-26,-16,06,16,27,-67,-57,-47,-37,-27,-17,07,17,28,-68,-58,-48,-38,-28,-18,08,18,21MHz / 20pFK1K216MHz / 22pFK332MHz / 18pF8MHz / 15pFK4
\ No newline at end of file
diff --git a/tests/components/normal-components/__snapshots__/rotated-components-schematic.snap.svg b/tests/components/normal-components/__snapshots__/rotated-components-schematic.snap.svg
index dd4621512..15c199f95 100644
--- a/tests/components/normal-components/__snapshots__/rotated-components-schematic.snap.svg
+++ b/tests/components/normal-components/__snapshots__/rotated-components-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -1,-2-1,-1-1,0-1,1-1,20,-20,-10,00,10,21,-21,-11,01,11,22,-22,-12,02,12,23,-23,-13,03,13,24,-24,-14,04,14,25,-25,-15,05,15,26,-26,-16,06,16,27,-27,-17,07,17,28,-28,-18,08,18,29,-29,-19,09,19,210,-210,-110,010,110,211,-211,-111,011,111,212,-212,-112,012,112,2R110kΩL1I110kHC110kD1D2VCCGND
\ No newline at end of file
diff --git a/tests/components/normal-components/__snapshots__/solderjumper-circuit-schematic.snap.svg b/tests/components/normal-components/__snapshots__/solderjumper-circuit-schematic.snap.svg
index eb65bdaf3..60f62f0b1 100644
--- a/tests/components/normal-components/__snapshots__/solderjumper-circuit-schematic.snap.svg
+++ b/tests/components/normal-components/__snapshots__/solderjumper-circuit-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-4,4-4,5-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-3,4-3,5-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,4-1,50,-30,-20,-10,00,10,20,30,40,51,-31,-21,-11,01,11,21,31,41,52,-32,-22,-12,02,12,22,32,42,53,-33,-23,-13,03,13,23,33,43,54,-34,-24,-14,04,14,24,34,44,5J1J2J3J4J5
\ No newline at end of file
diff --git a/tests/components/normal-components/__snapshots__/switch-schematic.snap.svg b/tests/components/normal-components/__snapshots__/switch-schematic.snap.svg
index ee964692b..be4db848b 100644
--- a/tests/components/normal-components/__snapshots__/switch-schematic.snap.svg
+++ b/tests/components/normal-components/__snapshots__/switch-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-3,4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,40,-30,-20,-10,00,10,20,30,41,-31,-21,-11,01,11,21,31,42,-32,-22,-12,02,12,22,32,43,-33,-23,-13,03,13,23,33,4SW1SW2SW3SW4SW5SW6SW7
\ No newline at end of file
diff --git a/tests/components/normal-components/__snapshots__/voltage-source-display-rotations-schematic.snap.svg b/tests/components/normal-components/__snapshots__/voltage-source-display-rotations-schematic.snap.svg
index 8918be563..347900f53 100644
--- a/tests/components/normal-components/__snapshots__/voltage-source-display-rotations-schematic.snap.svg
+++ b/tests/components/normal-components/__snapshots__/voltage-source-display-rotations-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -2,-6-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-1,-6-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,20,-60,-50,-40,-30,-20,-10,00,10,21,-61,-51,-41,-31,-21,-11,01,11,22,-62,-52,-42,-32,-22,-12,02,12,23,-63,-53,-43,-33,-23,-13,03,13,24,-64,-54,-44,-34,-24,-14,04,14,25,-65,-55,-45,-35,-25,-15,05,15,26,-66,-56,-46,-36,-26,-16,06,16,27,-67,-57,-47,-37,-27,-17,07,17,28,-68,-58,-48,-38,-28,-18,08,18,29,-69,-59,-49,-39,-29,-19,09,19,210,-610,-510,-410,-310,-210,-110,010,110,2V15V 60HzV23.3V 1kHzV312V 50HzV424V 2kHzV55V 100Hz
\ No newline at end of file
diff --git a/tests/components/normal-components/__snapshots__/voltage-source-schematic.snap.svg b/tests/components/normal-components/__snapshots__/voltage-source-schematic.snap.svg
index d8948feb9..6a41f0c57 100644
--- a/tests/components/normal-components/__snapshots__/voltage-source-schematic.snap.svg
+++ b/tests/components/normal-components/__snapshots__/voltage-source-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -2,-4-2,-3-2,-2-2,-1-2,0-2,1-1,-4-1,-3-1,-2-1,-1-1,0-1,10,-40,-30,-20,-10,00,11,-41,-31,-21,-11,01,12,-42,-32,-22,-12,02,13,-43,-33,-23,-13,03,14,-44,-34,-24,-14,04,15,-45,-35,-25,-15,05,1VS15V 60HzR110kΩVS23.3V 1kHzR210kΩGNDGND
\ No newline at end of file
diff --git a/tests/components/normal-components/pin-header-pcbOrientation.test.tsx b/tests/components/normal-components/pin-header-pcbOrientation.test.tsx
index 69009df54..80d91af99 100644
--- a/tests/components/normal-components/pin-header-pcbOrientation.test.tsx
+++ b/tests/components/normal-components/pin-header-pcbOrientation.test.tsx
@@ -29,6 +29,8 @@ test("pinheader pcbOrientation vertical places pins vertically", () => {
"ccw_rotation": -90,
"font": "tscircuit2024",
"font_size": 0.7,
+ "is_knockout": undefined,
+ "knockout_padding": undefined,
"layer": "top",
"pcb_component_id": "pcb_component_0",
"pcb_group_id": undefined,
diff --git a/tests/components/primitive-components/__snapshots__/netlabel-center-schematic.snap.svg b/tests/components/primitive-components/__snapshots__/netlabel-center-schematic.snap.svg
index a79682b8a..2450829c9 100644
--- a/tests/components/primitive-components/__snapshots__/netlabel-center-schematic.snap.svg
+++ b/tests/components/primitive-components/__snapshots__/netlabel-center-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -5,-2-5,-1-5,0-5,1-5,2-4,-2-4,-1-4,0-4,1-4,2-3,-2-3,-1-3,0-3,1-3,2-2,-2-2,-1-2,0-2,1-2,2-1,-2-1,-1-1,0-1,1-1,20,-20,-10,00,10,21,-21,-11,01,11,22,-22,-12,02,12,2U11IN12IN23OUT14OUT2R210kΩR310kΩ
\ No newline at end of file
diff --git a/tests/components/primitive-components/__snapshots__/schematic-neg-schRotation-schematic.snap.svg b/tests/components/primitive-components/__snapshots__/schematic-neg-schRotation-schematic.snap.svg
index be7e34d1c..e843c71ad 100644
--- a/tests/components/primitive-components/__snapshots__/schematic-neg-schRotation-schematic.snap.svg
+++ b/tests/components/primitive-components/__snapshots__/schematic-neg-schRotation-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ 1,-21,-11,01,11,21,31,42,-22,-12,02,12,22,32,43,-23,-13,03,13,23,33,44,-24,-14,04,14,24,34,45,-25,-15,05,15,25,35,46,-26,-16,06,16,26,36,47,-27,-17,07,17,27,37,48,-28,-18,08,18,28,38,49,-29,-19,09,19,29,39,410,-210,-110,010,110,210,310,4C1_n9010µFC2_n18010µFC3_n27010µFC4_n36010µFC5_noRotation10µF
\ No newline at end of file
diff --git a/tests/components/primitive-components/__snapshots__/silkscreen-text-knockout-pcb.snap.svg b/tests/components/primitive-components/__snapshots__/silkscreen-text-knockout-pcb.snap.svg
new file mode 100644
index 000000000..2bf95a92c
--- /dev/null
+++ b/tests/components/primitive-components/__snapshots__/silkscreen-text-knockout-pcb.snap.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/tests/components/primitive-components/silkscreen-text-knockout.test.tsx b/tests/components/primitive-components/silkscreen-text-knockout.test.tsx
new file mode 100644
index 000000000..40c97f813
--- /dev/null
+++ b/tests/components/primitive-components/silkscreen-text-knockout.test.tsx
@@ -0,0 +1,54 @@
+import { test, expect } from "bun:test"
+import { getTestFixture } from "tests/fixtures/get-test-fixture"
+
+test("silkscreen text with knockout", () => {
+ const { circuit } = getTestFixture()
+
+ circuit.add(
+
+
+ ,
+ )
+
+ circuit.render()
+
+ const silkscreenTexts = circuit.db.pcb_silkscreen_text.list()
+ expect(silkscreenTexts.length).toBe(1)
+ expect(silkscreenTexts[0]?.is_knockout).toBe(true)
+
+ expect(circuit).toMatchPcbSnapshot(import.meta.path)
+})
+
+test("silkscreen text with uniform knockout padding", () => {
+ const { circuit } = getTestFixture()
+
+ circuit.add(
+
+
+ ,
+ )
+
+ circuit.render()
+
+ const silkscreenTexts = circuit.db.pcb_silkscreen_text.list()
+ expect(silkscreenTexts.length).toBe(1)
+ expect(silkscreenTexts[0]?.is_knockout).toBe(true)
+ const padding = silkscreenTexts[0]?.knockout_padding
+ expect(padding?.left).toBeCloseTo(0.5, 1)
+ expect(padding?.right).toBeCloseTo(0.5, 1)
+ expect(padding?.top).toBeCloseTo(0.5, 1)
+ expect(padding?.bottom).toBeCloseTo(0.5, 1)
+})
diff --git a/tests/components/trace/__snapshots__/multiple-net-labels-schematic.snap.svg b/tests/components/trace/__snapshots__/multiple-net-labels-schematic.snap.svg
index 1306a0afc..3c2ac8019 100644
--- a/tests/components/trace/__snapshots__/multiple-net-labels-schematic.snap.svg
+++ b/tests/components/trace/__snapshots__/multiple-net-labels-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -3,-2-3,-1-3,0-3,1-3,2-2,-2-2,-1-2,0-2,1-2,2-1,-2-1,-1-1,0-1,1-1,20,-20,-10,00,10,21,-21,-11,01,11,22,-22,-12,02,12,23,-23,-13,03,13,2C110uFR110kΩSW11234GND
\ No newline at end of file
diff --git a/tests/examples/__snapshots__/example7-voltage-regulator-with-connections-schematic.snap.svg b/tests/examples/__snapshots__/example7-voltage-regulator-with-connections-schematic.snap.svg
index 84ea54319..fc5320026 100644
--- a/tests/examples/__snapshots__/example7-voltage-regulator-with-connections-schematic.snap.svg
+++ b/tests/examples/__snapshots__/example7-voltage-regulator-with-connections-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -3,-1-3,0-3,1-2,-1-2,0-2,1-1,-1-1,0-1,10,-10,00,11,-11,01,12,-12,02,13,-13,03,1R11kΩR21kΩR31kΩ
\ No newline at end of file
diff --git a/tests/features/schematic-match-adapt/__snapshots__/group-match-adapt3-schematic.snap.svg b/tests/features/schematic-match-adapt/__snapshots__/group-match-adapt3-schematic.snap.svg
index 67db009d7..e0fce1dfb 100644
--- a/tests/features/schematic-match-adapt/__snapshots__/group-match-adapt3-schematic.snap.svg
+++ b/tests/features/schematic-match-adapt/__snapshots__/group-match-adapt3-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -3,-1-3,0-3,1-2,-1-2,0-2,1-1,-1-1,0-1,10,-10,00,11,-11,01,12,-12,02,13,-13,03,14,-14,04,15,-15,05,16,-16,06,17,-17,07,1R11kΩC110uFR21kΩC210uF
\ No newline at end of file
diff --git a/tests/features/schematic-match-adapt/__snapshots__/nested-groups-autolayout-issue-schematic.snap.svg b/tests/features/schematic-match-adapt/__snapshots__/nested-groups-autolayout-issue-schematic.snap.svg
index 1d461ef95..21b959d27 100644
--- a/tests/features/schematic-match-adapt/__snapshots__/nested-groups-autolayout-issue-schematic.snap.svg
+++ b/tests/features/schematic-match-adapt/__snapshots__/nested-groups-autolayout-issue-schematic.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+ -6,-2-6,-1-6,0-6,1-6,2-6,3-5,-2-5,-1-5,0-5,1-5,2-5,3-4,-2-4,-1-4,0-4,1-4,2-4,3-3,-2-3,-1-3,0-3,1-3,2-3,3-2,-2-2,-1-2,0-2,1-2,2-2,3-1,-2-1,-1-1,0-1,1-1,2-1,30,-20,-10,00,10,20,31,-21,-11,01,11,21,32,-22,-12,02,12,22,3C62.2uFC12.2uFC22.2uFC51uFRT9013_33GBU11VIN2GND3EN4NC5VOUTVSYSGNDGNDV3_3
\ No newline at end of file
diff --git a/tests/features/spice-analysis/__snapshots__/ngspice-spice-analysis01-switch-simulation.snap.svg b/tests/features/spice-analysis/__snapshots__/ngspice-spice-analysis01-switch-simulation.snap.svg
index 3082b27d8..8866b492f 100644
--- a/tests/features/spice-analysis/__snapshots__/ngspice-spice-analysis01-switch-simulation.snap.svg
+++ b/tests/features/spice-analysis/__snapshots__/ngspice-spice-analysis01-switch-simulation.snap.svg
@@ -1,4 +1,4 @@
-
\ No newline at end of file
+020406080100-6-4-20246Time (ms)Voltage (V)VP_IN1N1-N2spice_transient_analysis
\ No newline at end of file
diff --git a/tests/features/spice-analysis/__snapshots__/ngspice-spice-analysis05-buck-converter-simulation.snap.svg b/tests/features/spice-analysis/__snapshots__/ngspice-spice-analysis05-buck-converter-simulation.snap.svg
index 16ef5b831..e68e0aa95 100644
--- a/tests/features/spice-analysis/__snapshots__/ngspice-spice-analysis05-buck-converter-simulation.snap.svg
+++ b/tests/features/spice-analysis/__snapshots__/ngspice-spice-analysis05-buck-converter-simulation.snap.svg
@@ -1,4 +1,4 @@
-V15VM1V210V 1kHzD1L11HC110uFR11kΩGNDVP_INVP_OUTV15VM1V210V 1kHzD1L11HC110uFR11kΩGNDVP_INVP_OUT020406080100-10123456Time (ms)Voltage (V)VP_INVP_OUTspice_transient_analysis
\ No newline at end of file
+020406080100-10123456Time (ms)Voltage (V)VP_INVP_OUTspice_transient_analysis
\ No newline at end of file
diff --git a/tests/features/spice-analysis/__snapshots__/spice-analysis01-platform-config-simulation.snap.svg b/tests/features/spice-analysis/__snapshots__/spice-analysis01-platform-config-simulation.snap.svg
index dcc861452..8bccb09e4 100644
--- a/tests/features/spice-analysis/__snapshots__/spice-analysis01-platform-config-simulation.snap.svg
+++ b/tests/features/spice-analysis/__snapshots__/spice-analysis01-platform-config-simulation.snap.svg
@@ -1,4 +1,4 @@
-VS11kHzSW1C110uFR11kΩVS11kHzSW1C110uFR11kΩV15VL11HD1C110uFR11kΩV210V 1kHzM1GND5VR1.pin1V15VL11HD1C110uFR11kΩV210V 1kHzM1GND5VR1.pin1V11VOUT2GND3R11kΩR22kΩC110uFVOUTGNDV11VOUT2GND3R11kΩR22kΩC110uFVOUTGNDNCV11VOUT2GND3R11kΩR22kΩC110uFVOUTGNDV11VOUT2GND3R11kΩR22kΩC110uFVOUTGNDNC-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,30,-30,-20,-10,00,10,20,31,-31,-21,-11,01,11,21,32,-32,-22,-12,02,12,22,33,-33,-23,-13,03,13,23,34,-34,-24,-14,04,14,24,3R11kΩU112345678
\ No newline at end of file
+ -4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,30,-30,-20,-10,00,10,20,31,-31,-21,-11,01,11,21,32,-32,-22,-12,02,12,22,33,-33,-23,-13,03,13,23,34,-34,-24,-14,04,14,24,3R11kΩU112345678
\ No newline at end of file
diff --git a/tests/groups/__snapshots__/group-schematic-border-schematic.snap.svg b/tests/groups/__snapshots__/group-schematic-border-schematic.snap.svg
index e0a6e8d90..dd3cf3650 100644
--- a/tests/groups/__snapshots__/group-schematic-border-schematic.snap.svg
+++ b/tests/groups/__snapshots__/group-schematic-border-schematic.snap.svg
@@ -1,4 +1,4 @@
--3,-2-3,-1-3,0-3,1-3,2-2,-2-2,-1-2,0-2,1-2,2-1,-2-1,-1-1,0-1,1-1,20,-20,-10,00,10,21,-21,-11,01,11,22,-22,-12,02,12,23,-23,-13,03,13,2R11kΩU112345678
\ No newline at end of file
+ -3,-2-3,-1-3,0-3,1-3,2-2,-2-2,-1-2,0-2,1-2,2-1,-2-1,-1-1,0-1,1-1,20,-20,-10,00,10,21,-21,-11,01,11,22,-22,-12,02,12,23,-23,-13,03,13,2R11kΩU112345678
\ No newline at end of file
diff --git a/tests/groups/__snapshots__/group-schematic-matchpack-respects-margin-schematic.snap.svg b/tests/groups/__snapshots__/group-schematic-matchpack-respects-margin-schematic.snap.svg
index 67fd194b5..cb2ffff27 100644
--- a/tests/groups/__snapshots__/group-schematic-matchpack-respects-margin-schematic.snap.svg
+++ b/tests/groups/__snapshots__/group-schematic-matchpack-respects-margin-schematic.snap.svg
@@ -1,4 +1,4 @@
--8,-1-8,0-8,1-8,2-8,3-7,-1-7,0-7,1-7,2-7,3-6,-1-6,0-6,1-6,2-6,3-5,-1-5,0-5,1-5,2-5,3-4,-1-4,0-4,1-4,2-4,3-3,-1-3,0-3,1-3,2-3,3-2,-1-2,0-2,1-2,2-2,3-1,-1-1,0-1,1-1,2-1,30,-10,00,10,20,31,-11,01,11,21,32,-12,02,12,22,3R11kΩR21kΩ-8,-1-8,0-8,1-8,2-8,3-7,-1-7,0-7,1-7,2-7,3-6,-1-6,0-6,1-6,2-6,3-5,-1-5,0-5,1-5,2-5,3-4,-1-4,0-4,1-4,2-4,3-3,-1-3,0-3,1-3,2-3,3-2,-1-2,0-2,1-2,2-2,3-1,-1-1,0-1,1-1,2-1,30,-10,00,10,20,31,-11,01,11,21,32,-12,02,12,22,3R11kΩR21kΩ-4,-2-4,-1-4,0-4,1-4,2-3,-2-3,-1-3,0-3,1-3,2-2,-2-2,-1-2,0-2,1-2,2-1,-2-1,-1-1,0-1,1-1,20,-20,-10,00,10,21,-21,-11,01,11,22,-22,-12,02,12,23,-23,-13,03,13,24,-24,-14,04,14,2R11kΩR22.2kΩC1100nFU112345678
\ No newline at end of file
+ -4,-2-4,-1-4,0-4,1-4,2-3,-2-3,-1-3,0-3,1-3,2-2,-2-2,-1-2,0-2,1-2,2-1,-2-1,-1-1,0-1,1-1,20,-20,-10,00,10,21,-21,-11,01,11,22,-22,-12,02,12,23,-23,-13,03,13,24,-24,-14,04,14,2R11kΩR22.2kΩC1100nFU112345678
\ No newline at end of file
diff --git a/tests/projects/seveibar__rp2040-zero/__snapshots__/index-schematic.snap.svg b/tests/projects/seveibar__rp2040-zero/__snapshots__/index-schematic.snap.svg
index 29030e4b0..ab13501ca 100644
--- a/tests/projects/seveibar__rp2040-zero/__snapshots__/index-schematic.snap.svg
+++ b/tests/projects/seveibar__rp2040-zero/__snapshots__/index-schematic.snap.svg
@@ -1,4 +1,4 @@
--16,-6-16,-5-16,-4-16,-3-16,-2-16,-1-16,0-16,1-16,2-16,3-16,4-16,5-16,6-16,7-16,8-16,9-15,-6-15,-5-15,-4-15,-3-15,-2-15,-1-15,0-15,1-15,2-15,3-15,4-15,5-15,6-15,7-15,8-15,9-14,-6-14,-5-14,-4-14,-3-14,-2-14,-1-14,0-14,1-14,2-14,3-14,4-14,5-14,6-14,7-14,8-14,9-13,-6-13,-5-13,-4-13,-3-13,-2-13,-1-13,0-13,1-13,2-13,3-13,4-13,5-13,6-13,7-13,8-13,9-12,-6-12,-5-12,-4-12,-3-12,-2-12,-1-12,0-12,1-12,2-12,3-12,4-12,5-12,6-12,7-12,8-12,9-11,-6-11,-5-11,-4-11,-3-11,-2-11,-1-11,0-11,1-11,2-11,3-11,4-11,5-11,6-11,7-11,8-11,9-10,-6-10,-5-10,-4-10,-3-10,-2-10,-1-10,0-10,1-10,2-10,3-10,4-10,5-10,6-10,7-10,8-10,9-9,-6-9,-5-9,-4-9,-3-9,-2-9,-1-9,0-9,1-9,2-9,3-9,4-9,5-9,6-9,7-9,8-9,9-8,-6-8,-5-8,-4-8,-3-8,-2-8,-1-8,0-8,1-8,2-8,3-8,4-8,5-8,6-8,7-8,8-8,9-7,-6-7,-5-7,-4-7,-3-7,-2-7,-1-7,0-7,1-7,2-7,3-7,4-7,5-7,6-7,7-7,8-7,9-6,-6-6,-5-6,-4-6,-3-6,-2-6,-1-6,0-6,1-6,2-6,3-6,4-6,5-6,6-6,7-6,8-6,9-5,-6-5,-5-5,-4-5,-3-5,-2-5,-1-5,0-5,1-5,2-5,3-5,4-5,5-5,6-5,7-5,8-5,9-4,-6-4,-5-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-4,4-4,5-4,6-4,7-4,8-4,9-3,-6-3,-5-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-3,4-3,5-3,6-3,7-3,8-3,9-2,-6-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-2,6-2,7-2,8-2,9-1,-6-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,4-1,5-1,6-1,7-1,8-1,90,-60,-50,-40,-30,-20,-10,00,10,20,30,40,50,60,70,80,91,-61,-51,-41,-31,-21,-11,01,11,21,31,41,51,61,71,81,92,-62,-52,-42,-32,-22,-12,02,12,22,32,42,52,62,72,82,93,-63,-53,-43,-33,-23,-13,03,13,23,33,43,53,63,73,83,94,-64,-54,-44,-34,-24,-14,04,14,24,34,44,54,64,74,84,9C62.2uFC12.2uFC22.2uFC51uFRT9013_33GBU11VIN2GND3EN4NC5VOUTP11V52GND3V3_34GP295GP286GP277GP268GP159GP1410GP1311GP1212GP1113GP1014GP915GP816GP717GP618GP519GP420GP321GP222GP123GP0WS2812B_2020L11DO2GND3DI4VDDC31uFW25Q16JVUXIQU21CS_N2DO3WP_N4GND5DI6CLK7HOLD_N8VCCR81kΩC1715pFC1615pFABM8_272_T3X11XTAL12GND13XTAL24GND2RP2040U31IOVDD12GPIO03GPIO14GPIO25GPIO36GPIO47GPIO58GPIO69GPIO710IOVDD211GPIO812GPIO913GPIO1014GPIO1115GPIO1216GPIO1317GPIO1418GPIO1519TESTEN20XIN21XOUT22IOVDD323DVDD124SWCLK25SWD26RUN27GPIO1628GPIO1729GPIO1830GPIO1931GPIO2032GPIO2133IOVDD434GPIO2235GPIO2336GPIO2437GPIO2538GPIO26_ADC039GPIO27_ADC140GPIO28_ADC241GPIO29_ADC342IOVDD543ADC_AVDD44VREG_VIN45VREG_VOUT46USB_DM47USB_DP48USB_VDD49IOVDD650DVDD251QSPI_SD352QSPI_SCLK53QSPI_SD054QSPI_SD255QSPI_SD156QSPI_SS_N57GNDC12100nFC14100nFC8100nFC13100nFC15100nFC19100nFC18100nFC722nFC92.2uFC102.2uFC112.2uFVSYSGNDGND-16,-6-16,-5-16,-4-16,-3-16,-2-16,-1-16,0-16,1-16,2-16,3-16,4-16,5-16,6-16,7-16,8-16,9-15,-6-15,-5-15,-4-15,-3-15,-2-15,-1-15,0-15,1-15,2-15,3-15,4-15,5-15,6-15,7-15,8-15,9-14,-6-14,-5-14,-4-14,-3-14,-2-14,-1-14,0-14,1-14,2-14,3-14,4-14,5-14,6-14,7-14,8-14,9-13,-6-13,-5-13,-4-13,-3-13,-2-13,-1-13,0-13,1-13,2-13,3-13,4-13,5-13,6-13,7-13,8-13,9-12,-6-12,-5-12,-4-12,-3-12,-2-12,-1-12,0-12,1-12,2-12,3-12,4-12,5-12,6-12,7-12,8-12,9-11,-6-11,-5-11,-4-11,-3-11,-2-11,-1-11,0-11,1-11,2-11,3-11,4-11,5-11,6-11,7-11,8-11,9-10,-6-10,-5-10,-4-10,-3-10,-2-10,-1-10,0-10,1-10,2-10,3-10,4-10,5-10,6-10,7-10,8-10,9-9,-6-9,-5-9,-4-9,-3-9,-2-9,-1-9,0-9,1-9,2-9,3-9,4-9,5-9,6-9,7-9,8-9,9-8,-6-8,-5-8,-4-8,-3-8,-2-8,-1-8,0-8,1-8,2-8,3-8,4-8,5-8,6-8,7-8,8-8,9-7,-6-7,-5-7,-4-7,-3-7,-2-7,-1-7,0-7,1-7,2-7,3-7,4-7,5-7,6-7,7-7,8-7,9-6,-6-6,-5-6,-4-6,-3-6,-2-6,-1-6,0-6,1-6,2-6,3-6,4-6,5-6,6-6,7-6,8-6,9-5,-6-5,-5-5,-4-5,-3-5,-2-5,-1-5,0-5,1-5,2-5,3-5,4-5,5-5,6-5,7-5,8-5,9-4,-6-4,-5-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-4,4-4,5-4,6-4,7-4,8-4,9-3,-6-3,-5-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-3,4-3,5-3,6-3,7-3,8-3,9-2,-6-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-2,6-2,7-2,8-2,9-1,-6-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,4-1,5-1,6-1,7-1,8-1,90,-60,-50,-40,-30,-20,-10,00,10,20,30,40,50,60,70,80,91,-61,-51,-41,-31,-21,-11,01,11,21,31,41,51,61,71,81,92,-62,-52,-42,-32,-22,-12,02,12,22,32,42,52,62,72,82,93,-63,-53,-43,-33,-23,-13,03,13,23,33,43,53,63,73,83,94,-64,-54,-44,-34,-24,-14,04,14,24,34,44,54,64,74,84,9C62.2uFC12.2uFC22.2uFC51uFRT9013_33GBU11VIN2GND3EN4NC5VOUTP11V52GND3V3_34GP295GP286GP277GP268GP159GP1410GP1311GP1212GP1113GP1014GP915GP816GP717GP618GP519GP420GP321GP222GP123GP0WS2812B_2020L11DO2GND3DI4VDDC31uFW25Q16JVUXIQU21CS_N2DO3WP_N4GND5DI6CLK7HOLD_N8VCCR81kΩC1715pFC1615pFABM8_272_T3X11XTAL12GND13XTAL24GND2RP2040U31IOVDD12GPIO03GPIO14GPIO25GPIO36GPIO47GPIO58GPIO69GPIO710IOVDD211GPIO812GPIO913GPIO1014GPIO1115GPIO1216GPIO1317GPIO1418GPIO1519TESTEN20XIN21XOUT22IOVDD323DVDD124SWCLK25SWD26RUN27GPIO1628GPIO1729GPIO1830GPIO1931GPIO2032GPIO2133IOVDD434GPIO2235GPIO2336GPIO2437GPIO2538GPIO26_ADC039GPIO27_ADC140GPIO28_ADC241GPIO29_ADC342IOVDD543ADC_AVDD44VREG_VIN45VREG_VOUT46USB_DM47USB_DP48USB_VDD49IOVDD650DVDD251QSPI_SD352QSPI_SCLK53QSPI_SD054QSPI_SD255QSPI_SD156QSPI_SS_N57GNDC12100nFC14100nFC8100nFC13100nFC15100nFC19100nFC18100nFC722nFC92.2uFC102.2uFC112.2uFVSYSGNDGND-2,-1-2,0-2,1-1,-1-1,0-1,10,-10,00,11,-11,01,12,-12,02,13,-13,03,14,-14,04,15,-15,05,16,-16,06,17,-17,07,18,-18,08,1R110kΩR210kΩR310kΩ
\ No newline at end of file
+ -2,-1-2,0-2,1-1,-1-1,0-1,10,-10,00,11,-11,01,12,-12,02,13,-13,03,14,-14,04,15,-15,05,16,-16,06,17,-17,07,18,-18,08,1R110kΩR210kΩR310kΩ
\ No newline at end of file
diff --git a/tests/repros/__snapshots__/repro14-double-schematic-traces-schematic.snap.svg b/tests/repros/__snapshots__/repro14-double-schematic-traces-schematic.snap.svg
index 901db103e..fc306b72c 100644
--- a/tests/repros/__snapshots__/repro14-double-schematic-traces-schematic.snap.svg
+++ b/tests/repros/__snapshots__/repro14-double-schematic-traces-schematic.snap.svg
@@ -1,4 +1,4 @@
--4,-1-4,0-4,1-4,2-4,3-4,4-4,5-3,-1-3,0-3,1-3,2-3,3-3,4-3,5-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-1,-1-1,0-1,1-1,2-1,3-1,4-1,50,-10,00,10,20,30,40,51,-11,01,11,21,31,41,52,-12,02,12,22,32,42,53,-13,03,13,23,33,43,54,-14,04,14,24,34,44,5R110kΩR210kΩR310kΩR410kΩR510kΩ
\ No newline at end of file
+ -4,-1-4,0-4,1-4,2-4,3-4,4-4,5-3,-1-3,0-3,1-3,2-3,3-3,4-3,5-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-1,-1-1,0-1,1-1,2-1,3-1,4-1,50,-10,00,10,20,30,40,51,-11,01,11,21,31,41,52,-12,02,12,22,32,42,53,-13,03,13,23,33,43,54,-14,04,14,24,34,44,5R110kΩR210kΩR310kΩR410kΩR510kΩ
\ No newline at end of file
diff --git a/tests/repros/__snapshots__/repro15-trace-into-symbol-schematic.snap.svg b/tests/repros/__snapshots__/repro15-trace-into-symbol-schematic.snap.svg
index 34af4e29e..5a135c925 100644
--- a/tests/repros/__snapshots__/repro15-trace-into-symbol-schematic.snap.svg
+++ b/tests/repros/__snapshots__/repro15-trace-into-symbol-schematic.snap.svg
@@ -1,4 +1,4 @@
--3,-1-3,0-3,1-2,-1-2,0-2,1-1,-1-1,0-1,10,-10,00,11,-11,01,12,-12,02,13,-13,03,14,-14,04,15,-15,05,1R11kΩC11000pF
\ No newline at end of file
+ -3,-1-3,0-3,1-2,-1-2,0-2,1-1,-1-1,0-1,10,-10,00,11,-11,01,12,-12,02,13,-13,03,14,-14,04,15,-15,05,1R11kΩC11000pF
\ No newline at end of file
diff --git a/tests/repros/__snapshots__/repro20-internal-jumper-schematic.snap.svg b/tests/repros/__snapshots__/repro20-internal-jumper-schematic.snap.svg
index 4568d2625..da9454ee7 100644
--- a/tests/repros/__snapshots__/repro20-internal-jumper-schematic.snap.svg
+++ b/tests/repros/__snapshots__/repro20-internal-jumper-schematic.snap.svg
@@ -1,4 +1,4 @@
--2,-2-2,-1-2,0-2,1-2,2-1,-2-1,-1-1,0-1,1-1,20,-20,-10,00,10,21,-21,-11,01,11,22,-22,-12,02,12,23,-23,-13,03,13,24,-24,-14,04,14,25,-25,-15,05,15,26,-26,-16,06,16,27,-27,-17,07,17,28,-28,-18,08,18,2SJJP112JP212
\ No newline at end of file
+ -2,-2-2,-1-2,0-2,1-2,2-1,-2-1,-1-1,0-1,1-1,20,-20,-10,00,10,21,-21,-11,01,11,22,-22,-12,02,12,23,-23,-13,03,13,24,-24,-14,04,14,25,-25,-15,05,15,26,-26,-16,06,16,27,-27,-17,07,17,28,-28,-18,08,18,2SJJP112JP212
\ No newline at end of file
diff --git a/tests/repros/__snapshots__/repro32-conn-component-not-detected-schematic.snap.svg b/tests/repros/__snapshots__/repro32-conn-component-not-detected-schematic.snap.svg
index db4d961e0..00e65b8dc 100644
--- a/tests/repros/__snapshots__/repro32-conn-component-not-detected-schematic.snap.svg
+++ b/tests/repros/__snapshots__/repro32-conn-component-not-detected-schematic.snap.svg
@@ -1,4 +1,4 @@
--2,-1-2,0-2,1-1,-1-1,0-1,10,-10,00,11,-11,01,12,-12,02,1R110kΩ
\ No newline at end of file
+ -2,-1-2,0-2,1-1,-1-1,0-1,10,-10,00,11,-11,01,12,-12,02,1R110kΩ
\ No newline at end of file
diff --git a/tests/repros/__snapshots__/repro4-schematic-trace-overlap-schematic.snap.svg b/tests/repros/__snapshots__/repro4-schematic-trace-overlap-schematic.snap.svg
index dbc2ef3e5..e5cd62ee6 100644
--- a/tests/repros/__snapshots__/repro4-schematic-trace-overlap-schematic.snap.svg
+++ b/tests/repros/__snapshots__/repro4-schematic-trace-overlap-schematic.snap.svg
@@ -1,4 +1,4 @@
--4,-3-4,-2-4,-1-4,0-4,1-4,2-3,-3-3,-2-3,-1-3,0-3,1-3,2-2,-3-2,-2-2,-1-2,0-2,1-2,2-1,-3-1,-2-1,-1-1,0-1,1-1,20,-30,-20,-10,00,10,21,-31,-21,-11,01,11,22,-32,-22,-12,02,12,2R110kΩR210kΩR310kΩ
\ No newline at end of file
+ -4,-3-4,-2-4,-1-4,0-4,1-4,2-3,-3-3,-2-3,-1-3,0-3,1-3,2-2,-3-2,-2-2,-1-2,0-2,1-2,2-1,-3-1,-2-1,-1-1,0-1,1-1,20,-30,-20,-10,00,10,21,-31,-21,-11,01,11,22,-32,-22,-12,02,12,2R110kΩR210kΩR310kΩ
\ No newline at end of file
diff --git a/tests/repros/__snapshots__/repro44-e2e-pack-and-schematic-schematic.snap.svg b/tests/repros/__snapshots__/repro44-e2e-pack-and-schematic-schematic.snap.svg
index e7fe845d1..162b6ad6b 100644
--- a/tests/repros/__snapshots__/repro44-e2e-pack-and-schematic-schematic.snap.svg
+++ b/tests/repros/__snapshots__/repro44-e2e-pack-and-schematic-schematic.snap.svg
@@ -1,4 +1,4 @@
--4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,20,-40,-30,-20,-10,00,10,21,-41,-31,-21,-11,01,11,22,-42,-32,-22,-12,02,12,23,-43,-33,-23,-13,03,13,24,-44,-34,-24,-14,04,14,2U11GND2TRIG3OUT4RESET5CTRL6THRES7DISCH8VCCR11kΩR210kΩC110uFC20.01uFR3330Ω-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,20,-40,-30,-20,-10,00,10,21,-41,-31,-21,-11,01,11,22,-42,-32,-22,-12,02,12,23,-43,-33,-23,-13,03,13,24,-44,-34,-24,-14,04,14,2U11GND2TRIG3OUT4RESET5CTRL6THRES7DISCH8VCCR11kΩR210kΩC110uFC20.01uFR3330Ω-2,-2-2,-1-2,0-2,1-2,2-2,3-1,-2-1,-1-1,0-1,1-1,2-1,30,-20,-10,00,10,20,31,-21,-11,01,11,21,32,-22,-12,02,12,22,33,-23,-13,03,13,23,34,-24,-14,04,14,24,35,-25,-15,05,15,25,3J11VCC2OUT3GNDR11kΩC11uVCC-2,-2-2,-1-2,0-2,1-2,2-2,3-1,-2-1,-1-1,0-1,1-1,2-1,30,-20,-10,00,10,20,31,-21,-11,01,11,21,32,-22,-12,02,12,22,33,-23,-13,03,13,23,34,-24,-14,04,14,24,35,-25,-15,05,15,25,3J11VCC2OUT3GNDR11kΩC11uVCC-3,-5-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,30,-50,-40,-30,-20,-10,00,10,20,31,-51,-41,-31,-21,-11,01,11,21,32,-52,-42,-32,-22,-12,02,12,22,33,-53,-43,-33,-23,-13,03,13,23,34,-54,-44,-34,-24,-14,04,14,24,3SI7021U11GND2VDD3SCK4DATAC20.1ufR14.7kΩR24.7kΩSJ1GNDV3_3V3_3-3,-5-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,30,-50,-40,-30,-20,-10,00,10,20,31,-51,-41,-31,-21,-11,01,11,21,32,-52,-42,-32,-22,-12,02,12,22,33,-53,-43,-33,-23,-13,03,13,23,34,-54,-44,-34,-24,-14,04,14,24,3SI7021U11GND2VDD3SCK4DATAC20.1ufR14.7kΩR24.7kΩSJ1GNDV3_3V3_3-4,-2-4,-1-4,0-4,1-4,2-3,-2-3,-1-3,0-3,1-3,2-2,-2-2,-1-2,0-2,1-2,2-1,-2-1,-1-1,0-1,1-1,20,-20,-10,00,10,21,-21,-11,01,11,22,-22,-12,02,12,23,-23,-13,03,13,24,-24,-14,04,14,2R14kΩR24kΩR34kΩJ1-4,-2-4,-1-4,0-4,1-4,2-3,-2-3,-1-3,0-3,1-3,2-2,-2-2,-1-2,0-2,1-2,2-1,-2-1,-1-1,0-1,1-1,20,-20,-10,00,10,21,-21,-11,01,11,22,-22,-12,02,12,23,-23,-13,03,13,24,-24,-14,04,14,2R14kΩR24kΩR34kΩJ1-2,-9-2,-8-2,-7-2,-6-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-2,6-2,7-2,8-2,9-2,10-2,11-1,-9-1,-8-1,-7-1,-6-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,4-1,5-1,6-1,7-1,8-1,9-1,10-1,110,-90,-80,-70,-60,-50,-40,-30,-20,-10,00,10,20,30,40,50,60,70,80,90,100,111,-91,-81,-71,-61,-51,-41,-31,-21,-11,01,11,21,31,41,51,61,71,81,91,101,112,-92,-82,-72,-62,-52,-42,-32,-22,-12,02,12,22,32,42,52,62,72,82,92,102,113,-93,-83,-73,-63,-53,-43,-33,-23,-13,03,13,23,33,43,53,63,73,83,93,103,114,-94,-84,-74,-64,-54,-44,-34,-24,-14,04,14,24,34,44,54,64,74,84,94,104,115,-95,-85,-75,-65,-55,-45,-35,-25,-15,05,15,25,35,45,55,65,75,85,95,105,116,-96,-86,-76,-66,-56,-46,-36,-26,-16,06,16,26,36,46,56,66,76,86,96,106,117,-97,-87,-77,-67,-57,-47,-37,-27,-17,07,17,27,37,47,57,67,77,87,97,107,11J11ROW02ROW13ROW24COL05COL16COL2SW1D1SW2D2SW3D3SW4D4SW5D5SW6D6SW7D7SW8D8SW9D9-2,-9-2,-8-2,-7-2,-6-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-2,6-2,7-2,8-2,9-2,10-2,11-1,-9-1,-8-1,-7-1,-6-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,4-1,5-1,6-1,7-1,8-1,9-1,10-1,110,-90,-80,-70,-60,-50,-40,-30,-20,-10,00,10,20,30,40,50,60,70,80,90,100,111,-91,-81,-71,-61,-51,-41,-31,-21,-11,01,11,21,31,41,51,61,71,81,91,101,112,-92,-82,-72,-62,-52,-42,-32,-22,-12,02,12,22,32,42,52,62,72,82,92,102,113,-93,-83,-73,-63,-53,-43,-33,-23,-13,03,13,23,33,43,53,63,73,83,93,103,114,-94,-84,-74,-64,-54,-44,-34,-24,-14,04,14,24,34,44,54,64,74,84,94,104,115,-95,-85,-75,-65,-55,-45,-35,-25,-15,05,15,25,35,45,55,65,75,85,95,105,116,-96,-86,-76,-66,-56,-46,-36,-26,-16,06,16,26,36,46,56,66,76,86,96,106,117,-97,-87,-77,-67,-57,-47,-37,-27,-17,07,17,27,37,47,57,67,77,87,97,107,11J11ROW02ROW13ROW24COL05COL16COL2SW1D1SW2D2SW3D3SW4D4SW5D5SW6D6SW7D7SW8D8SW9D9-4,-5-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-3,-5-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,30,-50,-40,-30,-20,-10,00,10,20,31,-51,-41,-31,-21,-11,01,11,21,32,-52,-42,-32,-22,-12,02,12,22,33,-53,-43,-33,-23,-13,03,13,23,34,-54,-44,-34,-24,-14,04,14,24,35,-55,-45,-35,-25,-15,05,15,25,3U11GND2TRIG3OUT4RESET5CTRL6THRES7DISCH8VCCR11kΩR210kΩC110uFC210nFJ11VCC2OUT3GNDGNDGND-4,-5-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-3,-5-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,30,-50,-40,-30,-20,-10,00,10,20,31,-51,-41,-31,-21,-11,01,11,21,32,-52,-42,-32,-22,-12,02,12,22,33,-53,-43,-33,-23,-13,03,13,23,34,-54,-44,-34,-24,-14,04,14,24,35,-55,-45,-35,-25,-15,05,15,25,3U11GND2TRIG3OUT4RESET5CTRL6THRES7DISCH8VCCR11kΩR210kΩC110uFC210nFJ11VCC2OUT3GNDGNDGND-6,-1-6,0-6,1-6,2-6,3-6,4-5,-1-5,0-5,1-5,2-5,3-5,4-4,-1-4,0-4,1-4,2-4,3-4,4-3,-1-3,0-3,1-3,2-3,3-3,4-2,-1-2,0-2,1-2,2-2,3-2,4-1,-1-1,0-1,1-1,2-1,3-1,40,-10,00,10,20,30,41,-11,01,11,21,31,42,-12,02,12,22,32,4JP61GND2VOUTR14.7kΩSJ2
\ No newline at end of file
+ -6,-1-6,0-6,1-6,2-6,3-6,4-5,-1-5,0-5,1-5,2-5,3-5,4-4,-1-4,0-4,1-4,2-4,3-4,4-3,-1-3,0-3,1-3,2-3,3-3,4-2,-1-2,0-2,1-2,2-2,3-2,4-1,-1-1,0-1,1-1,2-1,3-1,40,-10,00,10,20,30,41,-11,01,11,21,31,42,-12,02,12,22,32,4JP61GND2VOUTR14.7kΩSJ2
\ No newline at end of file
diff --git a/tests/repros/__snapshots__/repro5-schematic-schematic.snap.svg b/tests/repros/__snapshots__/repro5-schematic-schematic.snap.svg
index c8caecbfa..322eb3354 100644
--- a/tests/repros/__snapshots__/repro5-schematic-schematic.snap.svg
+++ b/tests/repros/__snapshots__/repro5-schematic-schematic.snap.svg
@@ -1,4 +1,4 @@
--2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,40,-40,-30,-20,-10,00,10,20,30,41,-41,-31,-21,-11,01,11,21,31,42,-42,-32,-22,-12,02,12,22,32,43,-43,-33,-23,-13,03,13,23,33,44,-44,-34,-24,-14,04,14,24,34,4part-numberU11TXD2DTR3RTS4VCCIO5RXD6RI7GND79DSR10DCD11CTS12SLEEP13TXDEN14PWRUN15USBDP16USBDM173V3OUT18GND1819RESET20VCC21GND2122RXLED23TXLED25AGND26TEST27OSCI28OSCOLED1
\ No newline at end of file
+ -2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,40,-40,-30,-20,-10,00,10,20,30,41,-41,-31,-21,-11,01,11,21,31,42,-42,-32,-22,-12,02,12,22,32,43,-43,-33,-23,-13,03,13,23,33,44,-44,-34,-24,-14,04,14,24,34,4part-numberU11TXD2DTR3RTS4VCCIO5RXD6RI7GND79DSR10DCD11CTS12SLEEP13TXDEN14PWRUN15USBDP16USBDM173V3OUT18GND1819RESET20VCC21GND2122RXLED23TXLED25AGND26TEST27OSCI28OSCOLED1
\ No newline at end of file
diff --git a/tests/repros/__snapshots__/repro50-rp2040-decoupling-capacitors-schematic.snap.svg b/tests/repros/__snapshots__/repro50-rp2040-decoupling-capacitors-schematic.snap.svg
index f24ba7788..11cb0ec77 100644
--- a/tests/repros/__snapshots__/repro50-rp2040-decoupling-capacitors-schematic.snap.svg
+++ b/tests/repros/__snapshots__/repro50-rp2040-decoupling-capacitors-schematic.snap.svg
@@ -1,4 +1,4 @@
--8,-5-8,-4-8,-3-8,-2-8,-1-8,0-8,1-8,2-8,3-8,4-8,5-8,6-8,7-8,8-8,9-7,-5-7,-4-7,-3-7,-2-7,-1-7,0-7,1-7,2-7,3-7,4-7,5-7,6-7,7-7,8-7,9-6,-5-6,-4-6,-3-6,-2-6,-1-6,0-6,1-6,2-6,3-6,4-6,5-6,6-6,7-6,8-6,9-5,-5-5,-4-5,-3-5,-2-5,-1-5,0-5,1-5,2-5,3-5,4-5,5-5,6-5,7-5,8-5,9-4,-5-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-4,4-4,5-4,6-4,7-4,8-4,9-3,-5-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-3,4-3,5-3,6-3,7-3,8-3,9-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-2,6-2,7-2,8-2,9-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,4-1,5-1,6-1,7-1,8-1,90,-50,-40,-30,-20,-10,00,10,20,30,40,50,60,70,80,91,-51,-41,-31,-21,-11,01,11,21,31,41,51,61,71,81,92,-52,-42,-32,-22,-12,02,12,22,32,42,52,62,72,82,93,-53,-43,-33,-23,-13,03,13,23,33,43,53,63,73,83,94,-54,-44,-34,-24,-14,04,14,24,34,44,54,64,74,84,9RP2040U31IOVDD12GPIO03GPIO14GPIO25GPIO36GPIO47GPIO58GPIO69GPIO710IOVDD211GPIO812GPIO913GPIO1014GPIO1115GPIO1216GPIO1317GPIO1418GPIO1519TESTEN20XIN21XOUT22IOVDD323DVDD124SWCLK25SWD26RUN27GPIO1628GPIO1729GPIO1830GPIO1931GPIO2032GPIO2133IOVDD434GPIO2235GPIO2336GPIO2437GPIO2538GPIO26_ADC039GPIO27_ADC140GPIO28_ADC241GPIO29_ADC342IOVDD543ADC_AVDD44VREG_VIN45VREG_VOUT46USB_DM47USB_DP48USB_VDD49IOVDD650DVDD251QSPI_SD352QSPI_SCLK53QSPI_SD054QSPI_SD255QSPI_SD156QSPI_SS_N57GNDC12100nFC14100nFC8100nFC13100nFC15100nFC19100nFC18100nFC722nFC92.2uFC102.2uFC112.2uFV3_3V3_3V1_1V1_1GNDGNDGND-8,-5-8,-4-8,-3-8,-2-8,-1-8,0-8,1-8,2-8,3-8,4-8,5-8,6-8,7-8,8-8,9-7,-5-7,-4-7,-3-7,-2-7,-1-7,0-7,1-7,2-7,3-7,4-7,5-7,6-7,7-7,8-7,9-6,-5-6,-4-6,-3-6,-2-6,-1-6,0-6,1-6,2-6,3-6,4-6,5-6,6-6,7-6,8-6,9-5,-5-5,-4-5,-3-5,-2-5,-1-5,0-5,1-5,2-5,3-5,4-5,5-5,6-5,7-5,8-5,9-4,-5-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-4,4-4,5-4,6-4,7-4,8-4,9-3,-5-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-3,4-3,5-3,6-3,7-3,8-3,9-2,-5-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-2,5-2,6-2,7-2,8-2,9-1,-5-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,4-1,5-1,6-1,7-1,8-1,90,-50,-40,-30,-20,-10,00,10,20,30,40,50,60,70,80,91,-51,-41,-31,-21,-11,01,11,21,31,41,51,61,71,81,92,-52,-42,-32,-22,-12,02,12,22,32,42,52,62,72,82,93,-53,-43,-33,-23,-13,03,13,23,33,43,53,63,73,83,94,-54,-44,-34,-24,-14,04,14,24,34,44,54,64,74,84,9RP2040U31IOVDD12GPIO03GPIO14GPIO25GPIO36GPIO47GPIO58GPIO69GPIO710IOVDD211GPIO812GPIO913GPIO1014GPIO1115GPIO1216GPIO1317GPIO1418GPIO1519TESTEN20XIN21XOUT22IOVDD323DVDD124SWCLK25SWD26RUN27GPIO1628GPIO1729GPIO1830GPIO1931GPIO2032GPIO2133IOVDD434GPIO2235GPIO2336GPIO2437GPIO2538GPIO26_ADC039GPIO27_ADC140GPIO28_ADC241GPIO29_ADC342IOVDD543ADC_AVDD44VREG_VIN45VREG_VOUT46USB_DM47USB_DP48USB_VDD49IOVDD650DVDD251QSPI_SD352QSPI_SCLK53QSPI_SD054QSPI_SD255QSPI_SD156QSPI_SS_N57GNDC12100nFC14100nFC8100nFC13100nFC15100nFC19100nFC18100nFC722nFC92.2uFC102.2uFC112.2uFV3_3V3_3V1_1V1_1GNDGNDGND-4,-2-4,-1-4,0-4,1-4,2-3,-2-3,-1-3,0-3,1-3,2-2,-2-2,-1-2,0-2,1-2,2-1,-2-1,-1-1,0-1,1-1,20,-20,-10,00,10,21,-21,-11,01,11,22,-22,-12,02,12,2R11kΩC11000pFU112345678-4,-2-4,-1-4,0-4,1-4,2-3,-2-3,-1-3,0-3,1-3,2-2,-2-2,-1-2,0-2,1-2,2-1,-2-1,-1-1,0-1,1-1,20,-20,-10,00,10,21,-21,-11,01,11,22,-22,-12,02,12,2R11kΩC11000pFU112345678-1,-2-1,-1-1,0-1,1-1,20,-20,-10,00,10,21,-21,-11,01,11,22,-22,-12,02,12,23,-23,-13,03,13,2C10.1uFC210uFGNDVCCGNDVCC
\ No newline at end of file
+ -1,-2-1,-1-1,0-1,1-1,20,-20,-10,00,10,21,-21,-11,01,11,22,-22,-12,02,12,23,-23,-13,03,13,2C10.1uFC210uFGNDVCCGNDVCC
\ No newline at end of file
diff --git a/tests/repros/__snapshots__/repro70-schematicbox-rotation-autolayout-schematic.snap.svg b/tests/repros/__snapshots__/repro70-schematicbox-rotation-autolayout-schematic.snap.svg
index 07cf46cde..85e48896f 100644
--- a/tests/repros/__snapshots__/repro70-schematicbox-rotation-autolayout-schematic.snap.svg
+++ b/tests/repros/__snapshots__/repro70-schematicbox-rotation-autolayout-schematic.snap.svg
@@ -1,4 +1,4 @@
--4,-3-4,-2-4,-1-4,0-4,1-3,-3-3,-2-3,-1-3,0-3,1-2,-3-2,-2-2,-1-2,0-2,1-1,-3-1,-2-1,-1-1,0-1,10,-30,-20,-10,00,11,-31,-21,-11,01,12,-32,-22,-12,02,1C110uFC310uFFB112-4,-3-4,-2-4,-1-4,0-4,1-3,-3-3,-2-3,-1-3,0-3,1-2,-3-2,-2-2,-1-2,0-2,1-1,-3-1,-2-1,-1-1,0-1,10,-30,-20,-10,00,11,-31,-21,-11,01,12,-32,-22,-12,02,1C110uFC310uFFB112-5,-4-5,-3-5,-2-5,-1-5,0-5,1-5,2-5,3-5,4-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-4,4-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-3,4-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,40,-40,-30,-20,-10,00,10,20,30,41,-41,-31,-21,-11,01,11,21,31,42,-42,-32,-22,-12,02,12,22,32,43,-43,-33,-23,-13,03,13,23,33,44,-44,-34,-24,-14,04,14,24,34,45,-45,-35,-25,-15,05,15,25,35,46,-46,-36,-26,-16,06,16,26,36,4MCU1D22D33D44D65D96D107D118A0ServoServo1SIG2VCC3GNDButtonHall EffectHall Effect1SIG2VCC3GND440HzPiezoLED MatrixLED Matrix1DIN2CLK3CS4VCC5GNDRelayForceForce1SIG2VCC3GND-5,-4-5,-3-5,-2-5,-1-5,0-5,1-5,2-5,3-5,4-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-4,4-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-3,4-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-2,4-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,3-1,40,-40,-30,-20,-10,00,10,20,30,41,-41,-31,-21,-11,01,11,21,31,42,-42,-32,-22,-12,02,12,22,32,43,-43,-33,-23,-13,03,13,23,33,44,-44,-34,-24,-14,04,14,24,34,45,-45,-35,-25,-15,05,15,25,35,46,-46,-36,-26,-16,06,16,26,36,4MCU1D22D33D44D65D96D107D118A0ServoServo1SIG2VCC3GNDButtonHall EffectHall Effect1SIG2VCC3GND440HzPiezoLED MatrixLED Matrix1DIN2CLK3CS4VCC5GNDRelayForceForce1SIG2VCC3GND-6,-4-6,-3-6,-2-6,-1-6,0-6,1-6,2-6,3-5,-4-5,-3-5,-2-5,-1-5,0-5,1-5,2-5,3-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,30,-40,-30,-20,-10,00,10,20,31,-41,-31,-21,-11,01,11,21,32,-42,-32,-22,-12,02,12,22,3TYPE-C-31-M-12USBC1GND12GND23VBUS14VBUS25SBU26CC17DM28DP19DM110DP211SBU112CC2redLEDSW1R11kΩGND-6,-4-6,-3-6,-2-6,-1-6,0-6,1-6,2-6,3-5,-4-5,-3-5,-2-5,-1-5,0-5,1-5,2-5,3-4,-4-4,-3-4,-2-4,-1-4,0-4,1-4,2-4,3-3,-4-3,-3-3,-2-3,-1-3,0-3,1-3,2-3,3-2,-4-2,-3-2,-2-2,-1-2,0-2,1-2,2-2,3-1,-4-1,-3-1,-2-1,-1-1,0-1,1-1,2-1,30,-40,-30,-20,-10,00,10,20,31,-41,-31,-21,-11,01,11,21,32,-42,-32,-22,-12,02,12,22,3TYPE-C-31-M-12USBC1GND12GND23VBUS14VBUS25SBU26CC17DM28DP19DM110DP211SBU112CC2redLEDSW1R11kΩGND {
"ccw_rotation": 90,
"font": "tscircuit2024",
"font_size": 0.5760000000000001,
+ "is_knockout": undefined,
+ "knockout_padding": undefined,
"layer": "top",
"pcb_component_id": "pcb_component_0",
"pcb_group_id": undefined,
@@ -53,6 +55,8 @@ test("rotate silkscreen text ccw", async () => {
"ccw_rotation": 90,
"font": "tscircuit2024",
"font_size": 0.5760000000000001,
+ "is_knockout": undefined,
+ "knockout_padding": undefined,
"layer": "top",
"pcb_component_id": "pcb_component_0",
"pcb_group_id": undefined,
@@ -70,6 +74,8 @@ test("rotate silkscreen text ccw", async () => {
"ccw_rotation": 90,
"font": "tscircuit2024",
"font_size": 0.7,
+ "is_knockout": undefined,
+ "knockout_padding": undefined,
"layer": "top",
"pcb_component_id": "pcb_component_0",
"pcb_group_id": undefined,