Перейти до вмісту

Вашою мовою цієї сторінки поки немає. Ви читаєте англійський текст.

Glossary

Font fingerprint

Nobody installs the same set of typefaces. Office suites, design tools and language packs each leave families behind, and a page lists them by measuring text rather than by asking.

A font fingerprint is an identifier a site builds from which typefaces your machine can render.

How a site reads your fonts

A page asks for a string in one named family and names a fallback after it. A family that is not installed never draws, the fallback draws instead, and the width gives the answer away.

Nothing appears on screen and no permission is asked. Hundreds of families are measured in the time the rest of the page takes to load.

  1. 1

    Draws a short string

    One line in the named family, set large so a small difference in shape becomes a measurable difference in width.

  2. 2

    Compares it to the fallback

    Equal width means the family is not there. A different width means it is.

  3. 3

    Collects the set

    The families that answered are folded into one value, and on an untouched machine that value is the same on every visit.

What the list gives away

A font list is the history of a machine. Software brings families with it, and so do the language packs the system was set up with.

  • The software you installed

    A design suite, an office suite and a developer toolchain each leave their own families behind.

  • The languages you work in

    Scripts the system was never set up for are simply absent, and absence reads as clearly as presence.

  • The system underneath

    Every operating system ships families of its own, so the list also states which system it came from.

  • The rare family

    One unusual typeface narrows a machine faster than a dozen common ones, because almost nobody else answers for it.

What our engine does

Every profile declares a set of its own: the families that system always ships, plus about half of the optional ones drawn from the profile seed. Two profiles made on one computer answer with two different sets.

A named family outside the set reports as unavailable, so text falls back exactly as it would on a machine where that family had never been installed.

  • The set varies and the order does not

    Families keep the order of the full list, because a shuffled order would be a signal of its own.

  • Other names for the same files

    On macOS and Linux the set also admits the internal names of families it already carries, because those systems are asked that way.

  • Fonts a page brings itself

    A typeface the page loads from its own address is resolved before any of this and renders as the designer intended.

What the shipping build answers

The lines below come from the acceptance run of the build shipping today. It ran on a Windows profile whose set holds thirty four families.

  • The declared family renders

    The first family of the set is measured against the fallback and comes back wider than it.

    visible
  • Families outside the set stay away

    Five well known families are probed one by one, and those the set does not hold must stay silent.

    0 leaked
  • Generic families follow the set

    Cursive, fantasy and math are assigned from what the profile declares instead of from the host system.

    from the profile

Often confused with

  • Canvas fingerprint

    Text drawn on a canvas depends on the fonts, but the value a site keeps is the picture. Separate surface and separate defence.

  • Web fonts

    A typeface the page downloads is the same for every visitor, so it says nothing about you. Only local families do.

  • The list in a document editor

    An editor shows you the whole system list. What a page measures without permission is narrower than that.

How to check your own

The free check on this site counts the families it finds in the browser you are reading this in and names the first of them.

Inside the app the self-test runs in a profile against the engine that profile launched. It measures the declared family, then probes five well known families, and prints what came back.

What this does not do

  • It does not remove a font from your computer. The set decides what pages are told, and everything you have stays where it is.
  • It does not give a phone profile the fonts of a phone on a desktop machine. Those families are genuinely not there, and the self-test says so instead of passing the line quietly.
  • It does not give each site a different set. The set belongs to the profile, and a list that changes between two tabs of one session is a signal by itself.
  • It does not make every system separate the generic families. Some desktops collapse them with no seed at all, and asking for a difference there would mean faking one.

Check it

Every line above comes from a file you can open.

The font check the self-test runs
apps/desktop/src/lib/fpAudit.js
Where a profile's set comes from
packages/shared/src/index.js
Generic families are assigned from the set
apps/desktop/src/lib/genericFonts.js · apps/desktop/test/generic-fonts.js
The acceptance run quoted above
engine/приёмка-отчёт.json · apps/desktop/test/fp-audit.js

Questions

Can a site read every font I have?
By measuring, only the families it thought to ask about. The interface that hands over the whole system list asks permission first, and refusing it is ordinary.
Does deleting fonts help?
Rarely. A very short list is as unusual as a very long one, and it is rarity that identifies a machine.
Do two profiles answer with two sets?
Yes. The optional half of each set is drawn from the profile seed, so profiles made on one computer do not share a font list.
Will pages still look the way they should?
Yes. A typeface a page loads from its own address is untouched, and the families every system ships stay in every set.

See what your own profile answers

The self-test runs inside a profile and shows all 29 measurements, green and red alike.