diff --git a/packages/cli/src/commands/fonts.ts b/packages/cli/src/commands/fonts.ts index 5a1ea935b..06f15a60b 100644 --- a/packages/cli/src/commands/fonts.ts +++ b/packages/cli/src/commands/fonts.ts @@ -19,7 +19,7 @@ async function prepareFontStatus( fontManager.setOnlineFontProviders({}) fontManager.setWebFontFetch(null) try { - return await prepareGraphFonts(graph, pageId, [pageId]) + return await prepareGraphFonts(graph, [pageId]) } finally { fontManager.setOnlineFontProviders( Object.fromEntries(previousProviders.map((provider) => [provider, true])) diff --git a/packages/core/src/canvas/renderer/fonts.ts b/packages/core/src/canvas/renderer/fonts.ts index acae996a0..d4b61cca2 100644 --- a/packages/core/src/canvas/renderer/fonts.ts +++ b/packages/core/src/canvas/renderer/fonts.ts @@ -117,7 +117,7 @@ export async function prepareForExport( const previousTextMeasurer = getTextMeasurer() setTextMeasurer((node, maxWidth) => r.measureTextNode(node, maxWidth)) - await prepareGraphFonts(graph, pageId, nodeIds) + await prepareGraphFonts(graph, nodeIds) syncFontGeneration(r) computeAllLayouts(graph, pageId) diff --git a/packages/core/src/rpc/read-commands.ts b/packages/core/src/rpc/read-commands.ts index 09b7faf54..e393a3962 100644 --- a/packages/core/src/rpc/read-commands.ts +++ b/packages/core/src/rpc/read-commands.ts @@ -82,7 +82,7 @@ export const fontStatusCommand: RPCCommand = { name: 'font-status', execute: async (graph) => { const pageIds = graph.getPages().map((page) => page.id) - return prepareGraphFonts(graph, pageIds[0] ?? graph.rootId, pageIds) + return prepareGraphFonts(graph, pageIds) } } diff --git a/packages/core/src/text/font/status.ts b/packages/core/src/text/font/status.ts index e9438b0d0..da365d5d1 100644 --- a/packages/core/src/text/font/status.ts +++ b/packages/core/src/text/font/status.ts @@ -34,15 +34,15 @@ function faceKey(family: string, style: string): string { return `${family}\0${style}` } -function pageTextNodes(graph: SceneGraph, pageIds: readonly string[]): SceneNode[] { - return pageIds.flatMap((pageId) => - graph.flattenTree(pageId).flatMap(({ node }) => (node.type === 'TEXT' ? [node] : [])) +function rootTextNodes(graph: SceneGraph, rootIds: readonly string[]): SceneNode[] { + return rootIds.flatMap((rootId) => + graph.flattenTree(rootId).flatMap(({ node }) => (node.type === 'TEXT' ? [node] : [])) ) } -function collectFaceUses(graph: SceneGraph, pageIds: readonly string[]): MutableFontFaceUse[] { +function collectFaceUses(graph: SceneGraph, rootIds: readonly string[]): MutableFontFaceUse[] { const uses = new Map() - for (const node of pageTextNodes(graph, pageIds)) { + for (const node of rootTextNodes(graph, rootIds)) { for (const { family, style } of collectNodeFontFaces(node)) { const key = faceKey(family, style) const use = uses.get(key) ?? { @@ -99,11 +99,11 @@ function faceStatus(use: MutableFontFaceUse, manager: FontManager): DocumentFont export function documentFontStatus( graph: SceneGraph, - pageId: string | readonly string[], + rootIds: string | readonly string[], manager: FontManager = fontManager ): DocumentFontStatus { - const pageIds = typeof pageId === 'string' ? [pageId] : pageId - const faces = collectFaceUses(graph, pageIds) + const roots = typeof rootIds === 'string' ? [rootIds] : rootIds + const faces = collectFaceUses(graph, roots) .map((use) => faceStatus(use, manager)) .sort((a, b) => a.family.localeCompare(b.family) || a.style.localeCompare(b.style)) const issues = faces.filter((face) => face.status !== 'available') diff --git a/packages/core/src/text/prepare.ts b/packages/core/src/text/prepare.ts index 738513447..6d8cd4797 100644 --- a/packages/core/src/text/prepare.ts +++ b/packages/core/src/text/prepare.ts @@ -8,7 +8,6 @@ import { documentFontStatus, type DocumentFontStatus } from './font/status' export async function prepareGraphFonts( graph: SceneGraph, - pageId: string, nodeIds: readonly string[] ): Promise { const requirements = collectGraphFontRequirements(graph, nodeIds) @@ -20,5 +19,5 @@ export async function prepareGraphFonts( missingGraphFontScripts(requirements), requirements.characters ) - return documentFontStatus(graph, pageId) + return documentFontStatus(graph, nodeIds) }