Сглаживание шрифтов

Сравним различные способы сглаживания:

Слева обычное сглаживание, справа — включена специальная программаСлева обычное сглаживание, справа — включена специальная программа

Субпиксельное сглаживание

Каждый пиксель состоит из трёх сегментов (R-красный, G-зелёный, B-голубой). Несмотря на то, что сегменты цветные, их можно задействовать для увеличения горизонтального разрешения экрана. Например, если в пикселях разрешение экрана 800*600, то в субпикселях — 2400*600; это позволяет рисовать более плавные линии по сравнению с 800*600. Однако, это «даёт свободу» только по горизонтали (для рисования вертикальных и наклонных линий). Поэтому горизонтальные линии обычно вписаны строго в пиксельную сетку (при увеличении они чисто чёрные):

Состав пикселя и принцип субпиксельного сглаживанияСостав пикселя и принцип субпиксельного сглаживания

Порядок сегметов в пикселе может различаться у разных мониторов. Все примеры в этой статье приводятся для LCD-BGR.

Предыстория

Много раз, глядя на шрифты в ОС Windows XP, я удивлялся, почему в системе нет дополнительных настроек отрисовки. Есть только «стандартное сглаживание» (буэээ) и cleartype (неплохое). Последнее появилось в XP, а в третьем сервис-паке появился доп. экран настройки этого cleartype:

Настройка сглаживания шрифтов под ВиндойНастройка сглаживания шрифтов под Виндой

Апдейт. В Висте и Семёрке, кстати, ничего не изменилось.

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

Поиски вывели меня на программу GDI++ (легко ищется в Гугле). Её написали Японцы: у них иероглифы, в которых может быть куча штрихов. Все штрихи надо красиво и читабельно отобразить. Прога сидит в трее и имеет много готовых шаблонов сглаживания:

Настройка GDI++Настройка GDI++

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

Сверху — cleartype, снизу — GDI++Сверху — cleartype, снизу — GDI++

У GDI++ есть небольшая проблема: размытие мелких шрифтов. Это легко решается увеличением системного шрифта (в настройках Винды и во всех программах).

Сглаживание в браузерах

Первым браузером на Винде, который позаботился о проблеме шрифтов, был Сафари. Но шрифты в нём безбожно мажутся. Обратите внимание на букву «ч» в слове «ночных». Только Винда её отобразила хорошо:

Смотрим на букву Ч в разных режимах СафариСмотрим на букву Ч в разных режимах Сафари

Как видно, ширина штрихов «скачет» во всех режимах. Методы Сафари хорошо бы подошли, если бы штрихи были как минимум 2-3 пикселя в ширину.

Фаерфокс использует системный рендеринг, и GDI++ благополучно перехватывает инициативу. Сайты выглядят красиво:

Слева — XP, справа — GDI++Слева — XP, справа — GDI++

Апдейт. В последних версиях Фаерфокса GDI++ не работает. Чтобы заработало, надо отключить аппаратное ускорение: Инструменты → Настройки → Дополнительные → Общие, и там снять галку «По возможности использовать аппаратное ускорение».

19 сентября 2010шрифт

Заметка понравилась? → Поделитесь в соцсетях:

Ваш комментарий

comments powered by HyperComments

Следующая заметка

Иван ТитовИван Титов
Фрилансер, музыкант, физтех по жизни, семьянин, философ.
© 2010