stringtranslate.com

Независимость разрешения

Независимость разрешения — это когда элементы на экране компьютера отображаются в размерах, независимых от сетки пикселей , в результате чего графический пользовательский интерфейс отображается с постоянным физическим размером, независимо от разрешения экрана. [1]

Концепция

Еще в 1978 году система набора текста TeX , созданная Дональдом Кнутом, ввела в мир компьютеров независимость от разрешения. Задуманное изображение может быть отображено за пределами атомарного разрешения без каких-либо артефактов, а автоматические решения по набору гарантированно будут идентичными на любом компьютере с точностью до ошибки, меньшей диаметра атома. Эта новаторская система имеет соответствующую систему шрифтов Metafont , которая предоставляет подходящие шрифты с такими же высокими стандартами независимости от разрешения.

Терминологически независимый от устройства формат файла (DVI) — это формат файла новаторской системы TeX Дональда Кнута . Содержимое такого файла можно интерпретировать в любом разрешении без каких-либо артефактов, даже при очень высоком разрешении, которое в настоящее время не используется.

Выполнение

Диалоговое окно «Системные настройки» macOS 10.8.5, немасштабируемый пользовательский интерфейс (слева) и масштабированный пользовательский интерфейс HighDPI (справа)

macOS

Apple включила некоторую поддержку независимости от разрешения в ранние версии macOS , что можно было продемонстрировать с помощью инструмента разработчика Quartz Debug, который включал функцию, позволяющую пользователю масштабировать интерфейс. Однако эта функция была неполной, поскольку некоторые значки не отображались (например, в Системных настройках), элементы пользовательского интерфейса отображались в нечетных позициях, а некоторые растровые элементы графического интерфейса не масштабировались плавно. [2] Поскольку функция масштабирования так и не была реализована, пользовательский интерфейс macOS оставался зависимым от разрешения.

11 июня 2012 года Apple представила MacBook Pro 2012 года с разрешением 2880×1800 или 5,2 мегапикселя , что удвоило плотность пикселей в обоих измерениях. [3] Ноутбук поставлялся с версией macOS, которая обеспечивала поддержку масштабирования пользовательского интерфейса в два раза больше, чем раньше. Эта функция называется режимом HighDPI в macOS и использует фиксированный коэффициент масштабирования 2 для увеличения размера пользовательского интерфейса для экранов с высоким разрешением. Apple также представила поддержку масштабирования пользовательского интерфейса путем рендеринга пользовательского интерфейса с более высоким или меньшим разрешением, чем встроенное собственное разрешение ноутбука, и масштабирования вывода на экран ноутбука. Одним из очевидных недостатков этого подхода является либо снижение производительности при рендеринге пользовательского интерфейса в разрешении выше собственного, либо повышенная размытость при рендеринге ниже собственного разрешения. Таким образом, хотя пользовательский интерфейс macOS можно масштабировать с помощью этого подхода, сам пользовательский интерфейс не зависит от разрешения.

Майкрософт Виндоус

Система GDI в Windows основана на пикселях и, следовательно, не зависит от разрешения. Для масштабирования пользовательского интерфейса Microsoft Windows поддерживает указание пользовательского значения DPI из панели управления, начиная с Windows 95 . [4]Windows 3.1 настройка DPI привязана к разрешению экрана в зависимости от файла информации о драйвере.) Когда указано пользовательское системное разрешение, встроенный пользовательский интерфейс операционной системы масштабируется. Windows также включает API-интерфейсы, позволяющие разработчикам приложений создавать приложения, которые будут правильно масштабироваться.

GDI+ в Windows XP добавляет рендеринг текста, не зависящий от разрешения [5] , однако пользовательский интерфейс в версиях Windows до Windows XP не полностью поддерживает высокое разрешение [6] , поскольку дисплеи с очень высоким разрешением и высокой плотностью пикселей в то время были недоступны. рамка. Windows Vista и Windows 7 лучше масштабируются при более высоком разрешении.

В Windows Vista также добавлена ​​поддержка программ, позволяющих заявлять ОС о том, что они поддерживают высокий уровень разрешения, через файл манифеста или с помощью API. [7] [8] Для программ, которые не заявляют себя как поддерживающие DPI, Windows Vista поддерживает функцию совместимости, называемую виртуализацией DPI, поэтому системные метрики и элементы пользовательского интерфейса представляются приложениям так, как если бы они работали с разрешением 96 DPI, и диспетчером окон рабочего стола. затем масштабирует полученное окно приложения в соответствии с настройкой DPI. В Windows Vista сохраняется опция масштабирования в стиле Windows XP, которая при включении отключает виртуализацию DPI (размытый текст) для всех приложений во всем мире.

Windows Vista также представляет Windows Presentation Foundation . Приложения WPF основаны на векторах, а не на пикселях, и разработаны с учетом независимости от разрешения.

Windows 7 добавляет возможность изменять DPI, выполняя только выход из системы, а не полную перезагрузку, и делает эту настройку индивидуальной для каждого пользователя. Кроме того, Windows 7 считывает значение DPI монитора из EDID и автоматически устанавливает значение DPI в соответствии с физической плотностью пикселей монитора, если только эффективное разрешение не меньше 1024 x 768.

В Windows 8 в диалоговом окне изменения разрешения отображается только процент масштабирования DPI, а отображение необработанного значения DPI было удалено. [9] В Windows 8.1 глобальная настройка отключения виртуализации DPI (использовать только масштабирование в стиле XP) удалена. [9] При плотности пикселей выше 120 PPI (125%) виртуализация DPI включается для всех приложений без флага (манифеста) поддержки DPI, установленного внутри EXE. В Windows 8.1 сохраняется возможность отключения виртуализации DPI для каждого приложения. [9] В Windows 8.1 также добавлена ​​возможность для каждого дисплея использовать независимую настройку разрешения, хотя она рассчитывает его автоматически для каждого дисплея. Windows 8.1 не позволяет пользователю принудительно включать виртуализацию приложения с помощью DPI. Таким образом, если приложение ошибочно утверждает, что оно поддерживает DPI, оно будет выглядеть слишком маленьким на дисплеях с высоким разрешением в версии 8.1, и пользователь не сможет это исправить. [10]

В Windows 10 добавлено ручное управление разрешением для отдельных мониторов. Кроме того, в Windows 10 версии 1703 возвращается масштабирование GDI в стиле XP в опции «Система (расширенная)». Этот параметр сочетает в себе рендеринг текста GDI+ с более высоким разрешением с обычным масштабированием других элементов, поэтому текст выглядит более четким, чем в обычном «Системном» режиме виртуализации. [11]

Андроид

Начиная с версии Android 1.6 «Donut» (сентябрь 2009 г.) [12] Android обеспечивает поддержку нескольких размеров и плотностей экрана. Android выражает размеры и положение макета через независимый от плотности пиксель или «dp», который определяется как один физический пиксель на экране с разрешением 160 точек на дюйм. Во время выполнения система прозрачно обрабатывает любое масштабирование единиц dp, если это необходимо, в зависимости от фактической плотности используемого экрана. [13]

Чтобы облегчить создание базовых растровых изображений, Android классифицирует ресурсы в зависимости от размера и плотности экрана:

Иллюстрация того, как Android грубо сопоставляет фактические размеры и плотности с обобщенными размерами и плотностями.

X оконная система

Настройки принтера в Центре управления GNOME 3.10, без масштабирования (слева) и с масштабированием (справа )

Библиотека Xft , библиотека рендеринга шрифтов для системы X11, имеет настройку dpi, которая по умолчанию равна 75. Это просто оболочка системы FC_DPI в fontconfig, но ее достаточно для масштабирования текста в приложениях на основе Xft. Этот механизм также обнаруживается средами рабочего стола для установки собственного значения DPI, обычно в сочетании с семейством функций Xlib DisplayWidthMM на основе EDID . Последнее стало неэффективным в Xorg Server 1.7; с тех пор информация EDID доступна только XRandR . [14]

