Niezależność uchwał

Niezależność rozdzielczości polega na tym, że elementy na ekranie komputera są renderowane w rozmiarach niezależnych od siatki pikseli , w wyniku czego graficzny interfejs użytkownika jest wyświetlany w stałym rozmiarze fizycznym, niezależnie od rozdzielczości ekranu.

Pojęcie

Już w 1978 roku system składu TeX za sprawą Donalda Knutha wprowadził do świata komputerów niezależność rozdzielczości. Zamierzony widok może być renderowany poza rozdzielczością atomową bez żadnych artefaktów, a automatyczne decyzje dotyczące składu są gwarantowane na każdym komputerze, aż do błędu mniejszego niż średnica atomu. Ten pionierski system ma odpowiedni czcionek , Metafont , który zapewnia odpowiednie czcionki o tych samych wysokich standardach niezależności rozdzielczości.

Format pliku niezależny od urządzenia terminologicznego (DVI) to format pliku pionierskiego systemu TeX Donalda Knutha . Zawartość takiego pliku może być interpretowana w dowolnej rozdzielczości bez żadnych artefaktów, nawet w bardzo wysokich rozdzielczościach, które obecnie nie są używane.

Realizacja

Okno dialogowe Preferencje systemowe macOS 10.8.5, nieskalowany interfejs użytkownika (po lewej) i skalowany interfejs użytkownika o wysokiej rozdzielczości (po prawej)

System operacyjny Mac

Firma Apple włączyła pewną obsługę niezależności rozdzielczości we wczesnych wersjach systemu macOS , co można było zademonstrować za pomocą narzędzia programistycznego Quartz Debug, które zawierało funkcję umożliwiającą użytkownikowi skalowanie interfejsu. Jednak funkcja była niekompletna, ponieważ niektóre ikony nie były wyświetlane (na przykład w Preferencjach systemowych), elementy interfejsu użytkownika były wyświetlane w dziwnych pozycjach, a niektóre bitmapowe GUI nie były płynnie skalowane. Ponieważ funkcja skalowania nigdy nie została ukończona, interfejs użytkownika macOS pozostawał zależny od rozdzielczości.

MacBooka Pro 2012 o rozdzielczości 2880 × 1800 lub 5,2 megapiksela – podwojenie gęstości pikseli w obu wymiarach. Laptop był dostarczany z wersją systemu macOS, która zapewniała obsługę skalowania interfejsu użytkownika dwukrotnie większego niż wcześniej. Ta funkcja nosi nazwę trybu HighDPI w systemie macOS i wykorzystuje stały współczynnik skalowania wynoszący 2, aby zwiększyć rozmiar interfejsu użytkownika na ekranach o wysokiej rozdzielczości DPI. Firma Apple wprowadziła również obsługę skalowania interfejsu użytkownika poprzez renderowanie interfejsu użytkownika w wyższej lub mniejszej rozdzielczości niż wbudowana natywna rozdzielczość laptopa i skalowanie danych wyjściowych do ekranu laptopa. Oczywistą wadą tego podejścia jest albo zmniejszona wydajność renderowania interfejsu użytkownika w rozdzielczości wyższej niż natywna, albo zwiększone rozmycie podczas renderowania w rozdzielczości niższej niż natywna. Tak więc, chociaż interfejs użytkownika systemu macOS można skalować przy użyciu tego podejścia, sam interfejs użytkownika nie jest niezależny od rozdzielczości.

Microsoft Windows

System GDI w systemie Windows jest oparty na pikselach, a zatem nie jest niezależny od rozdzielczości. Aby zwiększyć skalę interfejsu użytkownika, system Microsoft Windows obsługuje określanie niestandardowego DPI z Panelu sterowania od systemu Windows 95 . (W systemie Windows 3.1 ustawienie DPI jest powiązane z rozdzielczością ekranu, w zależności od pliku informacyjnego sterownika). Po określeniu niestandardowego DPI systemu wbudowany interfejs użytkownika w systemie operacyjnym skaluje się w górę. System Windows zawiera również interfejsy API dla twórców aplikacji do projektowania aplikacji, które będą odpowiednio skalowane.

GDI+ w systemie Windows XP dodaje renderowanie tekstu niezależne od rozdzielczości, jednak interfejs użytkownika w wersjach systemu Windows aż do systemu Windows XP nie jest w pełni świadomy wysokiej rozdzielczości, ponieważ wyświetlacze o bardzo wysokich rozdzielczościach i dużej gęstości pikseli nie były dostępne w tym przedziale czasowym. Systemy Windows Vista i Windows 7 lepiej skalują się przy wyższych wartościach DPI.

Windows Vista dodaje również obsługę programów, które deklarują się w systemie operacyjnym, że są świadome wysokiej rozdzielczości DPI za pośrednictwem pliku manifestu lub przy użyciu interfejsu API. W przypadku programów, które nie deklarują, że obsługują DPI, system Windows Vista obsługuje funkcję zgodności zwaną wirtualizacją DPI, dzięki czemu metryki systemowe i elementy interfejsu użytkownika są prezentowane aplikacjom tak, jakby działały z rozdzielczością 96 DPI, a następnie Menedżer okien pulpitu skaluje wynikowe okno aplikacji aby dopasować ustawienie DPI. System Windows Vista zachowuje opcję skalowania w stylu systemu Windows XP, która po włączeniu wyłącza wirtualizację DPI (rozmyty tekst) dla wszystkich aplikacji na całym świecie.

Windows Vista wprowadza również Windows Presentation Foundation . Aplikacje WPF są oparte na wektorach, a nie na pikselach i są zaprojektowane tak, aby były niezależne od rozdzielczości.

