BL-17007: Andika in apps built with Reading App Builder

Preflight report for branch BL-17007-rab-andika at 9a8aa8b588, 2026-10-10.

Draft PR Mergeable Bots quiet No decisions waiting

What this PR is about

Problem

In apps built on Publish > Apps (Reading App Builder), text in Andika shows in the phone's own font, with a two-story "a" instead of Andika's single-story one. Other fonts work. A tester reported it on 6.5.101 Beta.

Cause

BloomPUBs never embed Andika, because Bloom Reader and other hosts supply it to bloom-player. A RAB app doesn't:

  • It ships Andika under names bloom-player never asks for (app-builders #2510).
  • RAB apps have no internet permission, so bloom-player's fallback (downloading Andika from bloomlibrary.org) fails even online.

What the PR does

A stopgap until RAB fixes #2510. It goes to master, and to Version6.5 in a separate PR after it merges.

  • BloomPUBs made for an app now embed Andika like any other font, with only the faces the book uses. Other BloomPUBs are unchanged.
  • Text in the older "Andika New Basic" gets the matching Andika faces, and in an app's BloomPUB the book's references to it are rewritten to Andika.
  • That rewrite, which Bloom already uses for fonts it can't embed, now also catches quoted font names. That part applies to every ePUB and BloomPUB.
  • It fixes only apps built through Bloom. A BloomPUB added to RAB by hand still lacks Andika.

Quality gate

CheckResult
C# build and full test suite (agent-dotnet)Pass 3765 passed · 0 failed · 1 skipped; CSharpier format check clean
Opt-in real Reading App Builder build testCouldn't run on this machine. It failed in setup, before RAB ran, because its non-ASCII test collection needs an 8.3 short path and this worktree is on a ReFS drive, which has none. It passed on Andrew's machine before this run's commits.
TypeScript tests, lint, typecheckNot run: no front-end code in the diff
E2E specs at nightly window size (repo check)Did not apply: the diff changes no e2e spec
Merge with masterClean, up to date

What changed this run

John took the PR over from Andrew and answered the open decisions. Following them, this run made "Andika New Basic" text use the embedded Andika, and made the font rewrite catch quoted names after Devin found the gap. It also refreshed the PR description and the card's test ideas. 565f078b78, 9a8aa8b588.

Reviewer outcomes

ReviewerOutcome
Local review (light)Clean. A sub-agent reviewed the code before this run's commits, and I reviewed the two new commits inline before pushing.
DevinComplete for 9a8aa8b588; re-review clean. Across the PR, two bugs about Andika New Basic text were found and fixed: the text itself and quoted names. Three flags were answered: cached BloomPUBs, test scope and PR description. All threads are resolved. Consultation log.
Other review botsNone active on this repo. CodeRabbit has a config file but doesn't post.
CIComplete: pr-automation passed. It's the only GitHub check.

Worth knowing

  • Nobody has seen this final version on a phone. An earlier version of the branch showed Andika on Andrew's phone, and the "Andika New Basic" handling is covered only by unit tests.
  • The font rewrite now runs with wider patterns for every ePUB and BloomPUB whose book uses a font Bloom can't embed. The card's test ideas include a check for that.
  • Two manual test cases check Andika on an offline phone in their 6.6 runs: 831 Basic Install of RAB for Bloom and 799 Bloom Apps using stand-alone RAB.

What's next

Nothing is waiting on a decision.

  • Your own review of the PR, then pr-ready-for-human to hand it to a teammate.
  • After it merges to master: a cherry-pick onto a new branch off Version6.5, as a separate draft PR referencing BL-17007.
  • Once Bloom moves to a RAB that fixes #2510, remove the stopgap. A comment at kRabInstallerVersion in RabProjectService.cs says so.