# Browser Fingerprint:Font

Font fingerprinting is a way of authentication. Based on the type of font a user uses and how it is drawn in the browser, websites can track fingerprints. In general, websites use fonts in browser fingerprinting in one of two ways.

  • Enumerated font list
  • Fingerprint recognition based on font measurement

You can see how these methods are being applied at Borwserleaks.com.

# Enumerated font list

The most common way to collect a list of installed words on an electronic device is CSS self-checking. In a nutshell, this method gets your list of fonts by measuring the width of a phrase displayed in a particular font on the browser. If the widths match, that means you have the font installed. If it does not match, it is assumed that the font is not installed.

By iterating through the list of possible fonts and widths, websites can see exactly which words are installed on a device.

Migratory Bird Browser uses a special algorithm to combat this detection method, allowing you to control the fonts that can be enumerated by websites for backtracking.

When you create and save a browser profile, Migratory Bird Browser automatically generates a random font table to display to the site terminal.

# Fingerprint Recognition Based on Font Measurement (Unicode glyphs and DOMRect)

Fingerprinting is based on font measurement, which measures the boundaries and dimensions of HTML elements that can be filled with text with a particular font family. The measurements are then converted into hash string identifiers for more accurate fingerprint identification. This technology can be divided into two subdivisions.

  • Unicode glyphs, a measurement for a single character in a particular font family.
  • Domrects (also known as getClientRects) are measurements of HTML elements in which text is rendered in a specific series of fonts.

Mbbrowser uses a number of different approaches to combat measuring-based font fingerprinting, and eventually, each browser profile will have a unique Unicode glyphs and DOMRect hash.