Self-host the three web fonts and drop the render-blocking Google Fonts CSS
This commit is contained in:
BIN
frontend/fonts/BricolageGrotesque-latin-ext.woff2
Normal file
BIN
frontend/fonts/BricolageGrotesque-latin-ext.woff2
Normal file
Binary file not shown.
BIN
frontend/fonts/BricolageGrotesque-latin.woff2
Normal file
BIN
frontend/fonts/BricolageGrotesque-latin.woff2
Normal file
Binary file not shown.
BIN
frontend/fonts/HankenGrotesk-latin-ext.woff2
Normal file
BIN
frontend/fonts/HankenGrotesk-latin-ext.woff2
Normal file
Binary file not shown.
BIN
frontend/fonts/HankenGrotesk-latin.woff2
Normal file
BIN
frontend/fonts/HankenGrotesk-latin.woff2
Normal file
Binary file not shown.
BIN
frontend/fonts/JetBrainsMono-latin-ext.woff2
Normal file
BIN
frontend/fonts/JetBrainsMono-latin-ext.woff2
Normal file
Binary file not shown.
BIN
frontend/fonts/JetBrainsMono-latin.woff2
Normal file
BIN
frontend/fonts/JetBrainsMono-latin.woff2
Normal file
Binary file not shown.
51
frontend/fonts/fonts.css
Normal file
51
frontend/fonts/fonts.css
Normal file
@@ -0,0 +1,51 @@
|
||||
/* Generated by scripts/fetch-fonts.js — do not edit by hand. */
|
||||
@font-face {
|
||||
font-family: 'Bricolage Grotesque';
|
||||
font-style: normal;
|
||||
font-weight: 600 800;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(BricolageGrotesque-latin-ext.woff2) format('woff2');
|
||||
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Bricolage Grotesque';
|
||||
font-style: normal;
|
||||
font-weight: 600 800;
|
||||
font-stretch: 100%;
|
||||
font-display: swap;
|
||||
src: url(BricolageGrotesque-latin.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Hanken Grotesk';
|
||||
font-style: normal;
|
||||
font-weight: 400 700;
|
||||
font-display: swap;
|
||||
src: url(HankenGrotesk-latin-ext.woff2) format('woff2');
|
||||
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'Hanken Grotesk';
|
||||
font-style: normal;
|
||||
font-weight: 400 700;
|
||||
font-display: swap;
|
||||
src: url(HankenGrotesk-latin.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'JetBrains Mono';
|
||||
font-style: normal;
|
||||
font-weight: 400 700;
|
||||
font-display: swap;
|
||||
src: url(JetBrainsMono-latin-ext.woff2) format('woff2');
|
||||
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
|
||||
}
|
||||
@font-face {
|
||||
font-family: 'JetBrains Mono';
|
||||
font-style: normal;
|
||||
font-weight: 400 700;
|
||||
font-display: swap;
|
||||
src: url(JetBrainsMono-latin.woff2) format('woff2');
|
||||
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
|
||||
}
|
||||
@@ -13,16 +13,13 @@
|
||||
<meta name="apple-mobile-web-app-title" content="YT Player" />
|
||||
<meta
|
||||
http-equiv="Content-Security-Policy"
|
||||
content="default-src 'self'; img-src 'self' https: data: asset: http://asset.localhost blob:; media-src 'self' https: blob: asset: http://asset.localhost; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src https://fonts.gstatic.com data:; script-src 'self'; connect-src 'self' https: ipc: http://ipc.localhost blob:; worker-src 'self';"
|
||||
content="default-src 'self'; img-src 'self' https: data: asset: http://asset.localhost blob:; media-src 'self' https: blob: asset: http://asset.localhost; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src 'self' https://fonts.gstatic.com data:; script-src 'self'; connect-src 'self' https: ipc: http://ipc.localhost blob:; worker-src 'self';"
|
||||
/>
|
||||
<title>YT Player</title>
|
||||
<link rel="manifest" href="/manifest.webmanifest" />
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
||||
<link
|
||||
href="https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,600;12..96,700;12..96,800&family=Hanken+Grotesk:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;700&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link rel="preload" href="fonts/BricolageGrotesque-latin.woff2" as="font" type="font/woff2" crossorigin />
|
||||
<link rel="preload" href="fonts/HankenGrotesk-latin.woff2" as="font" type="font/woff2" crossorigin />
|
||||
<link rel="stylesheet" href="fonts/fonts.css" />
|
||||
<link rel="stylesheet" href="styles.css" />
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -68,6 +68,13 @@ const SHELL = [
|
||||
'/manifest.webmanifest',
|
||||
'/icons/icon-192.png',
|
||||
'/icons/icon-512.png',
|
||||
'/fonts/fonts.css',
|
||||
'/fonts/BricolageGrotesque-latin-ext.woff2',
|
||||
'/fonts/BricolageGrotesque-latin.woff2',
|
||||
'/fonts/HankenGrotesk-latin-ext.woff2',
|
||||
'/fonts/HankenGrotesk-latin.woff2',
|
||||
'/fonts/JetBrainsMono-latin-ext.woff2',
|
||||
'/fonts/JetBrainsMono-latin.woff2',
|
||||
];
|
||||
|
||||
// ---- Install: pre-cache the app shell ----
|
||||
|
||||
Reference in New Issue
Block a user