You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

仅用本地字体在iPhone及同事Mac上无法显示问题求助

解决iOS 11/部分Mac设备本地字体加载失败的问题

我之前帮客户处理过几乎一模一样的情况——GDPR生效切换本地字体后,特定设备直接 fallback 到了WordPress默认的Times New Roman,其他站点用同款配置却完全正常。分享几个我排查和解决的核心方向:

1. 字体格式兼容性缺失

iOS 11和旧版Safari对WOFF2格式完全不支持,如果你的@font-face只提供了WOFF2,必然会加载失败。

  • 解决方案:同时提供多种兼容格式,按兼容性从低到高排列(让旧设备优先识别支持的格式):
@font-face {
    font-family: 'YourCustomFont';
    src: url('your-font.ttf') format('truetype'),
         url('your-font.woff') format('woff'),
         url('your-font.woff2') format('woff2');
    font-weight: normal;
    font-style: normal;
}

2. 服务器MIME类型未配置

不少服务器默认没给字体文件设置正确的MIME类型,iOS 11的Safari会直接拒绝加载未正确标识的字体文件。

  • 检查方法:打开Safari开发者工具(需提前在设置里开启),在网络面板查看字体文件的响应头,确认Content-Type对应正确:
    • TTF: font/ttf
    • WOFF: font/woff
    • WOFF2: font/woff2
  • 修复方式:
    • Nginx用户:在配置文件中添加
      types {
          font/ttf ttf;
          font/woff woff;
          font/woff2 woff2;
      }
      
    • Apache用户:在.htaccess中添加
      AddType font/ttf .ttf
      AddType font/woff .woff
      AddType font/woff2 .woff2
      

3. 缓存残留冲突

出问题的站点大概率有旧缓存残留——可能是WordPress缓存插件、CDN缓存,甚至是设备本地的浏览器缓存,覆盖了新的字体配置。

  • 解决方案:
    • 清空所有WordPress缓存插件(比如WP Rocket、W3 Total Cache)的缓存
    • 刷新CDN缓存(如果用了Cloudflare这类服务)
    • 强制iOS 11设备清除Safari缓存:设置→Safari→清除历史记录与网站数据

4. 文件路径大小写敏感

Mac默认文件系统大小写不敏感,但部分旧版设备的Safari对路径大小写要求严格。如果CSS里写的是/fonts/MyFont.ttf,但服务器上实际是/fonts/myfont.ttf,就会加载失败。

  • 检查方法:对比CSS中的路径和服务器上的实际文件路径,确保大小写完全一致

5. 主题/插件的字体样式覆盖

有些WordPress主题或插件会强制注入默认字体样式,在特定设备上优先级比你的自定义字体更高。

  • 测试方案:给自定义字体规则临时加上!important验证:
body, p, h1, h2, h3 {
    font-family: 'YourCustomFont', Times New Roman, serif !important;
}

如果生效了,再排查是哪个主题/插件的样式在覆盖,调整CSS优先级(尽量避免依赖!important

我当时遇到的情况是服务器没配置WOFF的MIME类型,补上之后iOS 11和旧Mac的问题立刻解决了。建议你先从字体格式和MIME类型开始排查,这两个是最常见的诱因!

内容的提问来源于stack exchange,提问作者Maxi Auer

火山引擎 最新活动