# 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/).