import type { GlyphInfo } from "../types.ts"; /** * Normalization mode for shaping */ export declare enum NormalizationMode { /** No normalization */ None = 0, /** Decompose (NFD-like) */ Decompose = 1, /** Compose (NFC-like) */ Compose = 2, /** Auto-detect based on script */ Auto = 3 } /** * Canonical Combining Class (ccc) for combining marks * Based on Unicode 15.0 * * Optimized with early-exit for common non-combining ranges: * - Basic Latin (0000-007F) * - Latin-1 Supplement (0080-00FF) * - Latin Extended-A/B (0100-024F) * - IPA Extensions (0250-02AF) * - Spacing Modifier Letters (02B0-02FF) - most are spacing * - Greek and Coptic (0370-03FF) - base chars only * - Cyrillic (0400-04FF) * - Cyrillic Supplement (0500-052F) * - CJK ranges (3000+) * - Hangul (AC00-D7AF) * @param cp Unicode codepoint to check * @returns Canonical combining class (0 for non-combining characters, 1-255 for combining marks) */ export declare function getCombiningClass(cp: number): number; /** * Reorder combining marks according to canonical combining class * @param infos Array of glyph information objects (modified in place) */ export declare function reorderMarks(infos: GlyphInfo[]): void; /** * Decompose a codepoint if it has a canonical decomposition * @param cp Unicode codepoint to decompose * @returns Array of decomposed codepoints, or null if character has no decomposition */ export declare function decompose(cp: number): number[] | null; /** * Try to compose a base character with a combining mark * Returns the composed character or null if no composition exists * @param base Base character codepoint * @param combining Combining mark codepoint * @returns Composed character codepoint, or null if no composition exists */ export declare function tryCompose(base: number, combining: number): number | null; /** * Apply normalization to glyph infos * @param infos Array of glyph information objects * @param mode Normalization mode (None, Decompose, Compose, or Auto) * @returns Normalized array of glyph information objects */ export declare function normalize(infos: GlyphInfo[], mode: NormalizationMode): GlyphInfo[];