iris: drop bundled Noto Sans, match Compose's platform-font fonts

Iris's call: "remove the font for now; just match what compose does."
Removes the six embedded Noto Sans/Noto Sans Mono TTFs (3.6 MB) that
TextData::default used to register ahead of the platform's own fonts;
fontique's system font discovery was already on by default and now
runs unshadowed (Roboto/Roboto Flex on Android, fontconfig on the
desktop). .so -3,748,136 bytes (11,193,608 -> 7,445,472), matching the
estimate. Verified fallback still lands on visible tofu for CJK/emoji
rather than blank, and flagged (not fixed) a fontique Android backend
gap that leaves Monospace unresolved -- see RUST.md's "Platform fonts
(2026-09-07)" and DECISIONS.md/IRIS.md's dated entries.
This commit is contained in:
iris committed 2026-09-07 16:14:34 -04:00
1 parent 690161e5e9
commit 896c93a59a
12 files changed
+193 -312

No files matched your search

+34
View File
@@ -5,6 +5,40 @@ they can be judged and reversed later. Detail lives in RUST.md (and IRIS.md
for iris API changes); this file is only the summary. Newest first. Items
marked **DEFERRED** are ones the agent chose not to decide alone.
## 2026-09-07 (platform fonts, not bundled ones)
- **Iris's own decision, carried out as directed**: removed the 3.6 MB of
bundled Noto Sans/Noto Sans Mono TTFs from `iris-core` and load text
from the platform's own font collection instead (`fontique`'s system
discovery, already on by default). Matches what the Compose app does --
it takes body text from `FontFamily.Default` and code text from
`FontFamily.Monospace`, both platform-resolved, and ships no text font
of its own. Rejected alternative (the one this pass had left open
2026-09-06): subsetting the bundled Noto Sans to Latin/common
punctuation instead of removing it outright, which would have kept
identical rendering across devices for a smaller (not zero) size cost;
Iris chose to match Compose instead.
- `.so` **-3,748,136 bytes** (11,193,608 -> 7,445,472), matching the
original 3.6 MB estimate. Fallback still lands on the platform's own
tofu for a codepoint no resolved face has (checked with CJK + emoji on
desktop) rather than blank space, so the UI_RULES unknown-glyph rule
still holds.
- **Flagging for Iris, not blocking on it**: this fontique version's
Android backend never resolves the `Monospace` generic family at all
(confirmed on this checkout's emulator, `mono=None` in the startup
diagnostic) -- a pre-existing ordering bug in fontique's own
`fonts.xml` parsing, not something this change introduced, but this
change is what stopped masking it (the bundled mono font used to be
registered ahead of the broken platform lookup, so it always won).
Effect: code blocks and the tool-card chevron marks fall through to
the same face as body text on Android instead of a genuinely
monospaced one -- still visible, not blank, just not monospaced.
Compose does not share this gap; it resolves `FontFamily.Monospace`
through Android's own `Typeface.MONOSPACE`, not through fontique.
docs/RUST.md's "Platform fonts (2026-09-07)" has the full account and
why a fix (an OEM-specific named-family pin, or patching around
fontique) is left as a follow-up rather than done in this pass.
## 2026-09-06 (how a tool call looks, P1b)
- **A card that never got a result says "no result", in yellow, and it is