import type { GlyphId, int16, uint16 } from "../../types.ts"; import { Reader } from "../binary/reader.ts"; /** * Glyph Variations table (gvar) * Contains variation data for TrueType glyph outlines */ export interface GvarTable { majorVersion: uint16; minorVersion: uint16; axisCount: uint16; sharedTupleCount: uint16; sharedTuples: number[][]; glyphVariationData: GlyphVariationData[]; } /** * Variation data for a single glyph */ export interface GlyphVariationData { tupleVariationHeaders: TupleVariationHeader[]; } /** * Tuple variation header */ export interface TupleVariationHeader { variationDataSize: uint16; tupleIndex: uint16; peakTuple: number[] | null; intermediateStartTuple: number[] | null; intermediateEndTuple: number[] | null; serializedData: Uint8Array; pointNumbers: number[] | null; deltas: PointDelta[]; } /** * Delta values for a point */ export interface PointDelta { x: int16; y: int16; } /** * Parse gvar table - glyph variations for TrueType outlines in variable fonts * @param reader - Reader positioned at start of gvar table * @param _numGlyphs - Number of glyphs (currently unused) * @returns Parsed gvar table with per-glyph variation data */ export declare function parseGvar(reader: Reader, _numGlyphs: number, getGlyphPointCount?: (glyphId: GlyphId) => number): GvarTable; /** * Parse packed deltas */ export declare function parsePackedDeltas(reader: Reader, count: number): number[]; /** * Calculate the scalar for a tuple given axis coordinates * Determines how much a variation tuple contributes based on current axis values * @param peakTuple - Peak coordinates for each axis where variation is at maximum * @param axisCoords - Current normalized axis coordinates * @param intermediateStart - Start of intermediate region (null if not used) * @param intermediateEnd - End of intermediate region (null if not used) * @returns Scalar value between 0 and 1 indicating variation contribution */ export declare function calculateTupleScalar(peakTuple: number[], axisCoords: number[], intermediateStart: number[] | null, intermediateEnd: number[] | null): number; /** * Get delta for a glyph point at given variation coordinates */ export declare function getGlyphDelta(gvar: GvarTable, glyphId: GlyphId, pointIndex: number, axisCoords: number[]): PointDelta; export declare function getTupleDeltas(header: TupleVariationHeader, numPoints: number): PointDelta[];