diff --git a/.changeset/red-parrots-drum.md b/.changeset/red-parrots-drum.md new file mode 100644 index 000000000000..55d12723f3a4 --- /dev/null +++ b/.changeset/red-parrots-drum.md @@ -0,0 +1,26 @@ +--- +'astro': patch +--- + +**BREAKING CHANGE to the experimental Fonts API only** + +Updates the default `subsets` to `["latin"]` + +Subsets have been a common source of confusion: they caused a lot of files to be downloaded by default. You now have to manually pick extra subsets. + +Review your Astro config and update subsets if you need, for example if you need greek characters: + +```diff +import { defineConfig, fontProviders } from "astro/config" + +export default defineConfig({ + experimental: { + fonts: [{ + name: "Roboto", + cssVariable: "--font-roboto", + provider: fontProviders.google(), ++ subsets: ["latin", "greek"] + }] + } +}) +``` \ No newline at end of file diff --git a/packages/astro/src/assets/fonts/config.ts b/packages/astro/src/assets/fonts/config.ts index 73b28105bf64..46e27ff083fd 100644 --- a/packages/astro/src/assets/fonts/config.ts +++ b/packages/astro/src/assets/fonts/config.ts @@ -164,7 +164,7 @@ export const remoteFontFamilySchema = requiredFamilyAttributesSchema */ styles: z.array(styleSchema).nonempty().optional(), /** - * @default `["cyrillic-ext", "cyrillic", "greek-ext", "greek", "vietnamese", "latin-ext", "latin"]` + * @default `["latin"]` * * An array of [font subsets](https://knaap.dev/posts/font-subsetting/): */ diff --git a/packages/astro/src/assets/fonts/constants.ts b/packages/astro/src/assets/fonts/constants.ts index 557f48ac0c70..07b4195b51a4 100644 --- a/packages/astro/src/assets/fonts/constants.ts +++ b/packages/astro/src/assets/fonts/constants.ts @@ -5,7 +5,7 @@ export const LOCAL_PROVIDER_NAME = 'local'; export const DEFAULTS: Defaults = { weights: ['400'], styles: ['normal', 'italic'], - subsets: ['cyrillic-ext', 'cyrillic', 'greek-ext', 'greek', 'vietnamese', 'latin-ext', 'latin'], + subsets: ['latin'], // Technically serif is the browser default but most websites these days use sans-serif fallbacks: ['sans-serif'], optimizedFallbacks: true,