Нечетная проблема рендеринга шрифтов Windows (с демонстрацией видео)


9

Смотрите видео демонстрацию на: vimeo.com/155636855

Я слишком долго боролся с этой проблемой - теперь я хотел бы получить помощь извне.

* Это не имеет ничего общего с технологией VM - см. Добавленную заметку в конце поста *

Прикрепленное изображение содержит параллельное изображение файла WordPad с текстом, представляющим все буквы алфавита, строчные и прописные. Изображение слева было взято с виртуальной машины Windows 10 («гостевая» ОС), работающей на хосте Windows 10 («хост»); изображение справа было взято с хоста Windows:

введите описание изображения здесь

Увеличьте изображение и внимательно посмотрите на различия по краям каждой буквы: левая намного более гладкая, чем правая - и в случае, если вы захотите быстро сделать вывод, CLEARTYPE НЕ ПРОБЛЕМА (см. Пункты ниже). ), по крайней мере, не с точки зрения «включено» или «выключено» (другими словами, может быть задействован параметр реестра, связанный с ClearType, но ничто в пользовательском интерфейсе Windows, связанном с ClearType, не является причиной этого, поскольку обе машины откалиброваны для ClearType и ClearType включен как на хосте, так и на гостевой машине).

Факты:


Обе ОС используют один и тот же файл шрифтов Myriad TrueType (TTF)

Обе ОС имеют одинаковое разрешение экрана.

Я думал, что это проблема с видеодрайвером для Windows, но у меня последняя версия драйвера nVidia, и я использую относительно дорогую карту GeForce GTX 560 с DirectX 12 как на хосте, так и на гостевой.

Оба файла WordPad используют один и тот же шрифт, размер шрифта, стиль шрифта и масштаб (100%).

Обе ОС Windows 10 полностью обновляются с помощью Центра обновления Windows.

ClearType активен (включен) как на хосте Windows, так и на виртуальной машине. Я пробовал различные комбинации ClearType (отключение на хосте и отключение на гостевой и всех других комбинациях), и нет никаких изменений в артефакте грубого края, отображаемом на хосте, по сравнению с гостем.

Я не знаю никаких различий DPI между гостем и хостом. Другие шрифты, такие как шрифт Arial, включенный в Windows, демонстрируют аналогичные грубые проблемы только на хосте - я просто выбрал Myriad Pro, чтобы проиллюстрировать проблему.

Цвет обоих шрифтов - 100% ЧЕРНЫЙ (# 000).

Эта проблема возникает во всех приложениях, которые могут отображать шрифты TrueType. Я использовал WordPad просто в качестве примера, но это происходит и в Microsoft PowerPoint, и в Camtasia TechSmith.

Эта проблема не связана со шрифтами TrueType; это происходит и со шрифтами OTF.

И, что бы это ни стоило, не имеет значения, просматриваю ли я хост с другого компьютера через сеанс удаленного рабочего стола (RDP) или использую что-то вроде TeamViewer; Кроме того, поведение гостя не меняется, когда я использую RDP или TeamViewer.


Очевидно, что-то не так с подсистемой рендеринга шрифтов на хосте. Интересно, что хост был машиной Windows 7 Ultimate примерно неделю назад (в начале февраля 2016 года), когда я обновил его, установив Windows 10 Enterprise. Я надеялся, что такое обновление с Windows 7 до Windows 10 решит проблему рендеринга шрифтов, особенно потому, что я уже видел, что Windows 10, работающая на виртуальной машине на том же хосте, не имеет проблемы рендеринга шрифтов. К сожалению, обновление до Windows 10 не исправило рендеринг шрифтов (я не делал новую установку Windows 10 - я сделал обновление, которое сохраняет предыдущие файлы ОС и настройки).

Из-за всего, что я написал выше, я подозреваю, что есть некоторые поврежденные, отсутствующие или неправильные значения в реестре, связанные с рендерингом шрифтов для операционной системы хоста - но что это может быть?

* Добавлено 12.02.2016 * Я взял совершенно новый жесткий диск и установил чистый экземпляр Windows 10 на то же оборудование, на котором работает «хост», на который я ссылаюсь выше. Новый экземпляр Windows 10 имеет плавные шрифты, как экземпляр виртуальной машины (ВМ) в Windows 10. Это говорит мне о том, что аппаратное обеспечение машины не вызывает проблемы при создании образа справа и что виртуальная машина (или виртуализация) технология) не является причиной неравенства. Теперь у меня есть жесткий диск A с Windows 10 на физическом компьютере, на котором я могу загрузиться и увидеть образ справа; У меня есть второй жесткий диск B с Windows 10 на той же машине, на которой я могу загрузиться, чтобы показать изображение слева.

