Browser-first font manager for vmprint. It keeps the standard FontManager contract, but assumes font binaries come from URLs, data URIs, or a remote font catalog rather than the local filesystem.
WebFontManager is for environments where the engine still needs real font bytes for deterministic measurement, but the fonts live behind HTTP rather than on disk:
It supports:
FontConfig[] registriesfetch()import { createEngineRuntime } from '@vmprint/engine';
import { WebFontManager } from '@vmprint/web-fonts';
const fontManager = new WebFontManager({
repositoryBaseUrl: 'https://cdn.example.com/fonts/',
fonts: [
{
name: 'My Sans Regular',
family: 'My Sans',
weight: 400,
style: 'normal',
src: 'my-sans/MySans-Regular.ttf',
enabled: true,
fallback: false
}
],
cache: true
});
const runtime = createEngineRuntime({ fontManager });
The engine needs font metadata synchronously, so a remote catalog has to be loaded before the manager is handed to createEngineRuntime(). WebFontManager.fromCatalogUrl() handles that bootstrap step:
const fontManager = await WebFontManager.fromCatalogUrl(
'https://cdn.example.com/fonts/catalog.json',
{ cache: true }
);
Catalog shape:
{
"repositoryBaseUrl": "https://cdn.example.com/fonts/",
"aliases": {
"arial": "Arimo",
"times new roman": "Tinos"
},
"fonts": [
{
"name": "Arimo Regular",
"family": "Arimo",
"weight": 400,
"style": "normal",
"src": "Arimo/Arimo-Regular.ttf",
"enabled": true,
"fallback": false
}
]
}
repositoryBaseUrl is optional. If omitted, fromCatalogUrl() derives it from the catalog URL and resolves relative src entries against that base.
WebFontManager distinguishes between two kinds of failure:
Transport failures surface as source-specific errors from loadFontBuffer(), preserving the current vmprint fail-fast behavior.
Licensed under the Apache License 2.0.