Type1 core fonts for PDF/A workflows.
💖 Part of the tc-lib-pdf / TCPDF ecosystem (100M+ installs). Sponsor its maintenance →
tc-font-pdfa contains 14 Type1 PDF core font files generated from GNU FreeFont to support PDF/A-compatible embedding scenarios.
This package targets compliance-oriented workflows where predictable, embeddable base fonts are required for archival documents. By shipping generated assets in a dedicated repository, PDF toolchains can keep runtime dependencies lightweight while preserving consistent rendering across platforms.
- Courier, Helvetica, Times (regular/bold/italic variants)
- Symbol and ZapfDingbats support
- Binary Type1 (
.pfb) and metrics (.afm) assets
- Deterministic file naming for automation
- Suitable for embedding in PDF/A production pipelines
- Includes conversion notes and provenance details
- No runtime PHP requirements
- A PDF engine or conversion tool that consumes Type1 assets
Install with Composer to make assets available in vendor paths:
composer require font/pdfaUse files from the pfb/ and afm/ directories in your PDF/font import workflow.
afm/
pfb/
This project is asset-centric. Typical contributions include regenerating fonts, validating metadata, and documenting conversion steps.
Glyph names in the .pfb encoding vectors and CharStrings dictionaries, and in the .afm metrics, follow the Adobe Glyph List, so that /Encoding /WinAnsiEncoding resolves every code the fonts define.
GNU FreeFont uses three pre-AGL names. Regenerating any of the 12 text fonts requires renaming them in the encoding vector and the CharStrings dictionary of the .pfb, and in the N and KPX records of the .afm:
| FreeFont name | AGL name | WinAnsi code |
|---|---|---|
ssharp |
germandbls |
223 |
micro |
mu |
181 |
middot |
periodcentered |
183 |
PDFASymbol and PDFAZapfDingbats are excluded: they declare FontSpecific encoding and are consumed through their built-in encoding.
PDFASymbol carries the Adobe Symbol extensible delimiter pieces at codes 230-239, 244 and
246-254, taken from FreeSerif at U+239B-U+23AE, plus Euro at 160. FontForge's built-in Symbol
re-encoding does not reach that block, so a regeneration has to add them explicitly.
Codes 226-228 (registersans, copyrightsans, trademarksans) reuse the regular ®, © and ™
outlines, since FreeSerif has no sans-serif variants. Codes 96 radicalex, 189 arrowvertex and
190 arrowhorizex stay unencoded: they are Adobe private use area glyphs with no FreeSerif
equivalent.
Distributed as source assets via Git and Composer.