Comment X-server calcule-t-il le DPI?

9

Depuis Xfce Docs :

Si vous souhaitez remplacer la valeur DPI (points par pouce) calculée par le serveur X , vous pouvez cocher la case et utiliser la zone de sélection numérique pour spécifier la résolution à utiliser lorsque votre écran affiche les polices.

Mais comment X-server fait-il son calcul? Quelles hypothèses sont faites dans le processus et certains des paramètres peuvent-ils être remplacés?

Il peut savoir combien de pixels j'ai sur mon écran, mais est-ce suffisant?

Alois Mahdal
la source

Réponses:

8

Pour autant que je sache, à partir de la version 1.7, la valeur par xorg défaut est96 dpi . Il ne calcule rien sauf si vous spécifiez DisplaySizevia des Xorgfichiers de configuration. Ne vous fiez pas non plus à la xdpyinfosortie.
Mon ordinateur portable fonctionne sur Intel SandyBridge. Extrait de ma Xorg.0.logsur une nouvelle installation d'Archlinux:

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

fonctionnement

xdpyinfo | grep -E 'dimensions|resolution'

Retour:

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

ce qui est loin d'être vrai. Je sais que ma taille d'écran est en 344x193mm, donc xdpyinfocalcule évidemment la taille physique en fonction de la résolution en pixels ( 1600x900) et par défaut 96 DPI. Si j'ajoute

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

dans /etc/X11/xorg.conf.d/monitor.confet redémarrer, Xorg.0.logsignale correctement:

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

Cependant, xdpyinfo | grep -E 'dimensions|resolution'renvoie toujours:

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

Pourtant, aucun changement visuel car j'utilise Gnome, et 96 DPIest également codé en dur gnome-settings-daemon. Après avoir corrigé ce dernier, je peux profiter de mon natif 118 DPI. Mais même après tout cela, xdpyinforevient toujours:

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

Comment X-server calcule-t-il le DPI?

Le DPI du serveur X est déterminé de la manière suivante:

  1. L' -dpioption de ligne de commande a la priorité la plus élevée.
  2. Si cela n'est pas utilisé, le DisplaySizeparamètre du fichier de configuration X est utilisé pour dériver le DPI, compte tenu de la résolution de l'écran.
  3. Si non DisplaySizeest donné, les valeurs de taille de moniteur de DDC sont utilisées pour dériver le DPI, compte tenu de la résolution d'écran.
  4. Si DDC ne spécifie pas de taille, 75 DPI est utilisé par défaut.

Il peut savoir combien de pixels j'ai sur mon écran, mais est-ce suffisant?

Non, il connaît non seulement la taille de l'écran virtuel en pixels mais (généralement) également la taille d'affichage physique en millimètres. Vous pouvez vérifier vos dimensions d'affichage en exécutant ce qui suit dans une fenêtre de terminal:

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

Le calcul effectué par votre serveur X est le suivant:

  • 1366 pixels divisés par 361 millimètres multipliés par 25,4 millimètres par pouce = 96,1191136 points par pouce (DPI).
  • 768 pixels divisés par 203 millimètres multipliés par 25,4 millimètres par pouce = 96,09458128 points par pouce.

Vous pouvez vérifier le DPI calculé par votre serveur X à l'aide de la commande suivante:

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

Ça a l'air bien, non?

Pour plus de lecture:

Afr
la source
@ alois-mahdal Je suppose que j'ai mal compris la question au début. J'ai amélioré la réponse en ajoutant les dimensions d'affichage utilisées par le serveur X.
Afr
La valeur par défaut de Xorg est 96x96 quelle que soit la résolution du moniteur. Je pense que c'est parce que les programmes fournissent des images destinées à ce dpi standard. Il vaut mieux être un peu à l'écart que de créer des artefacts en redimensionnant constamment les images. Le DPI réel de mon moniteur principal est de 93,8. Cependant, la définition d'un DPI personnalisé est utile pour les grands écrans tels que les grands téléviseurs HD dont le DPI est bien inférieur à 96.
Colin
X ne semble pas autoriser les paramètres DPI par moniteur pour un seul écran, ce DPI est partagé entre tous les moniteurs du même écran. J'ai également constaté que les millimètres donnés par xdpyinfone s'additionnent pas à partir des millimètres de xrandr --query.
CMCDragonkai
0

Points par pouce = points (pixels) / pouces (taille physique du moniteur).

psusi
la source