Определяем, сглаживаются ли шрифты

2011-05-20

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

Чаще всего, сама операционная система определяет должны ли шрифты быть сглаженными и как отдельный атрибут шрифта это не определяется.
CSS3 предусматривает возможность задавать шрифтам такое свойство:

font-smooth: auto | never | always | | length ;

(Более подробно здесь: http://www.w3.org/TR/WD-font/#font-smooth-prop )
но на сегодняшний день еще ни один браузер не поддерживает это.

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

Как же это сделать?

У IE есть встроенное свойство screen.fontSmoothingEnabled, которое возвращает true, если шрифты сглаживаются, или false — в обратном случае.

А что делать с остальными браузерами?

Изящное решение проблемы реализовал Zoltan Hawryluk.
Идея очень интересна и проста:
он пытается создать небольшой белый <canvas />, нанести на него чёную букву, и попиксельно проверить цвет каждой точки. Если встретится точка, отличная от белого и чёрного цвета, значит сглаживание шрифтов используется!

Посмотреть реализацию и скачать эту библиотеку можно здесь:
http://www.useragentman.com/blog/2009/11/29/how-to-detect-font-smoothing-using-javascript/

Таким образом данная библиотека покрывает почки все используемые браузеры, так как работает для всех версий IE + для всех браузер, умеющих работать с канвой.



Добавить комментарий