TGViewer
开发者工具箱|编程·开发工具·资源 开发者工具箱|编程·开发工具·资源 @devtoolboxhub · 780 subscribers
Post #1625 8
纯浏览器 SVG 文字特效生成器 GummyType

作者分享了一款完全在浏览器本地运行的文字图形生成器 GummyType,支持气泡、Y2K、镀铬等风格,无需账号、上传或服务端渲染。核心管线为 React 控件 → SVG 字符串 → SVG Blob → HTML Image → Canvas 栅格化 → 裁剪 PNG,SVG 生成逻辑封装为纯 TypeScript 函数,便于无浏览器环境测试。

字体一致性通过打包 TTF 文件并以内嵌 @font-face 方式写入 SVG 解决,避免不同设备回退字体导致的渲染差异。画布尺寸基于 CanvasRenderingContext2D.measureText 实测文本宽度计算,而非字符数,防止长句被裁剪或短句导出为巨大固定画布。预览与导出使用两套 SVG 渲染:预览框按最大字号固定尺寸保持稳定,导出则紧贴当前字号裁剪。PNG 导出通过读取 alpha 通道自动裁剪透明边距,并保留安全边距避免阴影被切,纯色或渐变背景时跳过此步骤。

细节处理:

• 用户输入空格替换为不换行空格防止 SVG 栅格化时被折叠;异步渲染通过 effect cleanup 标记失效结果防止旧渲染覆盖新预览;每次生成的 object URL 在替换或组件卸载时及时 revoke;输入长度设限避免极端画布尺寸。作者计划后续增加更多字体形状
• SVG 导出
• 预设样式
• 键盘控制与更多导出背景

#开发者 #工具 #GummyType #SVG #Canvas #Nextjs #TypeScript #前端
@DevToolboxHub
More from @devtoolboxhub
  1. Sep 26, 2026PostgreSQL 复制槽上限参数 max_replication_slots 解析 max_replication_slots 决定共享内存中复制槽数组的长度,仅此而已。它不决…
  2. Sep 26, 2026五仓库架构踩坑:Gitlink 与双 CI Flude 团队复盘了多仓库架构的实践代价。项目从第一分钟起就选择拆分成独立仓库,Pipeline、engine、design-docs…
  3. Sep 26, 2026Xeno Core:TypeScript 后端架构框架 Node.js 复杂系统的架构选型往往决定代码的长期命运。开发者常在两条路之间纠结:要么依赖重度使用实验性装饰器和反射(如…
  4. Sep 25, 2026用 SLO 给 AI Agent 的行为定个预算 Grafana Labs 提出把可靠性工程里的错误预算(error budget)思路用到 AI Agent 上。延迟、token…
  5. Sep 25, 2026Xcode 27.2 改用 JSON 项目格式 Xcode 27.2 用基于 JSON 的 project.xcproj 取代了沿用多年的 project.pbxproj。新建项目…
  6. Sep 25, 2026PostgreSQL 的 max_prepared_transactions 该不该开 prepared transaction 是脱离会话独立存在的两阶段提交事务。执行 PREP…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →