等宽字体和比例字体

开头

前段时间,我负责维护的某内部平台,运营人员发了一条2020年以来的首篇公告,然后便出现了下图的案发现场(其实我一直都没发现@_@,还是可爱的大佬提醒了一下),事出反常必有妖!
案发现场
吭吭哧哧一顿操作,加宽了包裹日期的盒子的宽度修复了问题。发现 2020-02-242019-04-16 这两个日期的长度竟然不一样诶(原谅我的无知),遂勾起了我的好奇心。于是乎,才知道等宽字体比例字体这两个概念。
抢修现场

概念

比例字体: 是指字符宽度存在变化的字体,在传统西文活字印刷中使用的铅字,如小写字母的i, j和w,m的字符宽度是不一样的,但是这样做可以提高单词的可读性,这在铅字制作设计上称为比例字体。近年来制作的比例字体中,一般都会包含有较多的间距调整、斜体修正、合体字等信息 。

等宽字体: 早期的打字机、电脑屏幕由于技术的限制,不能自动显示比例字体,因而最先出现的是等宽字体。它指的是字符宽度相同的一类字体。这里要注意的一点是,中英文宽度应该不是相同而是成整数倍关系——一般来说中文字符在这些字体中的宽度是英文字符的两倍。

区别

等宽字体和比例字体的首要区别,就在于比例字体(Proportional font)即每个字母宽度是按一定比例自动调整的,而等宽字体(Monospaced Font)则是固定宽度,固定间距,字体的每一个字母和字符所占的水平空间都是相同的。

其次是在阅读上的差别,显然比例字体使单词的整体可读性增强了,比如小说阅读器(Kindle 之类)。而等宽字体具有相同的宽度字符,它更易于阅读,拥有较高的统一性和一致性,常常受到设计师和开发者的亲睐,比如命令行、打字机效果、又或者程序猿常常会拿它来显示代码。

等宽字体在web上的一些优势体现:

1. 代码阅读

之前有提到过代码显示一般是用到等宽字体,是为了方便阅读,其实在有些情况下,不一定,比如下面这种字母错误的情况,如果是等宽字体,查阅起来就没有那么容易,好在编辑器有高亮错误提示。

2. HTML标签

UI开发熟悉的html标签<code>,它是用于表示计算机源代码或者其他机器可以阅读的文本内容。通常将标签内的文本变成等宽字体,表示这段文本是源程序代码。<code>标签是一个短语标签,用来定义计算机代码文本。

当然不光是<code>标签,还有<pre>,预格式化文本,任何位于<pre>开标签和</pre>闭标签之间的文本都会保持其在源文件中的格式。大多数浏览器默认会使用等宽字体显示这种文本(Courier字体就是一个等宽字体的例子,每个字母占用相同的宽度 )。

<pre>元素最常用于显示计算机源码。

3. CSS单位

还有一个与等宽字体有关的css单位:ch

它是以字符0的宽度为基准, 另外一个单位ex是以小写字符x的高度为基准,当font-family改变的时候这两个单位的值也会变化,不同字体表现的样式不一样。

参考文献

https://en.wikipedia.org/wiki/Samples_of_monospaced_typefaces
https://www.fontsquirrel.com/fonts/list/classification/monospaced
http://www.1001fonts.com/monospaced-fonts.html
https://www.typewolf.com/top-10-monospaced-fonts

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
在PyQt中进行屏适配可以通过设置字体来实现。在PyQt中,可以使用QFont类来设置字体的样式和大小。 首先,我们需要创建一个新的QFont对象,然后使用setPointSize()函数设置字体的大小。例如,可以通过调用font.setPointSize(12)来设置字体的大小为12像素。 此外,还可以使用setFamily()函数设置字体的样式。例如,可以通过调用font.setFamily("Arial")来设置字体的样式为Arial字体。 最后,将新创建的字体对象应用到需要显示的控件上,可以使用setFont()函数来完成。例如,可以通过调用widget.setFont(font)将新创建的字体对象应用到控件widget上。 对于屏适配,我们可以根据屏幕的度来动态地调整字体的大小。可以使用QDesktopWidget类的screenGeometry()函数来获取当前屏幕的大小,然后根据比例系数动态调整字体的大小。 例如,可以根据屏幕的度调整字体的大小,可以使用下面的代码片段: ```python import sys from PyQt5.QtWidgets import QApplication, QWidget, QDesktopWidget, QLabel, QVBoxLayout from PyQt5.QtGui import QFont class MyWidget(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): # 获取屏幕的度 screen_width = QDesktopWidget().screenGeometry().width() # 设置字体的大小为屏幕度的1/20 font_size = screen_width // 20 font = QFont() font.setPointSize(font_size) label = QLabel("Hello, PyQt!") label.setFont(font) layout = QVBoxLayout() layout.addWidget(label) self.setLayout(layout) if __name__ == '__main__': app = QApplication(sys.argv) widget = MyWidget() widget.resize(800, 600) widget.setWindowTitle('PyQt 屏适配 字体') widget.show() sys.exit(app.exec_()) ``` 在上面的代码中,我们通过计算屏幕度的1/20来设置字体的大小。然后,创建一个QLabel控件并将新创建的字体对象应用于该控件。最后,将QLabel控件添加到垂直布局中,并在QWidget上设置该布局。 这样,当窗口打开时,字体的大小将根据屏幕度进行动态调整,实现屏适配。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逸尘️

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值