Unicode line breaking

HPDFUnicodeLineBreaks implementuje výchozí line-break příležitosti Unicode 17.0.0 s přiloženými vlastnostmi Line_Break, General_Category, East_Asian_Width a Extended_Pictographic

Přenosná implementace rozřeší kombinující sekvence, kontext interpunkce, číselné výrazy, Hangul, Brahmic ortografické slabiky, emoji modifikátory i párované regionální indikátory bez segmentační DLL

Funkce vrací pozici před prvním skalárem a za každým skalárem, vyjádřené jako zero-based UTF-16 offsety; každá pozice je zakázaná, povolená či povinná

Konec textu je povinný, tedy i u prázdného vstupu; začátek neprázdného textu je zakázaný a párované surrogáty nemají vnitřní pozici

Výchozí zpracování jihovýchodní Asie rozřeší běžné znaky SA na AL a kombinující značky SA na CM; jazykové slovníky a dělení slov jsou samostatné tailoring služby

HPDFUnicodeLineBreakClass vystavuje surovou či LB1 rozřešenou vlastnost pro jednotlivé code pointy; názvy THPDFUnicodeLineBreakClass si uchovávají všechny zkratky vlastností Unicode 17

Stávající dokumentová API HPDFComputeLineBreaks a HPDFLineBreakClassOf konzumují tytéž kompletní tabulky na Delphi 2009 a novějších i podporovaných FPC cílech, se zachováním zavedených enum ordinálů i chování prázdného vstupu

Poškozené UTF-16 a rozpočty code unit mimo 1 až 1048576 vyhazují EArgumentException; zrušení se kontroluje před alokací, během dekódování i při vyhodnocování hranic

Skutečný layout rich polí

Zalomené typované rich runy konzumují zákonné výchozí příležitosti, drží spolu skupiny nezlomitelných mezer i otevírací interpunkci a respektují CRLF, NEL, LINE SEPARATOR a PARAGRAPH SEPARATOR jako explicitní zlomy

Původní oddělovače zůstávají ve V i kanonickém RV; oddělovače řádků se z malovaných glyfových fragmentů vynechávají a příliš široké skupiny použijí stávající nouzové zalomení po celých grafémech

Nezávislé fragmenty na stejném skutečném řádku pokračují po naměřených advancích; zákonné zlomy nevyžadují samostatný fyzický řádek, ledaže je fitování vybere

Kompletní odstavec příležitostí zachovává zákonné skupiny napříč změnami stylů a slepuje rozdělené CRLF; kdy se celá pasující skupina přesune na čerstvý řádek, rozhodnou skutečné stylované advancy

Grafémové nouzové fitování napříč styly i kontextový shaping, bidi odstavců se smíšenými styly, libovolné XHTML i jazykově specifické tailoring zůstávají aktivními integračními cíli

Shoda se standardem

HotPDFUnicodeLineBreakTests konzumuje všech 19338 oficiálních case LineBreakTest Unicode 17 a porovnává každou publikovanou pozici; povinný konec i chování poškozeného vstupu, rozpočtů a zrušení mají samostatné kontroly

Build-UnicodeLineBreakTables.py --check verifikuje reprodukovatelnost i SHA-256 piny tří dodatečných vstupních UCD vlastností

Pravidla line breaking Unicode 17 · Boundary funkce · Vracené pozice · Integrace rich polí