update at 2026-02-07 16:05:38

This commit is contained in:
douboer
2026-02-07 16:05:38 +08:00
parent 91fcd79203
commit 6a2585511f
6 changed files with 509 additions and 1493 deletions

142
README.md
View File

@@ -1,125 +1,83 @@
# font2svg
一个基于 Vue 3 + TypeScript 的本地字体预览与导出工具。
本仓库提供两条能力链路:
核心目标:从本地字体库中选择字体,实时生成文本预览,并导出 `SVG``PNG`
- Web 应用(`frontend/`):本地字体预览、多字体对比、导出 `SVG/PNG`
- Python CLI根目录脚本图片转 SVG、字体文本转 SVG
## 界面快照
## 文档导航
![snapshot](frontend/src/assets/snapshot.png)
- 项目总览:`README.md`
- 详细设计:`DETAIL-DESIGN.md`
- 使用说明:`USAGE.md`
- 迭代计划:`PLAN.md`
- 前端子项目说明:`frontend/README.md`
## 当前功能
## 核心特性
- 字体库加载
- `frontend/public/fonts.json` 读取字体清单
- 支持按分类展示字体树
- 支持收藏字体列表
- 预览控制
- 勾选字体进入预览
- 多字体并行预览
- 预览项可单独勾选用于导出
- 文本输入
- 输入框支持手动回车换行
- 自动按每行 45 字换行(保留手动换行)
- 样式控制
- 字号滑块10 ~ 500
- 文字颜色选择
- 导出
- 支持导出 `SVG`
- 支持导出 `PNG`(由 SVG 转换)
- 多项导出自动打包 zip
- 导出文件名规则:`字体名_内容前8字.扩展名`
- 字体树 + 分类折叠 + 搜索 + 收藏
- 预览勾选与导出勾选分离,支持全选/全不选
- 文本自动按每行 45 字换行(保留手动换行)
- 预览采用分批加载与并发渲染,降低大字体库卡顿
- 导出 `SVG``PNG`,多项自动打包 ZIP
- 字体来源统一为 `frontend/public/fonts/`
## 技术栈
## 目录结构
- `Vue 3`
- `TypeScript`
- `Vite`
- `Pinia`
- `UnoCSS`
- `opentype.js`
- `harfbuzzjs`
- `jszip`
## 目录说明
- `frontend/`: 前端应用源码
- `frontend/public/fonts/`: 字体目录(唯一字体来源,支持分类子目录)
- `frontend/public/fonts.json`: 字体清单(由脚本重建)
- `scripts/generate-font-list.py`: 扫描 `frontend/public/fonts` 并生成 `fonts.json`
```text
font2svg/
├── frontend/ # Vue3 + TS Web 应用
│ ├── public/
│ │ ├── fonts/ # 字体唯一来源目录
│ │ └── fonts.json # 字体清单(脚本生成)
│ └── src/
├── scripts/
│ └── generate-font-list.py # 生成 frontend/public/fonts.json
├── font2svg.py # 字体文本转 SVGPython CLI
├── pic2svg.py # 图片转 SVGPython CLI
└── DETAIL-DESIGN.md # 详细设计
```
## 环境要求
- Node.js 18+
- pnpm 8+
- Python 3用于字体准备脚本
- Node.js `>=18`
- pnpm `>=8`
- Python `>=3.9`
- 可选potrace`pic2svg.py` 需要
## 快速开始
### 1. 安装依赖
## 快速开始Web
```bash
pnpm -C frontend install
```
### 2. 准备字体
将字体放入如下结构:
```text
frontend/public/fonts/
手写/
字体A.ttf
黑体/
字体B.otf
```
然后执行:
```bash
pnpm run prepare-fonts
```
该命令会扫描 `frontend/public/fonts/` 并重新生成 `frontend/public/fonts.json`
### 3. 启动开发环境
```bash
pnpm run dev
```
默认由 Vite 启动前端开发服务。
默认访问地址:`http://localhost:5174`
## 常用命令
```bash
# 启动开发
# 根目录
pnpm run dev
# 构建(调用 frontend build
pnpm run build
# 本地预览构建产物
pnpm run preview
# 重新生成字体清单
pnpm run prepare-fonts
# 前端子项目
pnpm -C frontend run dev
pnpm -C frontend run build
pnpm -C frontend run preview
```
## 导出行为说明
## Python CLI 概览
- 单个选中项:直接下载对应文件(`svg``png`
- 多个选中项:打包 zip 下载
- SVG: `font2svg-svg-export.zip`
- PNG: `font2svg-png-export.zip`
- 导出前会自动清理失效选中项,避免导出已不在当前预览列表中的字体
```bash
# 字体转 SVG
python font2svg.py --font path/to/font.ttf --text "你好"
## 文本布局说明
# 图片转 SVG
python pic2svg.py images/your_image.png --outdir output
```
- 输入文本会先做换行标准化(`\r\n` -> `\n`
- 每行超过 45 字会自动分行
- SVG 高度按字形真实边界计算,不额外添加内置 padding
## 旧脚本说明
仓库仍保留 `pic2svg.py` / `font2svg.py` 等 Python 脚本,用于历史流程或离线转换;当前主交互流程以上述 `frontend/` Web 应用为准。
详细参数请看 `USAGE.md`