From 2147aeb32715c7573fa40df19a0d25d215d1c813 Mon Sep 17 00:00:00 2001 From: Danila Poyarkov Date: Wed, 6 May 2026 17:07:31 +0300 Subject: [PATCH] fix(core): resolve bundled fonts from package root Replace fragile ../../assets relative path with createRequire-based package.json resolution. The old path broke if the file moved or after bundler output restructuring. The new approach resolves the package root via require.resolve('@open-pencil/core/package.json') which works from source, dist, and node_modules. --- packages/core/src/text/fonts.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/packages/core/src/text/fonts.ts b/packages/core/src/text/fonts.ts index 1dd2e9e84..b95362a6c 100644 --- a/packages/core/src/text/fonts.ts +++ b/packages/core/src/text/fonts.ts @@ -177,8 +177,11 @@ export class FontManager { return response.arrayBuffer() } const { readFile } = await import(/* @vite-ignore */ 'node:fs/promises') - const { fileURLToPath } = await import(/* @vite-ignore */ 'node:url') - const assetPath = fileURLToPath(new URL(`../../assets${url}`, import.meta.url)) + const { resolve, dirname } = await import(/* @vite-ignore */ 'node:path') + const { createRequire } = await import(/* @vite-ignore */ 'node:module') + const require = createRequire(import.meta.url) + const packageRoot = dirname(require.resolve('@open-pencil/core/package.json')) + const assetPath = resolve(packageRoot, `assets${url}`) const buf = await readFile(assetPath) return buf.buffer.slice(buf.byteOffset, buf.byteOffset + buf.byteLength) }