Как обеспечить субпиксельную визуализацию шрифта для ЖК-дисплея (cleartype в Windows) в Linux?

StackOverflow https://stackoverflow.com/questions/1494934

Вопрос

Я работаю над встроенной системой с собственной оконной системой и библиотекой рендеринга.До того, как я установил Ubuntu, к моему удивлению, в ней появился субпиксельный рендеринг ЖК-дисплея.Это действительно выглядит здорово, иметь его на моем устройстве.Потому что это очень читабельно.

В настоящее время я запрашиваю определенный глиф в freetype, freetype дает мне один буфер памяти со значениями альфа, при этом субпиксельный рендеринг невозможен.У меня обычный сглаженный шрифт.Как и в случае с субпикселем, при рендеринге самый левый пиксель шрифта сглаживается красным, а самый правый — синим (при условии, что экран — RGB).

Есть ли какие-либо методы, с помощью которых freetype может предоставить мне информацию о том, является ли текущий пиксель левым, правым или центральным?

Спасибо, Санни.

Это было полезно?

Решение

свободный тип может сделать это

Другие советы

Как вы заметили, это может реализовать среда рабочего стола, которую вы используете (GNOME, KDE и т. д.).Его настройки зависят от окружающей среды.

Что касается того, как сделать это в вашем собственном коде, вы можете использовать те же процедуры, что и оконный менеджер (Gtk+ в GNOME, Qt в KDE и т. д.), или вы можете использовать отдельную библиотеку, например FreeType или SDL_ttf.Сглаживание — общий термин для этого, поскольку ClearType — это запатентованный алгоритм, специфичный для Microsoft, — обычно в этих библиотеках не является обязательным и по умолчанию отключено для повышения скорости.

Я думаю, что libcairo находится в нижней части большинства приложений GTK в Ubuntu, которые выполняют сглаживание.Я думаю, что делать ли субпиксельный рендеринг специально для ЖК-экрана — это выбор пользователя, а не автора приложения.Пользователь управляет им через вкладку «Шрифты» в «Настройки внешнего вида» в разделе «Система» -> «Настройки» -> «Внешний вид» (который можно запустить вручную как двоичный файл «gnome-appearance-properties») и щелкнуть «Субпиксельное сглаживание (ЖК-дисплеи)». " вариант.

Может быть, есть способ, с помощью которого приложение может самостоятельно переопределить этот параметр?Однако не знаю, зачем им это нужно, поскольку приложение не контролирует, какой дисплей использует пользователь.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top