import type { GlyphInfo } from "../../types.ts"; /** * Arabic joining types from Unicode */ export declare enum ArabicJoiningType { NonJoining = "U",// Non_Joining RightJoining = "R",// Right_Joining (joins on the right) DualJoining = "D",// Dual_Joining (joins on both sides) JoinCausing = "C",// Join_Causing (like TATWEEL) LeftJoining = "L",// Left_Joining (rare) Transparent = "T" } /** * Action to take for each glyph based on context */ export declare enum JoiningAction { None = 0, Isol = 1,// Isolated form Fina = 2,// Final form Medi = 3,// Medial form Init = 4 } /** * Arabic joining group for specific shaping behavior */ export declare enum ArabicJoiningGroup { None = 0, Alaph = 1, DalathRish = 2 } /** * Per-glyph info for Arabic shaping */ export interface ArabicGlyphData { joiningType: ArabicJoiningType; joiningGroup: ArabicJoiningGroup; action: JoiningAction; } /** * Check if a codepoint is in Arabic script range */ export declare function isArabic(cp: number): boolean; /** * Get the joining type for a codepoint * Based on Unicode Arabic Shaping data */ export declare function getJoiningType(cp: number): ArabicJoiningType; /** * Analyze joining for a sequence of glyphs. * Returns the action to take for each glyph. */ export declare function analyzeJoining(infos: GlyphInfo[]): JoiningAction[]; /** * Get the feature tag for a joining action */ export declare function getFeatureForAction(action: JoiningAction): string | null; /** * Get default Arabic features in order */ export declare function getArabicFeatures(): string[]; /** * Set the feature mask for each glyph based on joining analysis * Inlined for performance - avoids intermediate array allocation */ export declare function setupArabicMasks(infos: GlyphInfo[]): void;