字体工具 字体子集化与 WOFF2 打包工作台 AI 提示词 (Prompts)

适用场景

这个 Prompt 用于让 AI 直接产出一个可部署的在线字体瘦身工具:上传 TTF/OTF/WOFF/WOFF2 字体,基于指定字符集/页面抓取/文本粘贴生成子集字体,并打包输出 WOFF2 + CSS + 预加载建议。目标是把“字体子集化、压缩、资源校验、CDN 部署”这条链路一次做完,适合前端性能优化与多语言站点字体管理。

交付物清单(必须输出)

完整项目代码与文件树;本地运行命令;构建命令;生产部署说明(Docker 与非 Docker 两种);环境变量说明;接口文档;单元测试或最小可运行测试;以及可执行的 QA checklist。

Prompt(复制到 AI 直接生成项目)

你是一名全栈工程师与字体工具链专家。请生成一个“字体子集化与 WOFF2 打包工作台”的在线工具项目,要求可运行、可构建、可部署。 【核心功能】 - 上传字体文件:TTF/OTF/WOFF/WOFF2(单个或多个字重),限制与提示(大小、类型、失败原因)。 - 选择/输入字符集:支持三种来源:A) 粘贴文本;B) 上传 .txt;C) 输入 URL 列表并抓取页面文本(同源限制给出解释,可提供“粘贴抓取结果”的替代方案)。 - 子集化:按字符集裁剪字形,保留必要表(name、cmap、glyf、GSUB/GPOS 视情况),支持保留 OpenType 特性开关(如 liga、kern)。 - 输出:生成 WOFF2(优先)与可选 WOFF;生成配套 CSS(@font-face,unicode-range 可选);生成 assets 清单与校验信息(hash、size)。 - 预览:在页面上输入文本实时预览子集前后效果;展示体积对比、字形覆盖率、缺失字符列表。 - 打包下载:一键下载 zip,包含 fonts/、css/、report.json、README.md。 【技术约束】 - 前端:React + Vite + Type (或 Next.js 任选其一,但要说明原因)。 - 后端:Node.js(Fastify/Express 任一)提供上传与处理 API;处理过程可在服务器完成;若你选择 WebAssembly 在前端处理,也必须给出后端兜底方案。 - 字体处理库:优先使用 fonttools/pyftsubset(可通过容器或子进程),或使用可行的 Node 字体处理方案;无论选择哪种,都要给出跨平台(Windows/Linux)运行说明。 - 安全:限制文件类型与大小;避免 SSRF;URL 抓取需白名单/禁内网;临时文件清理;提供速率限制建议。 【项目结构】 输出一个清晰的文件树,至少包含:client/、server/、 s/、docs/、tests/。 【运行命令】 - 开发:一条命令启动前后端(如 pnpm dev / npm run dev)。 - 构建:client build + server build。 - 生产:提供 Dockerfile 与 docker-compose.yml;同时提供非 Docker 的 systemd/pm2 部署示例。 【测试与 QA】 - 至少提供 6 条测试用例(包含:空字符集、超大字符集、非法字体、重复上传、多字重、缺失字符报告)。 - 给出 QA checklist(功能、兼容性、性能、错误提示、可用性、无障碍、日志)。 【输出格式】 先给出简短 README 概览,然后依次给出:文件树、关键代码(按文件分块)、运行命令、部署说明、测试与 QA、常见问题排查。 不要省略关键实现代码,确保用户复制后可以直接跑起来。

实现要点提示

子集化的难点主要在字符集收集、缺失字符提示、以及多字重一致性。建议把“字符集去重与排序”“缺失字符列表(按 Unicode 码位)”“输出包校验(hash/size)”做成独立模块,便于测试与复用。

部署与运维建议

生产环境建议启用对象存储或临时目录隔离,所有上传文件在任务完成后清理;对并发任务设置队列或最大并发;处理日志写入结构化 JSON 便于排障。若提供 URL 抓取功能,务必加域名白名单并禁内网段,避免 SSRF 风险。

QA Checklist(可直接照着验收)

上传:类型/大小校验是否清晰;错误是否可复现与可定位。字符集:三种来源是否都可用;空输入是否提示。子集化:输出字体能否在浏览器正确渲染;体积对比是否合理;缺失字符报告是否准确。下载包:zip 结构是否符合约定;CSS 是否可直接引用;hash 与 size 是否一致。兼容性:Chrome/Edge/Firefox 基本功能是否正常。性能:大字体与大字符集是否有进度提示与超时策略。

用户评论 (0)

登录后参与讨论

立即登录 注册账号

暂无评论,快来抢沙发吧~

操作成功