在不同的顯示器上設定不同的子像素渲染

在不同的顯示器上設定不同的子像素渲染

我使用雙顯示器,其中一台旋轉 90 度。字體抗鋸齒在旋轉的顯示器中看起來不正確(即字元周圍有彩虹邊框)。

我相信這是因為 X 在兩台顯示器上使用相同的子像素渲染順序。有沒有辦法為每個顯示器配置不同的子像素渲染順序? (即,顯示器 1 = RGB,顯示器 2 = vRGB)。

答案1

您必須將顯示器配置為單獨的 X 螢幕,而不是共用桌面。然後 Ubuntu 應該允許您調整各個 X 螢幕的子像素順序。

否則,如果視窗跨越兩個具有不同子像素順序的顯示設備,會發生什麼情況?或者更棘手的是,克隆模式下的兩個顯示器具有不同的物理順序(RGB 與 BGR)。

這是目前所有作業系統的已知限制,需要進行重大重新設計才能修復。動態調整是不可行的,因為進行渲染的庫必須知道您所在的畫面並進行動態調整。另外,假設您的一個螢幕上有一半窗口,另一個螢幕上有一半窗口 - 它不知道該選擇哪個。

設定多個 X 螢幕:

  1. 啟動並重新配置 sudo dpkg-reconfigure -phigh xserver-xorg X。 (我不知道如何從 CLI 執行此特定步驟)
  2. 打開一個終端,
    lspci
    這將為您提供設備及其匯流排 ID 的清單。找到顯示卡並記下其總線 ID。
  3. 複製你的xorg.confas xorg.conf.origpossible 並打開它: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`中 進行此更改。背景

答案2

另一個解決方案是將抗鋸齒設定為灰階而不是子像素,因為所有 LCD 螢幕不再具有相同的像素方向。

我透過 gnome-tweaks -> 字體 -> 抗鋸齒 -> 標準來做到這一點。對我來說工作正常。如果您喜歡清晰度,也可以將其設為“無”。

相關內容