Bol 0.9.0 knižnice pre jazyk C++ (štandard C++20) bol vydaný libunicode. Projekt vyvíja tím vývojárov emulátora terminálu Contour a rozhrania Endo (v aktívnom vývoji) a distribuuje sa pod licenciou Apache 2.0.
- podpora štandardov Unicode 17.0:
- API na získanie vlastností Unicode;
- SIMD optimalizácia niektorých funkcií (s použitím std::simd alebo std::experimental::simd, ak sú dostupné);
- optimalizované konvertovanie UTF-8 UTF-16/UTF-32;
- ekvivalent funkcie wcwidth (int unicode::width(char32_t));
- segmentácia textu podľa grafém, symbolov, emoji a písma;
- premena veľkosti písmena a porovnávanie reťazcov;
- vysokoúrovňové API segmentácie textu, vhodné na implementáciu tvarovanie textu.
- pokrytie testami väčšiny funkcií knižnice (šírka symbolu a segmentácia).
Súčasťou balenia je aj konzolová utilita unicode-query na získanie podrobných informácií o reťazcoch.
Zmeny:
- pridané API grapheme_cluster_width;
- vylepšenia v práci s verziami Unicode ("Age");
- plná podpora UAX #15 Normálizačné formy Unicode s podporou spracovania tokov:
normalizer norm(Normalization_Form::NFC); // Napfeeding dekomponované e + kombinujúce akú, potom nový spúšťač na vyvolanie emisie auto result = norm.feed(U’e’); CHECK(result.empty()); // stále vyrovnávame result = norm.feed(U’u0301′); CHECK(result.empty()); // stále vyrovnávame (kombinácia znaku) result = norm.feed(U’x’); // spúšťač vyvoláva emisiu predchádzajúceho segmentu REQUIRE_FALSE(result.empty()); CHECK(result == U"u00E9"); // e + akú skomponované na e-acute result = norm.flush(); CHECK(result == U"x"); // konečný segment
- funkcia script_extensions teraz vracia std::optional<std::span>;
- bol implementovaný pravidlo GB9c na rozdeľovanie skupín grafém pre kombinácie symbolov v jazykoch skupiny Indic;
- v grapheme_segmenter boli opravené pravidlá pre GB11 a GB4/GB5; zastarané API bolo odstránené;
- implementované SIMD-optimalizované konvertovanie UTF-8 do UTF-16/UTF-32;
- šírka spojovacích symbolov Hangul V/T je teraz nulová;
- implementovaná segmentácia podľa hraníc slov;
- opravy v C API;
- refaktorovanie systému zostavovania a pomocného generátora tabuliek C++;
- pridané komplexné testy na konverziu UTF-16/UTF-32;
- do CI bola pridaná statická zostava utilitky unicode-query.
Zdroj: linux.org.ru
