Quick answer
This checker looks for the actual PDF font-program evidence: FontFile, FontFile2, FontFile3, or Type 3 glyph definitions. It separately reports Adobe’s six-letter subset prefix and ToUnicode map presence, then runs a real text-extraction health check instead of treating one signal as a universal pass.
No PDF upload
Inspect the fonts inside your PDF
Ready. Choose a PDF to inspect its font resources.
PDF font report
Text extraction health:
| PDF font name | Embedding | ToUnicode | Resource pages | Type, encoding, and program |
|---|
Interpretation: “Resource pages” means the font dictionary is reachable from that page or a Form XObject. A PDF can retain unused font resources, so this is deliberately not labeled exact visible-glyph usage.
What each font result means
Embedded
The PDF contains a font-program stream or Type 3 glyph definitions. Adobe explains that embedding prevents substitution when the original font is unavailable.
Embedded subset
Only required glyphs are stored. Adobe identifies subsets with a six-letter prefix plus a “+”, such as ABCDEF+FontName.
ToUnicode present
An explicit character-code-to-Unicode map exists. It is useful evidence for extraction, but not a complete accessibility or copy/paste verdict.
Not embedded
No font program was found. Another system may substitute a locally available font; shape and spacing are not guaranteed to match.
Sources: Adobe’s font embedding and substitution overview, Adobe’s subset naming and font settings reference, and the published PDF 1.7 specification.
How to read the preflight result
| Finding | What it proves | What it does not prove | Practical action |
|---|---|---|---|
| Embedded | A font program or Type 3 glyph data is inside the PDF. | Correct glyph coverage, licensing, PDF/A, PDF/X, or accessibility. | Check extraction and the intended compliance profile separately. |
| Embedded subset | The PDF has a subset-named font object and embedded program. | That unused glyphs are available for future editing. | Usually fine for display and print; re-export from source before major text edits. |
| Not embedded | No FontFile stream or Type 3 glyph data was found. | That substitution has already occurred or the page currently looks wrong. | Re-export from the source application with font embedding enabled. |
| ToUnicode absent | No explicit map exists on that font object. | That text extraction must fail; standard encodings can still work. | Use the separate extraction result and test copy/search with representative text. |
| No font resources | No page or Form XObject font dictionaries were found. | That the page is empty. | It may be a scan or outlined artwork; use OCR if visible text is rasterized. |
| Type 3 | Glyph shapes are defined as PDF graphics and travel with the file. | Normal TrueType/OpenType behavior or easy text editing. | Ask the printer or submission system whether Type 3 fonts are accepted. |
Print, archive, and submission requirements
Adobe’s PDF settings documentation says font embedding is required for PDF/X compliance. The PDF Association’s PDF/X summary likewise states that fonts must be fully embedded or subset with all used characters present. The PDF/A FAQ notes that creation software normally warns when a font cannot be embedded.
This checker is a focused diagnostic, not a PDF/A or PDF/X validator. Those standards add color, metadata, transparency, output-intent, encryption, annotation, and other requirements. Passing the font test is necessary in many print/archive workflows but is not sufficient for compliance.
Reproducible font stress fixture
The deterministic three-page fixture contains four font resources: unembedded Helvetica and Times-Roman, embedded Bitstream Vera regular and bold TrueType subsets with ToUnicode maps, and one font-free page. Poppler pdffonts independently validates the expected embedding, subset, and Unicode columns.
Download the font stress PDF Expected results and SHA-256 · Independent Poppler output
How this checker works
- Read the PDF object graph.
PDF-LIB 1.17.1 opens the local bytes and visits each page’s font resource dictionary, including font dictionaries inside Form XObjects.
- Resolve composite fonts.
Type 0 fonts can point to CIDFont descendants. The checker follows the descendant to find its subtype and FontDescriptor.
- Check real embedding evidence.
FontFile, FontFile2, and FontFile3 streams indicate embedded font programs. Type 3 fonts carry glyph definitions through CharProcs and are reported separately.
- Report subset and character mapping separately.
The six-letter prefix is used for subset detection. ToUnicode map presence remains its own field because embedding and character mapping solve different problems.
- Test extraction with another engine.
PDF.js extracts text from every page and counts empty pages, replacement characters, and private-use characters. The extraction result does not grade itself from the font dictionary.
- Keep the evidence exportable.
CSV contains one row per font object. JSON preserves document summary, extraction evidence, object IDs, page references, program bytes, and resource names.
Limitations and assumptions
A PDF may contain font resources that are no longer used by visible text; Adobe documents that font lists can include referenced but unused resources. This tool therefore reports resource pages rather than claiming exact glyph usage. Dynamically generated content, unusual malformed objects, encrypted PDFs, and font resources hidden behind unsupported object structures can require a full desktop preflight engine.
Subset detection follows Adobe’s six-uppercase-letter prefix convention. A producer can use an unusual name, so the embedded stream check is authoritative for embedding while the name is the evidence for subsetting. ToUnicode absence is an advisory, not an automatic failure. The checker does not extract or offer embedded font files, avoiding unnecessary font-licensing risk.
The first inspection may download PDF-LIB and PDF.js from jsDelivr. The chosen PDF remains in local browser memory and is not sent to GoPDFConverter, analytics, or a conversion server.
Frequently asked questions
How do I check whether fonts are embedded in a PDF?
Is an embedded subset a problem?
Does a missing ToUnicode map mean text is not searchable?
Why can a font appear more than once?
Related diagnostics
PDF page size and box checker
Inspect MediaBox, CropBox, TrimBox, BleedBox, rotation, mixed dimensions, and exact print sizes.
PDF and Word fidelity challenge
See how fonts, Unicode, page breaks, columns, tables, and images survived controlled browser conversions.
PDF text extractor
Extract and inspect the actual searchable text layer locally.
OCR scanned PDF
Recognize visible text when pages contain images instead of font-backed text objects.