wordmark
1,342 TAAG FONTS, ONE WORD AT A TIME
Type a word and flip through every TAAG font in the terminal, recoloured from your own palette.
python3 <(curl -fsSL https://raw.githubusercontent.com/morris-frank/wordmark/main/wordmarks.py)
That one line runs it with nothing installed. The first run downloads the 2.7 MB glyph
dataset into ~/.cache/wordmark/ and writes a config to
~/.config/wordmark/config.toml. It needs Python 3.11 or newer and a truecolour
terminal; macOS's bundled /usr/bin/python3 is 3.9, so use a Homebrew, mise or uv Python.
To keep it around as a wordmark command:
uv tool install wordmark # or: pipx install wordmark
Keys
The wordmark sits in the middle of the screen, with its index above and the font's name, section and colour style below.
| Key | Does |
|---|---|
↑ ↓ |
previous / next font |
PgUp PgDn |
20 fonts back / forward |
Tab Shift-Tab |
next / previous section (Favourites, Featured, Regular, ANSI, AOL, TOIlet, TheDraw) |
← → |
previous / next colour style |
- + |
lower / raise the maximum font height in lines; the index shows the cap |
0 |
any height again |
Ctrl-T |
next theme (dark, light) |
a–z, A–Z, Space |
type into the word; Shift gives capitals |
Backspace |
delete the last letter |
Ctrl-Y |
copy the wordmark as plain text |
Ctrl-A |
copy it with its truecolour escapes, for a shell banner |
Esc |
quit |
Copying uses pbcopy, wl-copy, xclip, xsel or clip.exe, whichever exists, and
otherwise OSC 52, which most terminals honour even over SSH. About 1,066 fonts have no
lowercase of their own, so there maurice and MAURICE look the same.
Options
python3 wordmarks.py [WORD] [--font NAME] [--theme NAME] [--max-height N] [--config PATH]
WORD overrides the config's word (default maurice). --font starts on a font by
exact name, ignoring case. --max-height starts with the height filter set.
Configuration
The config is created on first run with the Soilytix design system as its palette, and is read on every start. Delete it to get the defaults back.
| Key | Default | Holds |
|---|---|---|
word |
maurice |
the starting word |
theme |
dark |
the starting theme; Ctrl-T cycles [themes] in file order |
max_height |
unset | only fonts at most this many lines tall |
favourites |
56 names | font names for a Favourites section, first in the list; a name shared by several fonts brings all of them |
[themes.<name>] |
dark, light |
page (background) and muted (labels) |
[colors] |
lime, ink, soil, gold, azure, rose | named colours: "#RRGGBB", or { dark = "…", light = "…" } per theme |
[[styles]] |
six styles | what ← → cycles, in file order |
Each style has a name and a kind:
kind |
Fields | Paints |
|---|---|---|
solid |
color |
every glyph character in one colour |
vgrad |
from, to |
a top-to-bottom blend, one colour per row |
ansi-hue |
families, neutral |
colour fonts: each ANSI colour takes the family colour nearest in hue; greys take neutral. Shade is kept by blending from the page, so bright and dim parts stay apart. |
ansi-ramp |
color |
colour fonts: every ANSI colour on one ramp, by lightness |
ansi-original |
none | colour fonts: the font's own 16 colours, as VGA RGB |
Colour fonts cycle only the ansi-* styles, so their shading is never flattened; plain fonts cycle the rest.
Dataset
data/ holds the capture the TUI reads: every font's A–Z, a–z and space glyphs as one
gzip JSON bundle, plus the raw FIGlet and TheDraw font files TAAG loads. data/README.md
describes the format, the compose rules and what they reproduce.
Development
Needs mise. Everything else comes from mise.toml.
git clone https://github.com/morris-frank/wordmark && cd wordmark
mise run setup # toolchain, hooks, verify
mise run run # the TUI, from the clone's data/
mise run check is the definition of done and is what CI runs. AGENTS.md is the
working agreement.
Release files for wordmark 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| wordmark-0.1.0.tar.gz | 10.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| wordmark-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 22.6 kB
Release files / wordmark-0.1.0.tar.gz
| Download URL | wordmark-0.1.0.tar.gz |
|---|---|
| Size | 10.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
adfb74e8b4674fe6b5b91c8c9f7ec7759d8c76bac2c99671a31b08dab03cb5c6
|
|
BLAKE2b-256 checksum How to use checksums |
cc3c0b9316f51999ba97af3e0d17a0fe6ebc6b8a88cf615ede6cea672f894b42
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.20 {"installer":{"name":"uv","version":"0.12.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / wordmark-0.1.0-py3-none-any.whl
| Download URL | wordmark-0.1.0-py3-none-any.whl |
|---|---|
| Size | 11.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
569d244e9f9197c732ce1b1dc5086fabaa267d34222bdc98fcf7fc2f5897d55b
|
|
BLAKE2b-256 checksum How to use checksums |
1f13bef47403a431feb469f2ff56d7ea7e946405ab76ec39edef2307e33201da
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.20 {"installer":{"name":"uv","version":"0.12.20","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|