Test files › Fonts › qa-sans.woff

Sample WOFF web font file

The same "QA Sans" font packaged as WOFF 1.0 - every sfnt table individually zlib-compressed behind a WOFF header and table directory.

↓ Download qa-sans.woff
Filenameqa-sans.woff
FormatWOFF
Size748 bytes (748 bytes)
MIME typefont/woff
SHA-25625bc662e7cc23e7c28d0f518f2442191dd98faafb6259e4da24546deea7d5bd5
What this file catches@font-face loading and web-font pipelines. Because WOFF is a container, a handler that only checks the extension will happily accept a renamed TTF; this file starts with the real "wOFF" signature and decompresses cleanly in fontTools and every browser. Useful for testing font MIME types (font/woff) and CORS on cross-origin font requests.

Handle it in code

Each snippet below was run against this exact file with Python 3.14.4 and Node 24.15.0 when this page was built, and the output shown is what it printed.

Python

Check the signature and the table directory before handing a font to a renderer. TrueType and OpenType list their tables in a plain directory; WOFF wraps the same tables with zlib; WOFF2 compresses them with Brotli, which the standard library cannot read.

import struct

REQUIRED = {"cmap", "head", "hhea", "hmtx", "maxp", "name", "post"}

with open("qa-sans.woff", "rb") as f:
    data = f.read()
sig = data[:4]
if sig == b"wOF2":
    n = struct.unpack(">H", data[12:14])[0]
    print(f"WOFF2 with {n} tables, Brotli-compressed: read further with fontTools")
elif sig in (b"wOFF", b"\x00\x01\x00\x00", b"true", b"OTTO"):
    if sig == b"wOFF":
        kind, n, start, step = "WOFF", struct.unpack(">H", data[12:14])[0], 44, 20
    else:
        kind = "OpenType (CFF)" if sig == b"OTTO" else "TrueType"
        n, start, step = struct.unpack(">H", data[4:6])[0], 12, 16
    tags = {data[start + i * step:start + i * step + 4].decode("latin-1") for i in range(n)}
    missing = sorted(REQUIRED - tags)
    print(f"{kind} with {n} tables: {', '.join(sorted(tags))}")
    print("missing required tables: " + ", ".join(missing) if missing else "all required tables present")
else:
    print("not a font: starts with", sig.hex())

Run against this file, it prints: WOFF with 10 tables: OS/2, cmap, glyf, head, hhea, hmtx, loca, maxp, name, post all required tables present

Related guides and tools

Sample font files (TTF, WOFF, WOFF2)MIME typesCheck a file's real typeVerify its SHA-256

Download & verify

curl -fsSL -o "qa-sans.woff" "https://files.hexaqa.com/font/qa-sans.woff"
curl -fsSL "https://files.hexaqa.com/font/qa-sans.woff" | sha256sum # expect: 25bc662e7cc23e7c28d0f518f2442191dd98faafb6259e4da24546deea7d5bd5

More fonts test files

qa-sans.ttfqa-sans.woff2

← All Fonts files