/** * Bidirectional text processing (UAX #9) */ import type { GlyphInfo } from "../types.ts"; import { Direction } from "../types.ts"; /** * Result of BiDi processing */ export interface BidiResult { /** Embedding levels per character */ levels: Uint8Array; /** Paragraph information */ paragraphs: BidiParagraph[]; } /** * Paragraph info from BiDi algorithm */ export interface BidiParagraph { start: number; end: number; level: number; } /** * Get embedding levels for a string */ export declare function getEmbeddings(text: string, baseDirection?: Direction): BidiResult; /** * Get reordered indices for visual display */ export declare function getVisualOrder(text: string, result: BidiResult, start?: number, end?: number): number[]; /** * Apply BiDi reordering to glyph infos */ export declare function reorderGlyphs(infos: GlyphInfo[], result: BidiResult): GlyphInfo[]; /** * Get mirrored character for RTL contexts */ export declare function getMirror(codepoint: number): number; /** * Apply character mirroring for RTL runs */ export declare function applyMirroring(infos: GlyphInfo[], levels: Uint8Array): void; /** * BiDi character type constants */ export declare const BidiType: { readonly L: 1; readonly R: 2; readonly EN: 4; readonly ES: 8; readonly ET: 16; readonly AN: 32; readonly CS: 64; readonly B: 128; readonly S: 256; readonly WS: 512; readonly ON: 1024; readonly BN: 2048; readonly NSM: 4096; readonly AL: 8192; readonly LRO: 16384; readonly RLO: 32768; readonly LRE: 65536; readonly RLE: 131072; readonly PDF: 262144; readonly LRI: 524288; readonly RLI: 1048576; readonly FSI: 2097152; readonly PDI: 4194304; }; /** * Get BiDi character type for a character */ export declare function getCharType(char: string): number; /** * Check if a character is strongly RTL */ export declare function isRTL(codepoint: number): boolean; /** * Check if a character is strongly LTR */ export declare function isLTR(codepoint: number): boolean; /** * Detect base direction from text content */ export declare function detectDirection(text: string): Direction; /** * Full BiDi processing for shaping */ export declare function processBidi(infos: GlyphInfo[], baseDirection?: Direction): { infos: GlyphInfo[]; levels: Uint8Array; };