如何计算字体大小?

UpH*_*lix 12 css fonts typography pixels font-size

我有一个复杂的js函数,其中我实际上需要了解像素字体大小占用多少空间.

我注意到某些字体的大小因字体而异.

如何计算字体的大小?如果它设置为12px,在CSS中,是什么12px意思?那那么12px宽吗?高?还是对角线像素测量?

cbe*_*ski 18

高度是标准尺度

字体高度由一条线的高度来衡量或指定,这是显示字符色域所需的全部高度,包括那些在线下方的字符,例如j和凸起元素(例如大写字母上的重音符号)Ê.

24px和12px的不同字体http://media.banzaimonkey.net/images/forums/font-sizes.png 按照出现的顺序排列:Times New Roman,Courier New,Calibri,Consolas.

宽度

字形的宽度因字体而异,如上图所示.比例fixed-width字体之间也有一个重要的区别.对于固定宽度的字体,每个字符在行上占用的空间完全相同(尽管字符本身可能与另一个字符的大小不同.对于比例字体,每个字符使用的空间更符合它的形状,相对于其他字符,所以i,jl变窄,而w,mo通常更宽.

字体

字体本身以不同的方式呈现字形(显然,因为字体看起来不同),这意味着特定字符不一定在字体之间呈现相同的高度.这也意味着除了渲染字体之外,没有标准的方法来确定某个角色在任何给定大小下的高度.

这对大多数人来说可能并不明显,但如果你检查字体的许可条款,你会发现它们被许可为字体软件.实质上,每种字体都包含一组算法,用于确定字体在给定上下文中的呈现方式(各种大小,粗体,斜体等).

因此,弄清楚字体在给定上下文中的呈现方式的最佳方法是呈现它并查看.

规模问题

当您处理网络上的内容时,对字体大小有一些警告.

对于网络

任何优秀的网页设计师都知道,没有什么是平等的.在呈现可能导致用户之间差异的页面时会出现无数变量,例如浏览器,默认字体,缩放,平滑,提示,浏览器缩放,操作系统缩放等.

List Apart(在他们跳过鲨鱼之前)有一些关于标准化字体大小的好文章,并帮助你在浏览器之间获得某种程度的相似性:

虽然您可以进行尽职调查,但您必须接受网络媒体涉及您无法控制的某种程度的可变性.

打印与像素

因为像素通常不是字体的自然尺度(不同的测量用于打印),所以提示算法可以将字体渲染一个或两个像素,特别是在小尺寸下,以便保持字符的形状.

实际上,提示算法在小尺寸时通常是完全不同的,而在专业工作中,您可能完全使用不同的字体来完成12pt以下的尺寸.

像素也与显示尺寸有关,因此在这些显示器上12px将是不同的物理尺寸:

  • 20英寸显示器,1680x1050
  • 22"显示器在1680x1050
  • iPhone屏幕
  • 黑莓屏幕
  • 等等

TL; DR

总而言之,它很复杂. font-size是指显示字符范围所需的高度,但在野外和羊毛互联网中,总会有例外情况.


SLa*_*aks 6

规范:

字体大小对应于em square,这是排版中使用的概念.
请注意,某些字形可能会在其正方形之外出血.


Sur*_*gch 6

这是一个补充答案。我发现这个网站上的图表对于了解全局非常有用。

字体大小换算表