From 6cfd9fec8742eab68f21d1b5c0166fb690d6e655 Mon Sep 17 00:00:00 2001 From: Bao Nguyen Date: Mon, 21 Sep 2026 17:59:34 +0700 Subject: [PATCH] fix: unquote font family names in webfont provider URLs generateFontParams replaced a quoted family name with capture group 1, the quote character itself, so `fonts: { sans: '"Helvetica Neue", Roboto' }` emitted `family="` and Google Fonts answered 400. Use group 2, the name. --- packages/slidev/node/utils.ts | 2 +- test/utils.test.ts | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/packages/slidev/node/utils.ts b/packages/slidev/node/utils.ts index 792f21b33f..7570ae7ec6 100644 --- a/packages/slidev/node/utils.ts +++ b/packages/slidev/node/utils.ts @@ -75,7 +75,7 @@ export function generateFontParams(options: ResolvedFontOptions) { .sort() .join(';') const fontParams = options.webfonts - .map(i => `family=${i.replace(RE_QUOTED_STRING, '$1').replace(RE_WHITESPACE, '+')}:${options.italic ? 'ital,' : ''}wght@${weights}`) + .map(i => `family=${i.replace(RE_QUOTED_STRING, '$2').replace(RE_WHITESPACE, '+')}:${options.italic ? 'ital,' : ''}wght@${weights}`) .join('&') return fontParams } diff --git a/test/utils.test.ts b/test/utils.test.ts index 4e6d202db6..bdd373fb5f 100644 --- a/test/utils.test.ts +++ b/test/utils.test.ts @@ -65,6 +65,16 @@ describe('utils', () => { ).toMatchSnapshot() }) + it('google-fonts with quoted family names', () => { + expect( + generateGoogleFontsUrl({ + webfonts: ['"Helvetica Neue"', '\'PT Serif\''], + weights: ['400'], + provider: 'google', + } as ResolvedFontOptions), + ).toBe('https://fonts.googleapis.com/css2?family=Helvetica+Neue:wght@400&family=PT+Serif:wght@400&display=swap') + }) + it('coollabs-fonts', () => { expect( generateCoollabsFontsUrl({