Что отвечает за рендеринг шрифтов в Linux? - PullRequest
0 голосов
/ 03 октября 2018

Извините, если мой вопрос немного расплывчатый.Я пытаюсь понять, где искать свои проблемы.У меня есть набор регрессионных тестов, который захватывает и сравнивает экран.Кажется, что всякий раз, когда мы делаем какое-то обновление библиотеки, регрессионные тесты терпят неудачу.Наши настройки шрифта такие же.Разница будет в виде обновления видеокарты (драйвера), обновления оконного менеджера или просто обновления сторонней библиотеки (например, библиотеки Qt).При визуальном тестировании на людях шрифты выглядят почти одинаково, но если я сделаю сравнение пиксель за пикселем, это покажет, что снимки отличаются.У кого-нибудь есть понимание, как отображаются шрифты?

1 Ответ

0 голосов
/ 03 октября 2018

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

Что еще хуже, X11 была не просто одной реализацией, были конкурирующие реализации X11,Linux в основном использовал XFree86, который позже стал Xorg.И поскольку этого недостаточно, последние разработки добавили ряд альтернатив X11, которые поддерживают интерфейсы обратной совместимости с X11.Некоторые из этих библиотек GUI в верхней части X11 знают об этих новых библиотеках и теперь могут использовать новые интерфейсы.

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

Windows немного лучше, но она слишком старая и имеет некоторые конкурирующие библиотеки GUI.Причина, по которой это лучше, вероятно, тройная: одна сторона контролирует все интерфейсы (Microsoft), они с самого начала знали о плохом дизайне X11 (избегая ошибок новичков), и у Microsoft гораздо больше ресурсов, чтобы тратить.

Но, тем не менее, и Linux, и Windows должны были развиваться, чтобы поддерживать Unicode и гораздо большие шрифты, которые он принес, 24-битный цвет, экраны с высоким разрешением, ЖК-экраны с субпиксельным разрешением, ускоренные графические процессоры и т. Д. И это было трудно дляоба для сброса старых интерфейсов.

...