diff --git a/contact.png b/contact.png
index d36e7ef..845e2a0 100644
Binary files a/contact.png and b/contact.png differ
diff --git a/docs/contact-sheet.svg b/docs/contact-sheet.svg
index 9244936..fdd6be2 100644
--- a/docs/contact-sheet.svg
+++ b/docs/contact-sheet.svg
@@ -19,4 +19,4 @@
M 235 270
C 246 259 262 252 280 252
C 297 252 312 258 322 269
- " stroke-width="4" stroke="#000000" fill="none" data-slot-stroke="border" opacity="0.35">cloudSheet Name: diced6-1d6-10d6-11d6-12d6-13d6-14d6-15d6-16d6-2d6-3d6-4d6-5d6-6d6-7d6-8d6-9d6-emptySheet Name: dominoestile-01tile-02tile-03tile-04tile-05tile-06tile-07tile-08tile-09tile-10tile-11tile-12tile-13tile-14tile-15Sheet Name: looneypyramid-flat-largepyramid-flat-mediumpyramid-flat-smallpyramid-flattened-largepyramid-flattened-mediumpyramid-flattened-smallpyramid-up-largepyramid-up-large-3Dpyramid-up-large-upscaledpyramid-up-mediumpyramid-up-medium-3Dpyramid-up-medium-upscaledpyramid-up-smallpyramid-up-small-3Dpyramid-up-small-upscaledSheet Name: piecepackpiecepack-misc-coin-backpiecepack-misc-tile-backpiecepack-number-0piecepack-number-1piecepack-number-2piecepack-number-3piecepack-number-4piecepack-number-5piecepack-number-6piecepack-number-7piecepack-number-8piecepack-number-9piecepack-number-voidpiecepack-suit-anchorspiecepack-suit-clubspiecepack-suit-crownspiecepack-suit-diamondspiecepack-suit-fleurdelispiecepack-suit-heartspiecepack-suit-moonspiecepack-suit-spadespiecepack-suit-starspiecepack-suit-sunsSheet Name: streetcarcube-cat-plantcube-lamp-catcube-person-lampcube-plant-personstreetcar-houseSheet Name: natonato-artillerynato-artillery-towednato-cavalryHnato-cavalry-heavynato-infantryLnato-infantry-lightSOFnato-infantry-specialSheet Name: decktetdecktet-0decktet-1decktet-2decktet-3decktet-4decktet-5decktet-6decktet-7decktet-8decktet-9decktet-courtdecktet-crowndecktet-knotsdecktet-leavesdecktet-moonsdecktet-pawndecktet-sunsdecktet-wavesdecktet-wyrmsSheet Name: arimaaarimaa-camelarimaa-catarimaa-dogarimaa-elephantarimaa-horsearimaa-rabbitSheet Name: gnosticagnostica-allSuitsgnostica-cardQuestiongnostica-chameleongnostica-cupgnostica-cupQuestiongnostica-cupWildgnostica-flygnostica-handgnostica-handCyclegnostica-handTradegnostica-stargnostica-starCyclegnostica-swordgnostica-swordCyclegnostica-tipgnostica-transformgnostica-wandgnostica-wandWildSheet Name: experimentalballcrabcrowndragonheadhummingbirdmothowlphoenixsquid
\ No newline at end of file
+ " stroke-width="4" stroke="#000000" fill="none" data-slot-stroke="border" opacity="0.35">cloudcross-diagcross-omnicross-orthcubedline-negdline-posfroghex-flathex-pointyhex-pointy-m123hex-pointy-m21hlinehousehumpbackkatanasmeepleorborb1orb2orb3orcapalacepiecepiece-borderlesspiece-chariotpiece-cogpiece-dashedpiece-horsepiece-lrpiece-pentagonpiece-squarepiece-square-borderlesspiece-square-dashedpiece-square-singlepiece-tbpiece-trianglepiece-triangle-dotplanering-01ring-02ring-12ring-13ring-23sphere-spiralstar-outlinestar-solidtowertrax-cornerstrax-plusvlinewedgewedge-bottom-halfwedge-top-halfwyke-1wyke-2wyke-3wyke-4wyke-5wyke-6wyke-7xyinyangSheet Name: chesschess-amazon-outline-traditionalchess-amazon-solid-traditionalchess-archbishop-outline-traditionalchess-archbishop-solid-traditionalchess-bishop-outline-linechess-bishop-outline-milleniachess-bishop-outline-montrealchess-bishop-outline-traditionalchess-bishop-solid-linechess-bishop-solid-milleniachess-bishop-solid-montrealchess-bishop-solid-traditionalchess-boat-outline-traditionalchess-boat-solid-traditionalchess-centaur-outline-traditionalchess-centaur-solid-traditionalchess-champion-outline-traditionalchess-champion-solid-traditionalchess-chancellor-outline-traditionalchess-chancellor-solid-traditionalchess-commoner-outline-traditionalchess-commoner-solid-traditionalchess-dabbaba-outline-traditionalchess-dabbaba-solid-traditionalchess-dragon-outline-traditionalchess-dragon-solid-traditionalchess-elephant-outline-traditionalchess-elephant-solid-traditionalchess-ex-solid-linechess-ex-solid-milleniachess-ferz-outline-traditionalchess-ferz-solid-traditionalchess-fool-outline-traditionalchess-fool-solid-traditionalchess-giraffe-bishop-outline-traditionalchess-giraffe-bishop-solid-traditionalchess-giraffe-outline-traditionalchess-giraffe-solid-traditionalchess-king-outline-linechess-king-outline-milleniachess-king-outline-montrealchess-king-outline-traditionalchess-king-solid-linechess-king-solid-milleniachess-king-solid-montrealchess-king-solid-traditionalchess-knight-outline-linechess-knight-outline-milleniachess-knight-outline-montrealchess-knight-outline-traditionalchess-knight-solid-linechess-knight-solid-milleniachess-knight-solid-montrealchess-knight-solid-traditionalchess-mann-outline-traditionalchess-mann-solid-traditionalchess-nightrider-outline-traditionalchess-nightrider-solid-traditionalchess-pawn-outline-linechess-pawn-outline-milleniachess-pawn-outline-montrealchess-pawn-outline-traditionalchess-pawn-solid-linechess-pawn-solid-milleniachess-pawn-solid-montrealchess-pawn-solid-traditionalchess-queen-outline-linechess-queen-outline-milleniachess-queen-outline-montrealchess-queen-outline-traditionalchess-queen-solid-linechess-queen-solid-milleniachess-queen-solid-montrealchess-queen-solid-traditionalchess-rook-outline-linechess-rook-outline-milleniachess-rook-outline-montrealchess-rook-outline-traditionalchess-rook-solid-linechess-rook-solid-milleniachess-rook-solid-montrealchess-rook-solid-traditionalchess-short-rook-outline-traditionalchess-short-rook-solid-traditionalchess-unicorn-outline-traditionalchess-unicorn-solid-traditionalchess-wazir-outline-traditionalchess-wazir-solid-traditionalchess-wizard-outline-traditionalchess-wizard-solid-traditionalchess-zebra-outline-traditionalchess-zebra-solid-traditionalpiece-janggipiece-shogiSheet Name: diced6-1d6-10d6-11d6-12d6-13d6-14d6-15d6-16d6-2d6-3d6-4d6-5d6-6d6-7d6-8d6-9d6-emptySheet Name: dominoestile-01tile-02tile-03tile-04tile-05tile-06tile-07tile-08tile-09tile-10tile-11tile-12tile-13tile-14tile-15Sheet Name: looneypyramid-flat-largepyramid-flat-mediumpyramid-flat-smallpyramid-flattened-largepyramid-flattened-mediumpyramid-flattened-smallpyramid-up-largepyramid-up-large-3Dpyramid-up-large-upscaledpyramid-up-mediumpyramid-up-medium-3Dpyramid-up-medium-upscaledpyramid-up-smallpyramid-up-small-3Dpyramid-up-small-upscaledSheet Name: piecepackpiecepack-misc-coin-backpiecepack-misc-tile-backpiecepack-number-0piecepack-number-1piecepack-number-2piecepack-number-3piecepack-number-4piecepack-number-5piecepack-number-6piecepack-number-7piecepack-number-8piecepack-number-9piecepack-number-voidpiecepack-suit-anchorspiecepack-suit-clubspiecepack-suit-crownspiecepack-suit-diamondspiecepack-suit-fleurdelispiecepack-suit-heartspiecepack-suit-moonspiecepack-suit-spadespiecepack-suit-starspiecepack-suit-sunsSheet Name: streetcarcube-cat-plantcube-lamp-catcube-person-lampcube-plant-personstreetcar-houseSheet Name: natonato-artillerynato-artillery-towednato-cavalryHnato-cavalry-heavynato-infantryLnato-infantry-lightSOFnato-infantry-specialSheet Name: decktetdecktet-0decktet-1decktet-2decktet-3decktet-4decktet-5decktet-6decktet-7decktet-8decktet-9decktet-courtdecktet-crowndecktet-knotsdecktet-leavesdecktet-moonsdecktet-pawndecktet-sunsdecktet-wavesdecktet-wyrmsSheet Name: arimaaarimaa-camelarimaa-catarimaa-dogarimaa-elephantarimaa-horsearimaa-rabbitSheet Name: gnosticagnostica-allSuitsgnostica-cardQuestiongnostica-chameleongnostica-cupgnostica-cupQuestiongnostica-cupWildgnostica-flygnostica-handgnostica-handCyclegnostica-handTradegnostica-stargnostica-starCyclegnostica-swordgnostica-swordCyclegnostica-tipgnostica-transformgnostica-wandgnostica-wandWildSheet Name: experimentalballcrabcrowndragonheadhummingbirdmothowlphoenixsquid
\ No newline at end of file
diff --git a/docs/glyph-slots.md b/docs/glyph-slots.md
index d16b9c4..229fc46 100644
--- a/docs/glyph-slots.md
+++ b/docs/glyph-slots.md
@@ -25,7 +25,7 @@ Regenerate with `npm run glyph-catalog`. Machine-readable author JSON: `build/gl
| chess | `chess-bishop-solid-montreal` | fill (fill), border (stroke), highlight (fill+stroke) | — |
| chess | `chess-bishop-solid-traditional` | fill (fill), border (stroke), highlight (fill+stroke) | — |
| chess | `chess-boat-outline-traditional` | fill (fill), border (fill+stroke) | — |
-| chess | `chess-boat-solid-traditional` | fill (fill), highlight (fill+stroke), border (stroke) | — |
+| chess | `chess-boat-solid-traditional` | fill (fill), border (stroke), highlight (fill+stroke) | — |
| chess | `chess-centaur-outline-traditional` | fill (fill), border (fill+stroke) | — |
| chess | `chess-centaur-solid-traditional` | fill (fill), border (stroke), highlight (fill+stroke) | — |
| chess | `chess-champion-outline-traditional` | fill (fill), border (fill+stroke) | — |
@@ -46,8 +46,10 @@ Regenerate with `npm run glyph-catalog`. Machine-readable author JSON: `build/gl
| chess | `chess-ferz-solid-traditional` | fill (fill), border (stroke), highlight (fill+stroke) | — |
| chess | `chess-fool-outline-traditional` | fill (fill), border (fill+stroke) | — |
| chess | `chess-fool-solid-traditional` | fill (fill), border (stroke), highlight (fill+stroke) | — |
+| chess | `chess-giraffe-bishop-outline-traditional` | fill (fill), border (fill+stroke) | — |
+| chess | `chess-giraffe-bishop-solid-traditional` | fill (fill), border (stroke), highlight (fill+stroke) | — |
| chess | `chess-giraffe-outline-traditional` | fill (fill), border (fill+stroke) | — |
-| chess | `chess-giraffe-solid-traditional` | fill (fill), highlight (fill+stroke), border (stroke) | — |
+| chess | `chess-giraffe-solid-traditional` | fill (fill), border (stroke), highlight (fill+stroke) | — |
| chess | `chess-king-outline-line` | fill (fill), border (fill+stroke) | — |
| chess | `chess-king-outline-millenia` | fill (fill), border (fill+stroke) | — |
| chess | `chess-king-outline-montreal` | fill (fill), border (fill+stroke) | — |
diff --git a/src/sheets/contact/chess.ts b/src/sheets/contact/chess.ts
index 537435e..699e17c 100644
--- a/src/sheets/contact/chess.ts
+++ b/src/sheets/contact/chess.ts
@@ -279,18 +279,17 @@ registerDuotoneGlyph(sheet, "chess-boat-outline-traditional", (canvas: SVGContai
registerSolidChessGlyph(sheet, "chess-boat-solid-traditional", (canvas: SVGContainer) => {
const symbol = canvas.symbol();
const group = symbol.group()
- .attr("data-slot-stroke", "border")
.attr("data-slot-fill", "fill")
- .attr("data-slot-stroke", "highlight")
+ .attr("data-slot-stroke", "border")
.fill({color: "#000", opacity: 1, rule: "evenodd"})
.stroke({color: "#000", width: 1.5, linecap: "round", linejoin: "round", miterlimit: 4});
group.path("M24.989 8.206v19.17")
.fill("none")
- .attr("data-slot-stroke", "highlight")
+ .attr("data-slot-stroke", "border")
.stroke({color: "#000", width: 3, linejoin: "miter"});
group.path("M7.543 25.209l17.42-17.07 14.85 17.67")
.fill("none")
- .attr("data-slot-stroke", "highlight")
+ .attr("data-slot-stroke", "border")
.stroke({color: "#000", width: 0.8, linejoin: "miter", linecap: "round"});
group.path("M25.029 8.206v19.17")
.attr("data-slot-stroke", "highlight")
@@ -920,6 +919,74 @@ registerSolidChessGlyph(sheet, "chess-fool-solid-traditional", (canvas: SVGConta
return symbol;
});
+registerDuotoneGlyph(sheet, "chess-giraffe-bishop-outline-traditional", (canvas: SVGContainer) => {
+ const symbol = canvas.symbol();
+ const group = symbol.group()
+ .attr("data-slot-fill", "fill")
+ .attr("data-slot-stroke", "border")
+ .fill({color: "#fff", opacity: 1, rule: "evenodd"})
+ .stroke({color: "#000", width: 1.5, linecap: "round", linejoin: "round", miterlimit: 4});
+ group.path("M 41 36 C 37.6 35 30.9 36.4 27.5 34 C 24.1 36.4 17.4 35 14 36 C 14 36 12.4 36.5 11 38 C 11.7 39 12.6 39 14 38.5 C 17.4 37.5 24.1 39 27.5 37.5 C 30.9 39 37.6 37.5 41 38.5 C 42.4 39 43.3 39 44 38 C 42.6 36.1 41 36 41 36 Z");
+ group.path("M 35 32 C 32.5 34.5 22.5 34.5 20 32 C 19.5 30.5 20 30 20 30 H 35 C 35 30 35.5 30.5 35 32 Z");
+ group.path("M 16.36 0.93 H 18.91 M 17.72 5.01 V -1.15")
+ .fill("none");
+ group.path("M 34.975 29.97 C 29.66845 28.002 31.184 8.7732 27.39385 5.494 C 28.29485 4.6188 31.18485 3.526 28.91025 2.87 C 24.36105 1.558 25.87745 2.87 22.84465 4.182 C 19.8127 4.182 13.7471 1.558 12.2307 9.4292 C 10.71515 12.0524 7.68235 12.0524 6.16595 14.6764 C 5.208 16.3292 7.68235 19.9228 12.2307 15.9884 C 16.7799 15.9884 19.81185 15.9884 21.32825 13.3644 C 22.41965 15.9884 24.78605 16.8524 24.78605 23.3644 C 24.78605 25.9244 23.08605 27.8444 19.68605 29.97 Z");
+ group.path("M 19.335 1.81 H 21.885 M 20.695 5.89 V -0.27")
+ .fill("none");
+ group.path("M 15.31825 8.74937 A 0.36805 1.0392 0 1 1 14.58215 8.34937 A 0.36805 1.0392 0 1 1 15.31825 8.74937 Z")
+ .attr("data-slot-fill", "border")
+ .fill("#000")
+ .stroke("none");
+ group.path("M 27.41 14.69 A 1.4705 2 0 1 1 24.469 14.69 A 1.4705 2 0 1 1 27.41 14.69 Z")
+ .attr("data-slot-fill", "border")
+ .fill("#000")
+ .stroke("none");
+ group.path("M 29.1355 20.69 A 1.4705 2 0 1 1 26.1945 20.69 A 1.4705 2 0 1 1 29.1355 20.69 Z")
+ .attr("data-slot-fill", "border")
+ .fill("#000")
+ .stroke("none");
+ group.path("M20.5 30h14")
+ .attr("data-slot-stroke", "border")
+ .fill("none")
+ .stroke({color: "#000", width: 1.1});
+ symbol.viewbox(3.5, -2.5, 42, 43.5);
+ return symbol;
+});
+
+registerSolidChessGlyph(sheet, "chess-giraffe-bishop-solid-traditional", (canvas: SVGContainer) => {
+ const symbol = canvas.symbol();
+ const group = symbol.group()
+ .attr("data-slot-fill", "fill")
+ .attr("data-slot-stroke", "border")
+ .fill({color: "#000", opacity: 1, rule: "evenodd"})
+ .stroke({color: "#000", width: 1.5, linecap: "round", linejoin: "round", miterlimit: 4});
+ group.path("M 41 36 C 37.6 35 30.9 36.4 27.5 34 C 24.1 36.4 17.4 35 14 36 C 14 36 12.4 36.5 11 38 C 11.7 39 12.6 39 14 38.5 C 17.4 37.5 24.1 39 27.5 37.5 C 30.9 39 37.6 37.5 41 38.5 C 42.4 39 43.3 39 44 38 C 42.6 36.1 41 36 41 36 Z");
+ group.path("M 35 32 C 32.5 34.5 22.5 34.5 20 32 C 19.5 30.5 20 30 20 30 H 35 C 35 30 35.5 30.5 35 32 Z");
+ group.path("M 16.36 0.93 H 18.91 M 17.72 5.01 V -1.15")
+ .fill("none");
+ group.path("M 34.975 29.97 C 29.66845 28.002 31.184 8.7732 27.39385 5.494 C 28.29485 4.6188 31.18485 3.526 28.91025 2.87 C 24.36105 1.558 25.87745 2.87 22.84465 4.182 C 19.8127 4.182 13.7471 1.558 12.2307 9.4292 C 10.71515 12.0524 7.68235 12.0524 6.16595 14.6764 C 5.208 16.3292 7.68235 19.9228 12.2307 15.9884 C 16.7799 15.9884 19.81185 15.9884 21.32825 13.3644 C 22.41965 15.9884 24.78605 16.8524 24.78605 23.3644 C 24.78605 25.9244 23.08605 27.8444 19.68605 29.97 Z");
+ group.path("M 19.335 1.81 H 21.885 M 20.695 5.89 V -0.27")
+ .fill("none");
+ group.path("M 15.31825 8.74937 A 0.36805 1.0392 0 1 1 14.58215 8.34937 A 0.36805 1.0392 0 1 1 15.31825 8.74937 Z")
+ .attr("data-slot-fill", "highlight")
+ .fill("#fff")
+ .stroke("none");
+ group.path("M 27.41 14.69 A 1.4705 2 0 1 1 24.469 14.69 A 1.4705 2 0 1 1 27.41 14.69 Z")
+ .attr("data-slot-fill", "highlight")
+ .fill("#fff")
+ .stroke("none");
+ group.path("M 29.1355 20.69 A 1.4705 2 0 1 1 26.1945 20.69 A 1.4705 2 0 1 1 29.1355 20.69 Z")
+ .attr("data-slot-fill", "highlight")
+ .fill("#fff")
+ .stroke("none");
+ group.path("M20.5 30h14")
+ .attr("data-slot-stroke", "highlight")
+ .fill("none")
+ .stroke({color: "#fff", width: 1.1});
+ symbol.viewbox(3.5, -2.5, 42, 43.5);
+ return symbol;
+});
+
registerDuotoneGlyph(sheet, "chess-giraffe-outline-traditional", (canvas: SVGContainer) => {
const symbol = canvas.symbol();
const group = symbol.group()
@@ -959,27 +1026,26 @@ registerDuotoneGlyph(sheet, "chess-giraffe-outline-traditional", (canvas: SVGCon
registerSolidChessGlyph(sheet, "chess-giraffe-solid-traditional", (canvas: SVGContainer) => {
const symbol = canvas.symbol();
const group = symbol.group()
- .attr("data-slot-stroke", "border")
.attr("data-slot-fill", "fill")
- .attr("data-slot-stroke", "highlight")
+ .attr("data-slot-stroke", "border")
.fill({color: "#000", opacity: 1, rule: "evenodd"})
.stroke({color: "#000", width: 1.5, linecap: "round", linejoin: "round", miterlimit: 4});
group.path("m39.5,40.1003l0,-5.478001c-6.243401,-2.459599 -4.459599,-20.018399 -8.919201,-24.117703c1.059601,-1.09367 4.459602,-2.45955 1.783901,-3.279408c-5.351601,-1.63971 -3.567801,0 -7.135401,1.63972c-3.567699,0 -10.703099,-3.27943 -12.486899,6.55879c-1.7838,3.279499 -5.35153,3.279499 -7.13536,6.558897c-1.12738,2.066 1.78383,6.558805 7.13536,1.6397c5.351501,0 8.9192,0 10.703,-3.2794c1.783899,3.2794 4.567699,4.3603 4.567699,20.757404l11.4869,0l0,-1z");
group.path("m17.6,4.8l3,0")
.fill("none")
- .attr("data-slot-stroke", "highlight")
+ .attr("data-slot-stroke", "border")
.stroke({color: "#000", width: 1.5});
group.path("m19.2,9.9l0,-7.7")
.fill("none")
- .attr("data-slot-stroke", "highlight")
+ .attr("data-slot-stroke", "border")
.stroke({color: "#000", width: 1.5});
group.path("m21.1,5.9l3,0")
.fill("none")
- .attr("data-slot-stroke", "highlight")
+ .attr("data-slot-stroke", "border")
.stroke({color: "#000", width: 1.5});
group.path("m22.7,11l0,-7.7")
.fill("none")
- .attr("data-slot-stroke", "highlight")
+ .attr("data-slot-stroke", "border")
.stroke({color: "#000", width: 1.5});
group.path("m16.37441,14.57421a0.433,1.299 0 1 1 -0.866,-0.5a0.433,1.299 0 1 1 0.866,0.5z")
.attr("data-slot-fill", "highlight")
diff --git a/src/sheets/registry/glyph-slots.catalog.json b/src/sheets/registry/glyph-slots.catalog.json
index e5a9c16..71de6ed 100644
--- a/src/sheets/registry/glyph-slots.catalog.json
+++ b/src/sheets/registry/glyph-slots.catalog.json
@@ -1,6 +1,6 @@
{
"version": 1,
- "generated": "2026-10-18T18:03:16.228Z",
+ "generated": "2026-10-18T18:06:01.926Z",
"glyphs": {
"core:arrowhead": {
"sheet": "core",
@@ -1640,18 +1640,18 @@
],
"description": "Solid piece body."
},
- "highlight": {
+ "border": {
"channels": [
- "fill",
"stroke"
],
- "description": "Interior line work and accents."
+ "description": "Outer silhouette rim."
},
- "border": {
+ "highlight": {
"channels": [
+ "fill",
"stroke"
],
- "description": "Outer silhouette rim."
+ "description": "Interior line work and accents."
}
},
"colour2Slot": "border"
@@ -2122,9 +2122,9 @@
},
"colour2Slot": "border"
},
- "chess:chess-giraffe-outline-traditional": {
+ "chess:chess-giraffe-bishop-outline-traditional": {
"sheet": "chess",
- "name": "chess-giraffe-outline-traditional",
+ "name": "chess-giraffe-bishop-outline-traditional",
"slots": {
"fill": {
"channels": [
@@ -2142,9 +2142,9 @@
},
"colour2Slot": "border"
},
- "chess:chess-giraffe-solid-traditional": {
+ "chess:chess-giraffe-bishop-solid-traditional": {
"sheet": "chess",
- "name": "chess-giraffe-solid-traditional",
+ "name": "chess-giraffe-bishop-solid-traditional",
"slots": {
"fill": {
"channels": [
@@ -2152,18 +2152,64 @@
],
"description": "Solid piece body."
},
+ "border": {
+ "channels": [
+ "stroke"
+ ],
+ "description": "Outer silhouette rim."
+ },
"highlight": {
"channels": [
"fill",
"stroke"
],
"description": "Interior line work and accents."
+ }
+ },
+ "colour2Slot": "border"
+ },
+ "chess:chess-giraffe-outline-traditional": {
+ "sheet": "chess",
+ "name": "chess-giraffe-outline-traditional",
+ "slots": {
+ "fill": {
+ "channels": [
+ "fill"
+ ],
+ "description": "Primary player colour (body or main silhouette)."
+ },
+ "border": {
+ "channels": [
+ "fill",
+ "stroke"
+ ],
+ "description": "Secondary outline, rim, or theme border band."
+ }
+ },
+ "colour2Slot": "border"
+ },
+ "chess:chess-giraffe-solid-traditional": {
+ "sheet": "chess",
+ "name": "chess-giraffe-solid-traditional",
+ "slots": {
+ "fill": {
+ "channels": [
+ "fill"
+ ],
+ "description": "Solid piece body."
},
"border": {
"channels": [
"stroke"
],
"description": "Outer silhouette rim."
+ },
+ "highlight": {
+ "channels": [
+ "fill",
+ "stroke"
+ ],
+ "description": "Interior line work and accents."
}
},
"colour2Slot": "border"
diff --git a/test/wikimediaChessFairy.test.ts b/test/wikimediaChessFairy.test.ts
index c37c5bd..82d8616 100644
--- a/test/wikimediaChessFairy.test.ts
+++ b/test/wikimediaChessFairy.test.ts
@@ -40,11 +40,11 @@ describe("Wikimedia fairy chess import", () => {
expect(block).to.match(/M22\.5 19v12[\s\S]*\.attr\("data-slot-stroke", "highlight"\)/);
});
- it("giraffe solid horns use highlight stroke slot", () => {
+ it("giraffe solid horns use border stroke slot", () => {
const chessTs = fs.readFileSync("src/sheets/contact/chess.ts", "utf8");
const block = extractGlyphBlock(chessTs, "chess-giraffe-solid-traditional");
- expect(block).to.match(/m17\.6,4\.8[\s\S]*\.attr\("data-slot-stroke", "highlight"\)/);
- expect(block).to.match(/m22\.7,11[\s\S]*\.attr\("data-slot-stroke", "highlight"\)/);
+ expect(block).to.match(/m17\.6,4\.8[\s\S]*\.attr\("data-slot-stroke", "border"\)/);
+ expect(block).to.match(/m22\.7,11[\s\S]*\.attr\("data-slot-stroke", "border"\)/);
});
it("knight solid nose stroke uses highlight slot like mane highlight", () => {
@@ -123,7 +123,7 @@ describe("Wikimedia fairy chess import", () => {
expect(sailIdx).to.be.greaterThan(ropeIdx, "rigging sits under the sail fill");
const ropeEnd = block.indexOf("width: 0.8", ropeIdx);
expect(ropeEnd).to.be.greaterThan(ropeIdx);
- expect(block.slice(ropeIdx, ropeEnd)).to.include('.attr("data-slot-stroke", "highlight")');
+ expect(block.slice(ropeIdx, ropeEnd)).to.include('.attr("data-slot-stroke", "border")');
});
it("short rook renders smaller than standard rook", () => {