Izdan je 0.9.0 verzija biblioteke za C++ (standard C++20) libunicode. Projekat razvija tim programera emulatora terminala Contour i ljuske Endo (u aktivnom razvoju), i distribuira se pod Apache 2.0 licencom.
- podrška standardima Unicode 17.0:
- API za dobijanje svojstava Unicode;
- SIMD optimizacija nekih funkcija (koristeći std::simd ili std::experimental::simd kada su dostupni);
- optimizovano konvertovanje UTF-8 UTF-16/UTF-32;
- ekvivalent funkcije wcwidth (int unicode::width(char32_t));
- segmentacija teksta po grafemima, simbolima, emojijima i skriptama;
- promena registra i poređenje stringova;
- visok nivo API za segmentaciju teksta, pogodna za implementaciju oblikovanje teksta.
- testirani su većina funkcionalnosti biblioteke (širina simbola i segmentacija).
U kompletu se takođe nalazi konzolna alatka unicode-query za dobijanje detaljnih informacija o stringovima.
Spremembe:
- dodata API funkcija grapheme_cluster_width;
- poboljšanja u radu sa verzijama Unicode (‘Age’);
- puna podrška UAX #15 Oblikovanje Unicode normalizacijskih formi sa podrškom za obradu tokova:
normalizer norm(Normalization_Form::NFC); // Unesi dekomponovano e + kombinacioni akut, zatim novi starter za aktivaciju emisije auto result = norm.feed(U’e’); CHECK(result.empty()); // još uvek se pohranjuje result = norm.feed(U’u0301′); CHECK(result.empty()); // još uvek se pohranjuje (kombinacioni znak) result = norm.feed(U’x’); // starter aktivira emisiju prethodnog segmenta REQUIRE_FALSE(result.empty()); CHECK(result == U"u00E9"); // e + akut spojeno na e-aku result = norm.flush(); CHECK(result == U"x"); // konačni segment
- funkcija script_extensions sada vraća std::optional<std::span>;
- implementirano pravilo GB9c za segmentaciju grupa grafema za kombinacije simbola u jezicima grupe Indic;
- u grapheme_segmenter promenjena su pravila za GB11 i GB4/GB5; uklonjen je zastareli API;
- implementirano SIMD optimizovano konvertovanje UTF-8 u UTF-16/UTF-32;
- širina poveznih simbola Hangul V/T sada je jednaka nuli;
- implementirana je segmentacija po granicama reči;
- ispravke u C API;
- refaktorisanje sistema izrade i pomoćnog generatora tabela C++;
- dodani su složeni testovi za konvertovanje UTF-16/UTF-32;
- u CI dodana statička izrada alatke unicode-query.
Izvor: linux.org.ru
