GitHub - danilo-znamerovszkij/draw-your-font: Turn a photo of your handwriting into a real font (TTF/WOFF/WOFF2) - free, open source, no uploads. Node CLI + Claude Code skill. · GitHub
/" data-turbo-transient="true" />
Skip to content
Search or jump to...
Search code, repositories, users, issues, pull requests...
-->
Search
Clear
Search syntax tips
Provide feedback
--><br>We read every piece of feedback, and take your input very seriously.
Include my email address so I can be contacted
Cancel
Submit feedback
Saved searches
Use saved searches to filter your results more quickly
-->
Name
Query
To see all available qualifiers, see our documentation.
Cancel
Create saved search
Sign in
/;ref_cta:Sign up;ref_loc:header logged out"}"<br>Sign up
Appearance settings
Resetting focus
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
danilo-znamerovszkij
draw-your-font
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star
main
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>15 Commits<br>15 Commits
.claude/skills
.claude/skills
.github/workflows
.github/workflows
assets
assets
site
site
skills/draw-your-font
skills/draw-your-font
src
src
test
test
.gitignore
.gitignore
LICENSE
LICENSE
README.md
README.md
package-lock.json
package-lock.json
package.json
package.json
View all files
Repository files navigation
draw-your-font
Turn a photo of your handwriting into a real font (TTF/WOFF/WOFF2) - free, open source, no uploads, no credits.
Draw your alphabet on paper. Take a photo. Get your font.
This is a real one-shot result: dim light, spiral binding, page shadow. One photo in, installable font out.
Use it as a Claude Code skill (the fun way)
npx skills add danilo-znamerovszkij/draw-your-font
Then in Claude Code, just talk:
"here's a photo of my handwriting - make my font" (drag the photo into the terminal)
Claude finds your letters in the photo, labels them with vision, builds the<br>font, shows you a preview, and critiques its own work. Iterate by talking:
"make it rounder" / "a bit bolder"
"the g looks bad" - it shows you the crop and fixes or asks for a re-shoot
"give me woff2 + css for my website"
"how readable is it?" - a legibility score and the two worst letter pairs
No photo yet? Say "give me a font template" and you get a printable PDF grid:<br>write your alphabet with a dark pen, photograph the pages, and hand them back.<br>Messy freeform photos work too. Napkins, notebooks, spiral binding, bad<br>lighting: that's what the vision step is for.
Everything runs locally on your machine. Your handwriting never leaves it.
Use it as a CLI (no AI at all)
The skill is a thin layer over a deterministic npm CLI. It works on its own<br>when you can tell it what you wrote:
# freeform photo, you know the order you wrote in:<br>npx draw-your-font make photo.jpg --chars "ABCabc" --name "My Hand"<br># → MyHand.ttf - double-click, install, done.
# best quality: print a template, fill it, photograph:<br>npx draw-your-font template -o template.pdf --charset minimal # or: spanish<br>npx draw-your-font make page1.jpg page2.jpg --charset minimal --name "My Hand"
Pure npm, zero system dependencies: no FontForge, no ImageMagick, no potrace<br>binary. Works on macOS / Linux / Windows wherever Node ≥ 18 runs.
CLI reference
Command<br>What it does
template<br>printable A4 PDF grid (--charset minimal|spanish)
segment<br>find letters → crops + numbered contact sheet + blobs.json
build<br>labeled crops → font (--labels / --chars / --charset)
make<br>segment + build in one shot
preview<br>render any text with the built font
Refinement flags: --smooth 0..2 (rounder curves), --weight=-2..2<br>(thinner/bolder), --formats ttf,woff,woff2,css (web-ready + @font-face<br>snippet). Run draw-your-font --help for everything.
How it works
photo ──► adaptive threshold ──► blob detection ──► label (Claude / you / template order)<br>──► potrace vectorize ──► shared em-square metrics ──► TTF/WOFF/WOFF2 + preview
The craft is in the metrics step: every character has a vertical band in a<br>shared 1000-unit em square (cap height, x-height, descender depth), so your<br>g hangs below the line and your o stays small. That's what makes it feel<br>like a font instead of a ransom note. Vectorization is potrace, the same<br>engine inside FontForge and Inkscape. AI never draws your letters; it only<br>finds, labels, and judges them.
FAQ
Who owns the font? You. 100%, commercial use included. It's your<br>handwriting.
Why is this free when Calligraphr charges $8/month? Their cost is<br>servers and a browser editor. Here your machine does the work and the agent<br>is the editor.
Kerning, ligatures, letter randomization? v2. The pipeline...