RUNE-003: Brand Identity Proposed
Summary
Rune uses an authored straight-stroke rune engraved into a responsive stone silhouette. Product identity comes from glyph construction, stone outline, and flat body color. The static mark MUST remain recognizable in color, single ink, and dedicated 16×16 optical forms.
Rune Project, Rune Engine, and Rune Story are defined.
Design Philosophy
The mark represents a durable inscription that already contains how it may unfold through time. It MAY animate by constructing strokes or revealing the stone, but animation MUST NOT change the final static silhouette.
The family is engineered-mythic:
- engineered through explicit grids, auditable points, joins, and deterministic generation;
- mythic through the rune/stone object language;
- professional through responsive assets, flat color, and single-ink fallback.
Family coherence MUST come from construction discipline, not one forced physical stroke width. Optical weight, cap/join language, coordinate grammar, stone metaphor, and asset variants establish the family.
Source of Truth and Directory
assets/brand/ is the only canonical brand directory. Repositories MUST NOT add parallel icons/ or logos/ trees for the same assets.
assets/brand/rune-brand.json is the authoritative geometry, color, and typography source. Generated SVGs MUST NOT be edited directly.
Regenerate:
& .\eng\Generate-BrandAssets.ps1Generated files per product:
| Suffix | Role |
|---|---|
.svg | Flat-color display mark, 32 px and above |
-mono.svg | Single-ink stone with transparent rune knockout |
-16.svg | Dedicated 16×16 optical mark, used through 24 px |
-16-dark.svg | Fixed-white 16×16 optical mark for dark UI chrome |
-glyph.svg | Master glyph without a stone |
-lockup-light.svg | Color stone plus dark Sora wordmark for light backgrounds |
-lockup-dark.svg | Color stone plus white Sora wordmark for dark backgrounds |
Typography and Lockups
Sora is the official Rune wordmark typeface. The original variable font MUST remain under its SIL Open Font License in assets/brand/fonts/.
| Property | Value |
|---|---|
| Font | Sora variable |
| License | SIL OFL 1.1 |
| Source file | assets/brand/fonts/Sora.ttf |
| SHA-256 | 84FF7096AE3EC6C8BE47D906D1A0BA4DE7F2CE78C615275C77301964A316E16C |
| Lockup canvas | 330×80 |
| Icon | 64×64 at (8,8) |
| Text origin | (88,50) |
| Type size | 31 |
Rune weight | 700 |
| Product weight | 400 |
| Product gap | 7 |
| Tracking | -0.035em |
The lockup format is:
[color stone] Rune Product
^700 ^400Official lockup SVGs MUST embed the exact Sora font bytes as a data:font/ttf;base64 URL. They MUST NOT depend on a platform-installed font. The generator MUST reject a font whose SHA-256 differs from rune-brand.json.
Light and dark lockups have transparent backgrounds. The stone remains colored; only the wordmark color changes (#171719 for light backgrounds, #FFFFFF for dark backgrounds).
Glyph Coordinate System
Master
- Canvas: 64×64
- Nominal stroke: 5
- Caps:
butt - Project join:
bevel - Engine/Story join:
miter
Optical
- Canvas: 16×16
- Nominal stroke: 2
- The optical glyph MUST be independently authored.
- A scaled master MUST NOT substitute for the optical glyph at 24 px or below.
- External image hosts that cannot inherit
currentColorSHOULD pair-16.svgin light UI with-16-dark.svgin dark UI.
Point Classes
Every glyph point is one of:
- Endpoint — visible stroke termination; SHOULD use integer coordinates.
- Junction — branch/stave intersection; MAY use a finite rational coordinate to preserve exact geometry.
- Control point — curves are forbidden in current glyphs; reserved for a future accepted glyph grammar.
Arbitrary imported floating-point noise MUST be removed. Coordinates such as .5, .25, and .125 are valid when they encode a deliberate geometric relationship.
Alignment Rules
- A continuous stave MUST be one segment, not independently rounded fragments.
- Branch junctions MUST lie exactly on their stave.
- Members intended to be parallel MUST share one direction vector.
- Integer snapping MUST NOT break collinearity, parallelism, or optical centering.
- Intersections MUST be inspected at 16 px for excess ink and closed counters.
- Glyphs MUST be tested for resemblance to familiar platform, connectivity, transport, accessibility, and operating-system symbols.
Current Glyph Construction
Rune Project
The central stave is x=26, from y=4 through nexus (26,40) to y=60.
| Member | Points |
|---|---|
| Stave | (26,4) → (26,40) → (26,60) |
| Upper counter | (17,14) → (50,22) → (26,40) |
| Lower-left branch | (17,46) → (26,40) |
| Lower-right leg | (26,40) → (50,48) |
Master:
M26 4V40M26 60V40M17 14L50 22L26 40M17 46L26 40M26 40L50 48Optical:
M7 1V10M7 15V10M4 4L13 6L7 10M4 12L7 10M7 10L13 12Rune Engine
The main stave is one line from (20,7) to (27.5,57). Every branch has slope -0.5.
| Member | Points |
|---|---|
| Stave | (20,7) → (27.5,57) |
| Upper branch | (21.5,17) → (42,6.75) |
| Middle branch | (23,27) → (36,20.5) |
| Lower branch | (24.5,37) → (46.5,26) |
Master:
M20 7L27.5 57M21.5 17L42 6.75M23 27L36 20.5M24.5 37L46.5 26Optical:
M5 2L7 14M5.5 5L11.5 2M6 8L9.5 6.25M6.5 11L12.5 8Rune Story
The sequence is a four-point descending polyline. The cross-stave is centered around its intersection with the sequence.
| Member | Points |
|---|---|
| Sequence | (25,8) → (19,24) → (45,37) → (37,56) |
| Cross-stave | (32,39) → (32,22) |
Master:
M25 8L19 24L45 37L37 56M32 39V22In the optical form, the diagonal intersects x=8 at y=7.5; the cross-stave extends 2.5 units above and below.
M6 2L5 6L11 9L9 14M8 10V5Stone Construction
Each product MUST have a distinct stone silhouette. Canonical stones use:
- one flat body color;
- no gradient;
- no texture or inclusion;
- no highlight, shadow, or secondary facet;
- a transparent background.
Display colors:
| Product | Color | White contrast |
|---|---|---|
| Rune Project | #15499D | 8.50:1 |
| Rune Engine | #A62C2D | 6.95:1 |
| Rune Story | #0B7F91 | 4.71:1 |
Future colors SHOULD provide at least 4.5:1 contrast against the rune color.
Edge Policy
Rune geometry MAY extend beyond a stone, but final color rendering MUST clip it to the stone silhouette. Rune pixels MUST NOT render outside the stone.
Near-miss slivers are forbidden:
- master: below 2 units of remaining clearance, extend through the boundary and clip;
- optical: below 1 pixel of remaining clearance, extend and clip.
Current Stone Paths
Project:
master: M17 5L45 4L57 16L60 42L48 58L17 60L6 43L8 16Z
optical: M4 1L11 1L14 4L15 11L12 15L4 15L1 11L2 4ZEngine:
master: M16 5H47L59 17V47L47 59H17L5 48V16Z
optical: M4 1H12L15 4V12L12 15H4L1 12V4ZStory:
master: M16 7C28 1 45 2 55 10C64 18 66 33 61 45C56 57 45 63 32 62C19 61 8 55 5 44C1 32 5 16 16 7Z
optical: M4 2C7 0 12 0 14 3C16 6 16 10 14 13C11 16 6 16 3 14C0 12 1 5 4 2ZResponsive Usage
| Render size | Required asset |
|---|---|
| 32 px and above | Color display or mono master |
| 24 px and below | -16.svg optical asset |
| Single-ink environments | -mono.svg |
| Glyph-only lockups | -glyph.svg |
| Product name on light background | -lockup-light.svg |
| Product name on dark background | -lockup-dark.svg |
The 16 px asset MAY have heavier optical weight than the master. This is not a family inconsistency.
Adding a Product
A new Rune product MUST:
- define a product concept and familiar-symbol collision risks;
- author a 64×64 glyph;
- author a separate 16×16 optical glyph;
- document endpoints, junctions, directions, cap, and join;
- define distinct master and optical stone paths;
- choose a flat color and validate rune contrast;
- choose the product-name suffix for the Sora lockup;
- add geometry and typography metadata to
rune-brand.json; - regenerate SVGs;
- render color, mono, reverse, 24 px, 16 px, and light/dark lockup contact sheets;
- update
knowledge/meta/brand-identity.md, this spec, and asset documentation in the same change.
Validation
Every brand change MUST verify:
- JSON parses;
- all generated SVGs parse as XML;
- two generator runs produce byte-for-byte identical files;
- master members retain intended collinearity and parallelism;
- optical assets remain legible at native 16 px;
- color, mono, and reverse forms render correctly;
- no rune escapes its stone clip;
- no near-miss edge sliver remains;
- the embedded Sora SHA-256 matches the specification;
- light/dark lockups contain embedded font data and 700/400 weights;
- familiar-symbol collision review is recorded.
Rationale
Early UI experiments showed that forcing one absolute stroke width onto every authored glyph can destroy counters and convert a rune into a filled block. Rune therefore standardizes construction and optical weight, while permitting product-specific responsive stroke values when required.