fix(og): use import.meta.url and fetch instead of readFileSync for next/og fonts
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 1m0s
Build & Deploy / 🧪 QA (push) Successful in 1m44s
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Post-Deploy Verification (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
Build & Deploy / 🏗️ Build (push) Has been cancelled

This commit is contained in:
2026-06-21 23:12:29 +02:00
parent 6cb390024b
commit c908fcb4b8

View File

@@ -7,44 +7,31 @@ import { ImageResponse } from 'next/og';
* Since we are using runtime = 'nodejs', we can read them from the filesystem.
*/
export async function getOgFonts() {
const boldFontPath = join(process.cwd(), 'public/fonts/Inter-Bold.ttf');
const regularFontPath = join(process.cwd(), 'public/fonts/Inter-Regular.ttf');
try {
console.log(`[OG] Loading fonts: bold=${boldFontPath}, regular=${regularFontPath}`);
const boldFontBuffer = readFileSync(boldFontPath);
const regularFontBuffer = readFileSync(regularFontPath);
const boldFontData = await fetch(
new URL('../public/fonts/Inter-Bold.ttf', import.meta.url)
).then((res) => res.arrayBuffer());
// Satori (Vercel OG) strictly requires an ArrayBuffer, not a Node Buffer view.
const boldFont = boldFontBuffer.buffer.slice(
boldFontBuffer.byteOffset,
boldFontBuffer.byteOffset + boldFontBuffer.byteLength,
);
const regularFont = regularFontBuffer.buffer.slice(
regularFontBuffer.byteOffset,
regularFontBuffer.byteOffset + regularFontBuffer.byteLength,
);
console.log(
`[OG] Fonts loaded successfully (${boldFont.byteLength} and ${regularFont.byteLength} bytes)`,
);
const regularFontData = await fetch(
new URL('../public/fonts/Inter-Regular.ttf', import.meta.url)
).then((res) => res.arrayBuffer());
return [
{
name: 'Inter',
data: boldFont,
weight: 700 as const,
data: boldFontData,
style: 'normal' as const,
weight: 700 as const,
},
{
name: 'Inter',
data: regularFont,
weight: 400 as const,
data: regularFontData,
style: 'normal' as const,
weight: 400 as const,
},
];
} catch (error) {
console.error(`[OG] Failed to load fonts from ${process.cwd()}:`, error);
console.error(`[OG] Failed to load fonts:`, error);
return [];
}
}