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
