如果要覆盖X服务器计算的DPI(每英寸点数)值,则可以选中此复选框,并使用旋转框指定屏幕渲染字体时要使用的分辨率。
但怎么也X服务器做它的计算?在此过程中做出什么假设,是否可以覆盖某些参数?
它可能知道我的显示器上有多少像素,但是足够了吗?
如果要覆盖X服务器计算的DPI(每英寸点数)值,则可以选中此复选框,并使用旋转框指定屏幕渲染字体时要使用的分辨率。
但怎么也X服务器做它的计算?在此过程中做出什么假设,是否可以覆盖某些参数?
它可能知道我的显示器上有多少像素,但是足够了吗?
Answers:
据我所知,从1.7版开始,xorg
默认为96 dpi
。除非您DisplaySize
通过Xorg
配置文件指定,否则它不会计算任何内容。另外,不要依赖xdpyinfo
输出。
我的笔记本电脑在Intel SandyBridge上运行。摘录自Xorg.0.log
全新的Archlinux安装:
(==) intel(0): DPI set to (96, 96)
跑步
xdpyinfo | grep -E 'dimensions|resolution'
返回:
dimensions: 1600x900 pixels (423x238 millimeters)
resolution: 96x96 dots per inch
这远非事实。我知道我的屏幕尺寸是344x193
mm,因此显然xdpyinfo
可以根据像素分辨率(1600x900
)和默认值来计算物理尺寸96 DPI
。如果我加
........
DisplaySize 344 193
........
在/etc/X11/xorg.conf.d/monitor.conf
并重新启动,Xorg.0.log
正确报告:
(**) intel(0): Display dimensions: (344, 193) mm
(**) intel(0): DPI set to (118, 118)
但是,xdpyinfo | grep -E 'dimensions|resolution'
始终返回:
dimensions: 1600x900 pixels (423x238 millimeters)
resolution: 96x96 dots per inch
不过,当我使用Gnome时,视觉上没有任何变化,并且96 DPI
还在中进行了硬编码gnome-settings-daemon
。修补了后者之后,我可以享受我的母语了118 DPI
。但是即使如此,xdpyinfo
仍然会返回:
dimensions: 1600x900 pixels (423x238 millimeters)
resolution: 96x96 dots per inch
X服务器如何计算DPI?
X服务器的DPI通过以下方式确定:
-dpi
命令行选项具有最高优先级。DisplaySize
在给定屏幕分辨率的情况下,X配置文件中的设置将用于导出DPI。DisplaySize
给出,则在给定屏幕分辨率的情况下,将使用DDC的监视器大小值导出DPI。它可能知道我的显示器上有多少像素,但是足够了吗?
不,它不仅知道以像素为单位的虚拟屏幕大小,而且(通常)还知道以毫米为单位的物理显示大小。您可以通过在终端窗口中运行以下命令来检查显示尺寸:
~ $ xdpyinfo | grep dimension
dimensions: 1366x768 pixels (361x203 millimeters)
X服务器正在执行的计算如下:
您可以使用以下命令检查X服务器计算出的DPI:
~ $ xdpyinfo | grep resolution
resolution: 96x96 dots per inch
看起来不错,不是吗?
进一步阅读:
xdpyinfo
相加xrandr --query
。