Prise en compte de la résolution de l'écran

Prise en compte de la résolution de l'écran

Le pilotage de l'écran par le serveur X et la carte graphique s'effectue aux moyens d'images bitmap définies en pixel. Il s'en suit que la dimension de l'image affichée est fonction de la résolution de l'écran (nombre de pixels par unité de longueur).

Pour que les dimensions des images soient comparables d'un écran à l'autre, X calcule à partir des informations fournies par le bios la résolution de l'écran et la met à disposition des applications qui en ont besoin de convertir des dimensions en pixels (affichage du bureau, fontes, ....).

1 - Résolution de l'écran

1.1 - Valeur utilisée par le serveur X

xdyinfo affiche la valeur calculée par X

$ xdpyinfo |grep -B2 resolution
dimensions: 1600x900 pixels (423x237 millimeters)
resolution: 96x96 dots per inch

Dans le cas présent, la valeur utilisée est celle calculée automatiquement par X à partir des informations fournies par le bios. Ces informations sont erronées : la taille de l'écran n'est pas 423x237mm, mais 344x190mm. La résolution réelle n'est donc pas 96 dpi mais 118 dpi. Il sera donc nécessaire de configurer X pour qu'il prenne en compte cette valeur.

1.2 - Valeur réelle

La valeur réelle peut-être calculée et affinée à partir de différentes méthodes :

$ fbset -s |grep ^mode
mode "1600x900"
$ display -size 1000x30 xc:blue &

Si la longueur mesurée est de L (en mm) , le dpi est de 1000 x 25,4 / L = 25400 / L . SI L=215 mm, le dpi est de 118 dpi.

$ xrandr |grep mm
DP-1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 476mm x 268mm

1.3 - Caractéristiques de l'écran via la lecture de la table edid du moniteur

$ sudo aptitude install read-did edid-decode i2c-tools
$ sudo modprobe i2c-dev
..
$ sudo get-edid >edid.dat

$ parse-edid <edid.dat
Checksum Correct

Section "Monitor"
Identifier "PL2290"
ModelName "PL2290"
VendorName "IVM"
# Monitor Manufactured week 29 of 2018
# EDID version 1.3
# Digital Display
DisplaySize 480 270
Gamma 2.20
Option "DPMS" "true"
Horizsync 30-83
VertRefresh 55-76
# Maximum pixel clock is 170MHz
#Not giving standard mode: 1920x1080, 60Hz
#Not giving standard mode: 1280x1024, 60Hz
#Not giving standard mode: 1440x900, 60Hz
#Not giving standard mode: 1680x1050, 60Hz
#Not giving standard mode: 1280x960, 60Hz
#Not giving standard mode: 1152x864, 75Hz
#Not giving standard mode: 1440x900, 75Hz

#Extension block found. Parsing...
Modeline "Mode 13" -hsync -vsync
Modeline "Mode 0" +hsync +vsync
Modeline "Mode 1" 25.200 640 656 752 800 480 490 492 525 -hsync -vsync
Modeline "Mode 2" 27.027 720 736 798 858 480 489 495 525 -hsync -vsync
Modeline "Mode 3" 27.027 720 736 798 858 480 489 495 525 -hsync -vsync
Modeline "Mode 4" 74.250 1280 1390 1420 1650 720 725 730 750 +hsync +vsync
Modeline "Mode 5" 74.250 1920 2008 2052 2200 1080 1082 1087 1125 +hsync +vsync interlace
Modeline "Mode 6" 148.500 1920 2008 2052 2200 1080 1084 1089 1125 +hsync +vsync
Modeline "Mode 7" 27.000 720 732 796 864 576 581 586 625 -hsync -vsync
Modeline "Mode 8" 27.000 720 732 796 864 576 581 586 625 -hsync -vsync
Modeline "Mode 9" 74.250 1280 1720 1760 1980 720 725 730 750 +hsync +vsync
Modeline "Mode 10" 74.250 1920 2448 2492 2640 1080 1082 1089 1125 +hsync +vsync interlace
Modeline "Mode 11" 54.000 1440 1464 1592 1728 576 581 586 625 -hsync -vsync
Modeline "Mode 12" 148.500 1920 2448 2492 2640 1080 1084 1089 1125 +hsync +vsync
Modeline "Mode 14" +hsync +vsync
Modeline "Mode 15" -hsync -vsync
Option "PreferredMode" "Mode 13"
EndSection
$ sudo get-edid |parse-edid
$ find /sys/devices -name edid
/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-HDMI-A-1/edid
/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-2/edid
/sys/devices/pci0000:00/0000:00:02.0/drm/card0/card0-DP-1/edid

2 - Configuration du DPI écran dans X

Si la valeur du DPI fournie par X n'est pas bonne

# mkdir /etc/X11/xorg.conf.d
# nano /etc/X11/xorg.conf.d/90-monitor.conf Section "Monitor" Identifier "<default monitor>" DisplaySize 344 194 # Taille de l'écran en mm EndSection
$ xdpyinfo |grep -E "dimensions|resolution"
dimensions: 1600x900 pixels (344x194 millimeters)
resolution: 118x118 dots per inch

3 - Configuration du DPI du bureau

Vérifier que le bureau prend en compte la bonne valeur de dpi : avec le bureau XFCE, dans le menu Paramètres >> Apparence >> Onglet Polices >> Vérifier que le Paramètre DPI personnalisé est à la bonne valeur, sinon le modifier.

4 - Configuration du DPI des applications

Certaines applications prennent en compte automatiquement en compte le DPI fourni par X ou le bureau. Dans d'autres cas, il est nécessaire d'ajuster manuellement le DPI.

<img src="image.png" style="height: 100mm; width: 100mm">



C'est bien le cas avec le navigateur Chromium. Avec le navigateur Firefox, on constate que la valeur de dpi personnalisée n'est pas prise en compte.