Text rendering
GET /api/fingerprint/text-metricsText metrics fingerprinting measures precise dimensions of rendered text using Canvas TextMetrics API and DOM measurement techniques to detect font rendering engine differences. When text is rendered, different combinations of operating system, browser, font rendering library (DirectWrite, CoreText, FreeType), and anti-aliasing settings produce measurably different text dimensions. The technique uses Canvas measureText() to obtain detailed metrics including width, actualBoundingBoxLeft, actualBoundingBoxRight, actualBoundingBoxAscent, actualBoundingBoxDescent, fontBoundingBoxAscent, fontBoundingBoxDescent, emHeightAscent, emHeightDescent, hangingBaseline, alphabeticBaseline, and ideographicBaseline. These measurements are captured to sub-pixel precision (often 10+ decimal places) revealing tiny differences in how text is measured. For example, the text 'Hello World' in 'Arial 16px' might measure exactly 87.37890625 pixels wide on Windows but 87.40234375 pixels on macOS. Different fonts, sizes, and text strings amplify these differences. Unicode text with diacritics, ligatures, combining characters, and bidirectional text (Hebrew, Arabic) expose additional rendering variations. CJK characters (Chinese, Japanese, Korean) are particularly revealing due to significant font differences across platforms. The fingerprint captures metrics for dozens of test strings across multiple fonts and sizes. Text rendering also varies based on canvas rendering context settings like textRendering, fontKerning, and fontVariantCaps. This technique is extremely stable because font rendering is a core OS component that rarely changes between sessions.
Move from this collector to the CreepJS signal index, live checker, API docs, and other high-value fingerprinting explainers.