font-synthesis Demo - Online Control Browser Bold/Italic Generation
Toggle browser‑generated bold and italic when a real italic is missing. Understand and control font fallback rendering.
UD5 Toolkit
Test document.fonts — wait for fonts ready, measure load times & inspect FontFaceSet
document.fonts. Please use a modern browser (Chrome 35+, Firefox 41+, Safari 10+, Edge 79+).
document.fonts
| Family | Weight | Style | Status | Check() |
|---|---|---|---|---|
| Click "Refresh List" or load fonts to populate | ||||
Wait for all fonts ready
Load a specific font
Check if font is loaded
Iterate all fonts
document.fonts — a FontFaceSet object that represents all fonts currently registered on the page. It exposes .ready (a Promise), .load(), .check(), and .forEach() methods, giving developers fine-grained control over font loading behavior.
document.fonts.ready returns a Promise that resolves when all fonts on the page have finished loading (or failed). This includes fonts defined via @font-face in CSS as well as fonts added dynamically via FontFace + document.fonts.add(). If all fonts are already loaded at the time of access, the Promise resolves immediately. This is the most common method to safely trigger rendering after web fonts are available, helping avoid FOIT (Flash of Invisible Text).
document.fonts.load(fontSpec) triggers loading of a specific font (e.g., 'bold 16px "Roboto"') and returns a Promise that resolves when that particular font is ready. document.fonts.ready, on the other hand, waits for all fonts on the entire page. Use .load() when you need to preload a specific font before using it; use .ready as a global "all fonts done" gate.
font-display: swap with the Font Loading API. Set font-display: swap in your @font-face rules so the browser uses a fallback font immediately. Then use document.fonts.ready.then(() => { ... }) to detect when the custom font arrives, and apply a class to re-render or adjust layout if needed. For critical text, you can also use document.fonts.load() early in the page lifecycle to pre-warm specific fonts before they are needed for rendering.
document.fonts) is supported in all modern browsers: Chrome 35+, Firefox 41+, Safari 10+, Edge 79+, and Opera 22+. It is not supported in Internet Explorer. For IE compatibility, you would need a polyfill or fallback approach (e.g., using the Font Face Observer library). You can feature-detect support by checking if (document.fonts && document.fonts.ready) { ... }.
FontFace constructor to create a font programmatically: const ff = new FontFace('MyFont', 'url(/font.woff2)', { weight: '700' });await ff.load() and document.fonts.add(ff) to register it. This is powerful for loading fonts on-demand without needing CSS @font-face declarations. The font becomes available immediately for rendering after being added to document.fonts.
Toggle browser‑generated bold and italic when a real italic is missing. Understand and control font fallback rendering.
Build <link> tags for preload, prefetch, preconnect, and dns‑prefetch. Improve page load speed with correct priorities. Copy the optimized HTML.
Demonstrate how to yield heavy computation to user input using the isInputPending API. Keep UI responsive.
Create multi‑step keyframe animations by adding stops and properties. Play and pause. Copy the complete CSS. Intuitive UI.
Run a CPU‑heavy calculation (e.g., prime numbers) in a Web Worker and see the UI stay responsive. Code snippet provided.
Create CSS animations and transitions without coding. Define keyframes, easing, and duration. Copy the @keyframes and animation code instantly.
Use your microphone to dictate text and see it appear live. Also upload an audio file for transcription (limited). All local.
Use your microphone to dictate text and see it appear live. Also upload an audio file for basic transcription. All local.
Decode Base64 encoded strings back into viewable images and download them as PNG. Useful for debugging APIs and data URIs. Secure local processing.
Repeat the growing color sequence. How far can you go? Classic memory game with sound and animations.
Build a responsive masonry layout using the column‑count property. No JavaScript. Copy the minimal CSS.
Paste a corpus of text and generate new random sentences that mimic the style using Markov chains. Local only.
Paste Pug template code and compile it to HTML. See the rendered output instantly. For static site devs.
Create half‑hour time blocks for your day. Drag to resize and reorder. Export as image. All local.
Enter a cron expression and get a plain English description of when it runs. Understand complex schedules instantly. Developer friendly.
Fill in daily work hours and tasks, and generate a printable PDF timesheet. Clean, professional layout. Local.
Try the experimental masonry layout in CSS Grid (enabled via flag). See how items flow. Copy the code. For cutting‑edge browsers.
Visualize random-width plank layout and calculate total square footage plus waste for hardwood or laminate flooring.
Click for an endless stream of random dad jokes and puns. Copy and share. Guaranteed to make you groan. All local.
Re‑order words to sound like Master Yoda. Not perfect, but amusing, this tool is. Local and quick.
Start recording and watch for Long Tasks that block the main thread. See task duration and attribution. Improve Interaction to Next Paint.
Take a normal sentence and reverse the word order. Sound like Yoda or just play with language.
Set up resources and processes and run the Banker's algorithm to check for safe states. Classic OS deadlock avoidance demo.
Drag tasks into a 2x2 grid (Urgent vs. Important or Impact vs. Effort). Visual decision aid. Local.
Enter a hexadecimal string and decode it as a 32‑bit or 64‑bit floating‑point number. Low‑level developer tool.
Divide your day into blocks with color codes. Drag tasks into slots. See free time at a glance.
Convert units of force: Newton, kilonewton, pound-force, dyne. Handy for physics homework and engineering. Private, no upload.
Paste a git log and generate a polished changelog grouped by type (feat, fix, etc.). Follows Keep a Changelog format. Local.
Compress and decompress text using the browser's native Compression Streams API. See the binary output size.
Calculate large Fibonacci numbers in a Web Worker. See the UI remain responsive. Copy the pattern for your app.