LINUX.ORG.RU

libunicode 0.9.0

 , , ,

libunicode 0.9.0

1

2

Состоялся выпуск 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 для получения подробной информации о строках.

Изменения:

  • добавлен API grapheme_cluster_width;
  • улучшения в работе с версиями Юникод («Age»);
  • полная поддержка UAX #15 Unicode Normalization Forms с поддержкой поточной обработки:
    normalizer norm(Normalization_Form::NFC);

    // Feed decomposed e + combining acute, then a new starter to trigger emission
    auto result = norm.feed(U'e');
    CHECK(result.empty()); // still buffering

    result = norm.feed(U'\u0301');
    CHECK(result.empty()); // still buffering (combining mark)

    result = norm.feed(U'x'); // starter triggers emission of previous segment
    REQUIRE_FALSE(result.empty());
    CHECK(result == U"\u00E9"); // e + acute composed to e-acute

    result = norm.flush();
    CHECK(result == U"x"); // final segment
  • функция script_extensions теперь возвращает std::optional<std::span<Script const>>;
  • реализовано правило GB9c разбиения групп графем для сочетаний символов в языках группы Indic;
  • в 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.

>>> Подробности на GitHub

★★★★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 2)

Хм, интересно. Надо будет потыкать палочкой.

sparkie ★★★★★
()

На картинке символ копирайта изображён два раза, причём по разному. В строке «Display» символ суженный, а в заголове окна всё нормально. При этом шрифт на первый взгляд один и тот же. Интересно, почему так.

Сейчас скажет, что я опять под кого-то копаю.

VIT ★★
()

контюр, акьют …

я так понял, что речь про французов, вот про одних я уже рассказывал (те которые на Java/Spring и OpenGL в самолетах мультимедиа делают), был еще один:

я довольно давно изучал проблемы производительности в одной закрытой софтине, в одном сценарии все упиралось в то, что она никак не хотела обслуживать больше тысячи соединений на один экземпляр, а в итоге выяснилось, что ее разработчики документацию читать не умеют, и в man 2 select написано в действительности не про номера FD, а про их количество, ну да ладно…

я чет проблему-таки порешал с вендором, опубликовал у себя в блоге, что вот, мол, с такой-то версии оно нормально работать начало, а потом, лет 5 спустя, случайно нашел пост от французов на эту же тему, там какой-то черт рассказывал как они там командой в 100 человек эту штуку бороли и наконец-то забороли. Ну я, естественно, удивился, написал ихнему руководству «а чего это вы все врете-то?» а в ответ получил: «это наш разработчик плохо английским владеет, поэтому у него вот такой-вот пост вышел».

Если ближе к теме…

Contour is modern, fast, and designed for everyday use. It’s not just a terminal emulator, but a powerhouse of features tailored for those who seek efficiency and control. With GPU-accelerated rendering and high-DPI support, experience the smoothest and most responsive terminal emulator like never before.

Contour is designed with the advanced power user in mind, offering high-speed, feature-rich functionality across all major platforms. From Linux and macOS to FreeBSD, OpenBSD and Windows, we’ve got you covered. Contour offers a suite of unique features designed to enhance your productivity and user experience. Enjoy support for font ligatures, emoji, and Unicode grapheme clusters. Navigate quickly with vertical line markers and vi-like input modes. Control your settings with runtime configuration reload and customizable key bindings.

Ребята, если вам действительно нужны эти фичи в терминале, то скорее всего вам диагноз даже в ближайшей поликлинике поставят - в клинику уже не нужно ходить.

borisych ★★★★★
()
Ответ на: комментарий от VIT

В строке «Display» символ суженный

Ну что делать, так нарисовали в Iosevka Fixed Extended. Или WezTerm глючит.

а в заголове окна всё нормально

Это не заголовок окна, а такой промпт у Endo из соседней новости.

Интересно, почему так.

Потому что ©️ состоит из © и вариантного селектора variation selector-16 U+FE0F, что и показала эта утилита.

dataman ★★★★★
() автор топика
Последнее исправление: dataman (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.