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.
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.