Stephen Tse
2025-04-28 8d5b13ee03533f72954037608001d5d8b3029d0f
quartz/util/theme.ts
@@ -107,6 +107,13 @@
  extension: string
}
const fontMimeMap: Record<string, string> = {
  truetype: "ttf",
  woff: "woff",
  woff2: "woff2",
  opentype: "otf",
}
export async function processGoogleFonts(
  stylesheet: string,
  baseUrl: string,
@@ -114,14 +121,16 @@
  processedStylesheet: string
  fontFiles: GoogleFontFile[]
}> {
  const fontSourceRegex = /url\((https:\/\/fonts.gstatic.com\/s\/[^)]+\.(woff2|ttf))\)/g
  const fontSourceRegex =
    /url\((https:\/\/fonts.gstatic.com\/.+(?:\/|(?:kit=))(.+?)[.&].+?)\)\sformat\('(\w+?)'\);/g
  const fontFiles: GoogleFontFile[] = []
  let processedStylesheet = stylesheet
  let match
  while ((match = fontSourceRegex.exec(stylesheet)) !== null) {
    const url = match[1]
    const [filename, extension] = url.split("/").pop()!.split(".")
    const filename = match[2]
    const extension = fontMimeMap[match[3].toLowerCase()]
    const staticUrl = `https://${baseUrl}/static/fonts/${filename}.${extension}`
    processedStylesheet = processedStylesheet.replace(url, staticUrl)