Как иметь субпиксельный рендеринг шрифта для ЖК-дисплея (cleartype на окнах) в Linux?

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

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

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

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


person SunnyShah    schedule 29.09.2009    source источник


Ответы (3)


freetype может это сделать

person Chris Dodd    schedule 29.09.2009
comment
Любой учебник о том, как добиться сглаживания ЖК-дисплея с помощью FreeType. Поскольку я использую freetype для рендеринга шрифтов. Я создал собственную оболочку для рисования шрифта с помощью freetype 2. - person SunnyShah; 30.09.2009
comment
Я не знаю об учебнике, но я предполагаю, что вы просто используете FT_RENDER_MODE_LCD, и это более или менее просто сработает. - person Chris Dodd; 05.10.2009

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

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

person Warren Young    schedule 29.09.2009
comment
ClearType относится конкретно к (реализации Microsoft) субпиксельного рендеринга. Субпиксельный рендеринг и сглаживание — две совершенно разные вещи. - person Captain Segfault; 01.10.2009

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

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

person Brandon Rhodes    schedule 30.09.2009
comment
Я работаю над встроенной системой, у меня нет GNOME на моем устройстве, но, поскольку GNOME может это сделать, я уверен, что должна быть какая-то реализация этого с открытым исходным кодом. Прямо сейчас я рисую шрифт, используя freetype 2. Хочу написать код, чтобы я мог получить его на моем устройстве. Спасибо. - person SunnyShah; 01.10.2009