import type { Fixed, Tag } from "../../types.ts"; import type { Reader } from "../binary/reader.ts"; /** * Font Variations table (fvar) * Defines axes of variation in a variable font */ export interface FvarTable { majorVersion: number; minorVersion: number; axes: VariationAxis[]; instances: NamedInstance[]; } /** * Variation axis definition */ export interface VariationAxis { /** 4-byte axis tag (e.g., 'wght', 'wdth', 'ital') */ tag: Tag; /** Minimum coordinate value */ minValue: Fixed; /** Default coordinate value */ defaultValue: Fixed; /** Maximum coordinate value */ maxValue: Fixed; /** Axis qualifiers (flags) */ flags: number; /** Name ID for this axis */ axisNameId: number; } /** * Named instance (predefined variation) */ export interface NamedInstance { /** Name ID for this instance */ subfamilyNameId: number; /** Flags */ flags: number; /** Coordinate values for each axis */ coordinates: Fixed[]; /** PostScript name ID (optional) */ postScriptNameId?: number; } /** * Common axis tags */ export declare const AxisTags: { /** Weight (100-900, default 400) */ readonly wght: 2003265652; /** Width (50-200%, default 100) */ readonly wdth: 2003072104; /** Italic (0-1) */ readonly ital: 1769234796; /** Slant (-90 to 90 degrees) */ readonly slnt: 1936486004; /** Optical size (in points) */ readonly opsz: 1869640570; }; /** * Parse fvar table - font variations defining axes and named instances * @param reader - Reader positioned at start of fvar table * @returns Parsed fvar table with variation axes and instances */ export declare function parseFvar(reader: Reader): FvarTable; /** * Normalize axis value to range [-1, 1] */ export declare function normalizeAxisValue(axis: VariationAxis, value: number): number; /** * Get axis by tag */ export declare function getAxis(fvar: FvarTable, axisTag: Tag): VariationAxis | null; /** * Get axis index by tag */ export declare function getAxisIndex(fvar: FvarTable, axisTag: Tag): number; /** * Debug: Print axis info */ export declare function formatAxis(axis: VariationAxis): string;