字体大小是如何测量的?

How is font-size measured?

背景:我正在尝试使用字形位图进行字体渲染,我需要一种方法来验证我在屏幕上以正确的大小渲染文本。

所以当有人说:font-size: 64px 这个 64 应该出现在哪里?我在 HTML 中尝试了相同的练习,但现在我比开始之前更加困惑。这就是 HTML 使用 font-size: 64px 呈现文本的方式。红线 - 我试图在这些字母周围放置一个 height: 64px 框: 如您所见,我找不到将 64px 与视觉字母相匹配的方法。

谁能给我解释一下这个 64px 应该出现在哪里?

我知道字体大小是一个非常古老的东西,它来自物理印刷机,一些间距也被考虑在内,但是数字时代没有任何 logic/rules 吗?它在字体文件中是完全任意的吗?假设我正在制作一种新字体:没有关于 64px 字体应该如何调整大小的指南吗?

本来font-size是用所谓的em-square来衡量的,也就是大写M字的横向宽度:

The height of the type piece is known as the ‘em’, and it originates from the width of the uppercase ‘M’ character; it was made so that the proportions of this letter would be square (hence the ‘em square’ denomination). (http://designwithfontforge.com/en-US/The_EM_Square.html)

在CSS中,ptpx中的font-size代表,如果有的话,这个em-square。但是:

The other day I looked at a bunch of lesson slides from a university-level typography course. One of them claimed that the distance from the baseline (bottom of a letter such as H) to the cap height (top of a letter such as H) was the point size. I wish that were true, as it would be much simpler than the reality. On average, the cap height is about 70% of the point size. (http://www.thomasphinney.com/2011/03/point-size/)

所以我猜你的问题的答案是:这取决于。em-square 仍然是指导方针,但字体的实际大小在很大程度上取决于设计者和通常比 em-square 大得多。 或者您可以尝试在 70% 标记的基础上进行构建,并寻找 64px 的 70%(大约 45px)是正常大写字母(例如 H 或 M)的高度。

我还发现这个 link 对于 CSS 中的排版问题很有帮助:https://iamvdo.me/en/blog/css-font-metrics-line-height-and-vertical-align

PS 请注意,这两个引号所提到的印刷 em-square 与 CSS 中的 em 单位不同。在 CSS 中,em 是相对于父容器(或浏览器中的默认设置)的字体大小。