Skip to content

Commit 5e1ec56

Browse files
committed
Download all fonts
1 parent 81c91bc commit 5e1ec56

File tree

4 files changed

+77
-31
lines changed

4 files changed

+77
-31
lines changed

.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,4 @@ yarn-error.log*
3535
.vercel
3636

3737
# external fonts
38-
public/fonts/Optimistic_*.woff2
38+
public/fonts/**/Optimistic_*.woff2

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
"scripts": {
77
"analyze": "ANALYZE=true next build",
88
"dev": "next-remote-watch ./src/content",
9-
"build": "next build && node ./scripts/downloadFonts.js",
9+
"build": "next build && node --experimental-modules ./scripts/downloadFonts.mjs",
1010
"lint": "next lint",
1111
"lint:fix": "next lint --fix",
1212
"format:source": "prettier --config .prettierrc --write \"{plugins,src}/**/*.{js,ts,jsx,tsx,css}\"",

scripts/downloadFonts.js

-29
This file was deleted.

scripts/downloadFonts.mjs

+75
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
/**
2+
* Copyright (c) Facebook, Inc. and its affiliates.
3+
*/
4+
5+
import { exec } from 'child_process';
6+
import { mkdir, promises as fsPromises } from 'fs';
7+
import { dirname } from 'path';
8+
import { promisify } from 'util';
9+
10+
const execAsync = promisify(exec);
11+
12+
// Taken from Downloads on https://www.facebook.com/brand/meta/typography/.
13+
// To refresh the list, go to the Conf website's public/fonts/ folder and run this:
14+
// printf "\n[\n%s\n]\n" "$(find . -type f ! -path "*/.*" -name "*.woff2" | sed 's|^./||' | sort | awk '{printf " \"%s\",\n", $0}' | sed '$s/,$//')"
15+
const paths = [
16+
"Optimistic_Display_W_Bd.woff2",
17+
"Optimistic_Display_W_BdIt.woff2",
18+
"Optimistic_Display_W_Lt.woff2",
19+
"Optimistic_Display_W_Md.woff2",
20+
"Optimistic_Display_W_MdIt.woff2",
21+
"Optimistic_Display_W_SBd.woff2",
22+
"Optimistic_Display_W_SBdIt.woff2",
23+
"Optimistic_Display_W_XBd.woff2",
24+
"Optimistic_Display_W_XLt.woff2",
25+
"Optimistic_Text_W_Bd.woff2",
26+
"Optimistic_Text_W_BdIt.woff2",
27+
"Optimistic_Text_W_It.woff2",
28+
"Optimistic_Text_W_Md.woff2",
29+
"Optimistic_Text_W_MdIt.woff2",
30+
"Optimistic_Text_W_Rg.woff2",
31+
"Optimistic_Text_W_XBd.woff2",
32+
"Optimistic_Text_W_XBdIt.woff2",
33+
"arabic/Optimistic_Display_Arbc_W_Bd.woff2",
34+
"arabic/Optimistic_Display_Arbc_W_Md.woff2",
35+
"arabic/Optimistic_Display_Arbc_W_SBd.woff2",
36+
"arabic/Optimistic_Text_Arbc_W_Bd.woff2",
37+
"arabic/Optimistic_Text_Arbc_W_Md.woff2",
38+
"arabic/Optimistic_Text_Arbc_W_Rg.woff2",
39+
"arabic/Optimistic_Text_Arbc_W_XBd.woff2",
40+
"cyrillic/Optimistic_Display_Cyrl_W_Bd.woff2",
41+
"cyrillic/Optimistic_Display_Cyrl_W_Md.woff2",
42+
"cyrillic/Optimistic_Display_Cyrl_W_SBd.woff2",
43+
"cyrillic/Optimistic_Text_Cyrl_W_Bd.woff2",
44+
"cyrillic/Optimistic_Text_Cyrl_W_Md.woff2",
45+
"cyrillic/Optimistic_Text_Cyrl_W_Rg.woff2",
46+
"cyrillic/Optimistic_Text_Cyrl_W_XBd.woff2",
47+
"devanagari/Optimistic_Text_Deva_W_Bd.woff2",
48+
"devanagari/Optimistic_Text_Deva_W_Md.woff2",
49+
"devanagari/Optimistic_Text_Deva_W_Rg.woff2",
50+
"devanagari/Optimistic_Text_Deva_W_XBd.woff2",
51+
"vietnamese/Optimistic_Display_Viet_W_Bd.woff2",
52+
"vietnamese/Optimistic_Display_Viet_W_Md.woff2",
53+
"vietnamese/Optimistic_Display_Viet_W_SBd.woff2",
54+
"vietnamese/Optimistic_Text_Viet_W_Bd.woff2",
55+
"vietnamese/Optimistic_Text_Viet_W_Md.woff2",
56+
"vietnamese/Optimistic_Text_Viet_W_Rg.woff2",
57+
"vietnamese/Optimistic_Text_Viet_W_XBd.woff2"
58+
];
59+
60+
const baseURL = "https://conf.reactjs.org/fonts/";
61+
const outputDir = "public/fonts/";
62+
63+
await Promise.all(
64+
paths.map(async (path) => {
65+
const localPath = `${outputDir}${path}`;
66+
const localDir = dirname(localPath);
67+
await fsPromises.mkdir(localDir, { recursive: true });
68+
69+
const command = `curl ${baseURL}${path} --output ${localPath}`;
70+
await execAsync(command);
71+
console.log(`Downloaded ${path}`);
72+
})
73+
);
74+
75+
console.log("All fonts downloaded.");

0 commit comments

Comments
 (0)