robinpie/fontliberator — explained in plain English
Analysis updated 2026-05-18
Recreate an installed font's letterforms into a new, independently generated font file.
Study a clean-room technique for extracting unprotectable typeface designs.
Trace rendered glyph pixels into smooth vector outlines using potrace.
Assemble traced outlines into a working OTF font with fonttools.
| robinpie/fontliberator | jordansissel/sysadvent | rsnapshot/rsnapshot | |
|---|---|---|---|
| Stars | 16 | 18 | 3,616 |
| Language | Perl | Perl | Perl |
| Last pushed | — | 2012-12-25 | — |
| Maintenance | — | Dormant | — |
| Setup difficulty | moderate | moderate | moderate |
| Complexity | 4/5 | 2/5 | 3/5 |
| Audience | developer | ops devops | ops devops |
Figures from each repo's GitHub metadata at analysis time.
Requires ImageMagick, potrace, Python 3, fonttools, and fontconfig installed to run.
fontliberator is a Perl script that takes an existing font installed on your system and produces a brand-new font file that visually reproduces the same letterforms without copying any of the original software. The motivation comes from a quirk of US copyright law: the design of a typeface, meaning the shapes of the letters, is not protected by copyright, but the font file itself, which is treated as software, is. This tool is designed to extract the unprotectable letterform designs while creating an entirely new font file. The process works in stages. For each character, the script asks the operating system's text renderer to draw it onto a blank canvas at a large point size. It measures the width of the rendered character by comparing two rendered strings rather than reading the font's internal metric tables. Then it uses a tool called potrace to trace the rendered pixels into smooth curves. Finally, a Python library called fonttools assembles all the traced outlines into a new OTF font file. The original font file is never opened or parsed, the script only ever sees the rendered pixels the system produces. The README calls this approach a clean-room reimplementation, comparing it to how the Phoenix BIOS was built by having engineers study the behavior of the original without looking at its source code. The script derives every outline independently from what the renderer displays, so the output shares no coordinate data or internal structure with the original file. The output has real limitations. It does not reproduce kerning, ligatures, or any of the advanced typographic features that modern fonts include. It bakes in the rendering choices the system made at a specific point size. Spacing approximations are close but not guaranteed to match exactly. The README also includes a careful legal discussion noting that this analysis applies only to US law, does not get around font license agreements, and does not permit using trademarked font names for the output. The script requires ImageMagick, potrace, Python 3, fonttools, and fontconfig to run. An optional tool called skia-pathops improves how holes in letters such as O and A are handled. The script itself is released under the GNU General Public License v2.
A Perl script that recreates a font's letterforms into a brand-new font file by tracing rendered pixels, avoiding copyright on the original.
Mainly Perl. The stack also includes Perl, Python, fonttools.
Free to use, modify, and distribute, provided derivative works also stay under the same license.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.