{"slug": "show-hn-photo-of-a-handwritten-alphabet-to-installable-ttf-open-source", "title": "Show HN: Photo of a handwritten alphabet to installable TTF, open source", "summary": "A free, open-source tool called Draw Your Font lets users turn a photo of their handwritten alphabet into an installable TTF, WOFF, or WOFF2 font entirely on their local machine, with no uploads or credits required. The npm-based CLI, created by Danilo Znamerovszkij, uses adaptive thresholding, blob detection, and potrace vectorization to build fonts, with optional AI vision via Claude for labeling and critique. The project is MIT-licensed and aims to replace paid services like Calligraphr by running all processing locally.", "body_md": "**Turn a photo of your handwriting into a real font (TTF/WOFF/WOFF2) - free, open source, no uploads, no credits.**\n\nDraw your alphabet on paper. Take a photo. Get your font.\n\n*This is a real one-shot result: dim light, spiral binding, page shadow. One photo in, installable font out.*\n\n```\nnpx skills add danilo-znamerovszkij/draw-your-font\n```\n\nThen in Claude Code, just talk:\n\n\"here's a photo of my handwriting - make my font\"(drag the photo into the terminal)\n\nClaude finds your letters in the photo, labels them with vision, builds the font, shows you a preview, and critiques its own work. Iterate by talking:\n\n*\"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\n\nNo photo yet? Say *\"give me a font template\"* and you get a printable PDF grid:\nwrite your alphabet with a dark pen, photograph the pages, and hand them back.\nMessy freeform photos work too. Napkins, notebooks, spiral binding, bad\nlighting: that's what the vision step is for.\n\nEverything runs locally on your machine. Your handwriting never leaves it.\n\nThe skill is a thin layer over a deterministic npm CLI. It works on its own when you can tell it what you wrote:\n\n```\n# freeform photo, you know the order you wrote in:\nnpx draw-your-font make photo.jpg --chars \"ABCabc\" --name \"My Hand\"\n# → MyHand.ttf - double-click, install, done.\n\n# best quality: print a template, fill it, photograph:\nnpx draw-your-font template -o template.pdf --charset minimal   # or: spanish\nnpx draw-your-font make page1.jpg page2.jpg --charset minimal --name \"My Hand\"\n```\n\nPure npm, zero system dependencies: no FontForge, no ImageMagick, no potrace binary. Works on macOS / Linux / Windows wherever Node ≥ 18 runs.\n\n| Command | What it does |\n|---|---|\n`template` |\nprintable A4 PDF grid (`--charset minimal|spanish` ) |\n`segment <photos…>` |\nfind letters → crops + numbered contact sheet + `blobs.json` |\n`build` |\nlabeled crops → font (`--labels` / `--chars` / `--charset` ) |\n`make <photos…>` |\nsegment + build in one shot |\n`preview` |\nrender any text with the built font |\n\nRefinement flags: `--smooth 0..2`\n\n(rounder curves), `--weight=-2..2`\n\n(thinner/bolder), `--formats ttf,woff,woff2,css`\n\n(web-ready + `@font-face`\n\nsnippet). Run `draw-your-font --help`\n\nfor everything.\n\n```\nphoto ──► adaptive threshold ──► blob detection ──► label (Claude / you / template order)\n      ──► potrace vectorize ──► shared em-square metrics ──► TTF/WOFF/WOFF2 + preview\n```\n\nThe craft is in the metrics step: every character has a vertical band in a\nshared 1000-unit em square (cap height, x-height, descender depth), so your\n`g`\n\nhangs below the line and your `o`\n\nstays small. That's what makes it feel\nlike a font instead of a ransom note. Vectorization is potrace, the same\nengine inside FontForge and Inkscape. AI never draws your letters; it only\nfinds, labels, and judges them.\n\n**Who owns the font?** You. 100%, commercial use included. It's your\nhandwriting.\n\n**Why is this free when Calligraphr charges $8/month?** Their cost is\nservers and a browser editor. Here your machine does the work and the agent\nis the editor.\n\n**Kerning, ligatures, letter randomization?** v2. The pipeline (fonttools\n`calt`\n\n) is planned; the current output is a clean single-variant font.\n\nMIT. Draw something.", "url": "https://wpnews.pro/news/show-hn-photo-of-a-handwritten-alphabet-to-installable-ttf-open-source", "canonical_source": "https://github.com/danilo-znamerovszkij/draw-your-font", "published_at": "2026-07-24 08:28:37+00:00", "updated_at": "2026-07-24 08:53:05.496783+00:00", "lang": "en", "topics": ["developer-tools", "computer-vision", "artificial-intelligence"], "entities": ["Draw Your Font", "Danilo Znamerovszkij", "Claude", "Calligraphr", "npm", "FontForge", "Inkscape", "MIT"], "alternates": {"html": "https://wpnews.pro/news/show-hn-photo-of-a-handwritten-alphabet-to-installable-ttf-open-source", "markdown": "https://wpnews.pro/news/show-hn-photo-of-a-handwritten-alphabet-to-installable-ttf-open-source.md", "text": "https://wpnews.pro/news/show-hn-photo-of-a-handwritten-alphabet-to-installable-ttf-open-source.txt", "jsonld": "https://wpnews.pro/news/show-hn-photo-of-a-handwritten-alphabet-to-installable-ttf-open-source.jsonld"}}