From 1686c4bf9fecd4a28e05b695610487d806215de4 Mon Sep 17 00:00:00 2001 From: Colin Sharples Date: Fri, 25 Sep 2026 08:29:14 +1200 Subject: [PATCH 1/5] Fold the stray overlay letter back into #frame_overlay (#79) Overlay 6 and 8 each carried their letter in a group sitting beside #frame_overlay rather than inside it, where 5 and 7 - the same two overlays with a different letter - put theirs. The suffixes those groups carry, -3 and -5, are what an editor adds when a group is duplicated, so this was one overlay copied rather than two drawn differently. Nothing is drawn differently. The group was the last thing in the document and becomes the last thing in #frame_overlay, which is itself last, so paint order holds; and #frame_overlay carries no attributes beyond its id, so nothing new is inherited. Checked by comparing every drawing element before and after with its ancestors' attributes folded in - 14 each, identical. Co-Authored-By: Claude Opus 5 --- jmsfx-standard/src/main/resources/svg/Frames/Overlay/6.svg | 6 +++--- jmsfx-standard/src/main/resources/svg/Frames/Overlay/8.svg | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/jmsfx-standard/src/main/resources/svg/Frames/Overlay/6.svg b/jmsfx-standard/src/main/resources/svg/Frames/Overlay/6.svg index 133b65ec..91ab1e72 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/Overlay/6.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/Overlay/6.svg @@ -18,8 +18,8 @@ - - - X + + X + diff --git a/jmsfx-standard/src/main/resources/svg/Frames/Overlay/8.svg b/jmsfx-standard/src/main/resources/svg/Frames/Overlay/8.svg index 2028bea6..cda5cb2e 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/Overlay/8.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/Overlay/8.svg @@ -18,8 +18,8 @@ - - - S + + S + From bcfedbc1be4600dc87cba989349bb0bf3875a45b Mon Sep 17 00:00:00 2001 From: Colin Sharples Date: Fri, 25 Sep 2026 08:52:59 +1200 Subject: [PATCH 2/5] Move the loose frame content inside #frame (#79) CTG's changes. Three fragments drew part of the frame outside the group that names it: 0_160_0 and 0_560_0 left the right-hand bump as a loose , and 0_060_0 held it in an unnamed group alongside a second copy of the cloverleaf that #frame already drew. Both have a counterpart that shows the intended shape - 0_160_0c and 0_060_0c, the same frames in the other identity colour - and both keep everything inside #frame, with no duplicate. 0_160_0 and 0_560_0 draw exactly what they drew. 0_060_0 loses one of its three paths, which is the duplicated cloverleaf: identical d, fill and stroke to the one kept, and opaque, so drawing it twice and drawing it once come out the same. Co-Authored-By: Claude Opus 5 --- jmsfx-standard/src/main/resources/svg/Frames/0_060_0.svg | 3 --- jmsfx-standard/src/main/resources/svg/Frames/0_160_0.svg | 2 +- jmsfx-standard/src/main/resources/svg/Frames/0_560_0.svg | 2 +- 3 files changed, 2 insertions(+), 5 deletions(-) diff --git a/jmsfx-standard/src/main/resources/svg/Frames/0_060_0.svg b/jmsfx-standard/src/main/resources/svg/Frames/0_060_0.svg index 09f19761..42ed3103 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/0_060_0.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/0_060_0.svg @@ -3,9 +3,6 @@ - - - diff --git a/jmsfx-standard/src/main/resources/svg/Frames/0_160_0.svg b/jmsfx-standard/src/main/resources/svg/Frames/0_160_0.svg index eba18a95..d89ef66b 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/0_160_0.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/0_160_0.svg @@ -3,6 +3,6 @@ + - diff --git a/jmsfx-standard/src/main/resources/svg/Frames/0_560_0.svg b/jmsfx-standard/src/main/resources/svg/Frames/0_560_0.svg index 6172db0b..9e0dba3e 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/0_560_0.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/0_560_0.svg @@ -3,6 +3,6 @@ + - From ca6ebaaac2d1534c20957ba0e0a7aa327e409c6a Mon Sep 17 00:00:00 2001 From: Colin Sharples Date: Fri, 25 Sep 2026 08:52:59 +1200 Subject: [PATCH 3/5] Put the frame outline in #frame with its fill (#79) CTG's changes. Five fragments split the frame in two: the filled polygon inside #frame, and the stroked outline of the same polygon in an unnamed group beside it. 0_327_0 - the same frame, undashed - already held both inside #frame, so it is what the other five now look like. Nothing is drawn differently: the outline was already painting after the fill and still does, and the group it came out of carried no attributes to inherit. Co-Authored-By: Claude Opus 5 --- jmsfx-standard/src/main/resources/svg/Frames/0_227_0.svg | 7 ------- jmsfx-standard/src/main/resources/svg/Frames/0_227_0c.svg | 7 ------- jmsfx-standard/src/main/resources/svg/Frames/0_327_0c.svg | 7 ------- jmsfx-standard/src/main/resources/svg/Frames/0_327_1.svg | 7 ------- jmsfx-standard/src/main/resources/svg/Frames/0_327_1c.svg | 7 ------- 5 files changed, 35 deletions(-) diff --git a/jmsfx-standard/src/main/resources/svg/Frames/0_227_0.svg b/jmsfx-standard/src/main/resources/svg/Frames/0_227_0.svg index 29972891..964b9284 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/0_227_0.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/0_227_0.svg @@ -3,13 +3,6 @@ - - - - - - - diff --git a/jmsfx-standard/src/main/resources/svg/Frames/0_227_0c.svg b/jmsfx-standard/src/main/resources/svg/Frames/0_227_0c.svg index 6b16ec10..7e675506 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/0_227_0c.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/0_227_0c.svg @@ -3,13 +3,6 @@ - - - - - - - diff --git a/jmsfx-standard/src/main/resources/svg/Frames/0_327_0c.svg b/jmsfx-standard/src/main/resources/svg/Frames/0_327_0c.svg index f5d76c37..e836160f 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/0_327_0c.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/0_327_0c.svg @@ -3,13 +3,6 @@ - - - - - - - diff --git a/jmsfx-standard/src/main/resources/svg/Frames/0_327_1.svg b/jmsfx-standard/src/main/resources/svg/Frames/0_327_1.svg index 4ca427dc..a295bdd7 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/0_327_1.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/0_327_1.svg @@ -3,13 +3,6 @@ - - - - - - - diff --git a/jmsfx-standard/src/main/resources/svg/Frames/0_327_1c.svg b/jmsfx-standard/src/main/resources/svg/Frames/0_327_1c.svg index 3878ecc9..7ac66ae2 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/0_327_1c.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/0_327_1c.svg @@ -3,13 +3,6 @@ - - - - - - - From 3484a8ddfef0306660e5c5b5fab52b7077385e7a Mon Sep 17 00:00:00 2001 From: Colin Sharples Date: Fri, 25 Sep 2026 08:53:12 +1200 Subject: [PATCH 4/5] Name every frame fragment's content root #frame (#79) Ten fragments called their content root frame_1_ or frame_2_ - the suffix an editor adds when a group is duplicated, rather than a name anything chose - and two of those, 0_435_0 and 0_435_0c, put it on a bare with no group at all, so there was nothing for a consumer to take hold of. Those two are now wrapped in a like the rest; the other eight are renamed. The normaliser leaves these alone by design: its generated-id test is an SVG element name followed by digits, and "frame" is not an element name, so frame_1_ reads as a name worth keeping. It is a name, just not a useful one. An id is not part of SvgFingerprint and nothing in the tree references one of these, so nothing is drawn differently. Co-Authored-By: Claude Opus 5 --- jmsfx-standard/src/main/resources/svg/Frames/0_300_0.svg | 2 +- jmsfx-standard/src/main/resources/svg/Frames/0_300_0c.svg | 2 +- jmsfx-standard/src/main/resources/svg/Frames/0_300_1.svg | 2 +- jmsfx-standard/src/main/resources/svg/Frames/0_300_1c.svg | 2 +- jmsfx-standard/src/main/resources/svg/Frames/0_435_0.svg | 4 +++- jmsfx-standard/src/main/resources/svg/Frames/0_435_0c.svg | 4 +++- jmsfx-standard/src/main/resources/svg/Frames/0_435_1.svg | 2 +- jmsfx-standard/src/main/resources/svg/Frames/0_435_1c.svg | 2 +- jmsfx-standard/src/main/resources/svg/Frames/0_600_0.svg | 2 +- jmsfx-standard/src/main/resources/svg/Frames/0_600_1.svg | 2 +- 10 files changed, 14 insertions(+), 10 deletions(-) diff --git a/jmsfx-standard/src/main/resources/svg/Frames/0_300_0.svg b/jmsfx-standard/src/main/resources/svg/Frames/0_300_0.svg index 587cdd87..ffc13d36 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/0_300_0.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/0_300_0.svg @@ -1,7 +1,7 @@ - + diff --git a/jmsfx-standard/src/main/resources/svg/Frames/0_300_0c.svg b/jmsfx-standard/src/main/resources/svg/Frames/0_300_0c.svg index e088fcc2..b735eaea 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/0_300_0c.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/0_300_0c.svg @@ -1,7 +1,7 @@ - + diff --git a/jmsfx-standard/src/main/resources/svg/Frames/0_300_1.svg b/jmsfx-standard/src/main/resources/svg/Frames/0_300_1.svg index a6ed8911..25602d77 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/0_300_1.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/0_300_1.svg @@ -1,7 +1,7 @@ - + diff --git a/jmsfx-standard/src/main/resources/svg/Frames/0_300_1c.svg b/jmsfx-standard/src/main/resources/svg/Frames/0_300_1c.svg index adccd24c..0002d07c 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/0_300_1c.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/0_300_1c.svg @@ -1,7 +1,7 @@ - + diff --git a/jmsfx-standard/src/main/resources/svg/Frames/0_435_0.svg b/jmsfx-standard/src/main/resources/svg/Frames/0_435_0.svg index 639fa95b..c1478b23 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/0_435_0.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/0_435_0.svg @@ -1,5 +1,7 @@ - + + + diff --git a/jmsfx-standard/src/main/resources/svg/Frames/0_435_0c.svg b/jmsfx-standard/src/main/resources/svg/Frames/0_435_0c.svg index e8351081..479177af 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/0_435_0c.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/0_435_0c.svg @@ -1,5 +1,7 @@ - + + + diff --git a/jmsfx-standard/src/main/resources/svg/Frames/0_435_1.svg b/jmsfx-standard/src/main/resources/svg/Frames/0_435_1.svg index 22c40023..61015d3d 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/0_435_1.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/0_435_1.svg @@ -1,7 +1,7 @@ - + diff --git a/jmsfx-standard/src/main/resources/svg/Frames/0_435_1c.svg b/jmsfx-standard/src/main/resources/svg/Frames/0_435_1c.svg index c06da3f8..91598fc0 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/0_435_1c.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/0_435_1c.svg @@ -1,7 +1,7 @@ - + diff --git a/jmsfx-standard/src/main/resources/svg/Frames/0_600_0.svg b/jmsfx-standard/src/main/resources/svg/Frames/0_600_0.svg index f5f1445a..357f8f70 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/0_600_0.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/0_600_0.svg @@ -1,7 +1,7 @@ - + diff --git a/jmsfx-standard/src/main/resources/svg/Frames/0_600_1.svg b/jmsfx-standard/src/main/resources/svg/Frames/0_600_1.svg index 1177c8c5..4f81742c 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/0_600_1.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/0_600_1.svg @@ -1,7 +1,7 @@ - + From 8887903bab661887e4a80295a0becf857bbb242f Mon Sep 17 00:00:00 2001 From: Colin Sharples Date: Fri, 25 Sep 2026 08:53:12 +1200 Subject: [PATCH 5/5] Drop the octagon guide from the frame fragments (#79) Fourteen frames carried a - the bounding octagon, its mod1 and mod2 guide lines, and the outFrame outline. That is drawing scaffolding for positioning a main icon or a sector modifier within the octagon, and a frame is the thing drawn around the octagon rather than within it, so it was never of any use here. It was display="none" throughout, so nothing is drawn differently, and the measured frame bounds come back identical - which also confirms foxglove was already honouring the display, rather than the group having quietly counted towards a frame's extent all this time. With this, all 225 frame fragments hold exactly one content element: 217 a , and the eight overlays a . Closes #79 Co-Authored-By: Claude Opus 5 --- .../src/main/resources/svg/Frames/0_327_0.svg | 5 ----- .../src/main/resources/svg/Frames/Overlay/1.svg | 14 -------------- .../src/main/resources/svg/Frames/Overlay/2.svg | 14 -------------- .../src/main/resources/svg/Frames/Overlay/3.svg | 14 -------------- .../src/main/resources/svg/Frames/Overlay/4.svg | 14 -------------- .../src/main/resources/svg/Frames/Overlay/5.svg | 14 -------------- .../src/main/resources/svg/Frames/Overlay/6.svg | 14 -------------- .../src/main/resources/svg/Frames/Overlay/7.svg | 14 -------------- .../src/main/resources/svg/Frames/Overlay/8.svg | 14 -------------- 9 files changed, 117 deletions(-) diff --git a/jmsfx-standard/src/main/resources/svg/Frames/0_327_0.svg b/jmsfx-standard/src/main/resources/svg/Frames/0_327_0.svg index 1363728f..2d63a91c 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/0_327_0.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/0_327_0.svg @@ -5,9 +5,4 @@ - - - - - diff --git a/jmsfx-standard/src/main/resources/svg/Frames/Overlay/1.svg b/jmsfx-standard/src/main/resources/svg/Frames/Overlay/1.svg index a9f21dd4..bc34ecb3 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/Overlay/1.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/Overlay/1.svg @@ -1,20 +1,6 @@ - - - - - - - - - - - - - - X diff --git a/jmsfx-standard/src/main/resources/svg/Frames/Overlay/2.svg b/jmsfx-standard/src/main/resources/svg/Frames/Overlay/2.svg index 7ef6425d..d3a91450 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/Overlay/2.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/Overlay/2.svg @@ -1,20 +1,6 @@ - - - - - - - - - - - - - - S diff --git a/jmsfx-standard/src/main/resources/svg/Frames/Overlay/3.svg b/jmsfx-standard/src/main/resources/svg/Frames/Overlay/3.svg index d124e8b2..00705099 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/Overlay/3.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/Overlay/3.svg @@ -1,20 +1,6 @@ - - - - - - - - - - - - - - diff --git a/jmsfx-standard/src/main/resources/svg/Frames/Overlay/4.svg b/jmsfx-standard/src/main/resources/svg/Frames/Overlay/4.svg index 1d020908..ce528b0e 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/Overlay/4.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/Overlay/4.svg @@ -1,20 +1,6 @@ - - - - - - - - - - - - - - diff --git a/jmsfx-standard/src/main/resources/svg/Frames/Overlay/5.svg b/jmsfx-standard/src/main/resources/svg/Frames/Overlay/5.svg index 8b144fe6..bb65af82 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/Overlay/5.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/Overlay/5.svg @@ -1,20 +1,6 @@ - - - - - - - - - - - - - - diff --git a/jmsfx-standard/src/main/resources/svg/Frames/Overlay/6.svg b/jmsfx-standard/src/main/resources/svg/Frames/Overlay/6.svg index 91ab1e72..a710cb64 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/Overlay/6.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/Overlay/6.svg @@ -1,20 +1,6 @@ - - - - - - - - - - - - - - diff --git a/jmsfx-standard/src/main/resources/svg/Frames/Overlay/7.svg b/jmsfx-standard/src/main/resources/svg/Frames/Overlay/7.svg index aaca25a5..85ddf365 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/Overlay/7.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/Overlay/7.svg @@ -1,20 +1,6 @@ - - - - - - - - - - - - - - diff --git a/jmsfx-standard/src/main/resources/svg/Frames/Overlay/8.svg b/jmsfx-standard/src/main/resources/svg/Frames/Overlay/8.svg index cda5cb2e..f6312d63 100644 --- a/jmsfx-standard/src/main/resources/svg/Frames/Overlay/8.svg +++ b/jmsfx-standard/src/main/resources/svg/Frames/Overlay/8.svg @@ -1,20 +1,6 @@ - - - - - - - - - - - - - -