cd /news/developer-tools/i-turned-a-photo-of-my-handwriting-i… · home topics developer-tools article
[ARTICLE · art-71624] src=dev.to ↗ pub= topic=developer-tools verified=true sentiment=↑ positive

I turned a photo of my handwriting into a real font, then open-sourced the whole pipeline

Developer Danilo Znamerovszkij built and open-sourced a pipeline that turns a single photo of handwriting into an installable TTF font. The tool runs locally with no system dependencies, using npm libraries for image processing, vectorization, and font assembly. A Claude Code skill wraps the pipeline so users can generate a font by dragging a photo into the AI assistant.

read3 min views1 publishedJul 24, 2026

I wrote my alphabet in a spiral notebook, took one photo in dim light, and got an installable TTF out the other end. My computer now can type in my handwriting. The whole thing is open source (MIT), runs locally, and works as three layers: an npm library, a CLI, and a Claude Code skill on top.

Repo: github.com/danilo-znamerovszkij/draw-your-font

Browser demo: danilo-znamerovszkij.github.io/draw-your-font/

This post is about why I built it and how the pipeline actually works.

I always thought it would be so cool to have a custom font, designed by you. And every time I researched it, the answer was some version of "sure, if you're willing to suffer".

Font editors want you to draw every glyph one by one with a tablet pen, or worse, with your touchpad. The tools that accept a photo of your handwriting are limited, and the main one (Calligraphr) wants $8/month for the full version. A subscription for my own handwriting!

So, how hard could it be to just build it and open source it? Turns out, not that hard. Every piece has been open source for years: sharp for image processing, a JS port of potrace for vectorization, svg2ttf for assembly. Nobody had wired them together into one zero-install package.

On the open-source side the closest thing is builtree/handwrite: Python, and it requires FontForge and potrace installed system-wide. That's a real barrier. Most people who want their handwriting as a font are not going to brew-install a font editor first.

So the gap I aimed at was specific: pure npm, no system dependencies, and tolerant of freeform photos instead of demanding a scanner and a perfectly aligned template. Then I wrapped it in a reusable Claude Code skill that does the heavy lifting: you hand it a photo, it hands you a font.

npx skills add danilo-znamerovszkij/draw-your-font

Then drag a photo into Claude Code and say "make my font". That's it. Claude finds your letters in the photo, labels them with vision, builds the font, shows you a preview, and then critiques its own work before you have to.

The photo goes to the model for labeling only. The geometry never leaves your machine. Node 18+, nothing else.

Six steps, all deterministic code:

The TTF is for your laptop. For your website, ask for WOFF2 and you get a web font plus the @font-face snippet.

The headline on the demo page is set in a font I made in minutes, from the exact photo in the demo video: danilo-znamerovszkij.github.io/draw-your-font/

I think this matters more now than it used to. Feeds are full of AI slop. Everything is generated in the same voice and set in the same fonts, page after page, post after post. So a site rendered in your actual handwriting, with the wobble of your real pen in every letter, is a personal touch that's hard to fake. It costs you one photo.

Write freeform and some letters can sit a little higher or lower than they should. If you want a cleaner result, print the built-in template (npx draw-your-font template -o template.pdf

) and write in its grid, or just rule a few light pencil lines with an old ruler and write on those. But honestly, freeform works fine. My whole demo is one crooked notebook photo.

The skill sits on a plain npm CLI with zero system dependencies, so you can run the whole thing without any AI:

npx draw-your-font make photo.jp![img.png](img.png)g --chars "ABCabc" --name "My Hand"

It's trickier than talking to Claude. You type every character in writing order, and there's no one to catch a bad trace for you. But it's there, and it's fully deterministic. There's also a browser demo that runs the pipeline client-side (potrace compiled to WASM), nothing uploaded.

Dark pen, letters not touching. That's the only real requirement; my own hero photo has spiral binding, a page shadow, and bad light. The font you generate is 100% yours, commercial use included.

If you find it useful, please consider starring the repo so more people can find it. And if you make a font from your own hand, I'd genuinely love to see it.

── more in #developer-tools 4 stories · sorted by recency
── more on @danilo znamerovszkij 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
Live at https://your-agent.zahid.host
Get free account → Pricing
from €0/mo · no card required
LIVE [news/i-turned-a-photo-of-…] indexed:0 read:3min 2026-07-24 ·