Windows 7 dodaje możliwość zmiany DPI poprzez wylogowanie, a nie pełne ponowne uruchomienie i ustawia to ustawienie dla każdego użytkownika. Ponadto system Windows 7 odczytuje DPI monitora z EDID i automatycznie ustawia wartość DPI, aby odpowiadała fizycznej gęstości pikseli monitora, chyba że efektywna rozdzielczość jest mniejsza niż 1024 x 768.

W systemie Windows 8 w oknie dialogowym zmiany DPI pokazywana jest tylko wartość procentowa skalowania DPI, a wyświetlanie nieprzetworzonej wartości DPI zostało usunięte. W systemie Windows 8.1 , usunięto globalne ustawienie wyłączania wirtualizacji DPI (używaj tylko skalowania w stylu XP). Przy gęstości pikseli większej niż 120 PPI (125%) wirtualizacja DPI jest włączona dla wszystkich aplikacji bez flagi świadomej DPI (manifestu) ustawionej w pliku EXE. Windows 8.1 zachowuje opcję dla poszczególnych aplikacji, aby wyłączyć wirtualizację DPI aplikacji. Windows 8.1 dodaje również możliwość korzystania z niezależnego ustawienia DPI dla każdego wyświetlacza, chociaż oblicza to automatycznie dla każdego wyświetlacza. Windows 8.1 uniemożliwia użytkownikowi wymuszenie włączenia wirtualizacji DPI aplikacji. Dlatego jeśli aplikacja błędnie twierdzi, że jest świadoma DPI, będzie wyglądać na zbyt małą na wyświetlaczach o wysokiej rozdzielczości w wersji 8.1, a użytkownik nie może tego poprawić.

Windows 10 dodaje ręczną kontrolę nad DPI dla poszczególnych monitorów. Ponadto system Windows 10 w wersji 1703 przywraca skalowanie GDI w stylu XP w opcji „System (rozszerzony)”. Ta opcja łączy renderowanie tekstu GDI+ w wyższej rozdzielczości ze zwykłym skalowaniem innych elementów, dzięki czemu tekst wydaje się wyraźniejszy niż w normalnym trybie wirtualizacji „System”.

Android

Od wersji Android 1.6 „Donut” (wrzesień 2009) Android zapewnia obsługę wielu rozmiarów i gęstości ekranu. Android wyraża wymiary układu i położenie za pomocą niezależnego od gęstości piksela lub „dp”, który jest zdefiniowany jako jeden fizyczny piksel na ekranie o rozdzielczości 160 dpi. W czasie wykonywania system w razie potrzeby w przejrzysty sposób obsługuje skalowanie jednostek dp w oparciu o rzeczywistą gęstość używanego ekranu.

Aby pomóc w tworzeniu podstawowych map bitowych, system Android kategoryzuje zasoby na podstawie rozmiaru i gęstości ekranu:

Illustration of how Android roughly maps actual sizes and densities to generalized sizes and densities.

System okien X

Centrum sterowania GNOME 3.10, nieskalowane (po lewej) i skalowane (po prawej)

Biblioteka Xft , biblioteka renderowania czcionek dla systemu X11, ma domyślne ustawienie dpi na 75. Jest to po prostu opakowanie systemu FC_DPI w fontconfig, ale wystarczające do skalowania tekstu w aplikacjach opartych na Xft. Mechanizm jest również wykrywany przez środowiska graficzne w celu ustawienia własnego DPI, zwykle w połączeniu z rodziną funkcji Xlib DisplayWidthMM opartą na EDID . Ten ostatni został uznany za nieefektywny w Xorg Server 1.7; od tego czasu informacje EDID są ujawniane tylko XRandR .

W 2013 roku środowisko graficzne GNOME rozpoczęło starania o zapewnienie niezależności rozdzielczości (obsługa „hi-DPI”) dla różnych części stosu graficznego. Deweloper Alexander Larsson początkowo pisał o zmianach wymaganych w GTK+ , Cairo , Wayland i GNOME. Pod koniec sesji BoF na GUADEC 2013, programista GTK+, Matthias Clasen, wspomniał, że obsługa hi-DPI będzie „całkiem kompletna” w GTK 3.10, gdy prace nad Cairo zostaną zakończone. Od stycznia 2014 obsługa Hi-DPI dla Clutter i Trwają prace nad powłoką GNOME .

Gtk obsługuje skalowanie wszystkich elementów interfejsu użytkownika za pomocą współczynników całkowitych i całego tekstu za pomocą dowolnych nieujemnych współczynników liczb rzeczywistych. Od 2019 r. ułamkowe skalowanie interfejsu użytkownika poprzez skalowanie w górę, a następnie w dół jest eksperymentalne.

Inny

Chociaż nie jest to związane z prawdziwą niezależnością rozdzielczości, niektóre inne systemy operacyjne używają GUI , które są w stanie dostosować się do zmienionych rozmiarów czcionek. System Microsoft Windows 95 i nowsze używał czcionki Marlett TrueType w celu skalowania niektórych elementów sterujących okna (zamykanie, maksymalizacja, minimalizowanie, zmiana rozmiaru uchwytów) do dowolnych rozmiarów. AmigaOS od wersji 2.04 (1991) był w stanie dostosować sterowanie oknami do dowolnego rozmiaru czcionki. [ nieudana weryfikacja ]

Gry wideo są często niezależne od rozdzielczości; wczesnym przykładem jest Another World dla DOS , który wykorzystywał wielokąty do rysowania zawartości 2D, a później został przerobiony przy użyciu tych samych wielokątów w znacznie wyższej rozdzielczości. Gry 3D są niezależne od rozdzielczości, ponieważ perspektywa jest obliczana w każdej klatce, więc może zmieniać swoją rozdzielczość.

Zobacz też

Linki zewnętrzne