问题出在操作系统上:
-
macOS 系统默认的华文黑体(STHeiti) 有七个矢量级别:Heavy/Bold/MediumP4/Regular/Thin/Light/UltraLightP2 ,它包含上面 CSS 中设定的 500 这个精度。
-
Windows 系统默认的宋体(simsun) 没有那么多级别。在缺少级别支持的前提下,CSS 会根据回退机制寻找一个类似的精度,结果就变成了400 (Normal)。
回退机制:
- 如果指定的权重值不可用,则使用以下规则来确定实际呈现的权重:
- 如果指定的权重值在 400和 500之间(包括400和500):
1. 按升序查找指定值与500之间的可用权重;
2. 如果未找到匹配项,按降序查找小于指定值的可用权重;
3. 如果未找到匹配项,按升序查找大于500的可用权重。 - 如果指定值小于400
1. 按降序查找小于指定值的可用权重
2. 如果未找到匹配项,按升序查找大于指定值的可用权重(先尽可能的小,再尽可能的大)。 - 如果指定值大于500
1. 按升序查找大于指定值的可用权重
2. 如果未找到匹配项,按降序查找小于指定值的可用权重(先尽可能的大,再尽可能的小)。
- 以上策略意味着,如果一个字体只有 normal 和 bold 两种粗细值选择,指定粗细值为 100-500 时,实际渲染时将使用 normal,指定粗细值为 501-900 时,实际渲染时将使用 bold 。