Wie berechnet X-Server den DPI?

9

Aus Xfce Docs :

Wenn Sie den vom X-Server berechneten DPI-Wert (Punkte pro Zoll) überschreiben möchten , können Sie das Kontrollkästchen aktivieren und über das Drehfeld die Auflösung festlegen, die beim Rendern von Schriftarten auf Ihrem Bildschirm verwendet werden soll.

Aber wie berechnet X-Server? Welche Annahmen werden dabei getroffen und können einige der Parameter überschrieben werden?

Es weiß vielleicht, wie viele Pixel ich auf meinem Display habe, aber ist das genug?

Alois Mahdal
quelle

Antworten:

8

Soweit ich weiß, wird ab Version 1.7 xorg standardmäßig verwendet96 dpi . Es wird nichts berechnet, es sei denn, Sie geben dies DisplaySizeüber XorgKonfigurationsdateien an. Verlassen Sie sich auch nicht auf die xdpyinfoAusgabe.
Mein Laptop läuft auf Intel SandyBridge. Auszug aus meiner Xorg.0.logneuen Archlinux-Installation:

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

Laufen

xdpyinfo | grep -E 'dimensions|resolution'

kehrt zurück:

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

das ist weit davon entfernt, wahr zu sein. Ich weiß, dass meine Bildschirmgröße 344x193mm ist, daher xdpyinfoberechnet ich die physische Größe offensichtlich basierend auf der Pixelauflösung ( 1600x900) und der Standardeinstellung 96 DPI. Wenn ich hinzufüge

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

in /etc/X11/xorg.conf.d/monitor.confund neu starten, Xorg.0.logkorrekt meldet:

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

Gibt jedoch xdpyinfo | grep -E 'dimensions|resolution'immer zurück:

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

Trotzdem keine visuellen Änderungen, da ich Gnome verwende und 96 DPIauch fest codiert ist gnome-settings-daemon. Nachdem ich letzteres gepatcht habe, kann ich meine Muttersprache genießen 118 DPI. Aber auch nach all dem xdpyinfokehrt immer noch zurück:

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

Wie berechnet X-Server den DPI?

Die DPI des X-Servers wird folgendermaßen bestimmt:

  1. Die -dpiBefehlszeilenoption hat die höchste Priorität.
  2. Wenn dies nicht verwendet wird, wird die DisplaySizeEinstellung in der X-Konfigurationsdatei verwendet, um die DPI unter Berücksichtigung der Bildschirmauflösung abzuleiten.
  3. Wenn nein DisplaySizeangegeben wird, werden die Monitorgrößenwerte von DDC verwendet, um die DPI unter Berücksichtigung der Bildschirmauflösung abzuleiten.
  4. Wenn DDC keine Größe angibt, werden standardmäßig 75 DPI verwendet.

Es weiß vielleicht, wie viele Pixel ich auf meinem Display habe, aber ist das genug?

Nein, es kennt nicht nur die Größe des virtuellen Bildschirms in Pixel, sondern (normalerweise) auch die physische Anzeigegröße in Millimetern. Sie können Ihre Anzeigeabmessungen überprüfen, indem Sie Folgendes in einem Terminalfenster ausführen:

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

Die Berechnung, die Ihr X-Server durchführt, lautet wie folgt:

  • 1366 Pixel geteilt durch 361 Millimeter multipliziert mit 25,4 Millimeter pro Zoll = 96,11191136 Punkte pro Zoll (DPI).
  • 768 Pixel geteilt durch 203 Millimeter multipliziert mit 25,4 Millimeter pro Zoll = 96,09458128 Punkte pro Zoll.

Mit dem folgenden Befehl können Sie überprüfen, welche DPI Ihr X-Server berechnet hat:

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

Sieht gut aus, nicht wahr?

Zur weiteren Lektüre:

Afr
quelle
@ alois-mahdal Ich glaube, ich habe die Frage zuerst falsch verstanden. Ich habe die Antwort verbessert und die vom X-Server verwendeten Anzeigeabmessungen hinzugefügt.
Afr
Xorg ist unabhängig von der Monitorauflösung standardmäßig 96 x 96. Ich denke, das liegt daran, dass Programme Bilder liefern, die für diese Standard-dpi bestimmt sind. Es ist besser, ein wenig daneben zu sein, als Artefakte zu erstellen, indem Bilder ständig skaliert werden. Die tatsächliche DPI meines primären Monitors beträgt 93,8. Das Einstellen einer benutzerdefinierten DPI ist jedoch nützlich für große Displays wie große HDTVs, deren DPI viel niedriger als 96 ist.
Colin
X scheint keine DPI-Einstellungen pro Monitor für einen einzelnen Bildschirm zuzulassen. Diese DPI wird von allen Monitoren auf demselben Bildschirm gemeinsam genutzt. Außerdem habe ich festgestellt, dass die von angegebenen Millimeter xdpyinfonicht zu Millimetern von addieren xrandr --query.
CMCDragonkai
0

Punkte pro Zoll = Punkte (Pixel) / Zoll (physische Größe des Monitors).

psusi
quelle