分享一个把手写照片转成字体文件的开源工作流
把随手在笔记本上写的字拍张照,直接转成可安装的 TTF 字体文件,这事儿其实不用花钱买订阅服务。很多商业工具(比如 Calligraphr)得按月付费,而且对照片要求极高,得用扫描仪或者严格对齐模版。
最后生成的 WOFF2 格式可以直接用
下一篇
用Vibe Coding撸个博客:实战经验分享 →
我最近在研究一个开源方案,它最聪明的地方在于把图像处理和 Claude Code 的视觉能力结合起来了。底层用的是 sharp 处理图像、potrace 矢量化,最后通过 svg2ttf 组装。最关键的是它把整个流程封装成了 Claude Code 的一个 Skill,不需要在系统里安装复杂的 FontForge 这种重量级软件,只要有 Node 18+ 环境就行。
实操部署
如果你安装了 Claude Code,直接运行下面这行命令就能把这个能力集成进去:
npx skills add danilo-znamerovszkij/draw-your-font配置好之后,直接把手写字母的照片拖给 Claude Code,告诉它 "make my font"。接下来的逻辑很有意思:Claude 利用视觉能力在照片里定位每个字母并打标签,然后调用本地的 Node 库进行矢量化生成。如果某个字母识别得不准(比如 g 没描好),它会自己通过预览图发现并提醒你修改。
技术实现分析
这个 pipeline 并没有让 AI 去直接“画”曲线,而是走了一套确定性的算法流程,这样生成的字体才不会变形:
- 自适应阈值: 解决光线不均问题。如果是全局阈值,照片上有阴影的地方就全黑了,它通过对比局部背景来提取笔触。
- 连通域检测: 把墨迹区域识别为 Blob,确保字母的完整性。
- 视觉打标: 这是最核心的一步。AI 负责把“Blob 14 是小写 g”这个映射关系建立起来,从而摆脱了对固定模版的依赖。
- 矢量化与度量: 使用 Potrace 引擎将位图转为矢量,并为每个字符分配垂直带(em square),确保字母的基线一致,不会像乱贴的剪报一样高低不平。
最后生成的 WOFF2 格式可以直接用
@font-face 部署到网页上。具体的项目代码可以参考:
https://github.com/danilo-znamerovszkij/draw-your-font