export interface SubstitutionResult { index: number; contextRange: [number, number]; } /** * Information about ligatures found in a sequence of text */ export interface LigatureData { /** * The list of font glyphs in the input text. */ inputGlyphs: number[]; /** * The list of font glyphs after performing replacements for font ligatures. */ outputGlyphs: number[]; /** * Sorted array of ranges that must be rendered together to produce the * ligatures in the output sequence. The ranges are inclusive on the left and * exclusive on the right. */ contextRanges: [number, number][]; } export interface Font { /** * Scans the provided text for font ligatures, returning an object with * metadata about the text and any ligatures found. * * @param text String to search for ligatures */ findLigatures(text: string): LigatureData; /** * Scans the provided text for font ligatures, returning an array of ranges * where ligatures are located. * * @param text String to search for ligatures */ findLigatureRanges(text: string): [number, number][]; } export interface Options { /** * Optional size of previous results to store, measured in total number of * characters from input strings. Defaults to no cache (0) */ cacheSize?: number; } export interface LookupTree { individual: { [glyphId: string]: LookupTreeEntry; }; range: { range: [number, number]; entry: LookupTreeEntry; }[]; } export interface LookupTreeEntry { lookup?: LookupResult; forward?: LookupTree; reverse?: LookupTree; } export interface LookupResult { substitutions: (number | null)[]; length: number; index: number; subIndex: number; contextRange: [number, number]; } export interface FlattenedLookupTree { [glyphId: string]: FlattenedLookupTreeEntry; } export interface FlattenedLookupTreeEntry { lookup?: LookupResult; forward?: FlattenedLookupTree; reverse?: FlattenedLookupTree; }