/** * A character's Arabic joining class (ArabicShaping.txt): Right-, Left-, * Dual-joining, join-Causing, Non-joining, or Transparent (combining marks). */ export type JoiningType = 'R' | 'L' | 'D' | 'C' | 'U' | 'T'; /** The contextual cursive form a letter takes: isolated, initial, medial or final. */ export type ArabicForm = 'isol' | 'init' | 'medi' | 'fina'; /** * Classify a code point's Arabic {@link JoiningType}. Covers the standard Arabic * block plus tatweel and the ZWJ/ZWNJ controls; everything else is non-joining. * * @param cp The Unicode code point. * @returns Its joining type. */ export declare function arabicJoiningType(cp: number): JoiningType; /** * Assign a cursive {@link ArabicForm} to each code point in a run, from the * joining types of the surrounding letters (transparent marks are skipped). * Non-joining characters get `'isol'` — a harmless default, since their glyph is * never in the positional maps. * * @param cps The run's code points, in logical order. * @returns The per-code-point form, parallel to `cps`. */ export declare function assignArabicForms(cps: ReadonlyArray): Array;