update at 2026-02-07 13:32:31

This commit is contained in:
douboer
2026-02-07 13:32:31 +08:00
parent b0e89a56e1
commit 951eda9c58
6 changed files with 73 additions and 79 deletions

70
PLAN.md
View File

@@ -6,6 +6,13 @@
**设计来源**: [Figma 设计稿](https://www.figma.com/design/S7WVUzg3Z0DMWjYUC6dJzN/font2svg?node-id=3-5&m=dev)
## 🔄 最新机制更新2026-02-07
- 字体唯一来源目录调整为 `frontend/public/fonts/`
- 删除独立 `font/` 源目录流程
- `pnpm run prepare-fonts` 仅执行字体扫描并重建 `frontend/public/fonts.json`
- 如本文后续历史段落仍出现 `font/` 或复制流程,请以上述机制为准
## 📋 Figma Annotations 功能需求清单
以下所有功能需求来自 Figma 设计中各组件的 annotation 标注:
@@ -25,7 +32,7 @@
-**批量导出**: 选中多个字体时批量导出
### 4. 字体选择区 (节点 21:185)
-**数据源**: 从 `font/` 目录读取所有字体
-**数据源**: 从 `frontend/public/fonts/` 目录读取所有字体
-**树状结构**: 字体按**目录树状分组**
-**展开/收拢**: 支持展开和收拢
-**单选**: 字体支持单个选择
@@ -95,7 +102,7 @@
### 关键约束
- ✅ 保持 `font2svg.py` 不变,仅作为参考
- ✅ 纯前端实现,无需后端服务器
- ✅ 字体文件放在 `font/` 目录
- ✅ 字体文件放在 `frontend/public/fonts/` 目录
- ✅ SVG 图标放在 `src/assets/icons/`
- ✅ 应用图标为 `src/assets/webicon.png`
- ✅ 使用 fonttools.subset 预处理字体(构建时)
@@ -106,47 +113,26 @@
```
font2svg/
├── font/ # 源字体文件(不打包)
│ ├── 庞门正道/
│ ├── 王漢宗/
│ └── 其他字体/
├── public/
└── fonts/ # 构建时生成的字体子集
├── frontend/
│ ├── public/
│ ├── fonts/ # 字体唯一来源目录(支持分类子目录)
│ └── fonts.json # 由脚本重建的字体清单
│ └── src/
├── assets/
│ │ ├── icons/ # SVG UI 图标
│ │ └── webicon.png # 应用图标
│ ├── components/
│ ├── composables/
│ ├── stores/
│ ├── utils/
│ ├── types/
│ ├── App.vue
│ └── main.ts
├── scripts/
│ └── prepare-fonts.py # 字体预处理脚本fonttools.subset
├── src/
│ ├── assets/
│ │ ├── icons/ # SVG UI 图标
│ │ └── webicon.png # 应用图标
│ ├── components/
│ │ ├── FontSelector.vue # 字体选择器(树状结构)
│ │ ├── FontTree.vue # 字体树组件(展开/收拢)
│ │ ├── FavoritesList.vue # 收藏字体列表
│ │ ├── TextInput.vue # 文本输入框
│ │ ├── LetterSpacingSlider.vue# 字间距调整滑块
│ │ ├── SvgPreview.vue # SVG 预览区
│ │ ├── PreviewItem.vue # 单个字体预览项
│ │ └── ExportPanel.vue # 导出面板
│ ├── composables/
│ │ ├── useFont.ts # 字体加载和管理
│ │ ├── useSvgGenerate.ts # SVG 生成核心逻辑
│ │ ├── useTextShaping.ts # HarfBuzz text shaping
│ │ └── useFavorites.ts # 收藏功能
│ ├── stores/
│ │ ├── fontStore.ts # 字体状态管理
│ │ └── uiStore.ts # UI 状态(预览大小等)
│ ├── utils/
│ │ ├── harfbuzz.ts # HarfBuzz WASM 封装
│ │ ├── font-loader.ts # 字体文件加载
│ │ ├── svg-builder.ts # SVG 文档构建
│ │ └── download.ts # 文件下载工具
│ ├── types/
│ │ └── font.d.ts # TypeScript 类型定义
│ ├── App.vue # 根组件
│ └── main.ts # 应用入口
├── vite.config.ts
├── tsconfig.json
├── uno.config.ts # UnoCSS 配置
│ └── generate-font-list.py # 扫描 frontend/public/fonts 并重建 fonts.json
├── frontend/vite.config.ts
├── frontend/tsconfig.json
├── frontend/uno.config.ts
└── package.json
```