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

2.7 KiB

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

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.