Поделиться через


Сглаживание 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. Этот флаг не влияет на предыдущие версии операционной системы.