如何在 macOS Safari 中使用预加载字体?
How to use preloaded fonts in macOS Safari?
在我的 Web 应用程序中,我使用预加载资源提示能够尽快以所需字体显示文本。这在基于 chromium 的浏览器中运行良好,但在 macOS Safari 中似乎不起作用。实际上,字体是使用预加载下载的,但是当 CSS 解析器在 CSS.
中找到第一次使用时会再次下载
大约。 3 秒后,我在 macOS Safari 14.0.3 中收到此警告消息:
The resource https://localhost/app/fonts/Dosis-VariableFont_latin.woff2 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it wasn't preloaded for nothing.
这是 html 部分(link 位于 html 的头部,在 link 到 CSS 文件之前:
<link
rel="preload"
as="font"
href="/app/fonts/Dosis-VariableFont_latin.woff2"
type="font/woff2"
crossorigin="anonymous"
/>
并且字体在 CSS 中应用,例如:
/* latin */
@font-face {
font-family: "Dosis VF";
font-display: swap;
src: url(/app/fonts/Dosis-VariableFont_latin.woff2) format("woff2-variations"),
url(/app/fonts/Dosis-VariableFont_latin.woff2) format("woff2")
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
U+FEFF, U+FFFD;
}
@supports (font-variation-settings: normal) {
some-selector {
font-family: "Dosis VF", sans serif;
}
}
字体是从与网络应用相同的域(自托管)下载的。
我的代码是否存在导致 Safari 不使用预加载字体的问题?
是否存在(至少)告诉 Safari 不执行预加载的方法? (为了节省一些 kilobytes/requests,我预加载了 2-4 种字体)
编辑:我放弃了这个问题,它似乎已自行修复。也许较新版本的 Safari 有所帮助 (14.1.2)?有时我在使用 service worker 手动清除缓存后可以看到警告消息(但在禁用 service worker 时没有警告消息)。
我放弃了这个问题,它似乎已自行解决。也许较新版本的 Safari 有所帮助 (14.1.2)?有时我可以在使用 service worker 手动清除缓存后看到警告消息(但在禁用 service worker 时没有警告消息)。
在我的 Web 应用程序中,我使用预加载资源提示能够尽快以所需字体显示文本。这在基于 chromium 的浏览器中运行良好,但在 macOS Safari 中似乎不起作用。实际上,字体是使用预加载下载的,但是当 CSS 解析器在 CSS.
中找到第一次使用时会再次下载大约。 3 秒后,我在 macOS Safari 14.0.3 中收到此警告消息:
The resource https://localhost/app/fonts/Dosis-VariableFont_latin.woff2 was preloaded using link preload but not used within a few seconds from the window's load event. Please make sure it wasn't preloaded for nothing.
这是 html 部分(link 位于 html 的头部,在 link 到 CSS 文件之前:
<link
rel="preload"
as="font"
href="/app/fonts/Dosis-VariableFont_latin.woff2"
type="font/woff2"
crossorigin="anonymous"
/>
并且字体在 CSS 中应用,例如:
/* latin */
@font-face {
font-family: "Dosis VF";
font-display: swap;
src: url(/app/fonts/Dosis-VariableFont_latin.woff2) format("woff2-variations"),
url(/app/fonts/Dosis-VariableFont_latin.woff2) format("woff2")
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
U+FEFF, U+FFFD;
}
@supports (font-variation-settings: normal) {
some-selector {
font-family: "Dosis VF", sans serif;
}
}
字体是从与网络应用相同的域(自托管)下载的。
我的代码是否存在导致 Safari 不使用预加载字体的问题?
是否存在(至少)告诉 Safari 不执行预加载的方法? (为了节省一些 kilobytes/requests,我预加载了 2-4 种字体)
编辑:我放弃了这个问题,它似乎已自行修复。也许较新版本的 Safari 有所帮助 (14.1.2)?有时我在使用 service worker 手动清除缓存后可以看到警告消息(但在禁用 service worker 时没有警告消息)。
我放弃了这个问题,它似乎已自行解决。也许较新版本的 Safari 有所帮助 (14.1.2)?有时我可以在使用 service worker 手动清除缓存后看到警告消息(但在禁用 service worker 时没有警告消息)。