import { Reader } from "../binary/reader.ts"; /** * CFF (Compact Font Format) table parser * Used by OpenType fonts with PostScript outlines */ export interface CffTable { version: { major: number; minor: number; }; names: string[]; topDicts: TopDict[]; strings: string[]; globalSubrs: Uint8Array[]; charStrings: Uint8Array[][]; localSubrs: Uint8Array[][]; fdArrays: FDDict[][]; fdSelects: FDSelect[]; } export interface TopDict { version?: string; notice?: string; copyright?: string; fullName?: string; familyName?: string; weight?: string; isFixedPitch?: boolean; italicAngle?: number; underlinePosition?: number; underlineThickness?: number; paintType?: number; charstringType?: number; fontMatrix?: number[]; uniqueID?: number; fontBBox?: number[]; strokeWidth?: number; charset?: number; encoding?: number; charStrings?: number; private?: [number, number]; syntheticBase?: number; postScript?: string; baseFontName?: string; baseFontBlend?: number[]; ros?: { registry: string; ordering: string; supplement: number; }; cidFontVersion?: number; cidFontRevision?: number; cidFontType?: number; cidCount?: number; uidBase?: number; fdArray?: number; fdSelect?: number; fontName?: string; } export interface PrivateDict { blueValues?: number[]; otherBlues?: number[]; familyBlues?: number[]; familyOtherBlues?: number[]; blueScale?: number; blueShift?: number; blueFuzz?: number; stdHW?: number; stdVW?: number; stemSnapH?: number[]; stemSnapV?: number[]; forceBold?: boolean; languageGroup?: number; expansionFactor?: number; initialRandomSeed?: number; subrs?: number; defaultWidthX?: number; nominalWidthX?: number; } export interface FDDict extends PrivateDict { fontName?: string; /** Private dict offset and size [size, offset] */ private?: [number, number]; /** Local subroutines for this FD (parsed from private dict subrs offset) */ localSubrs?: Uint8Array[]; } export interface FDSelect { format: number; select: (glyphId: number) => number; } /** * Parse CFF table - Compact Font Format for PostScript outlines * @param reader - Reader positioned at start of CFF table * @returns Parsed CFF table with CharStrings, DICTs, and subroutines */ export declare function parseCff(reader: Reader): CffTable; /** * Get string by SID */ export declare function getCffString(cff: CffTable, sid: number): string;