不同字体系列上的CSS不同字号

19

我有一个类似这样的CSS声明:

font-family: font1, font2, font3;

其中font1是一个嵌入式的eot/ttf字体,但问题在于这个字体比其他字体要小,所以我想为这个字体(font1)设置不同的字号(1.8em),而其他字体(font2、font3)则不变。

问题在于,我无法确定用户的浏览器是否使用了font1、font2或者font3。有没有CSS声明可以允许为不同字体系列设置不同的字号呢?

谢谢。

2个回答

16

有一种方法可以做到这一点,但目前支持非常差。您要查找的CSS属性是font-size-adjust,这是一个新的CSS3属性,专门用于解决此问题。规范说:

在字体回退发生的情况下,回退字体可能与所需的字体系列不共享相同的纵横比,因此会显得不太可读。 font-size-adjust属性是一种在字体回退发生时保持文本易读性的方法。它通过调整字体大小使x高度始终相同,无论使用何种字体。

然而,目前它只在Firefox中受到支持,因此您可能需要寻找替代方案。

有关如何使用它的示例,请参见:

http://webdesignernotebook.com/css/the-little-known-font-size-adjust-css3-property/
https://developer.mozilla.org/en/CSS/font-size-adjust
http://www.fonttester.com/help/css_property/font-size-adjust.html
http://www.w3.org/TR/css3-fonts/#relative-sizing-the-font-size-adjust-pro


5
“font-size-adjust”属性大多数情况下是没有用的,因为除了Firefox浏览器不支持外,在其他浏览器上也没有支持。而且即使在Firefox中使用,“font-size-adjust”属性也存在问题,它使用错误的x高度值,甚至可能调整到错误的方向。 - Jukka K. Korpela

2

我知道已经过了一段时间,但最近我遇到了与OP描述的完全相同的问题。由于font-size-adjust的支持仍然非常差,我想分享另一个对我有效的解决方案:

注意:以下解决方案仅在使用@font-face声明嵌入字体时有效。

在这种情况下,只需包含例如:

size-adjust: 90%;

在你的@font-face声明中。相关字体将以指定大小的90%显示。

浏览器支持

浏览器支持目前为74%,除了Safari和IE之外,所有主要浏览器都得到支持。我知道这远非最佳选择。但由于这个问题“只是”关于设计而不是功能,我认为这总比没有好。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接