summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.changeset/bright-jokes-grab.md5
-rw-r--r--package.json5
-rw-r--r--packages/astro/package.json2
-rw-r--r--packages/astro/src/assets/fonts/load.ts44
-rw-r--r--packages/astro/src/config/entrypoint.ts2
-rw-r--r--patches/unifont@0.1.7.patch22
-rw-r--r--pnpm-lock.yaml30
7 files changed, 45 insertions, 65 deletions
diff --git a/.changeset/bright-jokes-grab.md b/.changeset/bright-jokes-grab.md
new file mode 100644
index 000000000..46956569d
--- /dev/null
+++ b/.changeset/bright-jokes-grab.md
@@ -0,0 +1,5 @@
+---
+'astro': patch
+---
+
+Reduces the number of font files downloaded
diff --git a/package.json b/package.json
index 11bf44115..bf86b365d 100644
--- a/package.json
+++ b/package.json
@@ -83,9 +83,6 @@
"workerd",
"@biomejs/biome",
"sharp"
- ],
- "patchedDependencies": {
- "unifont@0.1.7": "patches/unifont@0.1.7.patch"
- }
+ ]
}
}
diff --git a/packages/astro/package.json b/packages/astro/package.json
index ce1b273d5..454f06563 100644
--- a/packages/astro/package.json
+++ b/packages/astro/package.json
@@ -166,7 +166,7 @@
"tinyglobby": "^0.2.12",
"tsconfck": "^3.1.5",
"ultrahtml": "^1.6.0",
- "unifont": "^0.1.7",
+ "unifont": "~0.2.0",
"unist-util-visit": "^5.0.0",
"unstorage": "^1.15.0",
"vfile": "^6.0.3",
diff --git a/packages/astro/src/assets/fonts/load.ts b/packages/astro/src/assets/fonts/load.ts
index 6855c9c0b..3992ccf39 100644
--- a/packages/astro/src/assets/fonts/load.ts
+++ b/packages/astro/src/assets/fonts/load.ts
@@ -111,23 +111,33 @@ export async function loadFonts({
[family.provider.name!],
);
- fonts = result.fonts.map((font) => ({
- ...font,
- src: font.src.map((source) =>
- 'name' in source
- ? source
- : {
- ...source,
- originalURL: source.url,
- url: proxyURL({
- value: source.url,
- // We only use the url for hashing since the service returns urls with a hash already
- hashString,
- collect,
- }),
- },
- ),
- }));
+ fonts = result.fonts
+ // Avoid getting too much font files
+ .filter((font) =>
+ typeof font.meta?.priority === 'number' ? font.meta.priority === 0 : true,
+ )
+ // Collect URLs
+ .map((font) => ({
+ ...font,
+ src: font.src
+ // Limit src to 1 file (eg. if woff2 and woff are present, will only take woff2) to avoid
+ // downloading too many files
+ .slice(0, 1)
+ .map((source) =>
+ 'name' in source
+ ? source
+ : {
+ ...source,
+ originalURL: source.url,
+ url: proxyURL({
+ value: source.url,
+ // We only use the url for hashing since the service returns urls with a hash already
+ hashString,
+ collect,
+ }),
+ },
+ ),
+ }));
}
for (const data of fonts) {
diff --git a/packages/astro/src/config/entrypoint.ts b/packages/astro/src/config/entrypoint.ts
index a1301662e..dc2f47242 100644
--- a/packages/astro/src/config/entrypoint.ts
+++ b/packages/astro/src/config/entrypoint.ts
@@ -8,7 +8,7 @@ export { envField } from '../env/config.js';
export { mergeConfig } from '../core/config/merge.js';
export { validateConfig } from '../core/config/validate.js';
export { fontProviders, defineAstroFontProvider } from '../assets/fonts/providers/index.js';
-export type { AstroFontProvider as FontProvider } from '../assets/fonts/types.js';
+export type { AstroFontProvider } from '../assets/fonts/types.js';
/**
* Return the configuration needed to use the Sharp-based image service
diff --git a/patches/unifont@0.1.7.patch b/patches/unifont@0.1.7.patch
deleted file mode 100644
index 625a623d9..000000000
--- a/patches/unifont@0.1.7.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff --git a/dist/index.js b/dist/index.js
-index a8d7acc843a641e4797d69b897fc66fbddbd31a9..93c3e63a1a238505ccf8f6b12767a2acdcb0d183 100644
---- a/dist/index.js
-+++ b/dist/index.js
-@@ -383,7 +383,7 @@ const fontsource = defineFontProvider("fontsource", async (_options, ctx) => {
- const fontFaceData = [];
- for (const subset of subsets) {
- for (const style of styles) {
-- if (font.variable) {
-+ if (options.weights.some(weight => weight.includes(" ")) && font.variable) {
- try {
- const variableAxes = await ctx.storage.getItem(`fontsource:${font.family}-axes.json`, () => fontAPI(`/variable/${font.id}`, { responseType: "json" }));
- if (variableAxes && variableAxes.axes.wght) {
-@@ -441,7 +441,7 @@ const google = defineFontProvider("google", async (_options = {}, ctx) => {
- async function getFontDetails(family, options) {
- const font = googleFonts.find((font2) => font2.family === family);
- const styles = [...new Set(options.styles.map((i) => styleMap[i]))].sort();
-- const variableWeight = font.axes.find((a) => a.tag === "wght");
-+ const variableWeight = options.weights.some(weight => weight.includes(" ")) && font.axes.find((a) => a.tag === "wght");
- const weights = variableWeight ? [`${variableWeight.min}..${variableWeight.max}`] : options.weights.filter((weight) => weight in font.fonts);
- if (weights.length === 0 || styles.length === 0)
- return [];
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 57d2bc636..60e4f5512 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -4,11 +4,6 @@ settings:
autoInstallPeers: false
excludeLinksFromLockfile: false
-patchedDependencies:
- unifont@0.1.7:
- hash: 8015962152377f03e7f61d7d6a3511d95131453e45fd8afb4c4e10c337306488
- path: patches/unifont@0.1.7.patch
-
importers:
.:
@@ -607,8 +602,8 @@ importers:
specifier: ^1.6.0
version: 1.6.0
unifont:
- specifier: ^0.1.7
- version: 0.1.7(patch_hash=8015962152377f03e7f61d7d6a3511d95131453e45fd8afb4c4e10c337306488)
+ specifier: ~0.2.0
+ version: 0.2.0
unist-util-visit:
specifier: ^5.0.0
version: 5.0.0
@@ -7925,8 +7920,8 @@ packages:
svelte: ^5.0.0
vite: ^6.0.0
- '@swc/helpers@0.5.15':
- resolution: {integrity: sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==}
+ '@swc/helpers@0.5.17':
+ resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==}
'@tailwindcss/node@4.1.3':
resolution: {integrity: sha512-H/6r6IPFJkCfBJZ2dKZiPJ7Ueb2wbL592+9bQEl2r73qbX6yGnmQVIfiUvDRB2YI0a3PWDrzUwkvQx1XW1bNkA==}
@@ -10595,9 +10590,6 @@ packages:
ofetch@1.4.1:
resolution: {integrity: sha512-QZj2DfGplQAr2oj9KzceK9Hwz6Whxazmn85yYeVuS3u9XTMOGMRx0kO95MQ+vLsj/S/NwBDMMLU5hpxvI6Tklw==}
- ohash@1.1.6:
- resolution: {integrity: sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==}
-
ohash@2.0.11:
resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==}
@@ -11841,8 +11833,8 @@ packages:
unified@11.0.5:
resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
- unifont@0.1.7:
- resolution: {integrity: sha512-UyN6r/TUyl69iW/jhXaCtuwA6bP9ZSLhVViwgP8LH9EHRGk5FyIMDxvClqD5z2BV6MI9GMATzd0dyLqFxKkUmQ==}
+ unifont@0.2.0:
+ resolution: {integrity: sha512-RoF14/tOhLvDa7R5K6A3PjsfJVFKvadvRpWjfV1ttabUe9704P1ie9z1ABLWEts/8SxrBVePav/XhgeFNltpsw==}
unist-util-find-after@5.0.0:
resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==}
@@ -14069,7 +14061,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- '@swc/helpers@0.5.15':
+ '@swc/helpers@0.5.17':
dependencies:
tslib: 2.8.1
@@ -15756,7 +15748,7 @@ snapshots:
fontkit@2.0.4:
dependencies:
- '@swc/helpers': 0.5.15
+ '@swc/helpers': 0.5.17
brotli: 1.3.3
clone: 2.1.2
dfa: 1.2.0
@@ -17166,8 +17158,6 @@ snapshots:
node-fetch-native: 1.6.6
ufo: 1.5.4
- ohash@1.1.6: {}
-
ohash@2.0.11: {}
on-finished@2.4.1:
@@ -18608,10 +18598,10 @@ snapshots:
trough: 2.2.0
vfile: 6.0.3
- unifont@0.1.7(patch_hash=8015962152377f03e7f61d7d6a3511d95131453e45fd8afb4c4e10c337306488):
+ unifont@0.2.0:
dependencies:
css-tree: 3.1.0
- ohash: 1.1.6
+ ohash: 2.0.11
unist-util-find-after@5.0.0:
dependencies: