正如@BoltClock在评论中提到的,这在CSS字体模块级别3 CR中描述,第3.2节字体权重:字体权重属性和5.2 匹配字体样式,但它没有定义所有细节,浏览器行为可能变化.
基本原则是使用具有给定字体粗细的字体.对于大多数字体,只有普通(常规,400)和粗体(700)字体可用,可能只是正常的.在这种情况下,所有小于正常和500的字体都映射到正常,600,800和900映射为粗体.
如果粗体字体不可用但要求加粗(通过font-weight设置为600或更大),浏览器可以在普通字体上使用算法(合成)粗体.理论上,这取决于font-synthesis属性,但尚未实现,因此它取决于浏览器.
测试页面(假设Lucida Sans Unicode的可用性,Windows中常见的字体,只有普通字体):
<!DOCTYPE html>
<title>Test</title>
<style>
* { font-family: Lucida Sans Unicode }
</style>
<p>Hello world
<p style="font-weight: 600">Hello world
<p style="font-weight: 700">Hello world
<p style="font-weight: 800">Hello world
Run Code Online (Sandbox Code Playgroud)
Firefox和IE以合成粗体(人造粗体)显示除第一个之外的段落,而Chrome仅显示最后两个段落,即不将600映射为粗体而是正常.
一般来说,合成的粗体是印刷工人不赞成的,这是有充分理由的.然而,对于具有很小或没有笔画宽度变化的无衬线字体,例如Lucida Sans Unicode或Arial Unicode MS,它可能产生可接受的结果.