在介紹優麒麟操作系統高分屏解決方案之前,我們有必要瞭解幾個概念:

  • 分辨率:指給定的距離(或面積)內"點"或"像素"的數量。有時被稱為"解析度"。常用的描述分辨率的單位有:DPI(點每英寸)和 PPI(像素每英寸)。
  • DPI (Dots Per Inch):常用於描述打印圖像上每英寸的墨點數量,可以理解為 dpi 是打印機通過墨粉成滴將圖像呈現在紙張上的一種表達方式;每英寸上 dots 數會影響打印的細節和整體質量;當我們設計的圖像要進行物理打印時,打印機將使用 DPI,不同型號和樣式的打印機都會根據其設置產生自己的唯一 DPI。
經驗分享 | 優麒麟操作系統高分屏解決方案

DPI圖片

  • PPI (Pixels Per Inch):通常用於描述數字圖像的分辨率,表示屏幕可以顯示的固定像素數和數字圖像中像素的密度;PPI 計算公式 =√(x^2+y^2)/z,x為長度像素數,y為寬度像素數,z為屏幕尺寸;由於歷史原因我們現在平時所說的軟件像素應該是 PPI,中文意思是每英寸像素數,在系統中修改的 DPI 其實就是這個 PPI。

對於電腦而言,PPI 有三個層次:

1)顯示器 PPI,這是硬件,其 PPI 是出廠固定的,不可以更改的;

2)操作系統 PPI,操作系統可以將顯示器設置成自己的分辨率,作為用戶,對我們視覺有影響的是這個分辨率;

經驗分享 | 優麒麟操作系統高分屏解決方案

PPI圖片

接下來開始進入主題。隨著顯示器質量的提高,高分屏逐漸增多,很多用戶平時使用的機器都是2k屏甚至是4k屏,顯示器分辨率變大後,同樣的物理尺寸下可以表示更多的點。

經驗分享 | 優麒麟操作系統高分屏解決方案

優麒麟高分屏下自研應用的顯示效果

經驗分享 | 優麒麟操作系統高分屏解決方案

優麒麟高分屏下第三方應用的顯示效果

優麒麟系統上分別對於 Qt 與 GTK 這兩平臺上所寫應用進行瞭適配工作。

Qt 平臺

Qt 提供瞭以下方式來在應用程序中處理高DPI的支持:

  • QT_AUTO_SCREEN_SCALE_FACTOR 根據顯示器的像素密度啟用自動縮放。這不會更改磅號字體的大小,多個屏幕可能會獲得不同的比例因子。
  • QT_SCALE_FACTOR 定義整個應用程序的全局比例因子,包括字體的大小。
  • QT_SCREEN_SCALE_FACTORS 指定每個屏幕的比例因子,這不會更改字體的大小。
  • 從 Qt 5.6 開始引入瞭 Qt::AA_EnableHighDpiScaling 屬性,使得應用程序自動檢測顯示器的像素密度來實現自動縮放;而 Qt::AA_DisableHighDpiScaling 屬性用於關閉應用程序的縮放,不管上述三個變量的值為如何。
  • 從 Qt 5.14 引入瞭環境變量 QT_ENABLE_HIGHDPI_SCALING 替換舊有的 QT_AUTO_SCREEN_SCALE_FACTOR,可以用來檢測顯示器的像素密度來實現自動縮放 。

一個關於高DPI術語表:

術語

定義

Device Independent Pixels

應用程序使用像素,取決於操作系統獲取Qt的縮放比例

Device Pixels

顯示器的像素

Device Pixel Ratio

適用於操作系統或者Qt的比例系數

Logical DPI

將字體大小轉換為以像素為單位的字體大小的分辨率,標準值為96,128,192...‍‍

Physical DPI

即顯示器的物理分辨率

GTK 平臺

對於 GTK 的程序,有以下兩種環境變量用於生效:

  • GDK_SCALE:以整數倍來縮放UI元素。
  • GDK_DPI_SCALE:用於補償通過GDK_SCALE進行縮放後應用程序的字體分辨率。

Xresources

最後還需要介紹一些關於 Xresources 的知識,在 ~/.Xresources 文件中設置 xft.dpi 幾乎可以縮放所有 Xorg 應用程序的字體,例如:xft.dpi: 192,這將會把字體放大兩倍,系統中默認 dpi 為 96。

介紹以上三種縮放方式,每一種方式都有自己的作用(縮放UI或文本),因此我們需要將他們適當的結合起來,整理成如下的一個表格:

應用程序

Xresources

GTK環境變量

QT環境變量

Firefox&&Chrome

UI&&文本

UI&&文本


GTK Apps

文本

UI&&文本


常規 Xorg Apps

文本



QT Apps

文本


UI&&文本

在優麒麟系統中結合以上三種方式的特點,將縮放接口統一整合到瞭 ukui-settings-daemon 之中,從而實現在高分屏下的縮放效果,縮放接口為:

gsettings set org.ukui.SettingsDaemon.plugins.xsettings scaling-factor 縮放倍數

以上就是對優麒麟高清屏支持縮放技術的介紹,後續將為大傢帶來更多優麒麟操作系統的開發經驗分享。

創作者介紹
創作者 3C王者 的頭像
3C王者宇晨

3C王者

3C王者宇晨 發表在 痞客邦 留言(0) 人氣( 13 )