Затем я стер этот новый жесткий диск и установил Windows 7 Ultimate с установочного DVD-диска Microsoft. Он также отображает изображение влево (правильные, плавные шрифты). Таким образом, проблема не в том, что Windows 7 имеет проблему на моем оборудовании, а в том, что Windows 10 не исправляет ее - теперь мне ясно, что Windows 7 не показывает проблему шрифтов на моем оборудовании, если я переустанавливаю Windows 7.

Итак, в стороне от виртуализации - кажется, что я наблюдаю какое-то повреждение подсистемы рендеринга шрифтов между моей существующей хост-машиной и «нормальной» машиной Windows 7/10 (помните, моя существующая хост-машина была обновлена ​​с Windows 7 Ultimate) до Windows 10 Enterprise, и проблема существовала в Windows 7 Ultimate до того, как я сделал обновление, на самом деле я надеялся, что обновление решит эту проблему - увы, этого не произошло).

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


какое программное обеспечение VM?
Йорик

1
Гость - виртуальная машина VMWare 12 Workstation, но я также запускаю ее под HyperV.
Джазимов

Я знаю, что Word выполняет внутреннюю визуализацию с разрешением около 300 точек на дюйм, а затем понижает частоту для отображения. Версия хоста на вашем изображении выглядит так, как будто она была отображена с более низким значением DPI. Не уверен почему. Я не знаю много о рендеринге шрифтов в Windows 10, но мне кажется, что они покончили с субпиксельным рендерингом в пользу АА в оттенках серого, так как субпиксельный рендеринг имеет ориентацию, и это бесполезно для мобильных, вращающихся устройств. Если бы мне пришлось угадывать, я бы сказал, что проблема заключается в том, как виртуальное видеооборудование гостевой виртуальной машины представляет ОС.
Йорик

Это не проблема виртуальной машины (см. Мои добавленные заметки), но это было разумное предположение. Возможно, вы о чем-то думаете, когда говорите о DPI, но ваши идеи / теории, к сожалению, не подходят для моей установки. Кроме того, это не проблема «нового способа работы с Windows 10». Обратите внимание, что обе машины являются машинами Windows 10 - и мой новый комментарий доказывает, что Windows 10 ведет себя по-разному даже на одной и той же физической машине ... Когда я сказал, что борюсь с этим, я имел в виду это! :)
Джазимов

ты подключен через HDMI? Проверьте настройки вашей видеокарты для настройки оверлея и отключите? Карты по умолчанию для карт IIRC Radeon включены через HDMI и масштабируются по сравнению с нативными
Yorik

Ответы:


2

Я никогда не замечал, что рендеринг шрифтов ClearType работает так плохо на большом размере шрифта ... но на моем Win10 он такой же, как на вашем компьютере.

Поведение, которое вы описываете, на мой взгляд, это не ошибка ... это особенность :-)

Посмотрите на следующие изображения:

Изображение 1 : рендеринг ClearType включен (нажмите на изображение, чтобы увидеть его лучше)

ClearType рендеринг включен

