Skip to content

RUNE-003: Brand Identity Proposed

Updated2026-08-24

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:

powershell
& .\eng\Generate-BrandAssets.ps1

Generated files per product:

SuffixRole
.svgFlat-color display mark, 32 px and above
-mono.svgSingle-ink stone with transparent rune knockout
-16.svgDedicated 16×16 optical mark, used through 24 px
-16-dark.svgFixed-white 16×16 optical mark for dark UI chrome
-glyph.svgMaster glyph without a stone
-lockup-light.svgColor stone plus dark Sora wordmark for light backgrounds
-lockup-dark.svgColor 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/.

PropertyValue
FontSora variable
LicenseSIL OFL 1.1
Source fileassets/brand/fonts/Sora.ttf
SHA-25684FF7096AE3EC6C8BE47D906D1A0BA4DE7F2CE78C615275C77301964A316E16C
Lockup canvas330×80
Icon64×64 at (8,8)
Text origin(88,50)
Type size31
Rune weight700
Product weight400
Product gap7
Tracking-0.035em

The lockup format is:

text
[color stone]  Rune Product
               ^700 ^400

Official 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 currentColor SHOULD pair -16.svg in light UI with -16-dark.svg in dark UI.

Point Classes

Every glyph point is one of:

  1. Endpoint — visible stroke termination; SHOULD use integer coordinates.
  2. Junction — branch/stave intersection; MAY use a finite rational coordinate to preserve exact geometry.
  3. 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.

MemberPoints
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:

text
M26 4V40M26 60V40M17 14L50 22L26 40M17 46L26 40M26 40L50 48

Optical:

text
M7 1V10M7 15V10M4 4L13 6L7 10M4 12L7 10M7 10L13 12

Rune Engine

The main stave is one line from (20,7) to (27.5,57). Every branch has slope -0.5.

MemberPoints
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:

text
M20 7L27.5 57M21.5 17L42 6.75M23 27L36 20.5M24.5 37L46.5 26

Optical:

text
M5 2L7 14M5.5 5L11.5 2M6 8L9.5 6.25M6.5 11L12.5 8

Rune Story

The sequence is a four-point descending polyline. The cross-stave is centered around its intersection with the sequence.

MemberPoints
Sequence(25,8)(19,24)(45,37)(37,56)
Cross-stave(32,39)(32,22)

Master:

text
M25 8L19 24L45 37L37 56M32 39V22

In the optical form, the diagonal intersects x=8 at y=7.5; the cross-stave extends 2.5 units above and below.

text
M6 2L5 6L11 9L9 14M8 10V5

Stone 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:

ProductColorWhite contrast
Rune Project#15499D8.50:1
Rune Engine#A62C2D6.95:1
Rune Story#0B7F914.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:

text
master: M17 5L45 4L57 16L60 42L48 58L17 60L6 43L8 16Z
optical: M4 1L11 1L14 4L15 11L12 15L4 15L1 11L2 4Z

Engine:

text
master: M16 5H47L59 17V47L47 59H17L5 48V16Z
optical: M4 1H12L15 4V12L12 15H4L1 12V4Z

Story:

text
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 2Z

Responsive Usage

Render sizeRequired asset
32 px and aboveColor 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:

  1. define a product concept and familiar-symbol collision risks;
  2. author a 64×64 glyph;
  3. author a separate 16×16 optical glyph;
  4. document endpoints, junctions, directions, cap, and join;
  5. define distinct master and optical stone paths;
  6. choose a flat color and validate rune contrast;
  7. choose the product-name suffix for the Sora lockup;
  8. add geometry and typography metadata to rune-brand.json;
  9. regenerate SVGs;
  10. render color, mono, reverse, 24 px, 16 px, and light/dark lockup contact sheets;
  11. 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.

Rune Project brings Rune Story authoring together with the Rune Engine rendering foundation.