Skip to content

解决方案

界面中文字和字体图标,通常需要平滑显示,常规设置如下(全局字体图标设置)

.font {
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

张鑫旭推荐的最佳实践(兼容系统和物理屏幕)

body {
  -webkit-font-smoothing: antialiased;
}

/* Retina下仍使用默认字体渲染 */
@media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 2dppx) { 
  body {
    -webkit-font-smoothing: subpixel-antialiased;
  }
}

具体说明

  • antialiased:平滑像素级别的字体,而不是子像素。从亚像素渲染切换到黑暗背景上的浅色文本的抗锯齿使其看起来更轻。
  • grayscale:用灰度抗锯齿渲染文本,而不是子像素。从亚像素渲染切换到黑暗背景上的浅色文本的抗锯齿使其看起来更轻。

通常在字体图标库下载时已经包含这个属性,不需要手动加。如果没有这两个属性,那么需要手动加入。

兼容性问题

兼容性不太好,在 MAC 中的谷歌(webkit)火狐(geoko)等可以正常使用,其他效果不好。

图片

注意

注1:svg 图标的平滑显示,需要单独设置(另一篇博客中简介)

注2:名称问题:MDN上显示这个属性应该名叫font-smooth(老版本的W3C的提案有关于font-smooth的内容)这是非标准的名称,没有一个浏览器用这个名字,实际上使用 font-smoothing

参考资料

这是自己遇到的一个问题,应该阅读量不高,简单记录一下。


Last update: August 27, 2022