fix(engine): render card suit glyphs as SVG paths instead of text
The user's first post-migration screenshot showed near-invisible suit glyphs on every card — the rank rendered at correct size but the ♠ ♥ ♦ ♣ marks were tiny dots regardless of the requested 20px / 64px font-size. Root cause: the bundled FiraMono in svg_loader::shared_fontdb doesn't carry usable Unicode suit glyphs (U+2660-2666). usvg silently fell back to a substitute rendering at default size, producing the "tofu" effect. Fixes by replacing the `<text>` glyph rendering with inline SVG paths. `suit_path_d(suit)` returns a single closed-perimeter path authored in a 32 × 32 logical box, then face_svg wraps it in two `<g transform>` blocks (top-left small + bottom-right rotated large). Path-based rendering bypasses the font system entirely — same bytes on every machine, no fontdb dependency, no substitution risk. Same path data renders correctly whether filled (♥ ♠) or outlined (♦ ♣ — the always-on color-blind glyph differentiation from the design system). Knock-on changes that must land in this commit per the migration plan's lockstep rule: - `EXPECTED` in tests/card_face_svg_pin.rs rebaselined: 52 face hashes change (text → path), 5 back hashes unchanged (back_svg untouched). The bootstrap pattern in the test handled the rebaseline cleanly — empty EXPECTED, re-run, paste, re-run. - assets/cards/faces/*.png regenerated (the 52 face PNGs). - solitaire_engine/assets/themes/default/*_*.svg regenerated (the 52 theme face SVGs that production rasterises at startup). Both rendering paths must agree. Workspace clippy + cargo test --workspace clean. Pin test passes against the new hashes. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">10</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#d0d0d0" stroke-width="3">♣</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#d0d0d0" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♣</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 820 B After Width: | Height: | Size: 1.6 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">2</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#d0d0d0" stroke-width="3">♣</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#d0d0d0" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♣</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.6 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">3</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#d0d0d0" stroke-width="3">♣</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#d0d0d0" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♣</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.6 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">4</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#d0d0d0" stroke-width="3">♣</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#d0d0d0" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♣</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.6 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">5</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#d0d0d0" stroke-width="3">♣</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#d0d0d0" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♣</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.6 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">6</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#d0d0d0" stroke-width="3">♣</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#d0d0d0" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♣</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.6 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">7</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#d0d0d0" stroke-width="3">♣</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#d0d0d0" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♣</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.6 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">8</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#d0d0d0" stroke-width="3">♣</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#d0d0d0" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♣</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.6 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">9</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#d0d0d0" stroke-width="3">♣</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#d0d0d0" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♣</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.6 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">A</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#d0d0d0" stroke-width="3">♣</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#d0d0d0" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♣</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.6 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">J</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#d0d0d0" stroke-width="3">♣</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#d0d0d0" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♣</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.6 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">K</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#d0d0d0" stroke-width="3">♣</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#d0d0d0" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♣</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.6 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">Q</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#d0d0d0" stroke-width="3">♣</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#d0d0d0" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♣</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 C 9,14 4,17 4,21 C 4,24 7,27 10,27 C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 20,27 22,27 C 25,27 28,24 28,21 C 28,17 23,14 20,14 C 21,13 22,12 22,10 C 22,7 19,4 16,4 Z" fill="none" stroke="#d0d0d0" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.6 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">10</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#fb9fb1" stroke-width="3">♦</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#fb9fb1" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♦</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 820 B After Width: | Height: | Size: 1.2 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">2</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#fb9fb1" stroke-width="3">♦</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#fb9fb1" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♦</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.2 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">3</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#fb9fb1" stroke-width="3">♦</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#fb9fb1" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♦</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.2 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">4</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#fb9fb1" stroke-width="3">♦</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#fb9fb1" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♦</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.2 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">5</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#fb9fb1" stroke-width="3">♦</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#fb9fb1" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♦</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.2 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">6</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#fb9fb1" stroke-width="3">♦</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#fb9fb1" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♦</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.2 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">7</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#fb9fb1" stroke-width="3">♦</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#fb9fb1" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♦</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.2 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">8</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#fb9fb1" stroke-width="3">♦</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#fb9fb1" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♦</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.2 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">9</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#fb9fb1" stroke-width="3">♦</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#fb9fb1" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♦</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.2 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">A</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#fb9fb1" stroke-width="3">♦</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#fb9fb1" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♦</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.2 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">J</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#fb9fb1" stroke-width="3">♦</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#fb9fb1" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♦</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.2 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">K</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#fb9fb1" stroke-width="3">♦</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#fb9fb1" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♦</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.2 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">Q</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="none" stroke="#fb9fb1" stroke-width="3">♦</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="none" stroke="#fb9fb1" stroke-width="3"
|
||||
transform="rotate(180 242 332)">♦</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,2 L 29,16 L 16,30 L 3,16 Z" fill="none" stroke="#fb9fb1" stroke-width="3"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 819 B After Width: | Height: | Size: 1.2 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">10</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#fb9fb1">♥</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#fb9fb1"
|
||||
transform="rotate(180 242 332)">♥</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 758 B After Width: | Height: | Size: 1.3 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">2</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#fb9fb1">♥</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#fb9fb1"
|
||||
transform="rotate(180 242 332)">♥</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.3 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">3</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#fb9fb1">♥</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#fb9fb1"
|
||||
transform="rotate(180 242 332)">♥</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.3 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">4</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#fb9fb1">♥</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#fb9fb1"
|
||||
transform="rotate(180 242 332)">♥</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.3 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">5</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#fb9fb1">♥</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#fb9fb1"
|
||||
transform="rotate(180 242 332)">♥</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.3 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">6</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#fb9fb1">♥</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#fb9fb1"
|
||||
transform="rotate(180 242 332)">♥</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.3 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">7</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#fb9fb1">♥</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#fb9fb1"
|
||||
transform="rotate(180 242 332)">♥</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.3 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">8</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#fb9fb1">♥</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#fb9fb1"
|
||||
transform="rotate(180 242 332)">♥</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.3 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">9</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#fb9fb1">♥</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#fb9fb1"
|
||||
transform="rotate(180 242 332)">♥</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.3 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">A</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#fb9fb1">♥</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#fb9fb1"
|
||||
transform="rotate(180 242 332)">♥</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.3 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">J</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#fb9fb1">♥</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#fb9fb1"
|
||||
transform="rotate(180 242 332)">♥</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.3 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">K</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#fb9fb1">♥</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#fb9fb1"
|
||||
transform="rotate(180 242 332)">♥</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.3 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#fb9fb1" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#fb9fb1">Q</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#fb9fb1">♥</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#fb9fb1"
|
||||
transform="rotate(180 242 332)">♥</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 C 12,4 14,6 16,9 C 18,6 20,4 23,4 C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z" fill="#fb9fb1"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.3 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">10</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#d0d0d0">♠</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#d0d0d0"
|
||||
transform="rotate(180 242 332)">♠</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 758 B After Width: | Height: | Size: 1.4 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">2</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#d0d0d0">♠</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#d0d0d0"
|
||||
transform="rotate(180 242 332)">♠</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.4 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">3</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#d0d0d0">♠</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#d0d0d0"
|
||||
transform="rotate(180 242 332)">♠</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.4 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">4</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#d0d0d0">♠</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#d0d0d0"
|
||||
transform="rotate(180 242 332)">♠</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.4 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">5</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#d0d0d0">♠</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#d0d0d0"
|
||||
transform="rotate(180 242 332)">♠</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.4 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">6</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#d0d0d0">♠</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#d0d0d0"
|
||||
transform="rotate(180 242 332)">♠</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.4 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">7</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#d0d0d0">♠</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#d0d0d0"
|
||||
transform="rotate(180 242 332)">♠</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.4 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">8</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#d0d0d0">♠</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#d0d0d0"
|
||||
transform="rotate(180 242 332)">♠</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.4 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">9</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#d0d0d0">♠</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#d0d0d0"
|
||||
transform="rotate(180 242 332)">♠</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.4 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">A</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#d0d0d0">♠</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#d0d0d0"
|
||||
transform="rotate(180 242 332)">♠</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.4 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">J</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#d0d0d0">♠</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#d0d0d0"
|
||||
transform="rotate(180 242 332)">♠</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.4 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">K</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#d0d0d0">♠</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#d0d0d0"
|
||||
transform="rotate(180 242 332)">♠</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.4 KiB |
@@ -2,15 +2,24 @@
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="#1a1a1a" stroke="#d0d0d0" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="#d0d0d0">Q</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
fill="#d0d0d0">♠</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" fill="#d0d0d0"
|
||||
transform="rotate(180 242 332)">♠</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 C 18,26 19,28 23,28 C 27,28 30,25 30,21 C 30,14 23,9 16,4 Z" fill="#d0d0d0"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 757 B After Width: | Height: | Size: 1.4 KiB |
@@ -161,12 +161,38 @@ fn glyph_paint_attrs(colour: &str, paint: GlyphPaint) -> String {
|
||||
}
|
||||
}
|
||||
|
||||
fn suit_glyph(suit: Suit) -> &'static str {
|
||||
/// SVG `path` `d` attribute tracing the suit's silhouette inside a
|
||||
/// 32 × 32 logical box (origin top-left, +Y down). All four suits are
|
||||
/// authored as a single closed perimeter so the same path renders
|
||||
/// correctly whether filled (♥ ♠) or outlined (♦ ♣).
|
||||
///
|
||||
/// Path-based rendering replaces the earlier `<text>` approach because
|
||||
/// the bundled `FiraMono` font doesn't carry the Unicode suit glyphs
|
||||
/// (U+2660-2666) at the requested size — `usvg` was falling back to a
|
||||
/// substitute rendering that produced near-invisible "tofu" marks.
|
||||
/// Paths bypass the font system entirely.
|
||||
fn suit_path_d(suit: Suit) -> &'static str {
|
||||
match suit {
|
||||
Suit::Clubs => "♣",
|
||||
Suit::Diamonds => "♦",
|
||||
Suit::Hearts => "♥",
|
||||
Suit::Spades => "♠",
|
||||
Suit::Hearts => {
|
||||
"M16,28 C 8,22 2,17 2,11 C 2,7 5,4 9,4 \
|
||||
C 12,4 14,6 16,9 C 18,6 20,4 23,4 \
|
||||
C 27,4 30,7 30,11 C 30,17 24,22 16,28 Z"
|
||||
}
|
||||
Suit::Diamonds => "M16,2 L 29,16 L 16,30 L 3,16 Z",
|
||||
Suit::Spades => {
|
||||
"M16,4 C 9,9 2,14 2,21 C 2,25 5,28 9,28 \
|
||||
C 13,28 14,26 14,24 L 13,30 L 19,30 L 18,24 \
|
||||
C 18,26 19,28 23,28 C 27,28 30,25 30,21 \
|
||||
C 30,14 23,9 16,4 Z"
|
||||
}
|
||||
Suit::Clubs => {
|
||||
"M16,4 C 13,4 10,7 10,10 C 10,12 11,13 12,14 \
|
||||
C 9,14 4,17 4,21 C 4,24 7,27 10,27 \
|
||||
C 12,27 14,26 14,24 L 13,30 L 19,30 L 18,24 \
|
||||
C 18,26 20,27 22,27 C 25,27 28,24 28,21 \
|
||||
C 28,17 23,14 20,14 C 21,13 22,12 22,10 \
|
||||
C 22,7 19,4 16,4 Z"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -174,7 +200,7 @@ fn suit_glyph(suit: Suit) -> &'static str {
|
||||
/// self-contained, parsable SVG document.
|
||||
pub fn face_svg(rank: Rank, suit: Suit) -> String {
|
||||
let (colour, paint) = suit_paint(suit);
|
||||
let glyph = suit_glyph(suit);
|
||||
let path_d = suit_path_d(suit);
|
||||
let rank_text = rank_filename(rank);
|
||||
let small_glyph_attrs = glyph_paint_attrs(colour, paint);
|
||||
let large_glyph_attrs = glyph_paint_attrs(colour, paint);
|
||||
@@ -183,27 +209,42 @@ pub fn face_svg(rank: Rank, suit: Suit) -> String {
|
||||
// border: 1 px → 2 px stroke-width
|
||||
// corner radius: 8 px → 16 px rx/ry
|
||||
// rank font: 18 px → 36 px
|
||||
// small glyph: 10 px → 20 px
|
||||
// large glyph: 32 px → 64 px
|
||||
// small glyph: 10 px → 20 px (suit_path_d is authored at 32 →
|
||||
// scale 0.625 to land at 20)
|
||||
// large glyph: 32 px → 64 px (scale 2.0)
|
||||
//
|
||||
// Inset the border by 1 px so the 2 px stroke renders fully
|
||||
// inside the 256 × 384 pixmap rather than getting clipped.
|
||||
//
|
||||
// Suit glyphs are rendered as inline SVG paths (not `<text>`)
|
||||
// because the bundled `FiraMono` font doesn't carry usable
|
||||
// U+2660-2666 glyphs at the requested size. See `suit_path_d`
|
||||
// for the rationale.
|
||||
format!(
|
||||
r##"<svg xmlns="http://www.w3.org/2000/svg" width="256" height="384" viewBox="0 0 256 384">
|
||||
<rect x="1" y="1" width="254" height="382" rx="16" ry="16"
|
||||
fill="{BG_FACE}" stroke="{colour}" stroke-width="2"/>
|
||||
|
||||
<!-- Top-left rank + small suit glyph. -->
|
||||
<!-- Top-left rank in JetBrains-Mono-styled FiraMono (rank digits
|
||||
and letters render correctly in FiraMono; only the suit glyphs
|
||||
needed to escape to paths). -->
|
||||
<text x="14" y="44" font-family="Fira Mono" font-size="36" font-weight="700"
|
||||
fill="{colour}">{rank_text}</text>
|
||||
<text x="14" y="68" font-family="Fira Mono" font-size="20"
|
||||
{small_glyph_attrs}>{glyph}</text>
|
||||
|
||||
<!-- Bottom-right large suit glyph, rotated 180° about its own
|
||||
baseline anchor so the glyph reads upside-down. -->
|
||||
<text x="242" y="350" font-family="Fira Mono" font-size="64"
|
||||
text-anchor="end" {large_glyph_attrs}
|
||||
transform="rotate(180 242 332)">{glyph}</text>
|
||||
<!-- Top-left small suit glyph at (14, 50), 20 × 20.
|
||||
`suit_path_d` is authored in a 32-unit box, so scale 0.625
|
||||
lands the visible glyph at 20 px. -->
|
||||
<g transform="translate(14 50) scale(0.625)">
|
||||
<path d="{path_d}" {small_glyph_attrs}/>
|
||||
</g>
|
||||
|
||||
<!-- Bottom-right large suit glyph, 64 × 64, rotated 180° so it
|
||||
reads upside-down (the convention for inverted-corner
|
||||
indicators). The transform pipeline lands the glyph's visible
|
||||
bottom-right at (242, 350) and visible top-left at (178, 286). -->
|
||||
<g transform="translate(242 350) rotate(180) scale(2)">
|
||||
<path d="{path_d}" {large_glyph_attrs}/>
|
||||
</g>
|
||||
</svg>"##
|
||||
)
|
||||
}
|
||||
|
||||
@@ -24,58 +24,58 @@ use solitaire_engine::assets::card_face_svg::{
|
||||
use solitaire_engine::assets::rasterize_svg;
|
||||
|
||||
const EXPECTED: &[(&str, u64)] = &[
|
||||
("face_AC", 0xca11dff5bb9f0eb0),
|
||||
("face_2C", 0xc929a25f0f217577),
|
||||
("face_3C", 0xdaede8383266b5c3),
|
||||
("face_4C", 0xeaa3ea51866f69e5),
|
||||
("face_5C", 0xe5a74589cb09cc5c),
|
||||
("face_6C", 0xdbbc1036895ee08e),
|
||||
("face_7C", 0xb8a28119a85ccf5d),
|
||||
("face_8C", 0xab4d19ce4b8d15e7),
|
||||
("face_9C", 0x17c95eb07f382059),
|
||||
("face_10C", 0x1f1b2c84e42211b1),
|
||||
("face_JC", 0xd87c45124df8b03d),
|
||||
("face_QC", 0xe23701b6685994b2),
|
||||
("face_KC", 0xc628e55b8a15472a),
|
||||
("face_AD", 0x49a140d84b0a731b),
|
||||
("face_2D", 0x713f755b5ecfb67a),
|
||||
("face_3D", 0xe59a72abc47af7d4),
|
||||
("face_4D", 0xf75ac828822079d1),
|
||||
("face_5D", 0x6db0cc9a5849395f),
|
||||
("face_6D", 0x9b034cf6851512de),
|
||||
("face_7D", 0x85f96e0326780a6e),
|
||||
("face_8D", 0x59ec5533b615ecd4),
|
||||
("face_9D", 0x3689911671b30921),
|
||||
("face_10D", 0x682684217e3e8b60),
|
||||
("face_JD", 0xd999f85e6862c5a7),
|
||||
("face_QD", 0x6db493a3b370b211),
|
||||
("face_KD", 0x4c2ec19166fdee7b),
|
||||
("face_AH", 0x0d41c498281b9a74),
|
||||
("face_2H", 0xec6493b71d4576b1),
|
||||
("face_3H", 0xd2fb4b5956caf15b),
|
||||
("face_4H", 0xfbe8e1eaa2b28c5a),
|
||||
("face_5H", 0x649a0964e549f008),
|
||||
("face_6H", 0xa10fa42b5549fc85),
|
||||
("face_7H", 0x6823107295c149b5),
|
||||
("face_8H", 0x474d2de14865e65b),
|
||||
("face_9H", 0x1b0de1af8dae108a),
|
||||
("face_10H", 0x451fd5855859c9d7),
|
||||
("face_JH", 0xd821a7d4c79a37e0),
|
||||
("face_QH", 0xde0c6ef7e963861a),
|
||||
("face_KH", 0xe29039cb6a115214),
|
||||
("face_AS", 0x1697fbcc61b64e0f),
|
||||
("face_2S", 0x5ada7ea3e39547d0),
|
||||
("face_3S", 0x6d8eed531f2d659c),
|
||||
("face_4S", 0x1b1a2d25e080d71e),
|
||||
("face_5S", 0x5eb82baa4f9a74bb),
|
||||
("face_6S", 0xa00b217892d32ead),
|
||||
("face_7S", 0xaf60935ec8d93346),
|
||||
("face_8S", 0xffbde852d8699a80),
|
||||
("face_9S", 0x8f68afa04b88e1a2),
|
||||
("face_10S", 0x96fa4a08f168210a),
|
||||
("face_JS", 0x73030a8109b5b5e6),
|
||||
("face_QS", 0x303eb6c33e363cc1),
|
||||
("face_KS", 0x3ed5b5a9432c91e9),
|
||||
("face_AC", 0x79b449cb455e496d),
|
||||
("face_2C", 0x10a1056c4800c45e),
|
||||
("face_3C", 0xbd128e390e06673a),
|
||||
("face_4C", 0x949c323c78a804c0),
|
||||
("face_5C", 0xd396d5ed99fb57e9),
|
||||
("face_6C", 0x15519c6d72d1720f),
|
||||
("face_7C", 0xc24bdc1a2d380d78),
|
||||
("face_8C", 0x36464f4ab4cf672e),
|
||||
("face_9C", 0x32add2eb53b1aec4),
|
||||
("face_10C", 0x68619202f29481fc),
|
||||
("face_JC", 0x116b3eeac58e0f58),
|
||||
("face_QC", 0xb149ab5b2cac85e3),
|
||||
("face_KC", 0x2a9fd2c63b99bd3b),
|
||||
("face_AD", 0xe49c3fec2c01817c),
|
||||
("face_2D", 0x8f42b4014e0d6809),
|
||||
("face_3D", 0x63ff77fa873c557b),
|
||||
("face_4D", 0x33356bd9628daaf2),
|
||||
("face_5D", 0x8897839054dbd808),
|
||||
("face_6D", 0x03ff93fb0c05a195),
|
||||
("face_7D", 0xc2b7f97f5b1cc545),
|
||||
("face_8D", 0xd8515a8278d74a7b),
|
||||
("face_9D", 0xfbfe52ec3bbd2962),
|
||||
("face_10D", 0x8f2dfc06a1d55a2f),
|
||||
("face_JD", 0x3941d34384607530),
|
||||
("face_QD", 0x0dcf5a9e2fc99f02),
|
||||
("face_KD", 0xb834cb89d80bd39c),
|
||||
("face_AH", 0x1a2e6d2ac818093f),
|
||||
("face_2H", 0x8ab9ad7d2111233e),
|
||||
("face_3H", 0x5e1057fa87c90968),
|
||||
("face_4H", 0x1e1550b0af8a35a5),
|
||||
("face_5H", 0x77404642251596d3),
|
||||
("face_6H", 0xf7bec77bcbb9f942),
|
||||
("face_7H", 0x9b7c52a5c03fb4f2),
|
||||
("face_8H", 0xd2623a827963fe68),
|
||||
("face_9H", 0xec19380e53986015),
|
||||
("face_10H", 0x1205d0ec042a7484),
|
||||
("face_JH", 0xd28bf03e6e871ccb),
|
||||
("face_QH", 0x78548704b4530c65),
|
||||
("face_KH", 0x9708e6c2d9c3bedf),
|
||||
("face_AS", 0xebabc54128f38105),
|
||||
("face_2S", 0xaac2970387b18ffe),
|
||||
("face_3S", 0xb0864e78a6802bea),
|
||||
("face_4S", 0xd118bc992bd41330),
|
||||
("face_5S", 0x7fb7d6040d9b0641),
|
||||
("face_6S", 0xbc048e82f1079637),
|
||||
("face_7S", 0x147ee7c002e43648),
|
||||
("face_8S", 0xfed30db056fbaa8e),
|
||||
("face_9S", 0x332bc2060d8fcca4),
|
||||
("face_10S", 0x0b810ffaf105421c),
|
||||
("face_JS", 0x2ea7b956f2f23c28),
|
||||
("face_QS", 0xedca2e002087ae6b),
|
||||
("face_KS", 0x92e486d4e96ac4a3),
|
||||
("back_0", 0xf698d0e161eae13a),
|
||||
("back_1", 0x446fdc0a3c83a03a),
|
||||
("back_2", 0xcf188fdec9f5819a),
|
||||
|
||||