zoukankan      html  css  js  c++  java
  • KAL1 LINUX 官方文档之通用---修复DPI(每英寸点数)/大字体

     

    启动Kali Linux后,某些事情可能看起来比预期的要大。这可能是因为DPI每英寸点数)/ PPI每英寸像素数)不正确。如果看起来比预期的要小,您可能希望查看我们的HiDPI指南

    这可能是由于各种原因而发生的,例如导致问题的图形卡驱动程序和/或显示器配置文件。

    本指南将涵盖单屏设置。我们没有足够的硬件来测试多屏输出以编写指南。所以我们正在寻找社区的贡献来帮助我们。如果你有硬件和专业知识,请编辑本指南。


    问题

    打开某些应用程序后,字体可能会比预期的要大,如下面的示例所示。在这里,您可以看到两种不同的终端软件,左侧的一个使用QtQTerminal),右侧的一个使用GTKxfce4-terminal)。

    Qt太大,需要更改。首先,我们需要找到,将其更改为什么值,然后我们需要应用更改。

    查找问题

    我们首先使用xrdb,它在X服务器的数据库中查找(X是图形显示输出的主办),以查看那里的值:

    kali@kali:~$ xrdb -q
    *customization:	-color
    Xft.antialias:	1
    Xft.hinting:	1
    Xft.hintstyle:	hintslight
    Xft.rgba:	rgb
    Xcursor.theme_core:	1
    kali@kali:~$
    

    没有预定义DPI的迹象。是时候进入下一个工具了。

    使用xdpyinfo,我们可以查看有关X的显示信息,该信息当前正在使用(实时获取定义信息,例如启动,新屏幕附加等)

    kali@kali:~$ xdpyinfo | grep 'dimensions|resolution'
      dimensions:    1680x1050 pixels (160x90 millimeters)
      resolution:    267x296 dots per inch
    kali@kali:~$
    

    我们只返回一次值,这意味着只有一台显示器。很好!但不太好的是,物理屏幕的尺寸,160x90mm,被检测到。这可能开始解释为什么字体非常大(因为DPI很大)。我们还可以看到屏幕分辨率设置为1680×1050,DPI为~267。

    接下来,我们可以使用xrandr来处理扩展名RandR (调整大小和旋转),以查看报告的内容是否匹配:

    kali@kali:~$ xrandr -q | grep -iw 'screen|connected'
    Screen 0: minimum 8 x 8, current 1680 x 1050, maximum 32767 x 32767
    HDMI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 160mm x 90mm
    kali@kali:~$
    

    再次,一个显示器。同样,它的分辨率与xdpyinfo告诉我们的相符我们可以看到它使用HDMI电缆,并且分辨率和尺寸相同。

    查看X的日志,我们可以看到:

    kali@kali:~$ grep DPI /var/log/Xorg.0.log
    [     7.324] (--) NVIDIA(0): DPI set to (266, 296); computed from "UseEdidDpi" X config
    kali@kali:~$
    

    这非常接近xrandr报告的DPI值(但相差1)我们可以看到有问题的图形驱动器是NVIDIA,并且它试图从中获取DPI值EDID (GPU试图从显示器读取数据)

    如果愿意,我们可以使用edid-decode查看EDID的值

    kali@kali:~$ sudo apt install -y edid-decode
    kali@kali:~$
    kali@kali:~$ xrandr --props | edid-decode -c -s
    EDID version: 1.3
    ...SNIP...
    Maximum image size: 16 cm x 9 cm
    ...SNIP...
    Warnings:
    
    Block 0 (Base Block):
      Basic Display Parameters & Features: Dubious maximum image size (160x90 is smaller than 10x10 cm)
    
    Failures:
    
    All Blocks:
      One or more of the timings is out of range of the Monitor Ranges:
        Vertical Freq: 24 - 75 Hz (Monitor: 23 - 75 Hz)
        Horizontal Freq: 27.000 - 79.976 kHz (Monitor: 26.000 - 68.000 kHz)
        Maximum Clock: 148.500 MHz (Monitor: 150.000 MHz)
    
    EDID conformity: FAIL
    kali@kali:~$

    因此,看来EDID中的值不正确,因此我们不应该监听监视器!我们将需要手动定义要使用的值。

    最简单的方法是查看屏幕的品牌/型号(设备背面/下方是否贴有标签?)否则,我们可以使用老式的方法来测量卷尺。

    为什么错了?

    那么操作系统认为我们的屏幕尺寸是多少?

    使用一些数学运算(1cmis 10mm25.4mmis 1 inch),我们可以将毫米(mm)转换为英寸(in):

    请记住,输出为dimensions: 1680x1050 pixels (160x90 millimeters),因此我们将“ width”作为160“height²”作为90

    kali@kali:~$ echo 'print(160/25.4)' | python3
    6.299212598425197   # 6.3 in
    kali@kali:~$
    kali@kali:~$ echo 'print(90/25.4)' | python3
    3.543307086614173   # 3.5 in
    kali@kali:~$
    

    现在,我们可以通过执行√(width² + height²) = diagonal以下操作找到对角线屏幕尺寸

    kali@kali:~$ echo 'print( ( ((160/25.4) ** 2)+((90/25.4) ** 2) ) ** (0.5) )' | python3
    7.227385728616465  # 7.2 in
    kali@kali:~$
    

    屏幕背面的标签显示其20英寸,但仅检测到7.2英寸

    寻找正确值

    使用公式√(width² + height²) / diagonal = DPI,我们得到:

    请记住,输出为dimensions: 1680x1050 pixels (160x90 millimeters),所以我们将“ width”作为1680“ height”作为1050,将正确的对角线作为20

    kali@kali:~$ # e.g. (((width ** 2)+(height² ** 2) ) ** (0.5) ) / diagonal )
    kali@kali:~$
    kali@kali:~$ echo 'print( (((1680 ** 2)+(1050 ** 2) ) ** (0.5) ) / 20 )' | python3
    99.05680188659434  # 99 DPI
    kali@kali:~$
    

    因此,我们需要将DPI设置为99x99而不是267x296

    修复

    我们可以采取多种方法来解决此问题,每种方法各有利弊:

    • 编辑~/.Xresources (X配置推荐方法
    • 编辑~/.xsessionrc (X启动脚本)
    • NVIDIA驱动程序设置
    • Xfce GUI设置(桌面环境配置)

    Xresources

    我们可以配置X(每个用户)。在终端窗口中,运行以下命令:

    kali@kali:~$ echo "Xft.dpi: 99" >> ~/.Xresources
    kali@kali:~$
    kali@kali:~$ cat ~/.Xresources
    Xft.dpi: 99
    kali@kali:~$
    kali@kali:~$ xrdb -merge ~/.Xresources
    kali@kali:~$
    

    运行后xrdb -merge,不需要注销,因此下次下次打开有问题的程序进行备份时,字体现在应为“正常”。

    xsessionrc

    这是一个shell脚本,将在图形登录后自动执行。在终端窗口中,运行以下命令:

    kali@kali:~$ echo "xrandr --dpi 99" >> ~/.xsessionrc
    kali@kali:~$
    kali@kali:~$ cat ~/.xsessionrc
    xrandr --dpi 99
    kali@kali:~$
    kali@kali:~$ xfce4-session-logout --logout
    kali@kali:~$
    

    注销并再次登录后,下次打开有问题的程序进行备份时,该字体现在应为“正常”字体。

    NVIDIA驱动程序设置

    另一种方法是让NVIDIA驱动程序处理DPI。

    如果没有用于X的配置文件,我们将生成一个配置文件然后将其移动:

    kali@kali:~$ sudo apt install -y nvidia-xconfig
    kali@kali:~$
    kali@kali:~$ sudo nvidia-xconfig
    kali@kali:~$
    kali@kali:~$ sudo mv /etc/X11/xorg.conf /usr/share/X11/xorg.conf.d/20-nvidia.conf
    kali@kali:~$
    

    现在,我们可以编辑配置文件,以在该Section "Device"部分中包含以下两行

    • Option "UseEdidDpi" "False"
    • Option "DPI" "99 x 99"

      kali@kali:~$ sudo vim /usr/share/X11/xorg.conf.d/20-nvidia.conf
      kali@kali:~$
      kali@kali:~$ cat /usr/share/X11/xorg.conf.d/20-nvidia.conf
      ...SNIP...
      Section "Device"
      Identifier     "Device0"
      Driver         "nvidia"
      VendorName     "NVIDIA Corporation"
      Option         "UseEdidDpi" "False"
      Option         "DPI" "99 x 99"
      EndSection
      ...SNIP...
      kali@kali:~$
      kali@kali:~$ xfce4-session-logout --logout
      kali@kali:~$
      

    注销并再次登录后,下次打开有问题的程序进行备份时,该字体现在应为“正常”字体。

    Xfce设置

    我们可以通过以下方式配置Xfce:

    • Kali->设置->外观->字体-> DPI
      • 启用: Custom DPI Settings
      • 值: 99

    由于存在错误,您将需要切换“自定义DPI设置”或增加/减少该值,然后将其恢复为先前的值。

    不需要注销,因此,下次您打开有问题的程序备份时,字体现在应为“正常”。


    参考文献

    有关其他阅读材料,您可能希望参考:

  • 相关阅读:
    MQ怎么解决消息堆积的问题
    怎么解决Mysql的超大分页
    微信小程序开发入门 —— 认识微信小程序
    C++中strcpy()函数和strcpy_s()函数的使用及注意事项
    UML免费建模工具
    UML 各种图总结精华
    TIFF 文件格式
    LIBTIFF+VS15+WIN10编译
    LIBTIFF VS2013下编译LIBTIFF4.0.9
    Qt 多线程之QtConcurrent::map(处理序列容器)
  • 原文地址:https://www.cnblogs.com/GKLBB/p/13586744.html
Copyright © 2011-2022 走看看