Files
svg-assets/README.md
T

7.0 KiB

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

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
│   ├── jsbox.svg
│   ├── nfs.svg
│   ├── scripts.svg
│   ├── 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

Five icons are the template every other icon follows: icons/gasm-devkit.svg, icons/scripts.svg, icons/xstd.svg, icons/tensor.svg and icons/nfs.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 five, 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
nfs #0D9488, #134E4A #5EEAD4, opacity 0.5 #ECFDF5 cabinet and tiles, #99F6E4 link lines #FBBF24 folders and LEDs, #22D3EE activity LED the export fanning to its clients from one port

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

  1. 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.
  2. 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.
  3. Gradients belong to the badge alone. The motif itself is flat.

The border

  1. 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".
  2. 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

  1. At most one soft radial halo behind the motif, centred, radius at most 230, peak opacity at most 0.15; or none at all.
  2. 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

  1. 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.
  2. Flat fills and strokes only. Stroke caps and joins are round, and stroke widths sit between 5 and 8.
  3. Two accent colours at most beside the ink. Prefer one warm and one cool accent; never a third.
  4. 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

  1. 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

  1. 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.
  2. British English everywhere, and no dash as punctuation: a comma, a semicolon or a full stop joins the clauses instead.

Before an icon lands

  1. The file is XML-clean and renders without warnings at 512 and at 48 pixels:
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
  1. 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.
  2. 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/sourcedock.svg sourcedock.dev, the self-hosted Git forge where this whole set berths
icons/interpres.svg interpres, TOML 1.0 parser for Go
icons/nfs.svg nfs, a full NFSv4.2 implementation in pure Go, server and client
icons/jsbox.svg jsbox, the zero-config development server for plain HTML, CSS and JavaScript

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, and a human-readable summary sits on the Creative Commons site.