
Вышла версия 0.9.0 библиотеки libunicode для языка программирования C++. Проект, написанный с использованием стандарта C++20, развивается командой авторов эмулятора терминала 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, предназначенный для получения детальной информации о текстовых строках.
Что нового в версии 0.9.0
Обновление принесло ряд функциональных улучшений и исправлений:
- Внедрен API
grapheme_cluster_width. - Оптимизирована работа с версиями Юникод («Age»).
- Реализована полноценная поддержка UAX #15 (Unicode Normalization Forms) с возможностью потоковой обработки данных.
- Функция
script_extensionsтеперь возвращаетstd::optional. - Добавлена поддержка правила GB9c для корректного разбиения групп графем в языках группы Indic.
- В
grapheme_segmenterвнесены исправления для правил GB11, GB4 и GB5, а устаревший API был удален. - Реализовано конвертирование UTF-8 в UTF-16/UTF-32 с применением SIMD-инструкций.
- Ширина соединяющих символов Hangul V/T теперь приведена к значению «ноль».
- Добавлена функциональность сегментирования текста по границам слов.
- Проведены исправления в C API.
- Осуществлен рефакторинг системы сборки и генератора таблиц на C++.
- Добавлены комплексные тесты для конвертации UTF-16/UTF-32.
- В CI-конвейер добавлена возможность статической сборки утилиты
unicode-query.
Источник: https://www.linux.org.ru






