FIELD NOTES · ACCEPTANCE EXERCISES

Test the names your bilingual font subset can miss

A Chinese headline looking correct does not prove every staff name will use the intended font. Commission a small text-coverage sheet containing the real supported scripts, punctuation and uncommon characters, then check both the declared ranges and the actual font files. Keep typography evidence separate from a general loading-speed diagnosis.

Who should use this acceptance brief

Bilingual corporate and professional-service websites. Use this as a scoped website handover task. Where real system evidence is required, teaching examples are not a substitute.

Source-bound platform fact

unicode-range limits which characters a font face is declared to cover; it does not add missing glyphs to the font. Rendering may fall back when a required glyph is unavailable. MDN: unicode-range · Checked 16 October 2026.

Filled teaching example

Synthetic example, not a client case. Finite inputs, expected decisions and counterexamples follow; no live integration is claimed.

On narrow screens, scroll to read the complete table.

Input / caseCheck basisExpected decision
Chris + 邓Latin + basic CJK declareddeclaration covered
𠮷only U+4E00–9FFFoutside declaration
邓 in declared rangefont cmap not inspectedglyph still unverified

Run the acceptance exercise

  1. Create a permitted synthetic coverage string for supported languages and uncommon-character cases.
  2. Check code-point ranges, then inspect actual font glyph coverage separately.
  3. Render at the final sizes on supported devices and compare fallback, baseline and line wrapping.

Interpret the result and retain evidence

The finite function checks declared code-point ranges only. A declaration-covered result is not a glyph pass. Save the font-file hash and rendered evidence for each exception; do not replace a person’s character or quietly change the official name to make the font work.

Limits before implementation

No personal roster is published, no font installed and no existing font changed. Excludes font licensing and complete language support claims.

Replay the finite example

Save both files in one folder and run with Node22.13 or newer. The example sends no network requests and changes no account or site. Filled inputs and expected outputs · Inspectable functions

node decision-check.mjs bilingual-font-subset-coverage.json