After reading an article about animated signature SVGs, the author created a more realistic standalone animated signature suitable for GitHub README use. The process begins with obtaining a signature SVG, either by converting text from a font or by using AI generation/handwriting and converting the image to SVG. The animation is based on a mask that reveals the signature along a writing path. Because a simple left-to-right reveal can look unnatural for slanted signatures, the author imports the SVG into Figma and traces a continuous centerline with the pen tool to serve as the animation mask. GPT is then used to combine the original signature outline with the traced mask using SMIL animation. Key parameters include dur, keyTimes, keySplines, stroke-dasharray, stroke-dashoffset, and opacity animations, which together control writing speed, reveal timing, dot appearance, fade-out, and overall visual smoothness.
引入
在看完 https://yfi.moe/post/animated-signature-svg 这篇文章后,我也跟着做了一个签名,但是由于它依赖CSS控制其动画导致无法单独使用或放进Github的README文档
并且这样的签名笔画粗细太单一,没有“真正”签名的观感
于是有了以下折腾过程,参考 Innei 的签名自己总结了制作方法
制作过程
1.获取签名svg文件
两种途径生成的签名最好都能一笔写完,且笔画重叠的地方较少
途径一:字体转svg
如果图简单可以直接在此处,输入名字并选择用一个喜欢的字体,直接复制字体svg文件
途径二:AI生成或手绘
可以自己用数位板签名,注意导出为图片时要纯色背景
也可以使用Chatgpt image 2 生图,纯色背景,效果也很好,不需要处理背景也能直接抠出轮廓来
然后把图片转换为svg格式
如图:
2.添加动画
仔细观察Innei的签名及源文件
注意到动画的原理是笔迹遮罩在上方背景,从左到右填充
直接交给gpt照葫芦画瓢的话:
可以看到由于我的签名整体向右上方倾斜,导致从左到右填充背景时,会出现一些地方会两笔同时画,不太符合“一笔签名”的直觉
当然,若你的签名正好整体是从左往右书写的,那观感应该会很好,只需要调整背景填充的速度,让它看起来更自然就能做完了
如果你的签名也有相似的问题,可以继续往下看参考我的解决方法
3.导入Figma勾勒笔迹
将svg文件导入Figma
使用钢笔工具选择一个合适的笔刷大小,沿着签名书写的方向勾勒笔画,注意:
慢放动画可以发现,在笔迹交叉的地方,更粗的背景笔迹会导致另一侧的笔画先出现一小部分:
示意图
实际表现
不过通过调整书写的速度,基本不会对观感造成影响,也能有很好的效果。
在右侧面板把背景填充轨迹单独导出为svg
4.添加轨迹动画
发送给gpt处理:
最终输出的svg:
完整参数解析(AI GEN)
一、文件声明与根元素 <svg>
这是 XML 声明。
参数
含义
`version="1.0"`
表示这是 XML 1.0 文档
`encoding="UTF-8"`
使用 UTF-8 编码,保证英文、中文、符号等字符正常解析
1. <svg> 根元素
5.优化动画
重点需要调整的参数是<animate>中的: