-
Notifications
You must be signed in to change notification settings - Fork 173
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix artifacts in viewer in tty #2107
Conversation
Здесь классы символов сгенерированы на Убунту 23.10, там ICU должна быть посвежее. И дополнительная проверка через wcwidth() убирает часть проблем в моем случае. |
вот эта проверка и смущает, по двум причинам:
Вообще а почему wcwidth не совпадает с результатами ICUUC? Может там просто чтото не учитывается в исходном коде на проверках ее результатов? |
Попробуем для примера разобрать символ, с которого началось обсуждение проблемы: Вот этот код
Даёт
и на Mint 21.3, и на Ubuntu 23.10. Почему это RIGHT JOINING, когда это обычная арабская буква? Почему wcwidth() для неё -1 возвращает? Одни вопросы без ответов. |
Свойства символа 0x692, которые нам отдаёт ICU, такие: |
Получается, символ является префиксом, однако длина у него не нулевая. В far2l такое, по-моему, не поддерживается. |
Как минимум часть оставшихся багов происходит из-за того, что в качестве постфиксов тоже определяются печатные символы. Это чинится например так:
Но баги на просмотре бинарника far2l всё равно остаются. |
Артефакты вида || справа побеждаются добавлением
после
, но там остаётся ещё противный баг с » справа, которых быть не должно. Он исчезает, сделать так:
Разбираюсь. |
Обновил PR. Текущий код решает проблему с артефактами, о которой был изначальный тикет. По крайней мере, теми из них, что были заметны при просмотре бинарника far2l. А проблема с лишними |
Ещё любопытное наблюдение: wcwidth() вообще не работает, если не сделать предварительно
|
В данный момент я упёрся в символ мягкого переноса, 0xAD. Он может иметь ширину 0 или 1 клетки, в зависимости от положения в строке (с правого краю или нет). Вот, например, тестовый файл. Если открыть его в редакторе и подвигать курсор, ничего не выйдет. Если прописать в IsCharSuffix() дополнительное условие Что с этим делать пока не пониманю. |
Fixes #2084