В 2013 году в среде рабочего стола GNOME начались попытки обеспечить независимость от разрешения (поддержка «hi-DPI») для различных частей графического стека. Разработчик Александр Ларссон первоначально написал [15] об изменениях, необходимых в GTK+ , Cairo , Wayland и темах GNOME. В конце сессий BoF на GUADEC 2013 разработчик GTK+ Маттиас Класен упомянул, что поддержка hi-DPI будет «достаточно полной» в GTK 3.10 [16] , как только работа над Cairo будет завершена. По состоянию на январь 2014 года работа по поддержке высокого разрешения для Clutter и GNOME Shell продолжается. [17] [18] [19] [20]

Gtk поддерживает масштабирование всех элементов пользовательского интерфейса с помощью целочисленных коэффициентов и всего текста с помощью любых неотрицательных действительных коэффициентов. По состоянию на 2019 год дробное масштабирование пользовательского интерфейса путем увеличения, а затем уменьшения является экспериментальным. [21]

Другой

Хотя это и не связано с истинной независимостью от разрешения, некоторые другие операционные системы используют графические интерфейсы , способные адаптироваться к измененным размерам шрифтов. В Microsoft Windows 95 и более поздних версиях использовался шрифт Marlett TrueType для масштабирования некоторых элементов управления окнами (закрытие, развертывание, свертывание, изменение размера маркеров) до произвольных размеров. AmigaOS версии 2.04 (1991 г.) могла адаптировать элементы управления окнами к любому размеру шрифта. [ не удалось пройти проверку ]

Видеоигры часто не зависят от разрешения; Ранним примером является «Другой мир» для DOS , который использовал полигоны для рисования своего 2D-контента и позже был переделан с использованием тех же полигонов в гораздо более высоком разрешении. 3D-игры не зависят от разрешения, поскольку перспектива рассчитывается для каждого кадра и позволяет изменять разрешение.

Смотрите также

Рекомендации

  1. ^ Кармоди, Тим. «Появятся ли когда-нибудь на Mac интерфейсы, независимые от разрешения?». Проводной . ISSN  1059-1028 . Проверено 6 мая 2022 г.
  2. ^ Apple (29 апреля 2005 г.). «Примечания к выпуску пользовательского интерфейса, независимого от разрешения, для Mac OS X v10.4». Связь с разработчиками Apple . Проверено 25 марта 2007 г.
  3. Ананд Лал Шимпи (11 июня 2012 г.). «Анализ дисплея Retina MacBook Pro». АнандТех . Проверено 12 июня 2012 г.
  4. ^ Откуда в Windows 96 DPI?
  5. ^ Почему текст отображается по-разному при рисовании с помощью GDIPlus и GDI
  6. ^ Windows XP и Windows 2000 изначально не поддерживают экраны с высоким разрешением.
  7. ^ «Функция Win32 SetProcessDPIAware» .
  8. ^ «Настройки DPI в Windows Vista» . 10 декабря 2006 г.
  9. ^ abc Настройки высокого разрешения в Windows
  10. ^ «Масштабирование Windows - Гонка вооружений DPI - Просмотр для печати» .
  11. ^ «Улучшение работы с высоким разрешением в настольных приложениях на основе GDI» . Блог разработчиков Windows (MSDN) . 19 мая 2017 года . Проверено 20 февраля 2020 г.
  12. ^ «Основные особенности платформы Android 1.6» .
  13. ^ «Обзор совместимости экрана» .
  14. ^ «Ошибка № 589485 «Игнорирует физический размер дисплея и рассчитывает на основе...»: Ошибки: пакет xorg-server: Ubuntu». bugs.launchpad.net .
  15. ^ «Поддержка HiDPI в Gnome - Александр Ларссон» .
  16. ^ «Заметки о встрече GTK+ | Продолжается» .
  17. ^ "ThreePointNine/Функции/Hidpi - GNOME Wiki!".
  18. ^ «Ошибка 705915 — Поддержка дисплеев с высоким разрешением» .
  19. ^ «Ошибка 705410 — поддержка высокого разрешения: масштабирование пользовательского интерфейса» .
  20. ^ «Ошибка 705411 — поддержка высокого разрешения: масштабирование декораций окон» .
  21. ^ «Как включить дробное масштабирование HiDPI для Wayland или X11 в Ubuntu 19.04 Disco Dingo» . Блог Linux Uprising .

Внешние ссылки