Unicode grapheme boundaries

HPDFUnicodeTextBoundary implementuje výchozí rozšířené grafémové clustery Unicode 17.0.0 s přiloženými vlastnostmi Grapheme_Cluster_Break, Indic_Conjunct_Break a Extended_Pictographic

Přenosná Pascal implementace zvládá kombinující značky, Hangul, linker sekvence indických písem, emoji ZWJ sekvence i párované regionální indikátory, aniž by vyžadovala GUI či segmentační DLL

Offsety počítají UTF-16 code unit od nuly a zahrnují začátek i konec textu; prázdný text vrátí jediný offset nula

Vstup musí obsahovat párované UTF-16 surrogáty a volající dodá kladný rozpočet code unit až do 1048576; výchozí je 65535

Zrušení se kontroluje před alokací i při konzumaci každého skaláru, tedy i u prázdného vstupu

Zalomení rich polí

Příliš široké slovo ve víceřádkovém zalomeném rich poli se dělí po kompletních rozšířených grafémových clusterech a měří se vybraným písmem a spacingem

Každý fragment si uchovává původní V i RV hodnoty, skutečná Unicode mapování i zarovnání odstavce; nedělitelný cluster širší než obdélník zůstane celý a ořeže se

Šířky fragmentů se kontrolují po shapingu, tedy i spojovací tvary, které se při samostatném shapeování rozšiřují; dělitelná přetečení se znovu dělí po kompletních clusterech

Malování složitých skriptů dál používá HarfBuzz a FriBidi; grafémová segmentace nedodává glyfové shapeování ani bidirezionální layout odstavců

Výchozí Unicode line-break příležitosti jsou dostupné přes stejnou přenosnou jednotku; zalomení slov napříč hranicemi stylů i bidi odstavců se smíšenými styly zůstávají samostatnými aktivními cíli

Shoda se standardem

Spusťte Tests/Linux/Run-UnicodeGraphemeAcceptance.sh, případně Windows přenosný test runner s HotPDFUnicodeGraphemeTests a Tests/Linux/resources

Testy konzumují všech 766 oficiálních case GraphemeBreakTest Unicode 17 a porovnávají každou publikovanou hranici v UTF-16 jednotkách

Build-UnicodeTextBoundaryTables.py deterministicky znovu postaví kompilované rozsahové tabulky ze stávajících pinnutých UCD dat

Pravidla textové segmentace Unicode 17 · Boundary funkce · Chování rich polí