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