Como o X-server calcula o DPI?

9

De Xfce Docs :

In case you want to override the DPI (dots per inch) value calculated by the X-server, you can select the checkbox and use the spin box to specify the resolution to use when your screen renders fonts.

Mas como o X-server faz o seu cálculo? Quais suposições são feitas no processo e alguns dos parâmetros podem ser substituídos?

Pode saber quantos pixels eu tenho no meu monitor, mas isso é suficiente?

    
por Alois Mahdal 10.05.2013 / 14:04

3 respostas

8

Tanto quanto eu sei, a partir da versão 1.7, xorg padrões para 96 dpi . Ele não calcula nada a menos que você especifique DisplaySize via Xorg config files. Além disso, não confie na saída xdpyinfo .
Meu laptop é executado no Intel SandyBridge. Trecho do meu Xorg.0.log em uma nova instalação do Archlinux:

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

executando

xdpyinfo | grep -E 'dimensions|resolution'

retorna:

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

que está longe de ser verdade. Eu sei que meu tamanho de tela é 344x193 mm, então, obviamente, xdpyinfo calcula o tamanho físico com base na resolução de pixels ( 1600x900 ) e no padrão 96 DPI . Se eu adicionar

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

em /etc/X11/xorg.conf.d/monitor.conf e reinicie, Xorg.0.log relata corretamente:

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

No entanto, xdpyinfo | grep -E 'dimensions|resolution' sempre retorna:

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

Ainda assim, não há alterações visuais enquanto uso o Gnome, e 96 DPI também é codificado em gnome-settings-daemon . Depois de remendar o último, posso aproveitar meu nativo 118 DPI . Mas mesmo depois de tudo isso, xdpyinfo ainda retorna:

dimensions:    1600x900 pixels (423x238 millimeters)
resolution:    96x96 dots per inch
    
por 13.04.2017 / 14:36
7

How does X-server calculate DPI?

O DPI do servidor X é determinado da seguinte maneira:

  1. A opção de linha de comando -dpi tem a maior prioridade.
  2. Se isso não for usado, a configuração DisplaySize no arquivo de configuração X será usada para derivar o DPI, considerando a resolução da tela.
  3. Se nenhum DisplaySize for fornecido, os valores de tamanho do monitor de DDC serão usados para derivar o DPI, considerando a resolução da tela.
  4. Se o DDC não especificar um tamanho, 75 DPI será usado por padrão.

It may know how many pixels I have on my display, but is that enough?

Não, ele não apenas conhece o tamanho da tela virtual em pixels, mas (geralmente) também exibe o tamanho físico em milímetros. Você pode verificar suas dimensões de exibição executando o seguinte em uma janela de terminal:

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

O cálculo que o seu servidor X está fazendo é o seguinte:

  • 1366 pixels divididos por 361 milímetros, multiplicados por 25,4 milímetros por polegada = 96,11111136 pontos por polegada (DPI).
  • 768 pixels divididos por 203 milímetros multiplicados por 25,4 milímetros por polegada = 96,09458128 pontos por polegada.

Você pode verificar qual DPI seu servidor X calculou usando o seguinte comando:

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

Parece bom, não é?

Para ler mais:

por 10.05.2013 / 15:38
0

Pontos por polegada = pontos (pixels) / polegadas (tamanho físico do monitor).

    
por 10.05.2013 / 15:34