Line breaking Unicode
HPDFUnicodeLineBreaks implementa le opportunità di line break predefinite di Unicode 17.0.0 con le proprietà archiviate Line_Break, General_Category, East_Asian_Width e Extended_Pictographic
L'implementazione portabile risolve sequenze combining, contesto di punteggiatura, espressioni numeriche, Hangul, sillabe ortografiche brahamiche, modifier emoji e regional indicator accoppiati senza una DLL di segmentazione
La funzione restituisce la posizione prima del primo scalar e dopo ogni scalar, espresse come offset UTF-16 a base zero; ogni posizione è prohibited, allowed o mandatory
La fine del testo è mandatory, incluso per input vuoto; l'inizio di testo non vuoto è prohibited e le surrogate accoppiate non hanno posizioni interne
La gestione predefinita del Sud-est asiatico risolve i caratteri SA ordinari in AL e le combining mark SA in CM; dizionari linguistici e sillabazione sono servizi di tailoring separati
HPDFUnicodeLineBreakClass espone la proprietà raw o risolta LB1 per i singoli code point; i nomi THPDFUnicodeLineBreakClass conservano ogni abbreviazione di proprietà Unicode 17
Le esistenti API documento HPDFComputeLineBreaks e HPDFLineBreakClassOf consumano le stesse tabelle complete su Delphi 2009 e successivi e target FPC supportati, preservando gli ordinali enum consolidati e il comportamento con input vuoto
UTF-16 malformato e budget di code unit fuori dall'intervallo da uno a 1048576 sollevano EArgumentException; la cancellazione è controllata prima dell'allocazione, durante la decodifica e durante la valutazione dei confini
Layout reale dei campi rich
I run rich tipizzati con wrapping consumano le opportunità predefinite legali, tengono insieme i gruppi di nonbreaking space e la punteggiatura di apertura, e onorano CRLF, NEL, LINE SEPARATOR e PARAGRAPH SEPARATOR come interruzioni esplicite
I separatori originali restano in V e RV canonica; i separatori di riga sono omessi dai frammenti glyph disegnati e i gruppi troppo larghi usano il consueto emergency wrapping per grapheme completi
I frammenti indipendenti sulla stessa riga reale continuano con gli avanzamenti misurati; le interruzioni legali non richiedono una riga fisica separata a meno che il fitting non le selezioni
Le opportunità di paragrafo complete preservano i gruppi legali attraverso i cambi di stile e fondono i CRLF spezzati; gli avanzamenti stilizzati reali decidono quando un intero gruppo che ci sta passa a una riga nuova
Il fitting di emergenza cross-style per grapheme e lo shaping contestuale, il bidi di paragrafo a stili misti, l'XHTML arbitrario e il tailoring specifico per lingua restano obiettivi di integrazione attivi
Conformità
HotPDFUnicodeLineBreakTests consuma tutti i 19338 casi ufficiali LineBreakTest di Unicode 17 e confronta ogni posizione pubblicata; la fine obbligatoria e i comportamenti con input malformato, budget e cancellazione hanno verifiche separate
Build-UnicodeLineBreakTables.py --check verifica riproducibilità e i pin SHA-256 dei tre input aggiuntivi di proprietà UCD
Regole di line breaking Unicode 17 · Funzione dei confini · Posizioni restituite · Integrazione dei campi rich