Files
PageScribe/brand/README.md
PageScribe 5b64d268f0 Add UmbraTools-branded app icon
PageScribe joins the UmbraTools suite, so give it an icon in the shared
"umbra" identity: an open bronze book bound along its gutter by a glowing
cyan weave, held inside a broken reticle ring on a midnight field.

- Full adaptive icon: background + foreground + themed monochrome layer,
  with the mark sized to the 66dp safe circle so circle, squircle and
  rounded-square launcher masks all crop it cleanly.
- Legacy ic_launcher / ic_launcher_round bitmaps at all five densities.
- 1024 master lockup, Play Store 512 icon and the rounded-square mark in
  brand/, next to the generator and design notes.
- brand/generate_icons.py rebuilds every asset deterministically (SVG via
  cairosvg for the gradients and glow, Montserrat for the wordmark);
  brand/README.md documents the palette, what each element means, and how
  to regenerate.

The old flat vector drawable/ic_launcher.xml is replaced; the manifest now
points at @mipmap/ic_launcher with a roundIcon.
2026-10-15 12:16:25 -07:00

67 lines
2.7 KiB
Markdown

# PageScribe icon & brand
PageScribe is part of the **UmbraTools** suite, so its icon follows the
UmbraTools UX brand: a dark, luminous "umbra" identity built from interwoven,
glowing forms.
## The mark
An open **book** whose gutter is bound by an interwoven, glowing **weave**,
held inside a broken **reticle** ring.
| Element | Meaning | Colour |
| --- | --- | --- |
| Midnight field | the "umbra" depth the suite is named for | Midnight Blue `#0A0F1F` |
| Reticle ring (4 arcs) | capture / framing — PageScribe photographs spreads | Electric Cyan `#00BFFF` → Deep Teal `#007A8C` |
| Open book | the object being read | Bronze `#A67C52` |
| Ruled lines | the text a scribe transcribes (OCR) | Ice Blue `#CFE9FF` |
| Weave through the gutter | the suite's interwoven-knot motif; the energy that turns pages into text | Electric Cyan `#00BFFF` with a near-white filament core |
The ring is drawn as four arcs with cut-outs on the diagonals, so the mark reads
as a scanner target rather than a plain medallion — that is PageScribe's
contextual twist on the shared UmbraTools emblem.
Everything is **vertically symmetric**, and every gradient is purely vertical,
so the left and right halves of the book and weave are pixel-identical. The
emblem is sized to fit the **66 dp adaptive-icon safe circle**, so no launcher
mask (circle, squircle, rounded square) ever clips it.
## Files
```
brand/
pagescribe-icon-1024.png master lockup: mark + "PageScribe" wordmark
pagescribe-playstore-512.png Play Store listing icon (512)
pagescribe-mark-1024.png the mark on its rounded-square tile, no text
generate_icons.py produces every asset below, deterministically
```
The Android resources it writes:
```
app/src/main/res/
mipmap-anydpi-v26/ic_launcher.xml adaptive icon (bg + fg + monochrome)
mipmap-anydpi-v26/ic_launcher_round.xml same, for round masks
mipmap-{m,h,xh,xxh,xxxh}dpi/
ic_launcher.png legacy rounded-square bitmap
ic_launcher_round.png legacy circular bitmap
ic_launcher_foreground.png adaptive foreground layer
ic_launcher_background.png adaptive background layer
ic_launcher_monochrome.png themed-icon layer (weave cut as a groove)
```
## Regenerating
```bash
pip install cairosvg pillow
python3 brand/generate_icons.py
```
Montserrat (SIL Open Font License) is needed for the wordmark. Put
`Montserrat-SemiBold.ttf` and `Montserrat-Light.ttf` in `brand/fonts/`, or point
`FONT_DIR` at a folder that has them, or install Montserrat system-wide.
The generator is deterministic: re-running it reproduces every PNG byte for
byte, so a regeneration only shows up in `git diff` when the art actually
changes.