Ir notikusi C++ (C++20 standarta) bibliotēkas 0.9.0 izlaišana libunicode. Projekts tiek izstrādāts termināla emulatora izstrādātāju komandas Contour un saskarne Endo (aktīvā izstrādē) un tā tiek izplatīta saskaņā ar Apache 2.0 licenci.
- standartu atbalsts Unicode 17.0:
- API Unicode īpašību iegūšanai;
- SIMD optimizācija dažām funkcijām (izmantojot std::simd vai std::experimental::simd, ja tās ir pieejamas);
- optimizēta UTF-8 <-> UTF-16/UTF-32 konvertēšana;
- funkcijas wcwidth (int unicode::width(char32_t)); ekvivalents;
- teksta segmentācija pēc grafēmām, simboliem, emoji un rakstiem;
- uzrakstu maiņa un virkņu salīdzināšana;
- augsta līmeņa teksta segmentēšanas API, kas piemērots realizācijai teksta formēšanā.
- bibliotēkas iespējas lielākoties ir pārklātas ar testiem (simbola platums un segmentācija).
Komplektā iekļauta arī konsoles utilīta unicode-query, lai iegūtu detalizētu informāciju par virkņām.
Izmaiņas:
- pievienots grapheme_cluster_width API;
- uzlabojumi darbā ar Unicode versijām ("Age");
- pilnīga atbalsta nodrošināšana UAX #15 Unicode Normalizācijas formas ar plūstošas apstrādes atbalstu:
normalizer norm(Normalization_Form::NFC); \/\/ Ievads, sadalot e + kombinējošs akūts, pēc tam jauns sākums, lai aktivizētu emisiju auto rezultāts = norm.feed(U’e’); CHECK(result.empty()); \/\/ vēl buferē rezultāts = norm.feed(U’u0301′); CHECK(result.empty()); \/\/ vēl buferē (kombinējošais zīme) rezultāts = norm.feed(U’x’); \/\/ sākums aktivizē iepriekšējā segmenta emisiju REQUIRE_FALSE(result.empty()); CHECK(result == U"u00E9"); \/\/ e + akūts sastādīts uz e-akūtu rezultāts = norm.flush(); CHECK(result == U"x"); \/\/ pēdējais segments
- funkcija script_extensions tagad atgriež std::optional<std::span<Script const>>;
- pārvaldīti GB9c noteikumi grafēmu grupēšanai kombinācijām valodās, kas pieder pie Indic grupas;
- grapheme_segmenter noteikumi GB11 un GB4/GB5 ir laboti; novērsts novecojis API;
- realizēta SIMD-optimizēta UTF-8 konvertēšana uz UTF-16/UTF-32;
- apvienojošo Hangul V/T simbolu platums tagad ir nulle;
- realizēta vārdu robežu segmentācija;
- labojumi C API;
- pārstrukturēta kompilācijas sistēma un palīgprogrammatūras ģenerators C++;
- pievienoti kompleksie testi UTF-16/UTF-32 konvertēšanai;
- CI pievienots statisks unicode-query rīka būvniecība.
Avots: linux.org.ru
