Settings

The font file

TrueType, OpenType, WOFF or WOFF2. It is parsed in this tab and never uploaded.

Drop a font here, or choose one .ttf .otf .woff .woff2

What this is, and what it is not

The tables are parsed here, by this page. Nothing is asked of a server and no font engine is borrowed. The sfnt table directory, name, head, hhea, OS/2, post, maxp, cmap, fvar and the feature lists inside GSUB and GPOS are read byte by byte from the file you chose. Where a table is absent or malformed the page says so instead of guessing at it.

Embedding permission bits are the vendor's statement of intent, not a legal opinion. The fsType field in OS/2 is two bytes in which a foundry records what it believes it has allowed. This page reads those bits and writes out what they conventionally mean. It is not advice, it is not the licence, and it does not bind anybody. The licence text and the licence URL in the name table are what you should actually read, and they are shown here in full for that reason.

WOFF is decompressed here; WOFF2 cannot be. A WOFF wraps ordinary sfnt tables in zlib, which is undone in this tab with fflate, served from this site and from nowhere else. A WOFF2 compresses its tables with Brotli and reorders some of them, and no browser exposes a Brotli decoder to a page. So a WOFF2's header and its table directory are read and listed, the specimen renders because the browser decompresses the font for itself, and everything that needs the table contents is reported as unavailable rather than guessed.

Coverage is what cmap claims, not what looks right. The percentages come from the character-to-glyph table, so a code point counts as covered when the font maps it to a glyph. A font can map a code point to a glyph that is blank, or to one borrowed from another script and badly drawn. Click a block and look at the characters rendered in the font itself; that is the check the numbers cannot do for you.

The specimen is your own browser rendering the font. The file is handed to the browser's font engine as bytes, so the waterfall, the feature toggles and the axis sliders show exactly what a web page would get from this file. A feature the toggles switch on will only change anything if the font has a rule for the characters in the sample, which is why the sample string is editable.

Nothing leaves this tab. The font is read in this page and is never uploaded. Only the sample text and which features you had switched on are kept, in this browser's local storage, so the page comes back as you left it.

Questions people ask

Can I use this font on my website?

This page cannot tell you that and neither can any page. It shows you the two things that bear on it: the fsType bits, which say what the foundry recorded in the file, and the licence description and licence URL from the name table, which is where the actual terms live. Read the licence. A font marked installable in fsType can still be under a licence that forbids web use.

Why does my WOFF2 show no tables?

Because its tables are Brotli-compressed, and a web page has no way to decompress Brotli: the browser has a decoder, but it does not hand it to JavaScript. The table directory inside a WOFF2 is not compressed, so the tags and their original lengths are listed, and the specimen still works because the browser decompresses the font internally to render it. For everything else, convert to TTF or WOFF first.

What does a 78% on a Unicode block mean?

That the cmap maps 78% of the assigned code points in that block to a glyph. Unassigned code points are not counted against the font. It does not mean the glyphs are good, and it does not mean the font will compose them correctly: a complex script needs GSUB rules as much as it needs glyphs, and coverage says nothing about those.

Why are the metrics three different numbers?

Because there are three sets and they disagree by design. hhea ascender and descender are what most desktop applications use. OS/2 sTypoAscender and sTypoDescender are what the specification says should be used for line layout. OS/2 usWinAscent and usWinDescent are the clipping box Windows uses. A font whose three sets differ will set at different line heights on different systems, and seeing all three is usually how you find out why.

Can it tell a real font from a pirated copy?

No. It reads what the file says about itself, and every one of those fields is text somebody typed. A copy with the name records rewritten looks identical here to the original. What it can do is show you the fields, so you can see when the copyright, the designer and the vendor ID do not agree with each other.

Does the glyph count include blanks?

Yes. numGlyphs in maxp counts every glyph slot in the font, including .notdef, the space glyphs, and any glyph that is a component of another. It is the number the font declares, and it is usually larger than the number of characters the font can show.

Related tools