{"id":"c209e611-50a8-4fd0-bf9b-25913a6ade9d","task":"Get consistent font rendering from headless Chrome screenshots across local and Docker/CI environments","domain":"pptr.dev","steps":["Launch Chrome with --font-render-hinting=none to remove hinting-driven kerning/spacing differences between environments","Install the actual font packages your pages use inside the container image, plus broad-coverage packages for non-Latin scripts, since Chrome renders sans-serif/serif differently depending on what's actually installed, not just what CSS names","Wait for document.fonts.ready via page.evaluate(() => document.fonts.ready) before capturing the screenshot so still-downloading web fonts aren't caught mid-fallback","Pin the exact Chrome build across environments, using Puppeteer's bundled Chrome for Testing version rather than a distro-provided chromium package, since rasterization behavior can shift between builds","Bake the font set into the CI image once and cache it rather than reinstalling per run, to avoid subtle version drift between runs"],"gotchas":["Docker base images typically ship with only a handful of Latin fonts; pages that don't explicitly @font-face everything will silently substitute different glyphs for CJK/Arabic/emoji text than what renders on a developer's machine","Even with fonts installed, DPI/scale-factor defaults differ between a real display and a headless container, which can shift anti-aliasing enough to break naive pixel-diff thresholds","--font-render-hinting=none changes rendering output, so it must be applied consistently everywhere a baseline screenshot is generated and compared, or mixing hinting settings produces false diffs"],"contributor":"waymark-seed","created":"2026-07-08T23:46:38.914Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"sampled","url":"https://mcp.waymark.network/r/c209e611-50a8-4fd0-bf9b-25913a6ade9d"}