Сглаживание ClearType
Сглаживание Microsoft ClearType — это метод сглаживания, который улучшает разрешение шрифта по сравнению с традиционным сглаживание. Он значительно повышает удобочитаемость цветных ЖК-мониторов с цифровым интерфейсом, таких как ноутбуки и высококачественные плоские настольные дисплеи. Удобочитаемость экранов CRT также несколько улучшена.
Однако ClearType зависит от ориентации и упорядочения полос ЖК-дисплея. В настоящее время ClearType реализуется только для светодиодных индикаторов с вертикальными полосами, упорядоченными в ФОРМАТЕ RGB. В частности, это влияет на планшетные компьютеры, где дисплей может быть ориентирован в любом направлении, и те экраны, которые можно повернуть из альбомной в книжную.
Разрешено сглаживание ClearType:
- Для 16-, 24- и 32-разрядных цветов (отключено для 256 цветов или меньше)
- Для контроллера домена экрана и памяти DC (не для принтера DC)
- Для шрифтов TrueType и OpenType с контурами TrueType
Сглаживание ClearType отключено:
- В клиенте сервера терминалов
- Для точечных шрифтов, векторных шрифтов, шрифтов устройств, шрифтов типа 1 или шрифтов Postscript OpenType без контуров TrueType
- Если в шрифте настроены внедренные растровые изображения, только для тех размеров шрифтов, которые содержат внедренные растровые изображения.
Чтобы активировать сглаживание ClearType, вызовите SystemParametersInfo один раз, чтобы включить сглаживание шрифта, а затем второй раз, чтобы задать для типа сглаживания FE_FONTSMOOTHINGCLEARTYPE, как показано в следующем примере кода:
SystemParametersInfo(SPI_SETFONTSMOOTHING,
TRUE,
0,
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
SystemParametersInfo(SPI_SETFONTSMOOTHINGTYPE,
0,
(PVOID)FE_FONTSMOOTHINGCLEARTYPE,
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
Внешний вид текста можно настроить, изменив значение контрастности, используемое в алгоритме ClearType. Значение по умолчанию — 1400, но это может быть любое значение от 1000 до 2200. В зависимости от устройства отображения и чувствительности пользователя к цветам, более высокое или меньшее значение контрастности может повысить удобочитаемость. Чтобы изменить контрастность, вызовите SystemParametersInfo с SPI_SETFONTSMOOTHINGCONTRAST. В следующем коде задается значение контрастности 1600.
SystemParametersInfo(SPI_SETFONTSMOOTHINGCONTRAST,
0,
(PVOID)1600,
SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
Для обеспечения совместимости приложений следует учитывать следующие сведения:
- Отрисовка текста с помощью ClearType выполняется немного медленнее, чем при стандартном сглаживание.
- Приложения не должны использовать XOR для отображения выделенного текста. Приложения должны задать цвет фона и повторно отобразить выделенный текст.
- Приложения не должны рисовать один и тот же текст поверх себя в прозрачном режиме. В этом случае граничные пиксели, которые сглаживаются, будут объединять цвет с самим собой, а не с цветом фона. Это приводит к потемнение и цветные края.
- Приложения не должны рисовать текст, рисуя символы по отдельности в непрозрачном режиме, так как край символа может быть обрезано следующим символом. Это происходит потому, что символ, сглаженный с помощью ClearType, может иметь отрицательную ширину A или C, а обычный символ имеет положительную ширину A или C. Гарантируется, что только ширина символа B будет одинаковой. Аналогичным образом приложения должны быть осторожными, если сглаженный текст находится рядом с незамеченным текстом.
- Если приложение отрисовывает текст, а затем управляет растровым изображением, сглаживание шрифтов должно быть отключено, задав элементу lfQuality структуры LOGFONT значение NONANTIALIASED_QUALITY. Например, игра может добавить эффект тени или текст, отрисованный в растровом рисунке, может быть масштабирован для создания представления большого пальца.
- Если пользователь работает в книжном режиме (то есть чередование монитора является горизонтальным), следует отключить сглаживание ClearType.
Параметр fdwQuality в CreateFont и член lfQualityобъекта LOGFONT принимают флаг CLEARTYPE_QUALITY. Для растеризации шрифтов, созданных с помощью этого флага, будет использоваться растеризатор ClearType. Этот флаг не влияет на предыдущие версии операционной системы.