In che modo X-server calcola DPI?


9

Da Xfce Docs :

Nel caso in cui si desideri sovrascrivere il valore DPI (punti per pollice) calcolato dall'X-server , è possibile selezionare la casella di controllo e utilizzare la casella di selezione per specificare la risoluzione da utilizzare quando lo schermo esegue il rendering dei caratteri.

Ma come fa X-server a fare i suoi calcoli? Quali ipotesi vengono fatte nel processo e alcuni parametri possono essere ignorati?

Potrebbe sapere quanti pixel ho sul mio display, ma è abbastanza?

Risposte:


8

Per quanto ne so, a partire dalla versione 1.7, per xorg impostazione predefinita96 dpi . Non calcola nulla se non specificato DisplaySizetramite Xorgfile di configurazione. Inoltre, non fare affidamento xdpyinfosull'output.
Il mio laptop funziona con Intel SandyBridge. Estratto dal mio Xorg.0.logsu una nuova installazione di Archlinux:

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

in esecuzione

xdpyinfo | grep -E 'dimensions|resolution'

ritorna:

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

che è lungi dall'essere vero. Io so che la mia dimensione dello schermo è 344x193millimetri così ovviamente xdpyinfocalcola la dimensione fisica sulla base di pixel di risoluzione ( 1600x900) e di default 96 DPI. Se aggiungo

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

in /etc/X11/xorg.conf.d/monitor.confe riavvio, Xorg.0.logriporta correttamente:

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

Tuttavia, xdpyinfo | grep -E 'dimensions|resolution'restituisce sempre:

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

Tuttavia, non ci sono cambiamenti visivi mentre sto usando Gnome, ed 96 DPIè anche codificato gnome-settings-daemon. Dopo aver patchato quest'ultimo, posso godermi il mio nativo 118 DPI. Ma anche dopo tutto ciò, xdpyinforitorna ancora:

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

7

In che modo X-server calcola DPI?

Il DPI del server X è determinato nel modo seguente:

  1. L' -dpiopzione della riga di comando ha la massima priorità.
  2. Se questo non viene utilizzato, l' DisplaySizeimpostazione nel file di configurazione X viene utilizzata per derivare il DPI, data la risoluzione dello schermo.
  3. Se non DisplaySizeviene specificato, i valori delle dimensioni del monitor dal DDC vengono utilizzati per derivare il DPI, data la risoluzione dello schermo.
  4. Se DDC non specifica una dimensione, per impostazione predefinita vengono utilizzati 75 DPI.

Potrebbe sapere quanti pixel ho sul mio display, ma è abbastanza?

No, non solo conosce le dimensioni dello schermo virtuale in pixel ma (di solito) anche le dimensioni dello schermo fisico in millimetri. È possibile controllare le dimensioni del display eseguendo quanto segue in una finestra del terminale:

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

Il calcolo che sta facendo il tuo server X è il seguente:

  • 1366 pixel divisi per 361 millimetri moltiplicati per 25,4 millimetri per pollice = 96.11191136 punti per pollice (DPI).
  • 768 pixel divisi per 203 millimetri moltiplicati per 25,4 millimetri per pollice = 96,09458128 punti per pollice.

Puoi controllare quale DPI ha calcolato il tuo server X usando il seguente comando:

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

Sembra buono, no?

Per ulteriori letture:


@ alois-mahdal Immagino di aver frainteso la domanda all'inizio. Ho migliorato la risposta aggiungendo le dimensioni di visualizzazione utilizzate dal server X.
Afr

Xorg viene impostato automaticamente su 96x96 indipendentemente dalla risoluzione del monitor. Penso che ciò sia dovuto al fatto che i programmi forniscono immagini pensate per questo dpi standard. È meglio essere un po 'fuori che creare artefatti ridimensionando continuamente le immagini. Il DPI effettivo del mio monitor principale è 93,8. Tuttavia, impostare DPI personalizzati è utile per schermi di grandi dimensioni come televisori ad alta definizione i cui DPI sono molto inferiori a 96.
Colin,

X non sembra consentire le impostazioni DPI per monitor per un singolo schermo, che DPI è condiviso su tutti i monitor nella stessa schermata. Inoltre ho scoperto che i millimetri forniti da xdpyinfonon si sommano dai millimetri di xrandr --query.
CMCDragonkai

0

Punti per pollice = Punti (pixel) / pollici (dimensione fisica del monitor).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.