Подтвердить что ты не робот

IE 9 не использует подпиксельное сглаживание при определенных условиях

[Исходное название: текст IE 9 очень плохо выглядит; есть ли способ обхода?)

IE 9 очень плохо передает текст в моем приложении. Проблема заключается не в настройках моего монитора Clear Type, так как IE 9 в режиме совместимости, Firefox и Chrome отлично отображает текст. Здесь сравнивается сравнение того, как текст отображается с помощью IE 9, IE 9 в режиме совместимости и Chrome:

IE 9

IE 9 Compatibility Mode

enter image description here

Я попробовал применить этот ответ, но, похоже, он не применим ни к чему после IE 7. Кто-нибудь знает какие-либо способы обхода, которые мы можем применить к нашему сайту, чтобы исправить IE 9 плохой рендеринг текста?

Edit:

Я сварил страницу проблем с основными проблемами. Как вы можете видеть, не нужно много воспроизводить. Убедитесь, что IE имеет режим браузера, если IE9 и режим документа стандартов IE9:

<html xmlns="http://www.w3.org/1999/xhtml">
  <body style="background-color: rgb(30, 34, 59); color: rgb(255, 85, 0); font-size: 20px">
    Home
  </body>
</html>
4b9b3361

Ответ 1

Кажется, установка opacity:.9999 на body делает текст в стандарте IE9 намного более похожим на то, как он работает в режиме Quirks.

Ответ 2

Короткий ответ: это проблема, когда вы указываете размеры шрифта в pt (точках), а не на пикселях.

Так получилось, что новый движок рендеринга IE9 использует DirectWrite, который не будет привязан к ближайшему пикселю, как это было с GDI +, поэтому, если ваш размер pt не отображается на целый пиксельный номер, он будет рисовать его точно таким образом, что делает его размытым.

Режим совместимости с IE8 не пострадает от этой проблемы, поскольку он использует регулярный рендеринг GDI, к которому мы привыкли.

Итак, проверьте все ваши таблицы стилей и т.д., и если вы запрашиваете шрифт размера точки, то точно, что будет указано в IE9, и в зависимости от вашего используемого шрифта и т.д. размер вашей точки может быть или не отображаться на четком и прозрачный размер.

Это подробно объясняется здесь:

Ответ 3

IE9 в стандартном режиме использует субпиксельную адресацию для текста. Можно сказать, что он "сглаживает" текстовые символы, или вы можете сказать обратное, то есть "размывает" символы. Это, по сути, одно и то же.

Лично я не вижу легко различимых различий между вашими тремя изображениями и предпочитаю первый. Однако это зависит от личных предпочтений.

Я немного искал в Интернете, и это не похоже на способ очистки отключить субпиксельную рендеринг на IE9. Эта ссылка может вас заинтересовать: Отключить Cleartype (текстовое сглаживание) в IE9

В WPF есть возможность отключить субпиксельный рендеринг шрифта и заставить буквы "привязать к пикселям". Но IE9, похоже, не имеет такого переключателя.

Однако моя рекомендация такова: неужели это большая проблема, которую вы хотели бы сделать в первую очередь? Если субпиксельный рендеринг текста дает вам очень уродливый результат на вашем сайте (используете ли вы очень маленький тип?), Возможно, вам нужно будет пересмотреть структуру вашего сайта в первую очередь. Тип, который настолько мал, что подпиксельная рендеринг делает их нечеткими, лучше избегать на веб-сайте.

И нет никакой информации, когда другие браузеры будут добавлять субпиксельную визуализацию в текст в будущем - на самом деле FF4 уже использует Direct2D, но не может использовать DirectWrite.

Ответ 4

Internet Explorer 9, похоже, перестает использовать подпиксельное сглаживание в действительно случайных условиях. Например, вот еще один пример, который запускает его (я предполагаю, что их больше):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<HTML><HEAD>
<TITLE></TITLE>
<BODY>
Outside the div - with sub-pixel AA. :)
<div style="border-radius: 1px; overflow: hidden;">
Inside the div - no sub-pixel AA. :(
</div>
</BODY></HTML>

Текст внутри div не будет отображаться с помощью субпиксельного ( "цветного" ) сглаживания, но текст вне него будет. Итерации border-radius и overflow необходимы для запуска ошибки.

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

Если вы переключите режим документа в IE Developer Tools на что-либо, кроме "стандартов IE9", проблема исчезнет.

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

Ответ 5

Единственный способ, которым я могу заставить шрифты выглядеть хорошо, - вернуться к функциям IE8 с помощью:

<meta http-equiv="x-ua-compatible" content="IE=8" />

Обновление Microsoft http://support.microsoft.com/kb/2545698 уже установлено, и я уже использую font-size: 11px;

Решение opacity:.9999 было лучше, чем ничего, но не так хорошо, как показывает режим IE8.

Ответ 6

рендеринг шрифтов ClearType используется во всех режимах документа IE9; субпиксель позиционирование используется только в IE9s режим стандартных стандартов. IE9s режимы совместимости - Quirks, 7 и 8-многоцелевые текстовые метрики.

Итак, попробуйте переключить свой doctype, чтобы использовать Режим Quirks:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

или

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

или один из режимов совместимости.

Дополнительная информация из MSDN

Ответ 7

Если вам нужно использовать IE, и вы ненавидите это сглаживание, как на этом изображении http://i.stack.imgur.com/SViG0.png Попробуйте включить режим совместимости (ALT + T, чтобы отобразить меню "Сервис" )