import type { GlyphId, uint16, uint32 } from "../../types.ts"; import type { Reader } from "../binary/reader.ts"; /** * Horizontal Metrics Variations table (HVAR) * Provides variations for horizontal advance widths and LSB */ export interface HvarTable { majorVersion: number; minorVersion: number; itemVariationStore: ItemVariationStore; advanceWidthMapping: DeltaSetIndexMap | null; lsbMapping: DeltaSetIndexMap | null; rsbMapping: DeltaSetIndexMap | null; } /** * Item Variation Store - stores delta values for variations */ export interface ItemVariationStore { format: number; variationRegions: VariationRegion[]; itemVariationData: ItemVariationData[]; } /** * Variation region defines the space where deltas apply */ export interface VariationRegion { regionAxes: RegionAxisCoordinates[]; } /** * Axis coordinates for a region */ export interface RegionAxisCoordinates { startCoord: number; peakCoord: number; endCoord: number; } /** * Item variation data subtable */ export interface ItemVariationData { itemCount: uint16; regionIndexes: uint16[]; deltaSets: number[][]; } /** * Delta set index map for mapping glyphs to variation data */ export interface DeltaSetIndexMap { format: number; mapCount: uint32; entryFormat: number; innerIndexBitCount: number; mapData: { outer: number; inner: number; }[]; } /** * Parse HVAR table */ export declare function parseHvar(reader: Reader): HvarTable; /** * Calculate scalar for a variation region given axis coordinates */ export declare function calculateRegionScalar(region: VariationRegion, coords: number[]): number; /** * Get advance width delta for a glyph at given variation coordinates */ export declare function getAdvanceWidthDelta(hvar: HvarTable, glyphId: GlyphId, coords: number[]): number; /** * Get left side bearing delta for a glyph at given variation coordinates */ export declare function getLsbDelta(hvar: HvarTable, glyphId: GlyphId, coords: number[]): number; /** * Get right side bearing delta for a glyph at given variation coordinates */ export declare function getRsbDelta(hvar: HvarTable, glyphId: GlyphId, coords: number[]): number;