chore(fonts): 字体二进制不入库,改用脚本生成

- 远程仓库对单次推送体积有限制,6.7 MB 字体无法一次推送,先从版本库移除
- 新增 tools/build-fonts.py:下载官方分包、合并并子集化,一条命令重建
- @font-face 保留,字体缺失时回退系统字体;离线用例改为按可用性断言
This commit is contained in:
2026-10-26 00:46:20 +08:00
parent 942f8de3b7
commit 14fb3563c5
6 changed files with 165 additions and 21 deletions
+13 -8
View File
@@ -222,7 +222,7 @@ test('cancels a running task from the log drawer', async ({
await expect(drawer.locator('.status-cancelled').first()).toBeVisible()
})
test('renders fully offline with bundled fonts', async ({ page }) => {
test('renders without external network access', async ({ page }) => {
const blocked: string[] = []
await page.route('**/*', (route) => {
const url = route.request().url()
@@ -241,19 +241,24 @@ test('renders fully offline with bundled fonts', async ({ page }) => {
await page.goto('/')
await expect(page.getByRole('heading', { name: 'TaskPilot' })).toBeVisible()
const fonts = await page.evaluate(async () => {
const state = await page.evaluate(async () => {
// 字体二进制不入库;未生成时应回退系统字体,而不是报错。
const probe = await fetch('/fonts/LXGWWenKai-Regular.woff2', {
method: 'HEAD',
})
await document.fonts.ready
return {
wenkai: document.fonts.check('14px "LXGW WenKai"'),
display: document.fonts.check('500 26px "Outfit-Medium"'),
loaded: Array.from(document.fonts).map((face) => face.family),
wenkaiAvailable: probe.ok,
wenkaiLoaded: document.fonts.check('14px "LXGW WenKai"'),
displayLoaded: document.fonts.check('500 26px "Outfit-Medium"'),
}
})
expect(blocked).toEqual([])
expect(fonts.wenkai).toBe(true)
expect(fonts.display).toBe(true)
expect(fonts.loaded).toContain('LXGW WenKai')
expect(state.displayLoaded).toBe(true)
if (state.wenkaiAvailable) {
expect(state.wenkaiLoaded).toBe(true)
}
await page.screenshot({
path: 'test-results/dashboard-offline.png',
fullPage: true,
-7
View File
@@ -7,13 +7,6 @@
name="description"
content="TaskPilot - Windows 本地定时任务管理平台"
/>
<link
rel="preload"
href="/fonts/LXGWWenKai-Regular.woff2"
as="font"
type="font/woff2"
crossorigin
/>
<link
rel="preload"
href="/fonts/Outfit-Medium.ttf"