From c538c151c7462ad0395ff2c15c5e11e89e362aa8 Mon Sep 17 00:00:00 2001
From: Striven <sg.striven@cutecat.club>
Date: Sat, 04 Apr 2026 19:47:16 +0000
Subject: [PATCH] Initial commit
---
quartz/util/theme.ts | 13 +++++++++++--
1 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/quartz/util/theme.ts b/quartz/util/theme.ts
index 4a06425..ff4453b 100644
--- a/quartz/util/theme.ts
+++ b/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)
--
Gitblit v1.10.0