Files
svg-assets/README.md
T

156 lines
6.5 KiB
Markdown
Raw Normal View History

# 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
2026-09-18 20:21:06 +02:00
│ ├── sourcedock.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 |
2026-09-18 20:21:06 +02:00
| `icons/sourcedock.svg` | sourcedock.dev, the self-hosted Git forge where this whole set berths |
| `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/).