Ilmus 0.9.0 versioon C++ keele jaoks (C++20 standard) libunicode. Projekti arendab terminali emulaatori arendajate meeskond Contour ja kest Endo (aktiivne arendus), ja levitatakse Apache 2.0 litsentsi alusel.
- standardi toetamine Unicode 17.0:
- API Unicode omaduste saamiseks;
- Teatud funktsioonide SIMD-optimeerimine (kasutades std::simd vÔi std::experimental::simd, kui need on saadaval);
- optimeeritud UTF-8 <-> UTF-16/UTF-32 konvertimine;
- wcwidth funktsiooni ekvivalent (int unicode::width(char32_t));
- teksti segmentimine grafeemide, sĂŒmbolite, emotikonide ja kirjutamiste jĂ€rgi;
- registri teisendamine ja stringide vÔrdlemine;
- kÔrgetasemeline teksti segmenteerimise API, mis sobib rakendamiseks teksti kujundamine.
- enamiku raamatukogu vĂ”imaluste katmine testidega (sĂŒmboli laius ja segmentimine).
Komplekti kuulub ka kĂ€skude utiliit unicode-query stringide ĂŒksikasjaliku teabe saamiseks.
Muudatused:
- lisatud API grapheme_cluster_width;
- parandused Unicode'i versioonide töötlemisel ('Age');
- tÀielik tugi UAX #15 Unicode'i normaliseerimisvormid voogedastusprotsessiga toetuse abil:
normalizer norm(Normalization_Form::NFC); // Toetab lagundatud e + ĂŒhendava terava, seejĂ€rel uus algataja emissiooni kĂ€ivitamiseks auto result = norm.feed(Uâeâ); CHECK(result.empty()); // veel bufris result = norm.feed(Uâu0301âČ); CHECK(result.empty()); // veel bufris (ĂŒhendav mĂ€rk) result = norm.feed(Uâxâ); // algataja kĂ€ivitab eelmise segmenti emissiooni REQUIRE_FALSE(result.empty()); CHECK(result == U"u00E9"); // e + terav kokku e-teravale result = norm.flush(); CHECK(result == U"x"); // lĂ”plik segment
- funktsioon script_extensions tagastab nĂŒĂŒd std::optional<std::span<Script const>>;
- rakendatud reegel GB9c graafemigrupi jagamiseks, mis kehtib Indica keelte sĂŒmbolite kombinatsioonide jaoks;
- grapheme_segmenter'is on parandatud reeglid GB11 ja GB4/GB5; vananenud API eemaldatud;
- rakendatud SIMD-optimeeritud konvertimine UTF-8-st UTF-16/UTF-32-ks;
- Hangul V/T ĂŒhendavate mĂ€rkide laius on nĂŒĂŒd null;
- rakendatud sÔnade piiridel segmenteerimine;
- parandused C API-s;
- C++ ehitussĂŒsteemi ja abitablettide generaatori refaktoreerimine;
- lisatud kompleksne UTF-16/UTF-32 konversiooni testimine;
- CI-s on lisatud unicode-query utiliidi staatiline koondamine.
Allikas: linux.org.ru
