v1.4.0 - Per-device font resource optimization
What's changed
Font resources are now split by screen size to reduce per-device binary size.
Rationale
Previously, all 23 fonts were declared in a single shared resources/fonts/fonts.xml and bundled into every device's .prg binary — even though each device only uses 7–11 of them. Small-screen devices (240×240) were shipping with large-screen segment fonts (145px) they never render, and vice versa.
Changes
- Split font declarations into 6 size-specific resource directories (
s240,s260,s280,s360,s390,s454), each declaring only the fonts needed for that screen-size category - Shared fonts (
icons,moon) remain in the commonresources/fonts/path since all devices use them - Font files are symlinked from
size-resources/back toresources/fonts/to maintain a single source of truth — no file duplication - All 96 device entries in
monkey.jungleupdated with the appropriate size-resource path
Expected gains
If the Garmin compiler does not already perform dead resource elimination (likely), the per-device savings are:
| Screen size | Devices | Fonts before → after | Est. savings |
|---|---|---|---|
| 240×240 | fenix 6s, FR245, FR745... | 23 → 7 | ~60 KB |
| 260×260 | fenix 6/7, FR255, FR955... | 23 → 7 | ~60 KB |
| 280×280 | fenix 6X/7X, enduro... | 23 → 7 | ~60 KB |
| 360×360 | venu 2s, FR265s | 23 → 11 | ~45 KB |
| 390×390, 416×416 | fenix 8 43mm, venu, epix... | 23 → 10 | ~50 KB |
| 454×454 | fenix 8 47mm, FR965... | 23 → 10 | ~40 KB |
The biggest wins are on the smallest, most memory-constrained devices (some with only 96 KB).