StoryTan⅁l · brand usage

Read StoryTangl-Brand-Sheet.html first. This file is the rules-of-the-road that the brand sheet implies but doesn’t spell out. Same voice as AGENTS.md — opinionated, parsimonious, explicit about what an agent must never do.

1. The mark

The wordmark is “StoryTangl” in the body font, with a capital G turned 180°, narrowed, and dropped so it reads as the lowercase g it stands in for. The turn is the brand. Strip it and you get a wordmark indistinguishable from any other project; don’t.

In running prose, type StoryTangl plainly — or where a turned mark is wanted. The constructed mark is for the wordmark and glyph, not every mention; this is a research project, and the name has to stay typeable.

The rotation requires per-font tuning so the lip lands on the baseline and the new descender matches its neighbors. Three tunings are sanctioned: Newsreader (canonical), JetBrains Mono (CLI), Inter Tight (web chrome). Custom tunings for new fonts require updating the brand sheet first.

2. Where each asset goes

Asset

Destination

Format

wordmark.svg

brand/assets/wordmark.svg

SVG with webfont

glyph.svg / glyph-round.svg

brand/assets/glyph*.svg

SVG with webfont

favicon.svg

apps/web/public/favicon.svg, docs/src/_static/favicon.svg

SVG with webfont (browsers cache it locally; fallback to favicon.ico for IE11-era)

README-banner.svg

brand/assets/README-banner.svg; optionally reference in README.md above the # StoryTangl line

SVG with webfont

social-card.svg

.github/social-card.svg as source; rasterize outside the repo before configuring GitHub’s social preview

SVG source; PNG deployment export at 1280×640

cli-splash.txt

apps/cli/src/tangl/cli/assets/splash.txt, loaded by the cmd2 app on launch

plain text

palette.css

apps/web/src/styles/storytangl-palette.css; docs/src/_static/storytangl-palette.css

CSS

type.css

apps/web/src/styles/storytangl-type.css; docs/src/_static/storytangl-type.css

CSS

3. SVGs are font-dependent — when to convert to paths

The shipped SVGs reference Newsreader and JetBrains Mono via Google Fonts @import. This works wherever webfonts can load (RTD docs, web app, any HTML page). It does not work for:

  • GitHub social previews (must be rasterized PNG)

  • LaTeX includes, PowerPoint, anywhere the renderer can’t fetch URLs

  • Offline-first contexts

For those, convert the wordmark and glyph to outlined paths using any of:

# inkscape
inkscape wordmark.svg --export-type=svg --export-filename=wordmark-paths.svg \
         --export-text-to-path

# fontforge / harfbuzz approaches also work
# online: https://danmarshall.github.io/google-font-to-svg-path/

No path exports are checked in here. Downstream targets that need outlined paths should commit the font-dependent source and path export together in that target’s asset directory. Do not regenerate paths without confirming the typographic tuning matches §1 of the brand sheet (per-font sx/sy/ty values).

4. The lockup is the wordmark or the wordmark + glyph — never the glyph alone with text

The glyph stands alone. The wordmark stands alone. A glyph + wordmark lockup is sanctioned (see §3 of the brand sheet). What is not sanctioned:

  • glyph + plain “StoryTangl” text (defeats the whole mark)

  • glyph + a different word (the mark is bound to its wordmark)

  • two glyphs as a repeating pattern (use the dotty knot texture instead)

5. The ⅁ character (U+2141) is the ASCII fallback

Where SVG isn’t available (terminal, plain text, code comments, commit messages, this very file’s H1), use the Unicode codepoint U+2141 TURNED SANS-SERIF CAPITAL G. It’s the project’s name in 7-bit-clean contexts. Acceptable substitutes: none.

Examples:

StoryTan⅁l         ← H1 in plain markdown
⅁>                  ← CLI prompt
[ ⅁ v3.8 ]         ← log banner

6. Type stack rules

Three families, three roles, never mixed.

  • Newsreader — prose, titles, narrative copy, the wordmark

  • JetBrains Mono — engine output, CLI, inline code, fragment data

  • Inter Tight — UI chrome, navbar, buttons, small labels, table headers

If you find yourself reaching for a fourth font, stop. Reach for weight or size instead. The only sanctioned weight escalation is 400 → 500 → 600 → 700, in order. No 800/900 unless you need a wordmark above 200px.

7. Palette rules

The palette is closed. Additions require updating this file AND the brand sheet AND palette.css. Specifically:

  • No new surfaces. Paper / paper-2 / paper-3 cover everything from page background to banded table rows. If your design “needs” a fourth, it doesn’t.

  • No new ink levels. Ink / ink-2 / ink-3 / ink-4 cover the hierarchy.

  • No new accents. Blue-pencil and burnt are the two. Burnt is for one moment per page; never two.

  • Severity is fixed at three. ok / warn / danger. If a context needs four (e.g. distinguishing “criminal” from “failed”), use weight or emphasis on the danger color, not a fourth hue.

The dark mode ([data-st-mode="ink"]) is a literal photographic negative. Do not tune it independently; if the light mode changes, the dark mode changes in lockstep.

8. Voice and tone rules

Lineage: README.md, ARCHITECTURE.md, AGENTS.md.

  • The project is a research platform, not a SaaS product. Copy says so without apology.

  • No SaaS verbs. Revolutionize, unlock, empower, transform — all forbidden. The engine compiles, materializes, projects, traverses.

  • No emoji in headlines. Body text rarely; never decorative.

  • Dry humor is in. “AI agents occasionally suggest things that are actually good.” That register. Not zany; not corporate-friendly.

  • Caveats live in the prose, not in disclaimers. “Useful for development, not a production MVP” is one of the project’s better sentences.

9. What an agent must never do

This section exists because agents have done some of these things.

Never

Why

Strip the turned-G from the README title because it “looks silly in markdown”

The rotation is the brand. The fix is an SVG banner above the title, not removing the rotation.

Replace the wordmark with a generic logo because “the project doesn’t have a logo”

It does. It’s the wordmark. The wordmark is the logo.

Add a “modern” gradient or “playful” color pop because the palette “feels muted”

Muted is the brand. Reach for the blue-pencil or burnt accent if you need a pop.

Substitute Inter or a system font for Newsreader because “fewer requests”

The wordmark is set in Newsreader. The body prose is set in Newsreader. Removing it removes the brand.

Auto-update SVG path data without re-tuning per §1

Path data carries the per-font tuning. Regenerating without confirming the visual tuning will produce a wrong wordmark that looks subtly off.

Emoji in the README, the docs, or commit messages

See §8.

10. Provenance

The 180° flip predates the name — it carried over from an earlier worldbuilding project, applied there to a different letter. That’s the whole of it: a footnote, not a selling point. Don’t build the brand around the backstory — and don’t “modernize” the flip away either.


Brand sheet v1.0 · 2026-05 · ⅁