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.
67 lines
2.7 KiB
Markdown
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.
|