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

1258
Jazimov

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

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

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

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

Нечетная проблема рендеринга шрифтов 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 до того, как я сделал обновление, на самом деле, я надеялся, что обновление решит эту проблему - увы, этого не произошло).

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

9
какое программное обеспечение VM? Yorik 8 лет назад 0
Гость - это виртуальная машина VMWare 12 Workstation, но я также запускаю ее под HyperV. Jazimov 8 лет назад 1
Я знаю, что Word выполняет внутреннюю визуализацию с разрешением около 300 точек на дюйм, а затем понижает частоту для отображения. Версия хоста на вашем изображении выглядит так, как будто она была отображена с более низким значением DPI. Не уверен почему. Я не знаю много о рендеринге шрифтов в Windows 10, но мне кажется, что они покончили с субпиксельным рендерингом в пользу АА в оттенках серого, поскольку субпиксельный рендеринг имеет ориентацию, а это бесполезно для мобильных, вращающихся устройств. Если бы мне пришлось угадывать, я бы сказал, что проблема заключается в том, как виртуальное видеооборудование гостевой виртуальной машины представляет ОС. Yorik 8 лет назад 0
Это не проблема виртуальной машины (см. Мои добавленные заметки), но это было разумное предположение. Возможно, вы говорите о чем-то, когда говорите о DPI, но ваши идеи / теории, к сожалению, не подходят для моей установки. Кроме того, это также не проблема «нового способа работы с Windows 10». Обратите внимание, что обе машины являются машинами Windows 10 - и мой новый комментарий доказывает, что Windows 10 ведет себя по-разному даже на одной и той же физической машине ... Когда я сказал, что борюсь с этим, я имел в виду это! :) Jazimov 8 лет назад 0
ты подключен через HDMI? Проверьте настройку вашей видеокарты для настройки overdraw и отключите? По умолчанию для карт IIRC Radeon эта опция включена через HDMI, и она масштабируется от родной. Yorik 8 лет назад 0
Нет, я использую DVI и у меня есть драйвер nVidia. Кроме того, я только что попробовал, и то же самое появляется при использовании подключения VGA. Jazimov 8 лет назад 0
Вы случайно не использовали [ClearType Text Tuner] (http://windows.microsoft.com/en-us/windows7/what-is-the-cleartype-text-tuner) в старой Windows 7? У вас могут быть устаревшие / неправильные остатки в `HKCU \ Software \ Microsoft \ Avalon.Graphics`. dxiv 8 лет назад 0
Да, но помните, изображение справа появилось в Windows 7 и Windows 10. Изменялись ли значения реестра ClearType между Windows 7 и 10? Jazimov 8 лет назад 0
Напротив, я думаю, что они, возможно, не изменились, поэтому обновление Windows 10 унаследовало некоторые неправильные настройки, которых нет в новой установке. Попробуйте сравнить этот раздел реестра между «хорошими» и «плохими» установками Windows 10. dxiv 8 лет назад 0
ОК, я сделал. Виртуальная версия Windows 10 не имела ключей для Avalon.Graphics (кроме ключа); Хост-версия имела четыре ключа под Avalon.Graphics - один от DISPLAY1 до DISPLAY4. Я переименовал ключ Avalon.Graphics, затем создал новый ключ Avalon.Graphics без дочерних ключей, перезагрузился и увидел ту же проблему, хотя на хосте теперь есть пустой ключ Avalon.Graphics в разделе HKCU \ Software \ Microsoft. Jazimov 8 лет назад 0
Ну, по крайней мере, это исключает это как возможную причину. dxiv 8 лет назад 0
Файлы Myriad Pro в `C: \ Windows \ Fonts` идентичны? harrymc 8 лет назад 0
Да, я даже сделал FC (сравнение файлов) между двумя системами, показанными выше. Я также удалил шрифты Myriad, перезагрузил и переустановил их на хост - тот же результат. Jazimov 8 лет назад 0
См .: (1) В панели управления -> настроить внешний вид и производительность Windows, если флажок «Сглаживать края экранных шрифтов» не установлен. (2) Если некоторые шрифты были псевдонимами, в разделе реестра `HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ FontSubstitutes`. (3) Ключ реестра `HKEY_CURRENT_USER \ Control Panel \ Desktop` имеет элементы с именами FontSmoothing и FontSmoothingType и сравнивает их значения с виртуальной машиной. harrymc 8 лет назад 0
Гладкие края проверены на обоих; Шрифт заменяет одинаково на обоих; Хост имел FontSmoothingGamma 640 Hex, в то время как VM (гость) имел 0, но затем установил хост на 0, перезагрузил, проверенная настройка осталась в FontSmoothingGamma 0 на хосте, но все еще показывая тот же шрифт, что и на изображении справа вверху страницы. Jazimov 8 лет назад 0
Попробуйте [Windows10_DPI_FIX] (http://xpexplorer.com/windows10_dpi_blurry_fix/). harrymc 8 лет назад 0
Мои системы всегда имеют масштабирование 100% DPI и работают с разрешением 1680x1050. Кроме того, моя проблема не уникальна для Windows 10, и в статье об исправлении DPI говорится, что она решает проблему, существующую только в Windows 10. Наконец, новый экземпляр Windows 10 не показывает проблему. Шрифты не так размыты, как почти неправильно, как будто векторные данные для шрифта неправильно интерпретируются или плохо растеризуются, но это эффект, отличный от того, который вы обычно видите, когда DPI является единственной проблемой или когда сглаживание не оптимально откалибровано ... Jazimov 8 лет назад 0
Это локальная проблема вашего компьютера. Все мои идеи не смогли выяснить разницу. Единственный дополнительный совет, который я могу придумать, - это [Восстановить установку Windows 10 с помощью обновления на месте] (http://www.tenforums.com/tutorials/16397-repair-install-windows-10-place-upgrade.html ) с которой вы ничего не потеряете, но можете починить то, что сломалось. Используйте недавний ISO-образ Windows, предшествующий обновлению 1511. Сделайте резервную копию перед запуском - лучше всего делать резервную копию образа системного раздела. harrymc 8 лет назад 0
Большое спасибо за ваши усилия - да, это локальная проблема для моего компьютера. Причина, которую я отправил, состоит в том, чтобы выяснить, что именно "испортилось" ... Я уже сделал ремонт с Windows 7, а затем после Windows 10 безрезультатно. Очевидно, что-то в подсистеме рендеринга шрифтов не так - но что? Этот хост-компьютер служит главным образом в качестве хоста для запуска виртуальных машин, и Win 7 была его первой ОС, так что это была чистая установка только с драйверами и некоторым программным обеспечением (например, Camtasia и Adobe Audition для создания видеоблогов). Я хотел бы сосредоточиться на других ключах рег, участвующих в рендеринге шрифтов ... Jazimov 8 лет назад 0
Единственные другие места, которые я знаю, находятся в реестре по адресу `HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Fonts` и самих шрифтах в` C: \ Windows \ Fonts`. Для программного обеспечения вы можете сравнить все библиотеки DLL в `C: \ Windows \ System32 \ font * .dll` и файлы` C: \ Windows \ System32 \ Mlang. * `. harrymc 8 лет назад 0
Сделаю и вернусь позже с результатами. Очень признателен! Для справки, я знаю, что могу переустановить Win 10 с нуля (особенно если у меня есть только несколько приложений для хоста), но я хочу решить эту проблему, потому что это единственная проблема с хостом, и потому что я чувствую, что есть один рут потому что мне так любопытно, что это может быть! Я думал, что у вас есть это с fontsmoothinggamma - esp, так как это значение было 640H, а не 0H! Мы должны быть ближе. Спасибо. Jazimov 8 лет назад 0
Все записи и файлы реестра и DLL и Mlang извлечены по сравнению с ВМ. Я решил отключить ClearType и нашел что-то довольно интересное (см. Видео здесь: https://vimeo.com/155636855). Когда ClearType выключен, текст на экране не очень хороший, но текст в WordPad плавный; когда ВКЛ, текст на экране хороший, но текст WordPad грубый / неровный. На виртуальной машине ClearType ON или OFF не влияет на рендеринг шрифтов WordPad, но влияет на экран. Почему ClearType влияет на WordPad (и большинство других приложений на хосте, которые используют шрифты, такие как Camtasia и PowerPoint) только на хосте ??? Jazimov 8 лет назад 0
Следующим шагом является проверка wordpad.exe. Выполнение [sfc /scannow](http://www.tenforums.com/tutorials/2895-sfc-command-run-windows-10-a.html) также не повредит. harrymc 8 лет назад 0
SFC сообщил, что "проверка выполнена на 100% ... не найдено никаких нарушений целостности". Кроме того, это не просто WordPad - это любое приложение, которое использует шрифты TrueType или OpenType - я просто выбрал WordPad для демонстрации. Jazimov 8 лет назад 0
Боюсь, у меня нет идей. Иногда обновление до Windows 10 идет плохо, и очень трудно понять, почему. Если кто-то еще не предложит больше идей, чистая установка - единственный надежный способ избавиться от беспорядка. harrymc 8 лет назад 0
Я не могу особо подчеркнуть, что причиной этой проблемы было не обновление до Windows 10. Он уже существовал в Windows 7. Ничто не пошло не так с обновлением Windows 10 - он просто сохранил среду Windows 7 (что действительно должно быть). Конечно, я могу выполнить чистую установку, но, как я уже упоминал, я хотел бы выяснить, почему это происходит, и исправить это, поскольку это единственная проблема, которая у меня возникла. Я думаю, что это связано с ClearType, хинтингом и, возможно, с подсистемой DirectWrite. Это определенно проблема ОС, но она должна быть решена без переустановки. Jazimov 8 лет назад 0
Вы уже доказали все пункты: (1) Беспорядок уже присутствовал в Windows 7, (2) Обновление не исправило это, (3) Чистая установка исправляет это. Чтобы выяснить, что же на самом деле представляет собой беспорядок, потребуется аналитик Microsoft - проблема слишком тонкая для нас, простых смертных. harrymc 8 лет назад 0
Я думаю, что для этой проблемы нужен кто-то глубоко осведомленный о том, как работает ClearType и как именно этот процесс интерпретирует подсказки шрифтов при отображении шрифтов на экране. ClearType использует субпиксельные методы сглаживания, и я хорошо знаком с тем, как это работает; но DirectWrite может быть вовлечен; просто неясно, почему вкл / выкл ClearType не влияет на такие шрифты в работающей системе, но влияет на них в моей системе. Это почти так, как будто DirectWrite (или что-то еще используемое для сглаживания шрифтов в приложениях) отключается при включении ClearType - но только на моем компьютере. Я еще не сдаюсь! Jazimov 8 лет назад 0
Пока нет идей: ClearType критически зависит от цвета пикселей фона. У вас есть нестандартная цветовая схема на вашем хост-компьютере? Вы также можете поиграть с визуальными эффектами и калибровкой цвета и особенно гаммой. Попробуйте сбросить настройки nVidia. harrymc 8 лет назад 0
Нет нестандартной схемы; Кроме того, уже сбросили nVidia, а также полностью удалили и переустановили драйверы nVidia. Интересная статья здесь (tinyurl.com/zftjqhp), поиск «бородавок», потому что, кажется, это то, что происходит. Jazimov 8 лет назад 0
В нем говорится: «В DirectWrite неокрашенные веб-шрифты на основе PostScript и TrueType показывают практически одинаковый рендеринг». AFAIK в Windows 10 Cleartype постепенно сокращается в пользу DirectWrite, поэтому это не объясняется. «Неокрашенные шрифты» - проблема возникает с другими шрифтами, например, Arial? harrymc 8 лет назад 0
Ага! Это происходит с Arial и, по-видимому, со всеми шрифтами в моей системе, будь то TrueType (ttf) или OpenType (otf)! Это то, что очаровывает меня - если они байт за байтом такие же, как на рабочей виртуальной машине, почти кажется, что подсистема DirectWrite повреждена или каким-то образом игнорирует подсказки, которые определяют эти шрифты. Я мало что понял о том, как работает DirectWrite - какие ключи / dll / файлы и т. Д. Участвуют в его работе. Но кажется, что все пальцы указывают в этом конкретном направлении, а не на сам ClearType; включение ClearType, кажется, мешает способности DW продолжать функционировать ... Jazimov 8 лет назад 0
DirectWrite имеет свое собственное решение, отличное от ClearType. Повреждение, если оно есть, очевидно, происходит в параметре реестра или файле, который не затрагивается обновлением Windows 10. Если драйвер на виртуальной машине одинаков, вы можете сравнить все файлы в C: \ Windows, обращая внимание на файлы ".sys". Вы также можете использовать продукт сравнения реестра с виртуальной машиной, но я не могу указать вам больше, чем выше. harrymc 8 лет назад 0
Если ваш продукт VM поддерживает сквозной доступ к графическому процессору, вы можете попробовать его, чтобы узнать, вызван ли он драйвером дисплея. harrymc 8 лет назад 0
Да, видеодрайвер в ВМ был не таким, как в хосте ... Это очень вероятно объясняет различия, которые я наблюдал. Jazimov 8 лет назад 0

1 ответ на вопрос

2
Max

I never noticed that ClearType fonts rendering works so bad on big font size... but on my Win10 it's the same as on your computer.

The behavior you describe, in my opinion, it's not a bug... it's a feature :-)

Take a look at the following images:

Image 1: ClearType rendering is ON (click on image to see it better)

ClearType rendering ON

When ClearType is ON, Windows font rendering engine try to optimize the font rendering by taking advantace of the LCD R/G/B subpixel. If you check the magnified image on the left, you can see that each font have bluish/reddish smoothing, this is due to the LCD subpixel structure (more info on subpixel rendering here).
But, as you noted, this works bad on big font size.
But it still works very good on small font size.

Image 2: ClearType rendering is OFF (click on image to see it better) enter image description here

If you turn off ClearType rendering, then Windows font rendering engine will stop taking advantage of the LCD subpixel structure, and now the font will have a simple gray smoothing (instead that the bluish/reddish smoothing).
This works better on big font size... but works very bad on small fonts size, as you can check by looking at filename rendering, menu renderng and so on...

Now, the fact that on your guest PC the font rendering seem better, is probably due to the fact that the ClearType subpixel font rendering is enabled only when Windows detect a physical LCD screen. If the virtual pc don't detect a physical LCD, it will probably use the "standard" (grayscale) font smoothing.

Now you could try to force Windows to use the "standard/grayscale" font smoothing, instead that the Cleartype/subpixel smoothing, but on my computer it didn't make any difference: force the grayscale smoothing give the same result as disabling Cleartype from control panel. (More info here on registry hacks to try to tweak Cleartype rendering)

Отличная обратная связь - и, возможно, правильный ответ. Прежде чем принять, я, по общему признанию, озадачен тем, почему новый экземпляр Windows 10 на моем хосте не обнаружил ЖК-дисплей и затем использует субпиксельное сглаживание (если видео драйвер по умолчанию, который Microsoft выбирает для нового экземпляра Windows 10, не делает что-то отличное от драйвера Я установил для своего экземпляра Windows 7, который позже обновил до Windows 10) ... Я поэкспериментирую с виртуальной машиной, чтобы увидеть, могу ли я принудительно использовать субпиксельный рендеринг по сравнению с рендерингом в оттенках серого - и я также поэкспериментирую с хостом вскоре. Jazimov 8 лет назад 0
Обнаружение монитора @Jazimov осуществляется Windows через видеокарту, поэтому драйвер видеокарты может определенно повлиять на то, как Windows обнаруживает монитор. Max 8 лет назад 0
Так каков «правильный» способ запуска системы при использовании ЖК-дисплеев? Если ClearType выключен, вы теряете улучшения рендеринга мелкими шрифтами; если он включен, вы теряете улучшения рендеринга крупным шрифтом ... Что делать? Jazimov 8 лет назад 0
@Jazimov, вероятно, нет решения ... Я держу открытый тип, потому что я обычно работаю с маленькими шрифтами, но это только я. Я никогда не замечал проблему рендеринга cleartype на больших шрифтах, прежде чем читать ваш пост 2 часа назад (я разработчик программного обеспечения, и я провожу по крайней мере 11/12 часов за компьютером каждый день ...) Max 8 лет назад 0
Я все еще сделаю некоторые настройки, чтобы увидеть, что я придумаю. Многие люди думают, что вам нужно оставить ClearType включенным, чтобы получить приемлемый текст поменьше, но даже если вы снимите флажок, используя первую страницу тюнера ClearType, вы все равно сможете пройти процедуру настройки для калибровки дисплея. Это может быть лучшим решением: ClearType OFF, отображение откалибровано. Jazimov 8 лет назад 0

Похожие вопросы