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>
中。
这种行为如何得到解决?
答
浏览器处理字距不同的东西,因此字母之间的间距(即使是等宽字体)不能保证是均匀的。特别是如果字体有不同的指标;字符的外观可能相同,但分配给每个字形的实际度量可能会更宽或更薄。就数字印刷而言,你看到的并不总是你所得到的。
如果你正在使用的应用程序需要根据字体大小设置一些任意的尺寸,我建议使用一个相对的CSS单位,而不是像ch
,这与属于字符“0”的宽度呈现在元素的当前字体。
导入的字体是固定宽度的字体吗? – polarblau
是的,确实如此。 – denicio
由于这是我期望的非固定宽度字体的行为,因此我可能会在不同的应用程序中打开该字体,并检查它是否只是字体的问题。 – polarblau