UNPKG

nuxt-og-image

Version:

Enlightened OG Image generation for Nuxt.

40 lines (39 loc) 1.21 kB
import { useNitroOrigin, useStorage } from "#imports"; import { prefixStorage } from "unstorage"; export const assets = prefixStorage(useStorage(), "/assets"); export async function loadFont({ e, publicStoragePath }, font) { const { name, weight } = font; if (font.data) return font; if (font.key && await assets.hasItem(font.key)) { let fontData = await assets.getItem(font.key); if (fontData instanceof Uint8Array) { const decoder = new TextDecoder(); fontData = decoder.decode(fontData); } font.data = Buffer.from(fontData, "base64"); return font; } let data; if (font.path) { if (import.meta.dev || import.meta.prerender) { const key = `${publicStoragePath}${font.path.replace("./", ":").replace("/", ":")}`; if (await useStorage().hasItem(key)) data = await useStorage().getItemRaw(key); } else { data = await e.$fetch(font.path, { baseURL: useNitroOrigin(e), responseType: "arrayBuffer" }); } } else { data = await e.$fetch(`/__og-image__/font/${name}/${weight}.ttf`, { responseType: "arrayBuffer", query: { font } }); } font.data = data; return font; }