Commit Graph
19 Commits
Author SHA1 Message Date
liquidliang 574e17eb61 优化 2026-01-09 17:53:08 +08:00
liquidliangandClaude Sonnet 4.5 057fdef0f4 feat(editor): 完善文本属性面板和字体管理系统
## 新增功能

### 字体管理服务 (font-manager-service.ts)
- 自动提取画布中使用的字体
- 画布初始化时预加载已使用的字体
- 支持系统字体和 Google Fonts
- 字体预览图管理
- 使用 link 标签加载字体,由 Service Worker 自动缓存

### Service Worker 字体缓存
- 拦截 Google Fonts CSS 和字体文件请求
- Cache-First 策略,优先从缓存读取
- 自动缓存字体文件,支持离线使用
- 应用层无感知的缓存管理

### 文本属性面板增强
- 集成字体管理服务
- 预加载 Google Fonts,提升用户体验
- 优化字体选择器性能
- 支持字体加载状态显示

## 技术实现

### 字体加载流程
```
画布加载
  ↓
提取使用的字体 (extractFontsFromBoard)
  ↓
预加载字体 (preloadBoardFonts)
  ↓
Service Worker 拦截请求
  ↓
缓存/返回字体文件
  ↓
渲染文本
```

### 缓存策略
- 使用 Service Worker Cache API
- Cache-First 策略
- 字体文件永久缓存
- 支持离线访问

## 文件变更

### 新增文件
- `packages/drawnix/src/services/font-manager-service.ts` - 字体管理服务
- `packages/drawnix/src/constants/text-effects.ts` - 字体配置
- `packages/drawnix/src/types/text-effects.types.ts` - 类型定义
- `packages/drawnix/src/utils/text-effects-utils.ts` - 工具函数
- `packages/drawnix/src/transforms/text-effects.ts` - 文本特效转换

### 修改文件
- `apps/web/src/sw/index.ts` - 添加字体缓存逻辑
- `packages/drawnix/src/drawnix.tsx` - 集成字体预加载
- `packages/drawnix/src/components/toolbar/popup-toolbar/text-property-panel.tsx` - 使用字体管理服务
- `CLAUDE.md` - 更新文档,记录字体管理功能

## 相关文档
- 字体管理服务: `packages/drawnix/src/services/font-manager-service.ts`
- Service Worker 字体缓存: `apps/web/src/sw/index.ts`
- 字体配置: `packages/drawnix/src/constants/text-effects.ts`

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-01-09 16:32:12 +08:00
gongchengtu b606db4139 fix: 优化缓存机制、工具栏交互和AI图片生成功能
### 缓存功能优化
- fix(useMediaCache): 修复缓存完成后URL不实时切换的问题,添加缓存状态订阅
- fix(TaskQueuePanel): 修复预览对话框不使用缓存URL的问题,新增PreviewContent组件

### AI图片生成
- feat(aspect-ratio): 添加"自动"比例选项,让模型根据提示词自动决定最佳比例
- feat(generation-api): 自动比例时不传递aspectRatio参数给API

### 工具栏交互优化
- fix(popup-toolbar): 工具栏位置改为选中元素顶部边缘中点,与Figma/Excalidraw一致
- fix(tool-button): 将原生title替换为TDesign Tooltip,延迟从1-2秒优化到300ms

### 其他
- feat(url-cache-service): 新增URL缓存服务
- fix(image/video): filesystem兜底处理
2025-12-01 21:33:45 +08:00
liquid c2d21f1d61 feat(工具栏): 添加字体大小选择功能
- 在弹出工具栏中新增字体大小选择按钮
- 支持预设大小和自定义输入
- 修改文本组件样式以支持不同字体大小
- 更新文档说明插入位置规则
2025-09-06 12:18:43 +08:00
pubuzhixing8 55e7d67c2d fix(text): resolve text can not auto break line #173 #169 2025-07-10 14:24:28 +08:00
pubuzhixing8 edd8e69511 fix(text): set whiteSpace: pre to avoid \n is ineffectual (#165) 2025-07-02 22:36:58 +08:00
pubuzhixing8 e08b234255 fix(text): allow scroll to show all text (#156) 2025-06-26 19:23:52 +08:00
pubuzhixing8 eede6bdfbf Link for text (#145)
* feat(link): support link plugin in react-text and support text link function for drawnix

* chore: lint test

* chore: improve text for link

* chore: fix lint

* feat: improve link-popup state

* feat: update link-popup position when scrolling
2025-06-09 23:33:02 +08:00
pubuzhixing8 97ab1d469c feat(text): support insertSoftBreak for text #136 2025-05-16 18:12:10 +08:00
pubuzhixing8 2c8f389d69 fix(text): fix text can not display correctly on windows 10 chrome env #99 (#100) 2025-03-12 10:28:08 +08:00
pubuzhixing8 0e302aa914 feat(text): support update text from outside (#58) 2024-12-12 19:47:07 +08:00
pubuzhixing8 ee78a40282 fix(text): fix text can not editing (#52)
I don't know why 😂
2024-12-09 19:07:48 +08:00
pubuzhixing8 602fc3b421 build: fix ci error and disabled e2e-ci(because deps error) (#49) 2024-12-07 19:13:57 +08:00
pubuzhixing8 b74abc1e98 fix(text): resolve with-text build error (#41) 2024-12-02 19:43:43 +08:00
pubuzhixing8 7be01aced3 feat(text): support soft break (#39) 2024-12-02 18:41:54 +08:00
pubuzhixing8 4b2d964921 feat(active-toolbar): support font color property 2024-10-01 22:03:32 +08:00
pubuzhixing8 ecfe3cda3b feat: import styles 2024-06-18 21:09:17 +08:00
pubuzhixing8 117e5a8b2f feat(drawnix-board): initialize drawnix board 2024-06-18 14:00:59 +08:00
pubuzhixing8 397d865fad feat(drawnix): init drawnix package 2024-06-17 20:45:21 +08:00