vyaz-monorepo / core/src / FontMetricsProvider
Class: FontMetricsProvider
Defined in: core/src/measure/FontMetricsProvider.ts:114
Font metrics provider — registers, resolves, and measures fonts.
Public API (stable):
registerFont()getMetrics()getFont()setMode()/getMode()
Semi-stable (@beta — may change with notice):
waitForPendingRegistrations()getRegisteredFamilies()getFamilyVariants()
Everything else is internal.
Implements
Constructors
Constructor
new FontMetricsProvider():
FontMetricsProvider
Returns
FontMetricsProvider
Methods
getFamilyVariants()
getFamilyVariants(
family):string[]
Defined in: core/src/measure/FontMetricsProvider.ts:257
Beta
Get all variant keys registered for a given family. Returns empty array if family not found.
— may change with notice
Parameters
family
string
Returns
string[]
getFont()
getFont(
family,weight?,style?):FontFace|undefined
Defined in: core/src/measure/FontMetricsProvider.ts:268
Get font engine FontFace for per-character calculations. Uses the same smart fallback logic as getMetrics().
Parameters
family
string
weight?
string = 'normal'
style?
string = 'normal'
Returns
FontFace | undefined
getMetrics()
getMetrics(
fontFamily,fontSize,weight?,style?,mode?):FontMetrics
Defined in: core/src/measure/FontMetricsProvider.ts:361
Get pixel-scale metrics for a given font family, size, weight, and style.
Resolution order:
- FontEngine (fontkit) from registry — with smart weight/style fallback
- Canvas TextMetrics (browser fallback when fontkit unavailable)
Parameters
fontFamily
string
fontSize
number
weight?
string = 'normal'
style?
string = 'normal'
mode?
"browser" | "office"
Returns
Throws
FontNotFoundError when font is neither registered nor available via Canvas
Implementation of
IFontMetricsProvider.getMetrics
getMode()
getMode():
"browser"|"office"
Defined in: core/src/measure/FontMetricsProvider.ts:163
Get current measurement mode.
Returns
"browser" | "office"
Implementation of
getRegisteredFamilies()
getRegisteredFamilies():
string[]
Defined in: core/src/measure/FontMetricsProvider.ts:247
Beta
List all families registered in the provider.
— may change with notice
Returns
string[]
registerFont()
registerFont(
family,options,source,sourcePath?):Promise<void>
Defined in: core/src/measure/FontMetricsProvider.ts:179
Register a binary font for use with fontkit.
In both Node.js and browser the font is loaded via FontEngine. In the browser the caller must provide font bytes (e.g. fetched via getFontBuffer() from ../utils/font.js).
Parameters
family
string
options
style?
string
variation?
Record<string, number>
weight?
string
source
string | ArrayBuffer | Uint8Array<ArrayBufferLike>
Font file bytes (ArrayBuffer / Uint8Array), or a URL string
sourcePath?
string
Optional filesystem path (used for @napi-rs/canvas in Node.js)
Returns
Promise<void>
Implementation of
IFontMetricsProvider.registerFont
setMode()
setMode(
mode):void
Defined in: core/src/measure/FontMetricsProvider.ts:153
Set measurement mode.
'browser'— hhea.ascender/descender (default)'office'— OS/2.usWinAscent/usWinDescent
Parameters
mode
"browser" | "office"
Returns
void
Implementation of
waitForPendingRegistrations()
waitForPendingRegistrations():
Promise<void>
Defined in: core/src/measure/FontMetricsProvider.ts:236
Beta
Wait for all in-flight font registrations to complete. Useful after a batch of registerFont() calls before layout.
— may change with notice
Returns
Promise<void>
