要使 webfonts 在 Windows 上的 Chrome 中以良好的抗锯齿呈现,您需要在字体声明中使用此格式:
@font-face {
font-family: 'Futura';
src: url('futura.eot');
src: url('futura.eot?#iefix') format('embedded-opentype'),
url('futura.woff') format('woff'),
url('futura.ttf') format('truetype'),
url('futura.svg#futura') format('svg');
font-weight: normal;
font-style: normal;
}
@media screen and (-webkit-min-device-pixel-ratio:0) {
@font-face {
font-family: 'Futura';
src: url('futura.svg#futura') format('svg');
}
}
基本上,您需要强制 Chrome 使用 SVG 字体格式。您可以通过将 .svg 版本的 url 移到顶部来做到这一点,但是 Windows 上的 Chrome 在执行此操作时会出现布局混乱的问题(直到并包括版本 30)。通过使用媒体查询覆盖字体声明,这些问题得到解决。
另一件事:这个技巧将导致浏览器下载两个版本的字体,但对于好看的文本来说这是一个很小的代价!
另外:有时基线位置在 OpenType 字体和 SVG 字体之间不匹配,但您可以通过简单地编辑 SVG 字体文件来调整它。SVG 字体是基于 xml 的,如果你看一下声明
<font-face units-per-em="2048" ascent="1900" descent="-510" />
您可以更改 ascent 的值并使其与其他字体格式版本匹配。