Cross-site Font Probe — product requirements
Cross-site Font Probe is an in-browser diagnostic that measures, on the visitor's own device, how text and flag emoji render: it detects the operating system and browser, counts truncated characters, checks which fonts are installed, resolves CSS font stacks and measures flag glyph widths and overflow. Results are shown on three tabs.
Problem. Teams shipping multilingual interfaces need to know whether fonts and emoji render and fit the same way across operating systems and browsers, using real measurements rather than assumptions.
Users
- Front-end developer — See which fonts exist and where text is cut off on a given device.
- QA engineer — Compare measurements across platforms and trust that every table is internally consistent.
Goals
- Measurements run in the visitor's real browser and finish quickly.
- Every table is internally consistent on any platform: counts add up and statuses match their numbers.
Out of scope
- Absolute pixel values (they differ per platform)
Contents
Status and tabs
Measurement status, environment detection and the three-tab layout.
- Header "Font probe"; status starts as "Đang đo…"
- Within 5 s the status reads "Đo xong · <OS> · <Browser>" in green, matching the actual platform (for example macOS · Chrome)
- Tab 1 is selected on load with panels 2 and 3 hidden
- Selecting tab 2 shows panel "2A · Font availability" only; tab 3 shows only panel 3
Truncation measurements
Two 420 px single-line boxes holding the same Vietnamese sample.
- Total is 474 in both rows
- Visible + Cut = 474 in each row; Visible > 0 and Cut > 0
- Both are 420 px wide, single line, overflow hidden
Font availability and stacks
Which fonts are installed and how CSS stacks resolve.
- MISSING rows show "Δ 0.00" in red; AVAILABLE rows show a non-zero Δ in green
- On macOS Segoe UI and Segoe UI Emoji are MISSING and Arial is AVAILABLE; on Windows Segoe UI is AVAILABLE
- Advance width values end in " px", have two decimals and are greater than 0
Flag measurements
Country-code rows, overflow checks and flag glyph widths.
- 3A rows: Việt Nam +84, United States +1, Japan +81, South Korea +82, Singapore +65, Germany +49, Brazil +55, each with its flag
- 3B has 7 rows; Status is "truncated" exactly when scrollWidth > clientWidth, otherwise "ok"
- At least United States and South Korea are truncated at 150 px
- Reads width(flag) = X px · width("VN") = Y px · Δ = Z px with Z = X - Y within 0.01
- Status "scrollWidth A / clientWidth B → ok" or "truncated", consistent with A <= B meaning ok
- Typing does not change the value