当我在相同的字体大小使用两个不同的字体在网页中,他们往往表现在不同的实际尺寸:以相同的实际尺寸显示不同的字体?
此示例使用两个谷歌的字体,万民法和变质,在相同的字体大小,指定为20px。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
<link id="Gentium Book Basic" rel="stylesheet" type="text/css"
href="http://fonts.googleapis.com/css?family=Gentium Book Basic"
media="all">
<link id="Metamorphous" rel="stylesheet" type="text/css"
href="http://fonts.googleapis.com/css?family=Metamorphous" media="all">
</head>
<body style="font-size: 20px">
<span style="font-family: Gentium Book Basic">Test Text Length (Gentium)</span>
<br>
<span style="font-family: Metamorphous">Test Text Length (Metamorphous) </span>
</body>
</html>
这个例子的JSBin可以找到here。
我对指定像px这样的绝对长度的字体大小的理解是,字体将被缩放以匹配该长度。我的期望是两个不同的字体在相同的字体大小将有匹配的高度或匹配的长度(我了解字体的长宽比可能会不同)。但似乎并不是这里的情况。有什么办法可以使两个任意字体在相同高度或相同长度下显示,而无需手动计算和应用修正?
编辑:一个例子显示在相同字体大小下显示的两种字体的上行距离的下降。
清楚地显示的两个距离是不是这两种字体相同。
编辑:一个例子示出了具有和不具有在两种字体重音字母:
再次,清楚的字母是不同的尺寸。
编辑:继续讨论this article中描述的问题,问题是font-size控制字体em值的显示大小。但em值是任意的(它不必与字体中的任何内容相对应,特别是不必是小写字母'm'的高度),并且不包括上行和下行,它们可以是任何大小在所有(从上面的文章所采取的示例):
所以结果是一个“100像素”的字体可以只是关于不得以任何有效尺寸。上述文章的作者计算出当时Google Web字体的有效大小范围为0.618至3.378。
由于字体指标(如em尺寸,首字母高度,上升和下降值)未在CSS中公开,因此在CSS中似乎没有任何方法使两个任意字体具有相同的效果尺寸。对于任何特定的字体,您可以使用字体编辑器来查找字体指标值,并根据需要使用这些数字来缩放字体。对于任意字体,一个选项是显示一些文本并使用测量的边界框来确定有效大小并计算适当的缩放因子。
感谢大家对此解释!
我不认为除手动调整外,您可以对此进行任何操作。我已经建立了一个小沙箱进行实验。我用['ch'](https://developer.mozilla.org/en/docs/Web/CSS/length#ch)单元绘制了两个'div'元素。这个想法是看每个字体有多大的一个字符会呈现。不同的'font-size'单位似乎没有任何影响。 https://jsfiddle.net/t31779e1/ –