154 lines
6.4 KiB
Markdown
154 lines
6.4 KiB
Markdown
# 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/).
|