Bola vydaná knižnica C++ verzie 0.9.0 (štandard C++20). libunicódeProjekt vyvíja tím vývojárov terminálových emulátorov. obrys a mušle endo (v aktívnom vývoji) a je licencovaný pod licenciou Apache 2.0.
- podpora štandardov Unicode 17.0:
- API na získanie vlastností Unicode;
- SIMD optimalizácia niektorých funkcií (pomocou std::simd alebo std::experimental::simd, ak sú k dispozícii);
- optimalizovaná konverzia UTF-8 <-> UTF-16/UTF-32;
- ekvivalentná funkcia wcwidth(int unicode::width(char32_t));
- segmentácia textu pomocou grafém, symbolov, emoji a skriptov;
- konverzia veľkých a malých písmen a porovnávanie reťazcov;
- API pre segmentáciu textu na vysokej úrovni vhodné na implementáciu tvarovanie textu.
- testovacie pokrytie väčšiny funkcií knižnice (šírka symbolov a segmentácia).
Balík obsahuje aj konzolový nástroj unicode-query na získanie podrobných informácií o reťazcoch.
zmeny:
- pridané API grapheme_cluster_width;
- vylepšenia práce s verziami Unicode („Vek“);
- plná podpora UAX #15 Normalizačné formuláre Unicode s podporou spracovania streamu:
normalizátor norm(Normalization_Form::NFC); // Nasýti rozložený e + combining acute, potom nový štartér na spustenie emisie auto result = norm.feed(U'e'); CHECK(result.empty()); // stále ukladá do vyrovnávacej pamäte result = norm.feed(U'u0301′); CHECK(result.empty()); // stále ukladá do vyrovnávacej pamäte (kombinačná značka) result = norm.feed(U'x'); // štartér spúšťa emisiu predchádzajúceho segmentu REQUIRE_FALSE(result.empty()); CHECK(result == U"u00E9"); // e + acute zložené do e-acute result = norm.flush(); CHECK(result == U"x"); // finálny segment
- Funkcia script_extensions teraz vracia std::optional >;
- bolo implementované pravidlo GB9c na delenie skupín grafém pre kombinácie znakov v indických jazykoch;
- V grapheme_segmenter boli opravené pravidlá pre GB11 a GB4/GB5; zastarané API bolo odstránené;
- Bola implementovaná konverzia UTF-8 na UTF-16/UTF-32 optimalizovaná pre SIMD;
- šírka spojovacích symbolov Hangul V/T je teraz nulová;
- Bola implementovaná segmentácia podľa hraníc slov;
- opravy v C API;
- refaktoring zostavovacieho systému a pomocného generátora tabuliek v jazyku C++;
- Pridané komplexné testy pre konverziu UTF-16/UTF-32;
- Do CI bola pridaná statická verzia utility unicode-query.
Zdroj: linux.org.ru
