FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

fix(fontshare): return absolute font urls · unjs/unifont@cd046b6 · GitHub

/ unifont Public

Commit cd046b6

Browse files
committed
fix(fontshare): return absolute font urls
1 parent 1581645 commit cd046b6

2 files changed

Lines changed: 23 additions & 3 deletions

File tree

‎src/providers/fontshare.ts‎

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,18 @@ export default defineFontProvider('fontshare', async (_options, ctx) => {
9090

9191
const css = await ctx.fetch(`${BASE_URL}/css?f[]=${font.slug}@${numbers.join(',')}`).then(res => res.text())
9292

93-
return cleanFontFaces(extractFontFaceData(css), options.formats)
93+
const fontFaces = extractFontFaceData(css)
94+
for (const face of fontFaces) {
95+
for (const source of face.src) {
96+
// fontshare serves protocol-relative URLs, which are only resolvable from within a
97+
// stylesheet loaded over http(s)
98+
if ('url' in source && source.url.startsWith('//')) {
99+
source.url = `https:${source.url}`
100+
}
101+
}
102+
}
103+
104+
return cleanFontFaces(fontFaces, options.formats)
94105
}
95106

96107
return {

‎test/providers/fontshare.test.ts‎

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ describe('fontshare', () => {
1919
"src": [
2020
{
2121
"format": "woff2",
22-
"url": "//cdn.fontshare.com/font",
22+
"url": "https://cdn.fontshare.com/font",
2323
},
2424
],
2525
"style": "normal",
@@ -41,7 +41,7 @@ describe('fontshare', () => {
4141
"src": [
4242
{
4343
"format": "woff2",
44-
"url": "//cdn.fontshare.com/font",
44+
"url": "https://cdn.fontshare.com/font",
4545
},
4646
],
4747
"style": "italic",
@@ -51,6 +51,15 @@ describe('fontshare', () => {
5151
`)
5252
})
5353

54+
it('returns absolute font URLs', async () => {
55+
const unifont = await createUnifont([providers.fontshare()])
56+
const { fonts } = await unifont.resolveFont('Satoshi', { styles: ['normal'] })
57+
const urls = fonts.flatMap(font => font.src.flatMap(source => 'url' in source ? source.url : []))
58+
59+
expect(urls.length).toBeGreaterThan(0)
60+
expect(urls.every(url => url.startsWith('https://'))).toBe(true)
61+
})
62+
5463
it('supports variable fonts', async () => {
5564
const unifont = await createUnifont([providers.fontshare()])
5665
const { fonts } = await unifont.resolveFont('Satoshi', { weights: ['300 900'] })

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL