Bundles Noto Sans/Noto Sans Mono (regular/bold/italic/bold-italic, OFL licensed) into iris-core and registers them ahead of the platform's own fonts in the SansSerif/Monospace generic-family fallback lists, so text no longer depends on the platform's font enumeration succeeding or resolving weight/style correctly. Iris's phone report showed bold spans rendering as blank gaps of the correct advance width -- the glyph simply wasn't rasterised -- while the emulator's system fonts happened to resolve every style; a bundled static-per-style family removes that platform-dependent step entirely. TextData::font_diagnostics() reports what was found/resolved, for the startup log and the Diagnostics page. Also applies a content/device-pixel scale that neither backend had before: UiRenderNode::new/resize now take the window size explicitly (logical units) rather than deriving it from the surface's physical config, so a 16.0 font size is 16 logical units rather than 16 raw device pixels. Wired on desktop via window.scale_factor() (input events, window_size, and the render node's own seed); the Android side (density via DisplayMetrics, touch coordinates, layout root size) is the next commit. Also adds WgpuErrorLog and a per-frame atlas-grow counter (GpuTextures::take_pages_grown), both plumbing for the Android diagnostics page in the next commit. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
624 KiB
624 KiB