大数跨境
0
0

优麒麟缩放技术介绍

优麒麟缩放技术介绍 优麒麟
2020-11-28
2

首先让我们先了解几个概念:

  • 分辨率:指给定的距离(或面积)内"点"或"像素"的数量。有时被称为"解析度"。常用的描述分辨率的单位有:DPI(点每英寸)和 PPI(像素每英寸)。
  • DPI (Dots Per Inch):常用于描述打印图像上每英寸的墨点数量,可以理解为 dpi 是打印机通过墨粉成滴将图像呈现在纸张上的一种表达方式;每英寸上 dots 数会影响打印的细节和整体质量;当我们设计的图像要进行物理打印时,打印机将使用 DPI,不同型号和样式的打印机都会根据其设置产生自己的唯一 DPI。

图1 DPI图片
  • PPI (Pixels Per Inch):通常用于描述数字图像的分辨率,表示屏幕可以显示的固定像素数和数字图像中像素的密度;PPI 计算公式 =√(x^2+y^2)/z,x为长度像素数,y为宽度像素数,z为屏幕尺寸;由于历史原因我们现在平时所说的软件像素应该是 PPI,中文意思是每英寸像素数,在系统中修改的 DPI 其实就是这个 PPI。
对于电脑而言,PPI 有三个层次:

1)显示器 PPI,这是硬件,其 PPI 是出厂固定的,不可以更改的;

2)操作系统 PPI,操作系统可以将显示器设置成自己的分辨率,作为用户,对我们视觉有影响的是这个分辨率;

3)图片 PPI,如下图。

图2 PPI图片



优麒麟高分屏解决方案



随着显示器质量的提高,高分屏逐渐增多,很多用户平时使用的机器都是2k屏甚至是4k屏,显示器分辨率变大后,同样的物理尺寸下可以表示更多的点。

图3 优麒麟高分屏下自研应用的显示效果
 
图4 优麒麟高分屏下第三方应用的显示效果

优麒麟系统上分别对于 Qt 与 GTK 这两平台上所写应用进行了适配工作。

1

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  即显示器的物理分辨率

2

GTK 平台

对于 GTK 的程序,有以下两种环境变量用于生效:
  • GDK_SCALE:以整数倍来缩放UI元素。
  • GDK_DPI_SCALE:用于补偿通过GDK_SCALE进行缩放后应用程序的字体分辨率。

3

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 缩放倍数

上就是对优麒麟高清屏支持缩放技术的介绍,后续将为大家带来更多优麒麟相关技术文章,敬请期待。

往期精选 | Selection in the past
优麒麟操作系统新增网易、开源社等五大镜像站
优麒麟20.10版本发布--简而美,华而实

 UKUI 3.0 十大特性


【声明】内容源于网络
0
0
优麒麟
优麒麟公众账号,用于发布优麒麟(UKylin)官方认可的信息。
内容 232
粉丝 0
优麒麟 优麒麟公众账号,用于发布优麒麟(UKylin)官方认可的信息。
总阅读37
粉丝0
内容232