崮生(子虚)
|
8db337d27e
|
chore(release): v1.9.1 — 修复 LLRT __filename 报错
重新发版,修复 v1.9.0 中 createRequire(import.meta.url) 导致 LLRT 运行时报错。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-13 21:22:48 +08:00 |
|
崮生(子虚)
|
ef5514a008
|
fix: subsetCache 版本指纹改用构建期注入,修复 LLRT __filename 报错
createRequire(import.meta.url) 经 tsdown 打包为 CJS 后引入 __filename,
而 LLRT 运行时不提供 __filename,导致 ReferenceError: __filename is not defined。
改用 tsdown define 构建期把 PACKAGE_VERSION 替换为字面量字符串,
运行时无文件读取、无 __filename 依赖。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-13 21:14:01 +08:00 |
|
崮生(子虚)
|
c04914e255
|
perf(woff2): glyf triplet 变换无分支优化(优化302)
千字文 woff2(57168 点)profile 定位 transformGlyfAndLoca 热点:
- 坐标解码 50/50 不可预测分支(正负 delta 各半)→ sign 位无分支乘法
- abs 三元 → Math.abs(V8 编译为 neg 指令)
- curveBit 三元 → 位运算无分支
微基准 3.5-3.6x,端到端千字文 woff2 9.8→9.1ms。
体积与 SSIM 完全不变(无分支只改计算方式不改结果)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-13 21:07:57 +08:00 |
|
崮生(子虚)
|
168fc66544
|
feat(v1.9.0): OTF 子集化支持 + 法字笔画修复 + subsetCache 版本指纹
性能(vs v1.7.0 基线,基准测试全用例通过):
- 千字文 woff2 346ms → 9.8ms(35x)
- 8汉字 woff2 39.7ms → 2.8ms(14x)
- 千字文 ttf 6.0ms → 4.4ms
- 8汉字 ttf 2.7ms → 2.1ms
OTF 正确性:
- 修复 CFF.js readCFFIndexObject 漏读 off[idx+1] 导致子程序读成 0 字节,
思源黑体「法」字三点水丢笔画的问题
- 修复非 subset 模式 cmap format12 崩溃(空数组误判为 subset)
缓存健壮性:
- subsetCache key 加版本指纹(package version + process.uptime),
杜绝代码已修但缓存返回旧错误结果
基准测试:
- 新增白狐/思源 OTF 用例(含法海波等复杂笔画字)守护 OTF→TTF 转换
- 修复 calculateSSIM 的 width 推断 bug(sqrt 假设正方形)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-13 21:01:19 +08:00 |
|
崮生(子虚)
|
4a6c7e64e1
|
glm2.5 优化,暂存
|
2026-06-13 20:19:57 +08:00 |
|
崮生(子虚)
|
13787dfd22
|
refactor: 重命名 Skill 为 chinese-web-font,聚焦中文字体应用
- skills/chinese-web-typography.md → skills/chinese-web-font.md
- 移除路线图(不写规划)
- 移除英文 README 中不存在的 Typography Presets 表格
- 统一文案:Typography Skill → Chinese Font Skill
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
v20260613
|
2026-05-29 09:14:04 +08:00 |
|
崮生(子虚)
|
5dab3d6d93
|
更新文档
|
2026-05-28 22:50:02 +08:00 |
|
崮生(子虚)
|
b4a7a820eb
|
feat: AI Typography Skill 系统 + 中英双语 i18n + Before/After Demo
- 新增 skills/chinese-web-typography.md 作为提供给 AI agent 的排版智能文件
- 重写 README.md(中文默认),新增 README.en.md(英文版),互相引用
- 新增 TypographyDemo.vue 前后对比组件,展示中文字体效果差异
- 新增 src/i18n.ts 轻量国际化方案,所有组件文案支持中英切换
- 后端 /api/fonts 返回 temporary 字段标识临时字体
- 升级至 v1.8.0
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-05-28 22:41:47 +08:00 |
|
崮生(子虚)
|
106eb8ce7b
|
fix: SDK 收集输入框字符时同时包含 placeholder 占位文本
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-04-30 21:39:47 +08:00 |
|
崮生(子虚)
|
7c7db7447a
|
fix build
|
2026-04-30 21:34:48 +08:00 |
|
崮生(子虚)
|
76ac23ad5d
|
fix build
|
2026-04-30 21:03:57 +08:00 |
|
崮生(子虚)
|
53d170dc90
|
feat: 前端迁移至 Vue3 + TS,后端构建迁移至 tsdown
- 前端从 SolidJS 迁移到 Vue3 Composition API(<script setup lang="ts">)
- 后端构建从 tsup 迁移到 tsdown,动态 import 改为静态以支持单文件输出
- FontSelector 添加 defineProps 修复下拉无选项问题
- StatsPanel 添加"服务状态"标题
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-04-30 20:46:30 +08:00 |
|
崮生(子虚)
|
68df9db2da
|
fix: 修复 StatsPanel 中 flex-wrap 属性的 JSX 语法错误
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-04-30 19:37:57 +08:00 |
|
崮生(子虚)
|
c18dc44e72
|
chore: 升级至 v1.7.0,新增内存缓存与运行时统计
- 新增通用 LruCache 类,支持按条目数/字节容量两种淘汰策略
- 字体裁剪结果 LRU 内存缓存(默认 10MB,X-Cache 响应头标识命中)
- 新增 GET /api/stats 运行时统计接口
- 前端统计面板(10s 轮询,页面不可见时暂停)
- API handler 拆分到 routes/ 目录,提取 shared.ts 共享模块
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-04-30 19:34:30 +08:00 |
|
崮生(子虚)
|
6e5b2c5fb7
|
chore: 升级至 v1.6.0,llrt 切换为 no-sdk 版本
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-04-24 13:32:07 +08:00 |
|
崮生(子虚)
|
258d9f9746
|
chore: 移除 skia-canvas 依赖,清理废弃验证脚本
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-16 17:30:09 +08:00 |
|
崮生(子虚)
|
03107af2dd
|
添加注释
|
2026-04-11 22:51:53 +08:00 |
|
崮生(子虚)
|
976a68f189
|
1
|
2026-04-11 17:54:01 +08:00 |
|
崮生(子虚)
|
bd3189b459
|
优化性能
|
2026-04-11 17:53:57 +08:00 |
|
崮生(子虚)
|
6ba093ff70
|
优化性能
|
2026-04-11 10:25:54 +08:00 |
|
崮生(子虚)
|
2f9eb3fd1a
|
支持 woff2
webfont@1.5.0
|
2026-04-11 00:17:27 +08:00 |
|
崮生(子虚)
|
0bfc9c9b27
|
1
|
2026-04-11 00:11:09 +08:00 |
|
崮生(子虚)
|
4ada92b6c5
|
更新基准测试
|
2026-04-10 20:57:37 +08:00 |
|
崮生(子虚)
|
161bafc02a
|
实现 js 版 woff2 处理
|
2026-04-10 20:42:30 +08:00 |
|
崮生(子虚)
|
e977cc9575
|
更新版本
|
2026-04-10 13:57:28 +08:00 |
|
崮生(子虚)
|
efc783cd86
|
更新依赖
|
2026-04-10 13:56:08 +08:00 |
|
崮生(子虚)
|
1e543d58ab
|
fix: 修复 OTF→TTF 子集字体浏览器渲染空白 + 改进基准测试
- API 默认 outType 改为 ttf(兼容性最好)
- Cache-Control 从 immutable 改为 24h 缓存
- 基准测试改为 DOM 渲染 + puppeteer 截图 + pngjs 解码(更贴近真实浏览器)
- 增加 maxp 表验证(maxPoints/maxContours 为 0 直接报错)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-10 13:55:27 +08:00 |
|
崮生(子虚)
|
af0ab38cec
|
性能优化
|
2026-04-10 13:51:03 +08:00 |
|
崮生(子虚)
|
4990a0f61d
|
性能优化
|
2026-04-10 08:44:09 +08:00 |
|
崮生(子虚)
|
97f4d72e6a
|
fix: 修复 OTF→TTF 转换字体在浏览器中渲染空白的问题
根因:optimizettf 中 maxPoints/maxContours 只在 TypedArray 格式(_xArr)
的字形分支中统计,OTF→TTF 转换的字形使用对象 contours 格式,
导致 maxp 表中这两个值为 0,浏览器据此跳过渲染。
同时包含 OTF 解析路径的多项性能优化和清理冗余测试文件。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-09 20:46:48 +08:00 |
|
崮生(子虚)
|
18e60fe940
|
优化性能
|
2026-04-09 16:47:41 +08:00 |
|
崮生(子虚)
|
3ce09a21a4
|
fix 切换字体没有变化
|
2026-04-09 12:06:31 +08:00 |
|
崮生(子虚)
|
84b50db7d9
|
更新版本
|
2026-04-09 12:02:49 +08:00 |
|
崮生(子虚)
|
55aa492ce0
|
新增 ttf 随机选择和提示
|
2026-04-09 12:02:37 +08:00 |
|
崮生(子虚)
|
e2cc7c1144
|
feat: 前端格式选择器组件,服务端支持能力透传
- 新增 FontSelector.tsx 独立组件,字体和输出格式并排选择
- /api/config 新增 supportedOutTypes 字段(LLRT 仅 ttf)
- 前端加载配置后自动适配可用格式
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-09 11:56:10 +08:00 |
|
崮生(子虚)
|
820fc71166
|
feat: 新增 woff2 输出格式支持,默认使用 woff2
- 后端支持 outType URL 参数(woff2/ttf),Node.js 默认 woff2,LLRT 默认 ttf
- woff2 wasm 延迟初始化,仅首次请求时加载(~8ms)
- SDK 三个入口函数支持 outType 选项,默认 woff2
- 前端 CSS、下载、使用说明适配 woff2
- 基准测试新增 woff2 测试(耗时、体积、压缩率)
- 构建脚本自动复制 woff2.wasm 到 dist 目录
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-09 11:48:07 +08:00 |
|
崮生(子虚)
|
6d34a5e53a
|
feat: 标语随机使用字体展示,调整字号和位置
标语移至标题下方,每次加载随机选取字体列表中的一个字体渲染,
悬停显示字体名称,字号调至 24px。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-09 11:34:02 +08:00 |
|
崮生(子虚)
|
b7a91a3a11
|
fix: 修正 package.json exports 条件顺序,消除 tsup 构建警告
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-09 11:23:56 +08:00 |
|
崮生(子虚)
|
6f0e3d8e6b
|
fix: 修复 name 表写入偏移错误导致浏览器无法渲染字体
name.js write 函数改用 view.setUint16 后未同步 writer.offset,
导致 name 字符串覆盖 header,name 表损坏。浏览器依赖 name 表
识别字体所以无法渲染,而 Node 端渲染不依赖 name 表所以基准
测试未检测到。
同时修复 cmap sizeof 动态计算记录头大小的问题。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-09 11:22:51 +08:00 |
|
崮生(子虚)
|
4acb1c1e5d
|
docs: 添加品牌标语
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-09 10:47:48 +08:00 |
|
崮生(子虚)
|
2f7ce0cb72
|
feat: SDK 多模式架构 + 首页输入事件驱动
- 重构 webfont-sdk.js 为核心增量引擎 + 多触发器架构
- 支持 loadFont(轮询)、observeFont(MutationObserver)、loadText(手动传文本)三种模式
- 三种模式共享 loadedChars,按 fontName|family 自动去重增量加载
- loadFont interval 可从外部配置
- 首页改用 loadText 模式,输入即时触发字体加载
- textarea 高度根据文本行数动态变化
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-04-09 10:41:53 +08:00 |
|
崮生(子虚)
|
909b91a8d5
|
优化
|
2026-04-09 10:27:17 +08:00 |
|
崮生(子虚)
|
acfe0ca022
|
优化 6.3ms / 2.3ms / 11.1ms - 全面超越之前最佳性能!
|
2026-04-09 10:25:17 +08:00 |
|
崮生(子虚)
|
2aa6852dca
|
优化2
|
2026-04-09 10:21:09 +08:00 |
|
崮生(子虚)
|
d43255aba0
|
性能优化1
|
2026-04-09 10:17:02 +08:00 |
|
崮生(子虚)
|
765a301649
|
修改为本地引用,清理冗余文件
|
2026-04-09 09:50:26 +08:00 |
|
崮生(子虚)
|
a8fdb24de4
|
优化基准测试
|
2026-04-08 22:49:43 +08:00 |
|
崮生(子虚)
|
c74278cf2f
|
更改优先级
|
2026-04-08 22:35:58 +08:00 |
|
崮生(子虚)
|
79ee7dd3f0
|
内存缓存最近三个字体,避免高频的文件io
|
2026-04-08 22:31:53 +08:00 |
|
崮生(子虚)
|
b902b4e1cc
|
增强安全性,重构代码
|
2026-04-08 22:05:17 +08:00 |
|