¿Cómo calcula el servidor X DPI?

9

De Xfce Docs :

En caso de que desee anular el valor de DPI (puntos por pulgada) calculado por el servidor X , puede seleccionar la casilla de verificación y utilizar el cuadro de selección para especificar la resolución que se utilizará cuando la pantalla muestre las fuentes.

Pero, ¿cómo hace X-server su cálculo? ¿Qué suposiciones se hacen en el proceso y se pueden anular algunos de los parámetros?

Puede saber cuántos píxeles tengo en mi pantalla, pero ¿es suficiente?

Alois Mahdal
fuente

Respuestas:

8

Hasta donde sé, a partir de la versión 1.7, el valor xorg predeterminado es96 dpi . No calcula nada a menos que lo especifique a DisplaySizetravés de Xorgarchivos de configuración. Además, no confíe en la xdpyinfosalida.
Mi computadora portátil funciona con Intel SandyBridge. Extracto de mi Xorg.0.logen una nueva instalación de Archlinux:

(==) intel(0): DPI set to (96, 96)

corriendo

xdpyinfo | grep -E 'dimensions|resolution'

devoluciones:

dimensions:    1600x900 pixels (423x238 millimeters)
resolution:    96x96 dots per inch

lo cual está lejos de ser cierto. Yo que mi tamaño de la pantalla es 344x193mm así que obviamente xdpyinfocalcula el tamaño físico basado en píxeles de resolución ( 1600x900) y por defecto 96 DPI. Si agrego

........
DisplaySize     344 193
........

en /etc/X11/xorg.conf.d/monitor.confy reiniciar, Xorg.0.loginforma correctamente:

(**) intel(0): Display dimensions: (344, 193) mm
(**) intel(0): DPI set to (118, 118)

Sin embargo, xdpyinfo | grep -E 'dimensions|resolution'siempre devuelve:

dimensions:    1600x900 pixels (423x238 millimeters)
resolution:    96x96 dots per inch

Aún así, no hay cambios visuales ya que estoy usando Gnome, y 96 DPItambién está codificado gnome-settings-daemon. Después de parchear este último, puedo disfrutar de mi nativo 118 DPI. Pero incluso después de todo eso, xdpyinfotodavía regresa:

dimensions:    1600x900 pixels (423x238 millimeters)
resolution:    96x96 dots per inch
revs don_crissti
fuente
7

¿Cómo calcula el servidor X DPI?

El DPI del servidor X se determina de la siguiente manera:

  1. La -dpiopción de línea de comando tiene la máxima prioridad.
  2. Si esto no se usa, la DisplaySizeconfiguración en el archivo de configuración X se usa para derivar el DPI, dada la resolución de la pantalla.
  3. Si no DisplaySizese da, los valores de tamaño del monitor de DDC se utilizan para derivar el DPI, dada la resolución de la pantalla.
  4. Si DDC no especifica un tamaño, se usa 75 DPI por defecto.

Puede saber cuántos píxeles tengo en mi pantalla, pero ¿es suficiente?

No, no solo conoce el tamaño de la pantalla virtual en píxeles, sino (generalmente) también el tamaño de la pantalla física en milímetros. Puede verificar las dimensiones de su pantalla ejecutando lo siguiente en una ventana de terminal:

 ~ $ xdpyinfo | grep dimension
dimensions:    1366x768 pixels (361x203 millimeters)

El cálculo que está haciendo su servidor X es el siguiente:

  • 1366 píxeles divididos por 361 milímetros multiplicados por 25.4 milímetros por pulgada = 96.11191136 puntos por pulgada (DPI).
  • 768 píxeles divididos por 203 milímetros multiplicado por 25.4 milímetros por pulgada = 96.09458128 puntos por pulgada.

Puede verificar qué DPI ha calculado su servidor X utilizando el siguiente comando:

 ~ $ xdpyinfo | grep resolution
 resolution:    96x96 dots per inch

Se ve bien, ¿no?

Para más lectura:

Afr
fuente
@ Alois-Mahdal Creo que al principio no entendí bien la pregunta. He mejorado la respuesta agregando las dimensiones de visualización utilizadas por el servidor X.
Afr
Xorg por defecto es 96x96 independientemente de la resolución del monitor. Creo que esto se debe a que los programas proporcionan imágenes para este dpi estándar. Es mejor estar un poco apagado que crear artefactos escalando imágenes todo el tiempo. El DPI real de mi monitor principal es 93.8. Sin embargo, la configuración de DPI personalizado es útil para pantallas grandes como televisores de alta definición de gran tamaño cuyo DPI es mucho menor que 96.
Colin
X no parece permitir la configuración de DPI por monitor para una sola pantalla, ese DPI se comparte en todos los monitores en la misma pantalla. También encontré que los milímetros dados por xdpyinfono se suman de milímetros de xrandr --query.
CMCDragonkai
0

Puntos por pulgada = Puntos (píxeles) / pulgadas (tamaño físico del monitor).

psusi
fuente