Haiku — свободная операционная система для персональных компьютеров, первая версия которой нацелена на бинарную совместимость с операционной системой BeOS.

Haiku воплощает в себе основные идеи BeOS. Это будет модульная система, архитектурно решённая как «модульное ядро», способная динамически подгружать необходимые модули. К интересным особенностям системы следует отнести архитектуру трансляторов — системных интерпретаторов файловых форматов (например, JPEG).

О проекте

ad block

Закладки

Субпиксельное сглаживание. Отчёт #1 [GSoC]

Прошёл почти месяц с начала GSoC и настало время подвести итоги. Месяц выдался нелёгким. Я разрывался между Haiku и экзаменами. Должен признаться, что учёба отняла больше времени, чем Haiku :-) Несмотря на это, я сделал кое-что и счастлив представить первые плоды своей работы!

Благодаря большой ясности исходников app server'а и AGG, я быстро в них освоился и начал делать добавления. Я решил начать с добавления сглаживания для неизменённого текста. Сюда входят почти все тексты, которые обычно встречаются в системе, текстовых редакторах и при путешествиях в интернет. Внутренняя часть технологии уже завершена и сейчас почти уже можно сгладить все шрифты в системе. Первая картинка показывает текст с текущим сглаживанием Haiku с использованием серых тонов, а вторая показывает (почти) тот же экран с использованием субпиксельного сглаживания (кликните, чтобы увидеть полную версию и убедитесь, что картинка показывается целиком, без масштабирования).

Разница в обычном тексте не очень заметна, но, думаю, видно значительное улучшение в правом верхнем окне, где полужирный шрифт, и в нижнем левом окне, где декоративный шрифт (Lucida Calligraphy).
Рекомендую использовать программу-лупу, чтобы изучить отдельные пиксели символов :-).

Опишу вкратце технические подробности
Текст в Haiku отображается с использованием открытой библиотеки Freetype, которая делает картинку, соответствующую данному символу. Теперь эти картинки делаются в три раза шире, и каждая точка соответствует одному субпикселу

Это, конечно, вызывает определённый цветовой дисбаланс в итоге. Этого можно избежать, слегка размазав пиксель по соседним, что, с другой стороны, даст более мутную картинку. Всё это можно сделать средствами Freetype, но меня их подход не вполне устроил

Это всё потому, что Haiku использует шрифты со строгими очертаниями, то есть прибитые к пиксельной сетке, что является их характерной чертой (как, например, ножки у m). В итоге это приводит к тому, что почти каждая вертикальная линия (в большинстве шрифтов) даёт в точности один или два целых пикселя ширины, занимая ровно один или два пикселя. Такие линии, очевидно, не нуждаются ни в какой цветовой фильтрации, которое сделает их только мутным.

Моя реализация цветовой фильтрации игнорирует такие вертикальные линии и поэтому символы получаются чёткими и ясными. Оригинальная цветовая фильтрация во Freetype этого не делает, также, как не делает этого и ClearType в Windows XP. Выходит, что Haiku, с этой точки зрения, делает лучший текст, чем то, что считается стандартом на сегодняшний день!

Думаю (и мой наставник Стефан, наверное, тоже), что наиболее полезным было бы сделать фронт-энд для субпиксельного сглаживания, что позволит добавить некоторые возможности в существующие настройки. Когда это будет сделано, субпиксельное сглаживание для непреобразованных шрифтов станет доступным всем и я займусь его реализацией для векторной графики в целом.

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

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

andrej spielmann

2008/06/26
метки:

Архивы

Сентябрь 2007| Октябрь 2007| Январь 2008| Февраль 2008| Март 2008| Апрель 2008| Май 2008| Июнь 2008