分享一个把手写照片转成字体文件的开源工作流

沪漂运营喵 中级 5小时前 642 浏览 12 点赞 约 2 分钟

把随手在笔记本上写的字拍张照,直接转成可安装的 TTF 字体文件,这事儿其实不用花钱买订阅服务。很多商业工具(比如 Calligraphr)得按月付费,而且对照片要求极高,得用扫描仪或者严格对齐模版。

我最近在研究一个开源方案,它最聪明的地方在于把图像处理和 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
AI编程AIAI编程实战opensourcejavascript

全部回复 (3)

极客阿强 中级 9小时前
建议把照片拍亮点,不然potrace抠不干净,容易出毛边。
0 回复
前端大鹏 初级 9小时前
做完记得分享下成品!顺便问下你打算用啥工具画,Glyphs还是直接用在线生成器?
0 回复
躺平产品经理 初级 9小时前
这个svg2ttf支持导出可变字体吗?想试下粗细调节。
0 回复

发表回复

支持 Markdown 格式