Free tools Windows power users keep installed
One-click scans. No signup required.
If Devanagari text is blank, displayed as boxes, or incorrectly shaped in a Puppeteer screenshot on Linux, first make sure the font is installed and discoverable in the exact runtime that launches Chromium. Then check which browser build Puppeteer is using: a Chromium change dated March 4, 2026 added Linux default mappings for Devanagari fonts, but that change does not guarantee that every packaged browser includes them.
1. Identify the Chromium build and Linux runtime
Puppeteer delegates rendering and screenshots to Chromium, so the browser’s Linux environment determines which font files it can use. A font installed on your laptop or Docker build host will not help if screenshots run in a separate container, CI job, or serverless runtime.
| # | Preview | Product | Price | |
|---|---|---|---|---|
| 1 |
|
Sanskrit Devanagari Font: Open Type Design, Indic Shaping & Spell Check | $20.00 | Buy on Amazon |
As an Amazon Associate I earn from qualifying purchases.
Record the Puppeteer version, the actual Chrome or Chromium executable and version, the Linux distribution, and where the process runs. Puppeteer downloads a compatible Chrome for Testing by default, but configuration can change the selected browser. See the Puppeteer installation and browser download guidance and system requirements.
Do not assume that a recent Chromium font change applies to the executable you are running. The Chromium source change dated March 4, 2026 says Linux previously had no configured default fonts for Devanagari and adds mappings for standard/sans-serif, serif, and fixed-width text. Downstream distributions and older browser builds may differ; check the version in the deployment itself. Read the Chromium change.
2. Check font availability where Chromium runs
Confirm that the runtime can discover a Devanagari font. For typical sans-serif styling, check for Noto Sans Devanagari; if the page uses serif text, check for Noto Serif Devanagari. Chromium’s documented mapping uses Noto Sans Mono for fixed-width text.
Install the appropriate font package for the target Linux distribution and release, or bundle the font files into the runtime image. Package names vary, so verify them against that distribution’s repositories rather than copying an installation command for another release. Puppeteer’s Linux and Docker troubleshooting guidance discusses browser dependencies; font availability is a separate concern from the shared libraries Chromium needs to launch.
3. Refresh font discovery and restart Chromium
After adding font files, refresh font discovery with the fontconfig tooling supplied by the target distribution, then start a fresh Chromium process. The exact command depends on the Linux distribution and image; there is no single command established for every runtime. Ensure the font installation and refresh happen in the final runtime image or environment, not only on the build host.
Recommended Free Tools
4. Test with an explicit font and a minimal page
Use a small diagnostic page containing known Devanagari text, request the intended family explicitly, and capture it with Puppeteer. This helps separate font coverage or resolution problems from styles and scripts elsewhere on the page.
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ headless: true });
try {
const page = await browser.newPage();
await page.setContent(`
<!doctype html>
<meta charset="utf-8">
<style>
body { font: 32px "Noto Sans Devanagari", sans-serif; }
</style>
<p>नमस्ते दुनिया</p>
`);
console.log(await page.$eval('p', el => getComputedStyle(el).fontFamily));
await page.screenshot({ path: 'devanagari.png' });
} finally {
await browser.close();
}
})();
A computed CSS family name indicates what the style requests; by itself, it does not prove that Chromium found a font with the necessary glyphs. Inspect the screenshot as well. If the text still appears wrong, verify that the intended executable and font files are present and discoverable in the runtime, and that the selected font covers the characters being rendered.
5. Troubleshoot by symptom
| Symptom | Likely area to check | Next step |
|---|---|---|
| Blank text or tofu (boxes) | The runtime cannot resolve a font with the required glyphs, or the selected font lacks coverage. | Check font visibility in the actual runtime, then test with an explicit Devanagari family. |
| The font exists on the host but not in the screenshot | The screenshot process may run in a container, CI image, or serverless runtime with a different filesystem. | Install or bundle the font in the environment that launches Chromium. |
| Sans-serif works but serif or monospace does not | The CSS requests a different generic family, which can use a different default mapping. | Check the matching family: Noto Sans Devanagari for sans-serif, Noto Serif Devanagari for serif, and Noto Sans Mono for fixed-width under the documented Chromium mapping. |
| Chromium will not launch | This can be a missing browser dependency rather than a missing Devanagari font. | Use Puppeteer’s Linux troubleshooting guide to diagnose launch dependencies separately from font rendering. |
| The fix works locally but not in deployment | The deployed browser build, image, or font configuration may differ from the local setup. | Check the executable version and font availability inside the deployment runtime, then launch a fresh browser process. |
6. Make font support part of the runtime image
For Docker and CI, treat fonts as runtime dependencies alongside Chromium: add them to the image or environment that performs the capture, and validate a sample screenshot after changing the image. Keep the browser version and Linux image identifiable in deployment logs so a browser update or image change can be investigated without relying on what is installed on a developer workstation. Puppeteer’s Linux and Docker guide covers browser setup and related dependencies.
Or skip the browser setup
If the goal is simply a website screenshot, ScreenshotNeo provides a screenshot API and MCP server. For example, one GET request can return a screenshot; consult the ScreenshotNeo API documentation for parameters and response details.
Crashes, No Sound, or Screen Glitches?
Random freezes, missing sound and display glitches usually trace back to one bad driver. Find and replace yours safely.Free scan · under a minutePC Slower Than It Used to Be?
A free scan shows the junk files, broken settings and background clutter dragging Windows down - then fixes them in one click.Free scan · Windows 10 & 11curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp
ScreenshotNeo accepts cookie or consent banners before capture and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each of those steps can be turned off. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and response headers indicate the page verdict and billing status. Its MCP server provides screenshot and PDF tools for AI agents. The free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots.
Sign up for 1,000 free screenshots a month, with no card required.
Frequently Asked Questions
Does installing Noto Sans Devanagari on my development laptop fix a container screenshot?
Only if Chromium uses that same environment. A separate container or runtime needs access to the font itself.
Does a computed CSS font-family prove Chromium rendered Devanagari with that font?
No. It shows the requested family, not that Chromium resolved a font with the needed glyph coverage; inspect the captured output too.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




