chore: initial commit of the shared icon set
This commit is contained in:
@@ -0,0 +1,153 @@
|
||||
# Shared icon and logo set
|
||||
|
||||
The shared icon and logo set for Petr Balvín's projects, drawn in one
|
||||
house style so the whole collection reads as one collection. This file
|
||||
is the specification: the anatomy of the style, the binding rules every
|
||||
icon and logo follows, and the process for adding new material.
|
||||
|
||||
## Layout
|
||||
|
||||
```text
|
||||
svg-assets/
|
||||
├── README.md this specification
|
||||
├── LICENSE CC BY-NC 4.0, the legal code
|
||||
├── icons/ finished icons, one per project
|
||||
│ ├── gasm-devkit.svg
|
||||
│ ├── interpres.svg
|
||||
│ ├── scripts.svg
|
||||
│ ├── tensor.svg
|
||||
│ ├── volumen.svg
|
||||
│ └── xstd.svg
|
||||
└── logos/ project logos, reserved and empty for now
|
||||
```
|
||||
|
||||
Icons live in `icons/` and carry nothing but the project's name; the
|
||||
`-icon` suffix drops when a file moves in.
|
||||
|
||||
## The house style
|
||||
|
||||
Four icons are the template every other icon follows:
|
||||
[icons/gasm-devkit.svg](icons/gasm-devkit.svg),
|
||||
[icons/scripts.svg](icons/scripts.svg),
|
||||
[icons/xstd.svg](icons/xstd.svg) and
|
||||
[icons/tensor.svg](icons/tensor.svg). Each is a rounded badge in one
|
||||
hue family carrying a single flat motif, with a thin inner border, a
|
||||
quiet backdrop, and a restrained nod to the project's identity. The
|
||||
measured values of all four, for copying:
|
||||
|
||||
| Icon | Badge gradient, top then bottom | Border tint | Ink | Accents | The nod |
|
||||
|---|---|---|---|---|---|
|
||||
| gasm-devkit | `#12212E`, `#060B12` | `#1D3A4B`, opacity 0.9 | `#F2FAFD` strokes | `#00ADD8` halo, `#3BC9ED` to `#0098C0` chip stroke, `#6FC9E4` subtext | MOVQ BX, AX hand-drawn on a chip |
|
||||
| scripts | `#A61C4A`, `#4C0519` | `#FDA4AF`, opacity 0.45 | `#FFE4E6` window and prompt strokes | `#FCD34D` dot and cursor | the terminal prompt with its amber cursor |
|
||||
| xstd | `#1fb6dd`, `#007a99` | `#B3ECFB`, opacity 0.5 | `#007a99` on white | `#d9f4fc` slabs | the pulled-out C block |
|
||||
| tensor | `#7C3AED`, `#4C1D95` | `#A78BFA`, opacity 0.45 | `#F5F3FF` cube faces, `#4C1D95` lattice | `#F59E0B`, `#00ADD8` | the Go cyan cell on the cube's left face |
|
||||
|
||||
## The rules
|
||||
|
||||
These bind every icon and every logo in the set. A file that breaks
|
||||
one is not part of the set, whatever its filename says.
|
||||
|
||||
### Canvas
|
||||
|
||||
1. One `viewBox="0 0 512 512"` with `width` and `height` of 512, and
|
||||
`role="img"` with `aria-labelledby="title desc"`.
|
||||
2. Nothing is drawn outside the badge; no clipping tricks, no overflow.
|
||||
3. No external references of any kind: no CSS files, no images, no
|
||||
fonts, no `@import`. The file stands alone.
|
||||
|
||||
### Badge and background
|
||||
|
||||
4. The badge is one `rect` of 512 by 512 with `rx="112"`, filled by a
|
||||
vertical two-stop gradient (`x1="0" y1="0" x2="0" y2="1"`), the
|
||||
lighter stop on top, the deeper stop at the bottom.
|
||||
5. One hue family per project, and one project per hue: two icons in
|
||||
the set never share a hue family. The hue carries from the icon to
|
||||
the logo when a logo arrives.
|
||||
6. Gradients belong to the badge alone. The motif itself is flat.
|
||||
|
||||
### The border
|
||||
|
||||
7. Exactly one inner border: a `rect` at `x="1.5" y="1.5"` of 509 by
|
||||
509 with `rx="110.5"`, `fill="none"`, `stroke-width="3"`.
|
||||
8. Its colour is a lighter tint of the badge hue at an opacity of 0.4
|
||||
to 0.6; on a near-black badge a near-background tint at up to 0.9
|
||||
is the gasm-devkit variant of the same rule.
|
||||
|
||||
### The backdrop and the shadow
|
||||
|
||||
9. At most one soft radial halo behind the motif, centred, radius at
|
||||
most 230, peak opacity at most 0.15; or none at all.
|
||||
10. At most one drop shadow, on the motif group only:
|
||||
`feDropShadow` with `dy` of 8 to 10, `stdDeviation` of 10 to 12,
|
||||
a flood colour from the deep end of the badge hue family, opacity
|
||||
0.35 to 0.5.
|
||||
|
||||
### The motif
|
||||
|
||||
11. One idea per icon. The motif fills roughly the middle 320 pixels;
|
||||
outside 96 to 416 on either axis only badge, border and halo live.
|
||||
12. Flat fills and strokes only. Stroke caps and joins are round, and
|
||||
stroke widths sit between 5 and 8.
|
||||
13. Two accent colours at most beside the ink. Prefer one warm and one
|
||||
cool accent; never a third.
|
||||
14. Every icon carries one small nod to the project's identity: a
|
||||
hexagon for IPv6, a Go cyan cell, a pulled-out C block, hand-drawn
|
||||
mnemonics. One nod, not a second motif.
|
||||
|
||||
### Text
|
||||
|
||||
15. No font is ever loaded. Lettering is drawn as stroke paths defined
|
||||
in `defs` and placed with `use`, as the gasm-devkit mnemonics are.
|
||||
|
||||
### Metadata and language
|
||||
|
||||
16. Every file opens with a `title` and a `desc` carrying `id` values
|
||||
that the root element references. The title names the project and
|
||||
its purpose in one line; the desc describes the drawing in one
|
||||
factual sentence.
|
||||
17. British English everywhere, and no dash as punctuation: a comma,
|
||||
a semicolon or a full stop joins the clauses instead.
|
||||
|
||||
### Before an icon lands
|
||||
|
||||
18. The file is XML-clean and renders without warnings at 512 and at
|
||||
48 pixels:
|
||||
|
||||
```sh
|
||||
magick -background none -density 96 icons/NAME.svg -resize 512x512 /tmp/check512.png
|
||||
magick -background none -density 96 icons/NAME.svg -resize 48x48 /tmp/check48.png
|
||||
```
|
||||
|
||||
19. At 48 pixels the motif still reads as its idea: a viewer names the
|
||||
shape, not the noise. The accents keep their contrast against the
|
||||
badge at both sizes.
|
||||
20. The hue is new to the set, the nod is present, and this file's
|
||||
icon table gains a row in the same change.
|
||||
|
||||
## Logos
|
||||
|
||||
`logos/` is reserved for the projects' logos: a wordmark or monogram
|
||||
on the same badge geometry, in the same hue the icon chose, under the
|
||||
same metadata, border and licence rules. A logo carries the project's
|
||||
name where an icon carries only its idea. Nothing has landed there
|
||||
yet.
|
||||
|
||||
## Icons
|
||||
|
||||
| File | Project |
|
||||
|---|---|
|
||||
| `icons/gasm-devkit.svg` | gasm-devkit, tooling for Go Plan 9 assembly |
|
||||
| `icons/xstd.svg` | xstd, the extended pure-Go standard library, what is always needed and never in stdlib |
|
||||
| `icons/tensor.svg` | tensor, the scientific computing library for Go |
|
||||
| `icons/volumen.svg` | volumen, the file-based Markdown blog engine |
|
||||
| `icons/scripts.svg` | scripts, a DevOps toolbox of standalone Perl scripts |
|
||||
| `icons/interpres.svg` | interpres, TOML 1.0 parser for Go |
|
||||
|
||||
## Licence
|
||||
|
||||
The icons and logos are © 2026 Petr Balvín and licensed under
|
||||
Creative Commons Attribution-NonCommercial 4.0 International
|
||||
(CC BY-NC 4.0): anyone may share and adapt them for noncommercial
|
||||
purposes with attribution. The full legal code is in
|
||||
[LICENSE](LICENSE), and a human-readable summary sits on the
|
||||
[Creative Commons site](https://creativecommons.org/licenses/by-nc/4.0/).
|
||||
Reference in New Issue
Block a user