當我在相同的字體大小使用兩個不同的字體在網頁中,他們往往表現在不同的實際尺寸:以相同的實際尺寸顯示不同的字體?
此示例使用兩個谷歌的字體,萬民法和變質,在相同的字體大小,指定爲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/ –