在不同的显示器上设置不同的亚像素渲染


16

我正在使用双显示器,其中一个旋转了90度。字体消除锯齿在旋转的监视器中看起来不正确(即,字符周围有彩虹边框)。

我相信这是因为X在两台显示器上都使用相同的子像素渲染顺序。有没有一种方法可以为每个监视器配置不同的亚像素渲染顺序?(即,监视器1 = RGB,监视器2 = vRGB)。


似乎尚无法实现(尚无软件解决方案)。看到这个有关的东西。
Ashhar Hasan 2015年

Answers:


4

您必须将显示器配置为单独的X屏幕,而不是共享桌面。然后,Ubuntu应该让您调整各个X屏幕的亚像素顺序。

否则,跨两个具有不同子像素顺序的显示设备的窗口会发生什么情况?甚至更棘手的是,两个克隆模式下的显示器具有不同的物理顺序(RGB与BGR)。

这是目前所有操作系统的已知限制,需要进行重大重新设计才能修复。动态调整不可行,因为进行渲染的库必须知道您在哪个屏幕上并进行动态调整。另外,假设您在一个屏幕上有一个窗口的一半,在另一个屏幕上有一半的窗口-它不知道选择哪个。

设置多个X屏幕:

  1. 启动并重新配置X。 sudo dpkg-reconfigure -phigh xserver-xorg 按照以下步骤设置主显示屏。(我不知道从CLI进行此特定步骤的方法)
  2. 打开一个终端,
    lspci
    这将为您提供设备及其总线ID的列表。找到图形卡并写下其总线ID。
  3. 让你的副本,xorg.conf因为xorg.conf.orig也许并打开它:sudo vi /etc/X11/xorg.conf
  4. 继续之前,请先阅读此内容,以确保您可以根据需要进行自定义。
  5. 现在分成两Device部分,列出BusID要共享的卡,并列出驱动程序,如下所示:

    Section "Device"
        Identifier  "nvidia0"
        # Your preferred driver
        Driver      "nvidia"
        # Edit the BusID with the location of your graphics card
        BusID       "PCI:2:0:0"
        Screen      0
    EndSection
    
    Section "Device"
        Identifier  "nvidia1"
        # Your preferred driver
        Driver      "nvidia"
        # Edit the BusID with the location of your graphics card
        BusId       "PCI:2:0:0"
        Screen      1
    EndSection
    
  6. 现在创建两个Screen部分(当然,您可以使用自己选择的参数来进行匹配,唯一需要匹配的是Device该部分中的Identifier上一个部分):

    Section "Screen"
        Identifier  "Screen0"
        Device      "nvidia0"
        Monitor     "Monitor0"
        DefaultDepth 24
        Subsection "Display"
            Depth       24
            Modes       "1600x1200" "1024x768" "800x600" "640x480" 
        EndSubsection
    EndSection
    
    Section "Screen"
        Identifier  "Screen1"
        Device      "nvidia1"
        Monitor     "Monitor1"
        DefaultDepth 24
        Subsection "Display"
            Depth       24
            Modes       "1600x1200" "1024x768" "800x600" "640x480" 
        EndSubsection
    EndSection
    
  7. 现在Monitor为每个监视器创建一个部分,如下所示:

    Section "Monitor"
        Identifier "monitor name here"
    EndSection
    
    Section "Monitor"
        Identifier "monitor name here"
        # Rotate as you want (your question says one is rotated)
        Rotate "left"
    EndSection
    
  8. 最后,更新该ServerLayout部分以使用并放置两个Screen部分:

    Section "ServerLayout"
        ...
        Screen         0 "Screen0" 
        Screen         1 "Screen1" leftOf "Screen0"
        ...
    EndSection
    
  9. 重新启动X并交叉手指!如果它可以正常工作,则可以根据需要进行微调。

现在用于子像素渲染命令font.conf~/font.conf或/ etc / X11 / font.conf` 中进行此更改。bgr


我正在添加有关如何执行此操作的步骤。但是,希望有人能以一种很棒的方式来做您需要的事情。
Ashhar Hasan 2015年

似乎我也遇到了障碍。尽管我可以在其中指定不同的字体路径,Xorg.conf但似乎无法为不同font.conf文件选择路径。:(
Ashhar Hasan 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.