Когда ClearType включен, движок рендеринга шрифтов Windows пытается оптимизировать рендеринг шрифтов, используя субпиксель LCD R / G / B. Если вы посмотрите увеличенное изображение слева, вы увидите, что каждый шрифт имеет синевато-красноватое сглаживание, это связано с субпиксельной структурой ЖК-дисплея ( подробнее о рендеринге субпикселей здесь ).
Но, как вы заметили, это плохо работает с большим размером шрифта.
Но он все еще очень хорошо работает при небольшом размере шрифта.

Изображение 2 : рендеринг ClearType выключен (нажмите на изображение, чтобы увидеть его лучше) введите описание изображения здесь

Если вы отключите рендеринг ClearType, то движок рендеринга шрифтов Windows перестанет использовать преимущества структуры субпикселя LCD, и теперь шрифт будет иметь простое сглаживание серого (вместо синевато-красноватого сглаживания).
Это работает лучше при большом размере шрифта ... но очень плохо работает при маленьком размере шрифта, как вы можете проверить, посмотрев на рендеринг имени файла, рендеринг меню и так далее ...

Теперь тот факт, что на вашем гостевом ПК рендеринг шрифтов выглядит лучше, возможно, связан с тем, что субпиксельный рендеринг шрифтов ClearType включается только тогда, когда Windows обнаруживает физический ЖК-экран. Если виртуальный компьютер не обнаруживает физический ЖК-дисплей, он, вероятно, будет использовать «стандартное» (с оттенками серого) сглаживание шрифтов.

Теперь вы можете попытаться заставить Windows использовать сглаживание шрифта «стандартная / оттенки серого» вместо сглаживания Cleartype / subpixel, но на моем компьютере это не имело никакого значения: принудительное сглаживание в оттенках серого дает тот же результат, что и отключение Cleartype из панель управления. ( Больше информации здесь о взломах реестра, чтобы попытаться настроить рендеринг Cleartype )


Отличная обратная связь - и, возможно, правильный ответ. Прежде чем принять, я, по общему признанию, озадачен тем, почему новый экземпляр Windows 10 на моем хосте не обнаружил ЖК-дисплей и затем использует субпиксельное сглаживание (если драйвер видео по умолчанию, который Microsoft выбирает для нового экземпляра Windows 10, не делает что-то отличное от драйвера Я установил для своего экземпляра Windows 7, который позже обновил до Windows 10) ... Я поэкспериментирую с виртуальной машиной, чтобы посмотреть, смогу ли я заставить субпиксельный рендеринг по сравнению с рендерингом в оттенках серого - и я также поэкспериментирую с хостом вскоре.
Джазимов

Обнаружение монитора @Jazimov осуществляется Windows через видеокарту, поэтому драйвер видеокарты может определенно повлиять на то, как Windows обнаруживает монитор.
Макс

Итак, каков «правильный» способ запуска системы при использовании ЖК-дисплеев? Если ClearType выключен, вы теряете улучшения рендеринга мелким шрифтом; если он включен, вы теряете улучшения рендеринга крупным шрифтом ... Что делать?
Джазимов

@Jazimov, вероятно, нет решения ... Я сохраняю отчетливый тип, потому что я обычно работаю с маленькими шрифтами, но это только я. Я никогда не замечал проблему рендеринга cleartype на больших шрифтах, прежде чем читать ваш пост 2 часа назад (я разработчик программного обеспечения, и я провожу по крайней мере 11/12 часов за компьютером каждый день ...)
Макс

Я все еще сделаю некоторые настройки, чтобы увидеть, что я придумаю. Многие люди думают, что вам нужно оставить ClearType включенным, чтобы получить приемлемый текст поменьше, но даже если вы снимите флажок с помощью первой страницы тюнера ClearType, вы все равно сможете пройти процедуру настройки для калибровки дисплея. Это может быть лучшим решением: ClearType OFF, отображение откалибровано.
Джазимов
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.