Qt 字体大小的计算

在QFont当中有两种方式设置字体大小,一种是PixelSize,另一种是PointSize

Point实际是磅(见附1),也就是 1/72 inch

我们可以从PainterDevice中得到当前DPI(Dot per inch)。因此 Pixel = DPI * Point / 72

例如设置字体为20Point,假如DPI值为90。 那么字体的像素大小是 90 * 20 / 72 约等于 25.

所以将字体设置为25Pixel,看到字体的大小就是和20Point大小是一样的。

QFont当中设置的大小,实际上字体的高度,由如下组成。

由PixelSize设置的高度,实际是Asent + 1像素(baseline的高度)。

在字体大小中涉及了以下知识:

DPI: Dot per inch,在显示器上也就是每英寸包含的像素。英尺的换算为 1 cm = 0.39 inch, 1 inch = 2.54 cm。

DPI 可以通过如下计算得来:

水平 dpi = 水平 resolution * 2.54 / 显示器宽度(单位:cm)

垂直 dpi = 垂直 resolution * 2.54 / 显示器高度(单位:cm)

pixel pitch(点距): 像素点间距离。可以用1 / DPI(单位inch)得到。

字体在屏幕上的实际大小 = 字体像素大小 * 点距

大部分显示器的DPI为90.6左右,垂直和水平点距可能不一样。但windows为了方便就同一了点距,为96。我当前使用的Ubuntu的点距也是96。因此如果想要看到更大的字体可以使用更大的点距。

终于弄明白了 pixel size 是所占的像素大小  这样有一个缺点 有些显示器的分辨率(dpi)比较大  那么单位长度中的像素点就比较多 这样一个字所占的长度就会比较少

而 point size 则规定了实际中我们肉眼看到的字体的大小 他和pixel无关的~ 他和显示器无关  不管在什么样上的显示器上 规定大小是多少就是多少...

 
解决setPointSize字太小的问题

  在UI编辑器里,并没有setPixelSize的设置,只有setPointSize。如果要在开发板上显示正常的字号,必须要将PointSize设得很大,那么在计算机上的字就变得超大,无法通过ui编辑器达到所见即所得的效果。前面我们说过,这是因为显示器DPI不同的原因。在QT应用中,可通过环境变量来设置DPI,如下:

export QWS_DISPLAY="LinuxFB:mmWidth95:0" 
export QWS_SIZE="640x480"

  重新启动QT应用程序时,发现字号和计算机上的字号相差不那么大了,95的值并不是很准确,需要跟据显示器来调整,输入合适的DPI值。

注意:不同类型的字体在相同的PointSize的情况下大小会有差异,这个需要根据实际情况来选择字体大小。


附1:字体大小的计量-点数制

点数制:

是目前国际上最通行的印刷字体的计量方法。这里的“点’.不是计算机字形的“点阵”的意思,“点”是国际上计量字体大小的基本单位,从英文“Point',译音而来,一般用小写‘p’来表示,俗称“磅”。

1磅=0.35毫米

1英寸≈72磅

1毫米≈1/25英寸

1厘米=10毫米

1英寸=25.4毫米

点 1 pt(磅)≈1/72.27英寸≈1/3毫米。

大点 1 bp ≈1/72英寸

pico  1 pc =12pt

em: 相当于当前字体的大写字母“M”的宽度。

ex:  相当于当前字体的小写字母“x”的高度。



  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值