Files
font2pic/README.md
2026-02-07 13:32:31 +08:00

126 lines
2.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# font2svg
一个基于 Vue 3 + TypeScript 的本地字体预览与导出工具。
核心目标:从本地字体库中选择字体,实时生成文本预览,并导出为 `SVG``PNG`
## 界面快照
![snapshot](frontend/src/assets/snapshot.png)
## 当前功能
- 字体库加载
-`frontend/public/fonts.json` 读取字体清单
- 支持按分类展示字体树
- 支持收藏字体列表
- 预览控制
- 勾选字体进入预览
- 多字体并行预览
- 预览项可单独勾选用于导出
- 文本输入
- 输入框支持手动回车换行
- 自动按每行 45 字换行(保留手动换行)
- 样式控制
- 字号滑块10 ~ 500
- 文字颜色选择
- 导出
- 支持导出 `SVG`
- 支持导出 `PNG`(由 SVG 转换)
- 多项导出自动打包 zip
- 导出文件名规则:`字体名_内容前8字.扩展名`
## 技术栈
- `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`
## 环境要求
- Node.js 18+
- pnpm 8+
- Python 3用于字体准备脚本
## 快速开始
### 1. 安装依赖
```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 启动前端开发服务。
## 常用命令
```bash
# 启动开发
pnpm run dev
# 构建(调用 frontend build
pnpm run build
# 本地预览构建产物
pnpm run preview
# 重新生成字体清单
pnpm run prepare-fonts
```
## 导出行为说明
- 单个选中项:直接下载对应文件(`svg``png`
- 多个选中项:打包 zip 下载
- SVG: `font2svg-svg-export.zip`
- PNG: `font2svg-png-export.zip`
- 导出前会自动清理失效选中项,避免导出已不在当前预览列表中的字体
## 文本布局说明
- 输入文本会先做换行标准化(`\r\n` -> `\n`
- 每行超过 45 字会自动分行
- SVG 高度按字形真实边界计算,不额外添加内置 padding
## 旧脚本说明
仓库仍保留 `pic2svg.py` / `font2svg.py` 等 Python 脚本,用于历史流程或离线转换;当前主交互流程以上述 `frontend/` Web 应用为准。