CSS3 @ font-face。获取导入的字体

问题描述:

的宽度。这是我如何导入TTF字体:CSS3 @ font-face。获取导入的字体

@font-face { 
    font-family: bt; 
    src: url('Monospace 821 BT.ttf'); 
} 
body { 
    font: normal 21px bt; 
} 

而且我这是怎么计算的字体字符的宽度:

window.onload = function() { 
    var k = document.createElement('div'); 
    k.innerHTML = 'M'; 
    k.style.position = 'absolute'; 
    document.body.appendChild(k); 

    var size = [ 
     k.offsetWidth, 
     k.offsetHeight 
    ]; 

    document.body.removeChild(k); 
    alert(size[0]+' '+size[1]); 
}; 

使用这种方法,我能够计算宽度&高度成功的系统的固定宽度的字体,如“Monospace”,“摩纳哥”等。

但是至于导入的字体,我得到的结果每次我改变字符'M'别的。另外,是的,我可以使用导入的字体在屏幕上书写,所以它确实已成功加载到<body>中。

这种行为如何得到解决?

+0

导入的字体是固定宽度的字体吗? – polarblau

+0

是的,确实如此。 – denicio

+0

由于这是我期望的非固定宽度字体的行为,因此我可能会在不同的应用程序中打开该字体,并检查它是否只是字体的问题。 – polarblau

浏览器处理字距不同的东西,因此字母之间的间距(即使是等宽字体)不能保证是均匀的。特别是如果字体有不同的指标;字符的外观可能相同,但分配给每个字形的实际度量可能会更宽或更薄。就数字印刷而言,你看到的并不总是你所得到的。

如果你正在使用的应用程序需要根据字体大小设置一些任意的尺寸,我建议使用一个相对的CSS单位,而不是像ch,这与属于字符“0”的宽度呈现在元素的当前字体。