跨端 font-family 应为:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;顺序不可调,需兼顾平台原生字体与中文字体引号规范,并以 sans-serif 兜底。

直接改 font-family 回退链,把 -apple-system 和 Roboto 分别前置,再补全中文字体和 sans-serif 兜底 —— 这是唯一能绕过系统字体差异的通用解法。
为什么安卓和iOS显示字体不一致
不是 CSS 写错了,是浏览器在找字体时“各找各妈”:font-family 是尝试列表,不是指定列表。iOS 看到 -apple-system 就立刻用 San Francisco,Android 看到 Roboto 就停,后面所有字体名(比如 "PingFang SC" 或 "Microsoft YaHei")根本不会被加载。漏掉平台首选项,等于主动放弃控制权。
-
-apple-system必须放最前(iOS/macOS 原生字体,支持动态类型和全字重) -
Roboto紧跟其后(Android 原生字体,但只稳定提供 400/500/700 三档) - 中文字体如
"PingFang SC"、"Hiragino Sans GB"、"Microsoft YaHei"必须加英文双引号,否则解析失败 -
sans-serif必须保留且不加引号 —— 它是最后兜底的通用族名,写成"sans-serif"就失效
怎么写一个真正跨端生效的 font-family
下面这行是经过实测、覆盖主流设备的最小安全回退链:
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
- 顺序不能乱:
-apple-system在前保 iOS,Roboto在"PingFang SC"之前保 Android -
BlinkMacSystemFont是 macOS Chrome/Firefox 的等效写法,和-apple-system并列更稳妥 - 不要把
"Noto Sans CJK SC"放进这个链 —— 它是 Web Font,必须用@font-face单独加载,否则纯靠系统找不到 - 如果项目用了 Bootstrap,记得把这个声明放在
:root或全局body上,否则组件如.form-select可能不继承
为什么 font-weight 在安卓上总“加粗不了”
因为 Android 系统字体(包括 Roboto 和多数厂商预装中文字体)基本只带 font-weight: 400 一档。你写 font-weight: 500 或 700,系统只能描边模拟,结果就是发虚、膨胀、边缘毛糙。
- 别依赖
font-weight做视觉层级 —— 改用font-size、color、letter-spacing组合更可靠 - 关键文案(标题、按钮)必须引入多字重 Web Font,例如:
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;700&display=swap'); - 引入后必须显式声明:
font-family: 'Noto Sans SC', sans-serif; font-weight: 500;—— 单写font-weight: 500不会自动切字体 - 禁用
bolder/lighter:各平台计算基准不同,生产环境完全不可控
Bootstrap 项目里最容易翻车的三个点
哪怕回退链写对了,也常因加载时机或组件隔离失效:
- 自定义 CSS 文件没放在 Bootstrap 的
之后 —— 导致变量(如--bs-body-font-family)或选择器被覆盖 -
.form-select、.btn、.alert这些组件在 Safari/Firefox 中可能忽略根字体变量,得额外补一句:.form-select { font-family: var(--bs-body-font-family); } - 用了
@font-face但只引了.woff2—— 旧版 Safari、部分国产安卓 WebView 会静默跳过,必须补.woff或.ttf格式
真正麻烦的不是写错,而是字体加载完成前页面已渲染 —— 那一刻你看到的“宋体”,其实是 fallback,不是最终效果。所以预加载、font-display: swap、子集化,一个都不能少。











