The Inter Core faces (previously Inter4CJK) leave East Asian ambiguous
punctuation and symbols uncovered so that the document's CJK font can
render them, but the next family in the stack was a Latin system font,
which claimed most of those characters before the language-aware system
fallback could pick the right CJK font - and characters it lacked could
land in an unrelated one (like Apple SD Gothic Neo on Chinese pages in
Chrome on macOS). The zh/ja/ko stacks now name the platform defaults
explicitly (PingFang SC / Microsoft YaHei / Noto Sans CJK SC, Hiragino
Sans / Meiryo / Yu Gothic / Noto Sans CJK JP, Apple SD Gothic Neo /
Malgun Gothic / Noto Sans CJK KR), so per-glyph matching lands there
deterministically, and sites can splice a CJK webfont between
'Inter Core' and the system families. Traditional Chinese currently
shares the zh (Hans) rule; the TC variant is documented in the script.
BREAKING CHANGE: the Inter4CJK font family has been renamed to
'Inter Core'. Custom --vp-font-family-base overrides referencing
Inter4CJK must be updated.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
scripts/subsetFonts.py now regenerates the woff2 subsets and fonts.css
from the ranges in scripts/fontSubsets.json (pinned Inter release,
byte-reproducible builds):
- a new lazily-loaded `symbols` subset covers every glyph of the full
font that the existing subsets skipped (arrows, math, geometric
shapes, enclosed alphanumerics, keyboard symbols, ...); U+2318 and
U+21A9 live in the latin subset instead as the theme's chrome uses
them
- Inter4CJK faces are generated as the subset ranges minus East Asian
Ambiguous punctuation/symbols so that CJK fonts render those in CJK
documents, and now also apply to Korean
- the base typography variables move into fonts.css next to the faces;
webfont mode no longer declares the Inter4CJK override (there is no
such family on Google Fonts), and the redundant
`font-optical-sizing: auto` is gone
- fix: the `:lang(zh, ja, ko)` selector list syntax is not supported in
Chrome and silently matched nothing inside the forgiving `:where()`,
so the CJK font handling and `line-break: strict` never applied there
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- The main reason behind this change is because previously the FS-based
timestamp is inaccurate and will change on every remote deployment in
CI environments, resulting in cache invalidation on every build. Using
git timestamps makes them stable.
- This is now disabled by default for performance reasons, as getting
the git timestamp requires spawning a child process and is expensive.
To enable it, use the new `lastUpdated: true` config option.