OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 18:10

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: Воскресенье, 15 Март, 2020 18:05 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
В кросс-платформенной сборке пока только в версии для Windows внедрено нашим боевым товарищем Adimetrius такое достаточно полезное для современных мониторов и слабовидящих людей свойство документов как масштабирование колесом мыши при зажатой клавише Ctrl.

Я уже успел оценить это. Очень удобно при разработке в Wine или Windows, когда открываешь документы с исходным кодом и шрифт там мелковат. По умолчанию он 9 пунктов для исходников ББ. Также это полезно для отладки масштабирования Windows. Сумел отловить многие недочёты масштабирования в подсистемах Tabs и Dia.

Что мешает для Linux сделать это. Скопировал отсюда viewtopic.php?f=24&t=5253&p=111420#p111223
adimetrius писал(а):
Zoom для Linux спотыкается о две вещи:

1) хост-контролы. Они, канешн, не уважают f.unit, вообще не знают о нем. Поэтому ЗумЛин ожидает полной "герметизации": если все будет отрисовываться в ББ, то с зумом нет проблем.

2) Еще есть загвоздка со шрифтами из Pango. ВинББ получает от Винапи таблицу ширин и потом ею пользуется - ессно, учитывая f.unit. В ЛинББ эту часть кода закомментили, а расчет ширин поручили полностью Pango. Он про f.unit Не знает.

Обе проблемы разрешимы, и, как и все, требуют воли и ресурсов.


Хост контролы уже моими усилями убраны. Получается только проблема со шрифтами.

А вот про шрифты я хочу сказать, что и в Windows версии наблюдается какая-то пляска букв во время набора. И это сильно отвлекает.
Почему такое возможно? Почему при изменённом f.unit уже набранные буквы до положения каретки могут шевелиться, когда набираешь текст?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 15 Март, 2020 19:24 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
Иван Денисов писал(а):
А вот про шрифты я хочу сказать, что и в Windows версии наблюдается какая-то пляска букв во время набора. И это сильно отвлекает.
Почему такое возможно? Почему при изменённом f.unit уже набранные буквы до положения каретки могут шевелиться, когда набираешь текст?


Расчет и отрисовка строки обеспечиваются процедурами TextViews.DrawLine и TextSetters.GetLine. Они прекрасны, длинны, и вот в них-то где-то что-то и напутано. Т.е. связано это не с f.unit.

Между прочим, когда в строке одно слово, и оно не влезает в ширину зрителя, эти процедуры реализуют "атипичное" поведение: просто обрезают "не влезшую" строку. Мол, не влезает? Ваши проблемы! Я у себя это поправил, привел к "типичному": невлезающее слово бьется на части и выводится на несколько строк, и видно целиком. См прил.

Исправляя, я то ли добавил, то ли выявил еще один глюк: на некоторых строках > 64символов положение каретки слегка не совпадает с положением букаф. Но он редко вылезает, поэтому пока терплю.


Вложения:
Комментарий к файлу: Атипичное
Снимок экрана от 2020-03-15 19-08-56.png
Снимок экрана от 2020-03-15 19-08-56.png [ 11.41 КБ | Просмотров: 5583 ]
Комментарий к файлу: Типичное (поправленное)
Снимок экрана от 2020-03-15 19-09-47.png
Снимок экрана от 2020-03-15 19-09-47.png [ 20.47 КБ | Просмотров: 5581 ]
Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 02 Декабрь, 2020 19:42 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Сделал гифку
Вложение:
test.gif
test.gif [ 90.55 КБ | Просмотров: 4089 ]

почему буквы при зуме пляшут?

Сборка для тестирования
https://blackbox.oberon.org/unstable/de ... a1.048.zip

Выскажите догадки, пожалуйста.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 05 Декабрь, 2020 00:49 
Аватара пользователя

Зарегистрирован: Суббота, 16 Февраль, 2008 02:47
Сообщения: 660
Вот еще полюбуйтесь, что в Линуксе творится:

Изображение
Здесь на границе цвета TextSetters.Reader.Read разрывает строку, возвращает ее в TextViews.View.DrawLine, а та вызывает Views.Frame.DrawString. Следовательно, когда цвет один, и разрыва нет - хост-система рисует сплошную строку, а когда разрыв есть - сначала рассчитывается координата, с которой начинается h. И потом с этой координаты рисует Views.Frame.DrawString.

Вероятно, чудо-панга производит кернинг пар, из-за чего координаты не сходятся: при включенном кернинге, напр, ширина строки "VA." не равна сумме ширин строк "V" и "A".

Изображение
А здесь не иначе как сочетание f f заменяется на лигатуру ff (один кодупойнт юникода), опять же пангой; меняется не только ширина, но и рисунок букв.

Но как объяснить ваш рисунок - ума не приложу. Я проверил версию, что TextSetters.Reader.Read возвращает русские литеры по одной (тогда можно было бы опять на кернинг свалить) - оказалось нет, слитно возвращает.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 06 Декабрь, 2020 21:25 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Иван Денисов писал(а):
почему буквы при зуме пляшут?

Выключите "Use true type metrics" и больше не включайте.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 07 Декабрь, 2020 04:11 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Trurl писал(а):
Иван Денисов писал(а):
почему буквы при зуме пляшут?

Выключите "Use true type metrics" и больше не включайте.

Не помогает, к сожалению.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB