libunicode 0.9.0

libunicode 0.9.0

Състояние на издаването на библиотеката 0.9.0 за C++ (стандарт C++20) libunicode. Проектът се разработва от екип от разработчици на емулатор на терминал Contour и интерфейси Endo (в активна разработка) и се разпространява под лиценз Apache 2.0.

Възможности на библиотеката:

  • поддръжка на стандарти Unicode 17.0:
  • API за извличане на свойства на Юникод;
  • SIMD оптимизация на някои функции (с използване на std::simd или std::experimental::simd, когато са налични);
  • оптимизирано преобразуване между UTF-8 UTF-16/UTF-32;
  • еквивалент на функцията wcwidth (int unicode::width(char32_t));
  • сегментиране на текста по графеми, символи, емоджи и писмености;
  • преобразуване на регистъра и сравняване на стрингове;
  • високостепенен API за сегментиране на текст, подходящ за реализация форматиране на текст.
  • покритие с тестове на повечето възможности на библиотеката (ширина на символа и сегментиране).

В комплекта е включена и конзолна утилита unicode-query за извличане на подробна информация за стрингове.

Промени:

normalizer norm(Normalization_Form::NFC); // Вход за разложен e + комбиниращ акут, след което нов стартер за задействане на емисия auto result = norm.feed(U’e’); CHECK(result.empty()); // все още буферира result = norm.feed(U’u0301′); CHECK(result.empty()); // все още буферира (комбиниращ знак) result = norm.feed(U’x’); // стартер активира емисията на предишния сегмент REQUIRE_FALSE(result.empty()); CHECK(result == U"u00E9"); // e + акут комбинирано в e-акут result = norm.flush(); CHECK(result == U"x"); // краен сегмент

  • функция script_extensions сега връща std::optional<std::span>;
  • реализирано правило GB9c за разпадане на графеми за комбинации от символи в езици от групата на Индийските езици;
  • в grapheme_segmenter поправени правилата за GB11 и GB4/GB5; остарял API е премахнат;
  • реализирано SIMD-оптимизирано преобразуване от UTF-8 в UTF-16/UTF-32;
  • ширината на комбиниращите символи Hangul V/T сега е равна на нула;
  • реализирано сегментиране по границите на думи;
  • поправки в C API;
  • рефакторинг на системата за сборка и помощния генератор на таблици C++;
  • добавени комплексни тестове за преобразуване от UTF-16/UTF-32;
  • в CI добавена статична сборка на утилитата unicode-query.

Източник: linux.org.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster