Problem z dziwnym renderowaniem czcionek w systemie Windows (z prezentacją wideo)

9

Zobacz prezentację wideo na: vimeo.com/155636855

Zbyt długo zmagałem się z tym problemem - teraz chciałbym uzyskać pomoc z zewnątrz.

* To nie ma nic wspólnego z technologią VM - patrz dodana uwaga na końcu postu *

Załączony obraz zawiera obok siebie obraz pliku WordPad z tekstem reprezentującym wszystkie litery alfabetu, małe i wielkie litery. Zdjęcie po lewej zostało pobrane z maszyny wirtualnej z systemem Windows 10 (system „gościa”) działającej na hoście z systemem Windows 10 (system „host”); obraz po prawej został pobrany z hosta Windows:

wprowadź opis zdjęcia tutaj

Powiększ obraz i przyjrzyj się różnicom wokół krawędzi każdej litery: lewa strona jest znacznie gładsza niż prawa - a jeśli masz ochotę przejść do szybkiego zakończenia, CLEARTYPE NIE JEST PROBLEMEM (patrz punkty poniżej ), przynajmniej nie z perspektywy „włączony” kontra „wyłączony” (innymi słowy, ustawienie rejestru związane z ClearType może być zaangażowane, ale nic w interfejsie użytkownika Windows związanym z ClearType nie powoduje tego, ponieważ oba komputery są skalibrowane dla ClearType i Funkcja ClearType jest WŁĄCZONA na komputerach hosta i gości).

Fakty:


Oba systemy używają tego samego pliku czcionek Myriad Font TrueType (TTF)

Oba systemy operacyjne są ustawione na tę samą rozdzielczość ekranu.

Myślałem, że to problem ze sterownikiem wideo systemu Windows, ale mam najnowszy sterownik nVidia i korzystam z stosunkowo wysokiej klasy karty GeForce GTX 560 z DirectX 12 zarówno na hoście, jak i gościu.

Oba pliki WordPad używają tej samej czcionki, rozmiaru czcionki, stylu czcionki i powiększenia (100%).

Oba systemy operacyjne Windows 10 są w pełni aktualizowane przy użyciu Windows Update.

ClearType jest aktywny (włączony) zarówno na hoście Windows, jak i na maszynie wirtualnej. Próbowałem różnych kombinacji ClearType (wyłączanie go na hoście i wyłączanie go dla gościa oraz wszystkie inne kombinacje) i nie ma żadnych zmian w szorstkim artefakcie wyświetlanym na hoście w porównaniu z gościem.

Nie znam różnic DPI między gościem a gospodarzem. Inne czcionki, takie jak czcionka Arial dołączona do systemu Windows, wykazują podobne ogólne problemy tylko na hoście - właśnie zilustrowałem problem Myriad Pro.

Kolor obu czcionek to 100% CZARNY (# 000).

Ten problem występuje we WSZYSTKICH aplikacjach, które mogą renderować czcionki TrueType. Użyłem WordPada jako przykładu, ale zdarza się to również w Microsoft PowerPoint i TechSmith's Camtasia.

Ten problem nie jest związany z czcionkami TrueType; zdarza się to również w przypadku czcionek OTF.

I, o ile jest to warte, nie ma znaczenia, czy przeglądam hosta z innego komputera za pomocą sesji pulpitu zdalnego (RDP) lub używając czegoś takiego jak TeamViewer; także zachowanie gościa nie zmienia się, gdy korzystam z RDP lub TeamViewer.


Najwyraźniej coś jest nie tak z podsystemem renderowania czcionek na hoście. Co ciekawe, host był maszyną z systemem Windows 7 Ultimate do około tygodnia temu (początek lutego 2016 r.), Kiedy to zaktualizowałem go, instalując system Windows 10 Enterprise. Miałem nadzieję, że takie uaktualnienie z Windows 7 do Windows 10 naprawi problem z renderowaniem czcionek, zwłaszcza że już widziałem, że Windows 10 działający na maszynie wirtualnej na tym samym hoście nie ma problemu z renderowaniem czcionek. Niestety aktualizacja systemu Windows 10 nie naprawiła renderowania czcionek (nie wykonałem świeżej instalacji systemu Windows 10 - zrobiłem aktualizację, która zachowuje poprzednie pliki i ustawienia systemu operacyjnego).

Ze względu na wszystko, co napisałem powyżej, podejrzewam, że istnieje jakaś uszkodzona, brakująca lub niepoprawna wartość rejestru związana z renderowaniem czcionek w systemie operacyjnym hosta - ale co to może być?

* Dodano 2/12/2016 * Wziąłem nowy dysk twardy i zainstalowałem czystą instancję Windows 10 na tym samym sprzęcie, na którym działa „host”, o którym mowa powyżej. Nowa instancja systemu Windows 10 ma gładkie czcionki, podobnie jak instancja maszyny wirtualnej (VM) w systemie Windows 10. To mówi mi, że sprzęt maszyny nie powoduje, że problem generuje obraz po prawej stronie i że maszyna wirtualna (lub wirtualizacja technologia) nie jest przyczyną rozbieżności. Mam teraz dysk twardy A z systemem Windows 10 na komputerze fizycznym, na którym mogę się uruchomić i zobaczyć obraz po prawej stronie; Mam drugi dysk twardy B z systemem Windows 10 na tej samej maszynie, na której mogę uruchomić komputer, aby wyświetlić obraz po lewej stronie.

Następnie wyczyściłem nowy dysk twardy i zainstalowałem system Windows 7 Ultimate ze źródłowej płyty instalacyjnej Microsoft. Renderuje również obraz po LEWEJ (poprawne, gładkie czcionki). Problem nie polega na tym, że Windows 7 ma problem z moim sprzętem i że Windows 10 go nie naprawia - dla mnie jest teraz jasne, że Windows 7 nie pokazuje problemu z czcionkami na moim sprzęcie, jeśli ponownie zainstaluję Windows 7.

Poza wirtualizacją - wydaje się, że jestem świadkiem jakiegoś uszkodzenia w podsystemie renderowania czcionek między moją istniejącą maszyną hosta a „normalną” maszyną Windows 7/10 (pamiętaj, że moja obecna maszyna hosta została uaktualniona z systemu Windows 7 Ultimate do systemu Windows 10 Enterprise, a problem istniał w systemie Windows 7 Ultimate, zanim dokonałem aktualizacji; w rzeczywistości miałem nadzieję, że aktualizacja rozwiąże ten problem - niestety nie.

Spróbuję poszukać / porównać kluczowe wpisy rejestru pod kątem rozbieżności w wolnym czasie, ale nadal jestem chętny do kontaktu z ekspertami, którzy mogą pomóc mi wyzerować główną przyczynę.

Jazimov
źródło
jakie oprogramowanie VM?
Yorik
1
Gość jest maszyną wirtualną VMWare 12 Workstation, ale uruchomiłem ją również pod HyperV.
Jazimov
Wiem, że program Word renderuje wewnętrznie około 300 dpi, a następnie pobiera próbki do wyświetlenia. Wersja hosta na obrazie wygląda tak, jakby była renderowana przy niższym ustawieniu DPI. Nie pewny dlaczego. Nie znam ton renderowania czcionek w systemie Windows 10, ale wydaje mi się, że zrezygnowali z renderowania subpikseli na rzecz skali szarości AA, ponieważ renderowanie subpikseli ma orientację i nie jest to przydatne w przypadku mobilnych, obrotowych urządzeń. Gdybym musiał zgadywać, powiedziałbym, że problem polega na tym, jak wirtualny sprzęt wideo gościa VM prezentuje się w systemie operacyjnym.
Yorik
To nie jest problem z maszyną wirtualną (patrz moje dodane uwagi), ale to było rozsądne przypuszczenie. Może mówisz o DPI, ale twoje pomysły / teorie niestety nie dotyczą mojej konfiguracji. Ponadto nie jest to również problem „nowego sposobu wykonywania zadań w systemie Windows 10”. Zauważ, że oba komputery są komputerami z systemem Windows 10 - a mój nowy komentarz dowodzi, że Windows 10 zachowuje się inaczej nawet na tej samej maszynie fizycznej ... Kiedy powiedziałem, że się z tym zmagam, miałem na myśli! :)
Jazimov
czy jesteś podłączony przez HDMI? Sprawdź ustawienia karty graficznej pod kątem korekty overdraw i wyłącz? Domyślnie karty Radeon IIRC są włączone przez HDMI i
skalują

Odpowiedzi:

2

Nigdy nie zauważyłem, że renderowanie czcionek ClearType działa tak źle na dużych rozmiarach czcionek ... ale na moim Win10 jest tak samo jak na twoim komputerze.

Opisane przeze mnie zachowanie, moim zdaniem, nie jest błędem ... to funkcja :-)

Spójrz na następujące obrazy:

Obraz 1 : Renderowanie ClearType jest WŁĄCZONE (kliknij obraz, aby zobaczyć go lepiej)

Włączono renderowanie ClearType

Gdy funkcja ClearType jest WŁĄCZONA, mechanizm renderowania czcionek systemu Windows próbuje zoptymalizować renderowanie czcionek, wykorzystując subpiksel LCD R / G / B. Jeśli sprawdzisz powiększony obraz po lewej stronie, zobaczysz, że każda czcionka ma niebieskawo-czerwonawe wygładzenie, wynika to ze struktury subpikseli LCD ( więcej informacji na temat renderowania subpikseli tutaj ).
Ale, jak zauważyłeś, działa to źle na dużych rozmiarach czcionek.
Ale nadal działa bardzo dobrze na małych rozmiarach czcionek.

Obraz 2 : Renderowanie ClearType jest wyłączone (kliknij obraz, aby zobaczyć go lepiej) wprowadź opis zdjęcia tutaj

Jeśli wyłączysz renderowanie ClearType, silnik renderowania czcionek systemu Windows przestanie wykorzystywać strukturę subpikseli LCD, a teraz czcionka będzie miała proste wygładzanie szarości (zamiast tego wygładzanie niebieskawe / czerwonawe).
Działa to lepiej w przypadku dużych rozmiarów czcionek ... ale działa bardzo źle w przypadku małych rozmiarów czcionek, co można sprawdzić, patrząc na renderowanie nazw plików, renderowanie menu i tak dalej ...

Teraz fakt, że renderowanie czcionek na komputerze-gościu wydaje się lepsze, prawdopodobnie wynika z faktu, że renderowanie czcionek podpikselowych ClearType jest możliwe tylko wtedy, gdy system Windows wykryje fizyczny ekran LCD. Jeśli wirtualny komputer nie wykryje fizycznego wyświetlacza LCD, prawdopodobnie użyje wygładzania czcionek „standardowych” (w skali szarości).

Teraz możesz spróbować zmusić system Windows do korzystania z wygładzania czcionek „standard / skala szarości” zamiast wygładzania Cleartype / subpixel, ale na moim komputerze nie miało to żadnej różnicy: wymuszenie wygładzania skali szarości daje taki sam efekt jak wyłączenie Cleartype z panel sterowania. ( Więcej informacji na temat włamań do rejestru, aby spróbować poprawić renderowanie typu Cleartype )

Max
źródło
Świetne opinie - i być może właściwa odpowiedź. Przed zaakceptowaniem jestem wprawdzie zakłopotany, dlaczego nowa instancja systemu Windows 10 na moim hoście nie wykryła wyświetlacza LCD, a następnie zastosowała antyaliasing subpikseli (chyba że domyślny sterownik wideo wybrany przez Microsoft dla nowej instancji Windows 10 robi coś innego niż sterownik Zainstalowałem dla mojej instancji Windows 7, którą później uaktualniłem do Windows 10) ... będę eksperymentować z maszyną wirtualną, aby sprawdzić, czy mogę wymusić renderowanie subpikseli w porównaniu do renderowania w skali szarości - a także eksperymentuję z hostem i opublikuję znowu wkrótce.
Jazimov
Wykrywanie monitora @Jazimov odbywa się przez system Windows za pomocą karty graficznej, więc sterownik karty graficznej z pewnością może mieć wpływ na sposób wykrywania monitora przez system Windows.
Maks.
Jaki jest więc „właściwy” sposób uruchamiania systemu podczas korzystania z wyświetlaczy LCD? Jeśli funkcja ClearType jest wyłączona, tracisz ulepszenia renderowania małych czcionek; jeśli jest włączony, tracisz ulepszenia renderowania dużych czcionek ... Co robić?
Jazimov
@Jazimov prawdopodobnie nie ma rozwiązania ... Ciągle wpisuję eBabled, ponieważ zwykle pracuję z małymi czcionkami, ale to tylko ja. Nigdy nie zauważyłem problemu z renderowaniem wyraźnych czcionek dla dużych czcionek przed przeczytaniem twojego postu 2 godziny temu (jestem programistą i spędzam co najmniej 11/12 godzin na komputerze każdego dnia ...)
Max
Nadal będę poprawiać, aby zobaczyć, co wymyślę. Wiele osób uważa, że ​​musisz włączyć ClearType, aby uzyskać akceptowalny mniejszy tekst, ale nawet jeśli odznaczysz go za pomocą pierwszej strony tunera ClearType, nadal możesz przejść proces dostosowywania, aby skalibrować wyświetlacz. To może być najlepsze rozwiązanie: ClearType OFF, wyświetlacze skalibrowane.
Jazimov,