About

A font delivery network built so that what a visitor downloads is exactly what the page needs — and so that you can see the number before you commit to it.

What this is

FontServer hosts open-licence typefaces and serves them as webfonts: a stylesheet you link from your page, and the font files that stylesheet points at. It is the same shape as any hosted font service, with three deliberate differences.

Subsets are real files, not hints

A script subset here is a genuinely smaller font, cut from the source at upload time. A Latin subset of a large multi-script family is typically under a tenth of the full face. The common alternative — shipping the whole font and declaring a narrow unicode-range — makes the browser download every byte anyway the moment one matching character appears on the page.

One format per browser

The CSS you receive contains a single src, chosen for the browser that asked for it. A conventional four-format fallback chain costs a few hundred bytes in every @font-face block, of which each browser uses one entry and ignores the rest. At the volume a font CDN serves, that adds up to real bandwidth spent on lines nobody reads.

An honest byte count

Pick your weights and scripts on any font page and the figure updates as you go. It is the compressed size of the files a visitor will actually fetch, not an estimate and not the size of the whole family.

How it is built

Three independent services, so that a failure in one does not take the others with it:

The control plane
Ingests fonts, derives every delivery format and subset, and owns the record of what is published. It has the lowest availability requirement of the three, because no font is ever served from it.
The stylesheet API
Generates @font-face CSS and its JSON equivalent from an in-memory snapshot of the catalogue. It holds no database connection, so it keeps serving through a control-plane outage.
The edge nodes
Serve the font files from local disk. They replicate between themselves as well as from the origin, so a node cut off from the control plane keeps serving its full catalogue and can still catch up from a neighbour.

Every font URL is immutable: its bytes never change meaning, which is what makes a one-year cache honest rather than a gamble. When something is republished, the change propagates by an explicit signal rather than by waiting for a cache to expire.

Every script, equally

The library is general-purpose. Latin, Cyrillic, Greek, Vietnamese, Arabic and Hebrew are all first-class: each gets its own subset, its own accurate unicode-range, and previews rendered in the correct direction. The interface itself ships in English and Persian, which is partly a convenience and partly a discipline — a site that only ever lays out left to right accumulates right-to-left bugs, and a service hosting Arabic-script families cannot afford them.

Common questions

Does it cost anything to use the fonts?

No. Every family in the public library is free to embed. Each one carries its own licence — usually the SIL Open Font License — and that licence, not this service, governs what you may do with the font files themselves.

Do I need an account or an API key?

No. The public catalogue, the stylesheet endpoint and the font files are all unauthenticated. Paste the embed code and it works.

How is this different from other font CDNs?

Three things: every subset is a genuinely smaller file rather than a full font with a unicode-range hint; the stylesheet you receive contains one format negotiated for your browser rather than a four-format fallback chain; and the exact download size is shown before you copy anything.

Can I self-host the whole thing?

Yes. The service is a set of independent components you can run yourself: a control plane, a stylesheet API, and as many edge nodes as you need. Nothing calls a third-party service on the request path.

Who runs it

FontServer is operated by FontServer. For anything not answered here, see Contact. The terms that govern use of the service are in the Terms of Service, and what is collected and why is set out in the Privacy Policy.