docs(android): M12 phase 3 as landed #115
Reference in New Issue
Block a user
No description provided.
Delete Branch "docs/android-theming-nav-phase-3"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
§5.3 rewritten against what the build measured rather than what the plan estimated, plus a "Phase 3 as landed" section and the ✅ in §8. Targets
edge, like every M12 phase.Three corrections to the drafted §5.3
1. The APK estimate was wrong by more than 3×. "Roughly 1.5–2.5 MB" becomes a measured before/after table — unsigned release, R8 full-mode + resource shrink, on
edgeat the phase 2 merge:Merriweather is 6.08 MiB of the 8.15 on its own: upstream ships it as a three-axis
[opsz,wdth,wght]variable font, 4.6 MB per style, deflating only 31% where the others manage 50–60%. The section records the two cheaper options the org lead costed and declined — Google's own static 400/700 builds (whole app ≈ 6.8 MiB) and not bundling it at all (≈ 6.2 MiB, at the price of a serif option that silently does nothing on Android) — so the number is not re-litigated from scratch in six months.2. Family lookup must be global, never scoped to the role's option list. The server validates an admin-entered font against
FONT_OPTIONS[role], but a preset's tokens are copied verbatim byresolveThemeTokensand never pass through that dropdown:modernpublishes--display: 'Work Sans', Arial, sans-serifandfantasypublishes--sans: 'EB Garamond', Georgia, serif, neither of which its own role offers. A per-role lookup would have missed the display face of one preset and the label face of the other. This is the same bypass §5.4 already records for--shadow-card, in a different token group.3. Italics mirror the website's four, rather than being skipped — EB Garamond, IM Fell English, Merriweather and Playfair Display, exactly the set
client/index.htmlrequests one for. And every bundled family supplies the four weights the scale asks for (400 body, 500/700 labels, 600 display), because a family is not confined to the role its dropdown lives in. Two documented exceptions, both upstream facts: IM Fell English has one weight per style, and Cinzel keeps M5's 500/600/700 since the server offers it in the display role alone.Also
"Phase 3 as landed" records the
Typography-implements-equalsfinding (like phase 2'sShapes, unlike phase 1'sColorScheme), why there is deliberately noLocalShardTypeface, that licences live inapp/licenses/and neverres/font/, and that three of the seven families carry a Reserved Font Name — a further reason the binaries are taken verbatim rather than subsetted locally.Android-app: RunicGateway/Android-app#36.