Granice grafemów Unicode

HPDFUnicodeTextBoundary implementuje domyślne rozszerzone klastry grafemów Unicode 17.0.0 używając zamieszczonych w repozytorium właściwości Grapheme_Cluster_Break, Indic_Conjunct_Break i Extended_Pictographic

Przenośna implementacja Pascal obsługuje znaczniki łączenia, Hangul, sekwencje łączników Indic, sekwencje emoji ZWJ i sparowane wskaźniki regionalne bez wymagania GUI ani DLL segmentacji

Offsety liczą jednostki kodu UTF-16 od zera i obejmują zarówno początek, jak i koniec tekstu; pusty tekst zwraca pojedynczy offset zero

Wejście musi zawierać sparowane surrogaty UTF-16, a wywołujący dostarcza dodatni budżet jednostek kodu do 1048576; domyślnie 65535

Anulowanie jest sprawdzane przed alokacją i podczas konsumpcji każdego skalara, łącznie dla pustego wejścia

Zawijanie pól rich

Zbyt szerokie słowo w wielowierszowym zawijanym polu rich jest dzielone na kompletnych klastrach rozszerzonych grafemów i mierzone wybranym fontem i odstępami

Każdy fragment zachowuje oryginalne wartości V i RV, rzeczywiste mapowania Unicode i wyrównanie akapitu; niepodzielny klaster szerszy niż prostokąt pozostaje nietknięty i jest przycinany

Szerokości fragmentów są sprawdzane po shapowaniu, włącznie z formami łączenia, które poszerzają się przy osobnym shapowaniu; podzielne przepełnienia są dzielone ponownie na kompletnych klastrach

Malowanie skryptów złożonych nadal używa HarfBuzz i FriBidi; segmentacja grafemów nie dostarcza shapowania glifów ani dwukierunkowego layoutu akapitu

Domyślne możliwości łamania wierszy Unicode są dostępne w tej samej przenośnej jednostce; zawijanie słów przez granice stylów i dwukierunkowość akapitów mieszanych stylów pozostają osobnymi aktywnymi celami

Zgodność

Uruchom Tests/Linux/Run-UnicodeGraphemeAcceptance.sh albo runner testów przenośnych Windows z HotPDFUnicodeGraphemeTests i Tests/Linux/resources

Testy konsumują wszystkie 766 oficjalnych przypadków Unicode 17 GraphemeBreakTest i porównują każdą opublikowaną granicę w jednostkach UTF-16

Build-UnicodeTextBoundaryTables.py deterministycznie przebudowuje skompilowane tablice zakresów z istniejących przypiętych danych UCD

Reguły segmentacji tekstu Unicode 17 · Funkcja granic · Zachowanie pól rich