Ilmus välja 0.9.0 teegi C++ keele jaoks (C++20 standard) libunicode. Projekti arendab terminali emulaatori arendajate meeskond Contour ja kest Endo (aktiivne arendus), ja seda levitatakse Apache 2.0 litsentsi alusel.
- standardite toetus Unicode 17.0:
- API Unicode'i omaduste saamiseks;
- Mõnede funktsioonide SIMD-optimeerimine (kasutades std::simd või std::experimental::simd, kui need on saadaval);
- optimeeritud UTF-8 <-> UTF-16/UTF-32 konverteerimine;
- wcwidth funktsiooni ekvivalent (int unicode::width(char32_t));
- teksti segmentimine graheemide, sümbolite, emodži ja kirjade kaupa;
- registreerimise muutmine ja stringide võrdlemine;
- kõrgtaseme API teksti segmenteerimiseks, mis sobib rakendamiseks teksti vormindamine.
- enamik teegi võimalusi katab testimist (sümboli laius ja segmenteerimine).
Komplekti kuulub ka käsurea utiliit unicode-query stringide üksikasjaliku teabe saamiseks.
Muutused:
- lisatud API grapheme_cluster_width;
- parandused Unicode'i versioonide käsitlemisel ("Age");
- täielik tugi UAX #15 Unicode normaliseerimisvormid voogedastuse toega:
normalizer norm(Normalization_Form::NFC); \/\/ Feed decomposed e + combining acute, then a new starter to trigger emission auto result = norm.feed(U’e’); CHECK(result.empty()); \/\/ still buffering result = norm.feed(U’u0301′); CHECK(result.empty()); \/\/ still buffering (combining mark) result = norm.feed(U’x’); \/\/ starter triggers emission of previous segment REQUIRE_FALSE(result.empty()); CHECK(result == U"u00E9"); \/\/ e + acute composed to e-acute result = norm.flush(); CHECK(result == U"x"); \/\/ final segment
- funktsioon script_extensions tagastab nüüd std::optional<std::span<Script const>>;
- rakendatud on GB9c reegel grafeemide rühma lõhkumiseks Indic keelte kombinatsioonide jaoks;
- grapheme_segmenter'is on parandatud reeglid GB11 ja GB4/GB5; eemaldatud aegunud API;
- rakendatud on SIMD-optimeeritud UTF-8 konverteerimine UTF-16/UTF-32;
- Hangul V/T ühendavate märkide laius on nüüd null;
- rakendatud on sõna piiri lõhkumine;
- parandused C API-s;
- C++ ehitussüsteemi ja abigeneraatori refaktooring;
- lisatud on komplekssed testid UTF-16/UTF-32 konverteerimise kohta;
- CI-sse on lisatud unicode-query utiliidi staatiline kogumine.
Allikas: linux.org.ru
