subsetting

Fonts are split into subsets by writing system (latin, latin-ext, cyrillic, greek, and so on). The CSS the CDN serves declares each subset as a separate @font-face rule with a unicode-range, and the browser downloads only the subsets that match characters actually on the page.

what this looks like

A request like:

https://cdn.onlyfonts.ai/css2?family=Inter:wght@400

returns CSS along these lines:

/* latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(https://cdn.onlyfonts.ai/inter/regular.latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, ...;
}
/* cyrillic */
@font-face {
  font-family: 'Inter';
  ...
  src: url(https://cdn.onlyfonts.ai/inter/regular.cyrillic.woff2) format('woff2');
  unicode-range: U+0400-045F, ...;
}

An English-only page downloads one small latin file. A page with Ukrainian text additionally fetches the cyrillic subset. You don’t configure anything — it happens per visitor, per page.

why it matters

Full font files often carry hundreds of kilobytes of glyphs a page never renders. Subsetting typically cuts the transferred size by 60-90% for single-script pages, which directly improves first-render and LCP.

subset availability

Subsets are generated during catalog processing based on each font’s actual character coverage. A font’s detail page lists its supported languages and scripts; subsets correspond to those. Fonts without multi-script coverage are served as a single file.

Cyrillic note

On onlyfonts, Cyrillic support means Ukrainian support: a font is tagged Cyrillic only when it covers the Ukrainian alphabet (including Ґ, Є, І, Ї). See language support.