Lëshimi i librit 0.9.0 për gjuhën C++ (standard C++20) libunicode. Projekti zhvillohet nga ekipi i zhvilluesve të emulatorit të terminalit Contour dhe shellit Endo (në zhvillim aktiv), dhe shpërndahet nën licencën Apache 2.0.
- mbështetje për standartet Unicode 17.0:
- API për marrjen e vetive të Unicode;
- optimizimi SIMD i disa funksioneve (duke përdorur std::simd ose std::experimental::simd nëse janë të disponueshme);
- konvertimi i optimizuar UTF-8 UTF-16/UTF-32;
- ekvivalenti i funksionit wcwidth (int unicode::width(char32_t));
- segmentimi i tekstit sipas grafemave, simboleve, emoji dhe shkrimeve;
- transformimi i regjistrit dhe krahasimi i vargjeve;
- API i nivelit të lartë për segmentimin e tekstit, i përshtatshëm për realizimin shaping-ut të tekstit.
- mbulimi me teste i shumicës së mundësive të bibliotekës (gjerësia e simbolit dhe segmentimi).
Në paketë gjithashtu përfshihet utilitari konsolles unicode-query për marrjen e informacionit të detajuar rreth vargjeve.
Ndryshimet:
- shtuar API grapheme_cluster_width;
- përmirësime në punën me versionet e Unicode («Age»);
- përkrahje e plotë UAX #15 Format Normalizuese të Unicode me mbështetje për përpunimin në rrjedhë:
normalizer norm(Normalization_Form::NFC); // Jepni e + kombinim acute, pastaj njĂ« fillestare tĂ« re pĂ«r tĂ« aktivizuar emetimin auto result = norm.feed(Uâeâ); CHECK(result.empty()); // ende buffering result = norm.feed(Uâu0301âČ); CHECK(result.empty()); // ende buffering (shenjĂ« kombinuese) result = norm.feed(Uâxâ); // fillestari aktivizon emetimin e segmentit tĂ« mĂ«parshĂ«m REQUIRE_FALSE(result.empty()); CHECK(result == U"u00E9"); // e + acute e formuar nĂ« e-acute result = norm.flush(); CHECK(result == U"x"); // segmenti pĂ«rfundimtar
- funksioni script_extensions tani kthen std::optional<std::span>;
- implementimi i rregullit GB9c për ndarjen e grupeve të grafemave për kombinimet e simboleve në gjuhët e grupit Indic;
- në grapheme_segmenter janë përmirësuar rregullat për GB11 dhe GB4/GB5; është hequr API e vjetër;
- implementimi i konvertimit të optimizuar SIMD nga UTF-8 në UTF-16/UTF-32;
- gjerësia e simboleve bashkangjitëse Hangul V/T tani është zero;
- implementimi i segmentimit sipas kufijve të fjalëve;
- korrigjime në C API;
- refaktorizimi i sistemit të ndërtimit dhe gjeneratorit ndihmës të tabelave C++;
- testet komplekse për transformimin e UTF-16/UTF-32 janë shtuar;
- në CI është shtuar ndërtimi statik i utilitarit unicode-query.
Burimi: linux.org.ru
