update at 2026-02-07 13:32:31
This commit is contained in:
70
PLAN.md
70
PLAN.md
@@ -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
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user