La independencia de resolución es cuando los elementos en la pantalla de una computadora se representan en tamaños independientes de la cuadrícula de píxeles , lo que da como resultado una interfaz gráfica de usuario que se muestra en un tamaño físico consistente, independientemente de la resolución de la pantalla. [1]
Ya en 1978, el sistema de composición TeX, creado por Donald Knuth, introdujo la independencia de resolución en el mundo de los ordenadores. La vista deseada se puede representar más allá de la resolución atómica sin ningún artefacto, y se garantiza que las decisiones de composición tipográfica automática serán idénticas en cualquier computadora hasta un error menor que el diámetro de un átomo. Este sistema pionero tiene un sistema de fuentes correspondiente , Metafont , que proporciona fuentes adecuadas con los mismos altos estándares de independencia de resolución.
El formato de archivo independiente del dispositivo terminológico (DVI) es el formato de archivo del sistema TeX pionero de Donald Knuth. El contenido de dicho archivo se puede interpretar en cualquier resolución sin ningún artefacto, incluso en resoluciones muy altas que no se utilizan actualmente.
Apple incluyó cierto soporte para la independencia de resolución en las primeras versiones de macOS , lo que se pudo demostrar con la herramienta de desarrollo Quartz Debug que incluía una función que permitía al usuario escalar la interfaz. Sin embargo, la función estaba incompleta, ya que algunos íconos no se mostraban (como en Preferencias del Sistema), los elementos de la interfaz de usuario se mostraban en posiciones extrañas y ciertos elementos de la GUI de mapa de bits no se escalaban suavemente. [2] Debido a que la función de escalado nunca se completó, la interfaz de usuario de macOS siguió dependiendo de la resolución.
El 11 de junio de 2012, Apple presentó la MacBook Pro 2012 con una resolución de 2880×1800 o 5,2 megapíxeles , duplicando la densidad de píxeles en ambas dimensiones. [3] La computadora portátil se envió con una versión de macOS que brindaba soporte para escalar la interfaz de usuario al doble de lo que era anteriormente. Esta función se llama modo HighDPI en macOS y utiliza un factor de escala fijo de 2 para aumentar el tamaño de la interfaz de usuario para pantallas de alto DPI. Apple también introdujo soporte para escalar la interfaz de usuario al representar la interfaz de usuario en una resolución mayor o menor que la resolución nativa incorporada de la computadora portátil y escalar la salida a la pantalla de la computadora portátil. Una desventaja obvia de este enfoque es un menor rendimiento al renderizar la interfaz de usuario con una resolución superior a la nativa o una mayor borrosidad al renderizar con una resolución inferior a la nativa. Por lo tanto, si bien la interfaz de usuario de macOS se puede escalar utilizando este enfoque, la interfaz de usuario en sí no es independiente de la resolución.
El sistema GDI en Windows se basa en píxeles y, por tanto, no es independiente de la resolución. Para ampliar la interfaz de usuario, Microsoft Windows admite la especificación de un DPI personalizado desde el Panel de control desde Windows 95 . [4] (En Windows 3.1 , la configuración de DPI está vinculada a la resolución de la pantalla, según el archivo de información del controlador). Cuando se especifica un DPI del sistema personalizado, la interfaz de usuario integrada en el sistema operativo aumenta. Windows también incluye API para que los desarrolladores de aplicaciones diseñen aplicaciones que se escalen adecuadamente.
GDI+ en Windows XP agrega representación de texto independiente de la resolución [5] sin embargo, la interfaz de usuario en las versiones de Windows hasta Windows XP no es completamente compatible con DPI altos [6] ya que las pantallas con resoluciones muy altas y altas densidades de píxeles no estaban disponibles en ese momento marco. Windows Vista y Windows 7 escalan mejor con DPI más altos.
Windows Vista también agrega soporte para que los programas declaren al sistema operativo que son conscientes de alto DPI a través de un archivo de manifiesto o mediante una API. [7] [8] Para los programas que no se declaran compatibles con DPI, Windows Vista admite una función de compatibilidad llamada virtualización de DPI, por lo que las métricas del sistema y los elementos de la interfaz de usuario se presentan a las aplicaciones como si se estuvieran ejecutando a 96 DPI y el Administrador de ventanas del escritorio. luego escala la ventana de la aplicación resultante para que coincida con la configuración de DPI. Windows Vista conserva la opción de escala de estilo de Windows XP que, cuando está habilitada, desactiva la virtualización de DPI (texto borroso) para todas las aplicaciones a nivel global.
Windows Vista también presenta Windows Presentation Foundation . Las aplicaciones WPF se basan en vectores, no en píxeles, y están diseñadas para ser independientes de la resolución.
Windows 7 agrega la capacidad de cambiar el DPI simplemente cerrando sesión, no reiniciando por completo y lo convierte en una configuración por usuario. Además, Windows 7 lee el DPI del monitor a partir del EDID y establece automáticamente el valor de DPI para que coincida con la densidad física de píxeles del monitor, a menos que la resolución efectiva sea inferior a 1024 x 768.
En Windows 8 , solo se muestra el porcentaje de escala de DPI en el cuadro de diálogo de cambio de DPI y se ha eliminado la visualización del valor de DPI sin procesar. [9] En Windows 8.1 , se eliminó la configuración global para deshabilitar la virtualización de DPI (solo use escalado estilo XP). [9] En densidades de píxeles superiores a 120 PPI (125%), la virtualización de DPI está habilitada para todas las aplicaciones sin un indicador de reconocimiento de DPI (manifiesto) establecido dentro del EXE. Windows 8.1 conserva una opción por aplicación para deshabilitar la virtualización de DPI de una aplicación. [9] Windows 8.1 también agrega la capacidad de que cada pantalla use una configuración de DPI independiente, aunque la calcula automáticamente para cada pantalla. Windows 8.1 impide que un usuario habilite por la fuerza la virtualización DPI de una aplicación. Por lo tanto, si una aplicación afirma erróneamente que admite DPI, se verá demasiado pequeña en pantallas con altos DPI en 8.1 y el usuario no podrá corregirlo. [10]
Windows 10 agrega control manual sobre DPI para monitores individuales. Además, Windows 10 versión 1703 recupera el escalado GDI estilo XP en la opción "Sistema (mejorado)". Esta opción combina la representación de texto de GDI+ a una resolución más alta con la escala habitual de otros elementos, de modo que el texto aparece más nítido que en el modo de virtualización normal "Sistema". [11]
Desde Android 1.6 "Donut" (septiembre de 2009) [12] Android ha brindado soporte para múltiples tamaños y densidades de pantalla. Android expresa las dimensiones y la posición del diseño a través del píxel independiente de la densidad o "dp", que se define como un píxel físico en una pantalla de 160 ppp. En tiempo de ejecución, el sistema maneja de forma transparente cualquier escalado de las unidades dp, según sea necesario, en función de la densidad real de la pantalla en uso. [13]
Para ayudar en la creación de mapas de bits subyacentes, Android clasifica los recursos según el tamaño y la densidad de la pantalla:
La biblioteca Xft , la biblioteca de representación de fuentes para el sistema X11, tiene una configuración de ppp predeterminada de 75. Esto es simplemente un contenedor del sistema FC_DPI en fontconfig, pero es suficiente para escalar el texto en aplicaciones basadas en Xft. Los entornos de escritorio también detectan el mecanismo para establecer su propio DPI, generalmente junto con la familia de funciones Xlib DisplayWidthMM basada en EDID . Este último ha quedado ineficaz en Xorg Server 1.7; desde entonces, la información EDID solo está expuesta a XRandR . [14]
En 2013, el entorno de escritorio GNOME inició esfuerzos para brindar independencia de resolución (soporte "hi-DPI") para varias partes de la pila de gráficos. El desarrollador Alexander Larsson escribió inicialmente [15] sobre los cambios necesarios en GTK+ , Cairo , Wayland y los temas de GNOME. Al final de las sesiones de BoF en GUADEC 2013, el desarrollador de GTK+ Matthias Clasen mencionó que el soporte de alto DPI sería "bastante completo" en GTK 3.10 [16] una vez que se completara el trabajo en Cairo . A partir de enero de 2014, se está trabajando en la compatibilidad con alto DPI para Clutter y GNOME Shell . [17] [18] [19] [20]
Gtk admite el escalado de todos los elementos de la interfaz de usuario mediante factores enteros y todo el texto mediante factores de números reales no negativos. A partir de 2019, el escalado fraccional de la interfaz de usuario ampliando y luego reduciendo es experimental. [21]
Aunque no están relacionados con la verdadera independencia de la resolución, algunos otros sistemas operativos utilizan GUI que pueden adaptarse a los tamaños de fuente modificados. Microsoft Windows 95 en adelante utilizó la fuente Marlett TrueType para escalar algunos controles de ventana (cerrar, maximizar, minimizar, cambiar el tamaño de los controladores) a tamaños arbitrarios. AmigaOS desde la versión 2.04 (1991) pudo adaptar sus controles de ventana a cualquier tamaño de fuente. [ verificación fallida ]
Los videojuegos suelen ser independientes de la resolución; un ejemplo temprano es Another World para DOS , que usó polígonos para dibujar su contenido 2D y luego fue rehecho usando los mismos polígonos en una resolución mucho mayor. Los juegos 3D son independientes de la resolución ya que la perspectiva se calcula en cada fotograma y por eso puede variar su resolución.