@font-face加载本地自定义字体失败,请求技术协助
排查@font-face无法加载自定义字体的问题
我来帮你一步步找出问题所在,先从最可能的错误开始排查:
1. 外部CSS文件里不要包含<style>标签
你提到这段代码是在style.css文件里,但代码里写了<style>和</style>标签——这是错误的!外部CSS文件只需要纯CSS规则,不需要HTML的style标签。把这两个标签删掉,只保留CSS代码,比如:
@font-face { src: url(fonts/omori.ttf); font-family: 'omo'; font-weight: normal; font-style: normal; } body { background-image: url(removed for this question due to irrelevance and for privacy); color: grey; font-family:'omo'; } h1 { text-align: center; color: white; font-family:'omo'; }
这很可能是导致字体不生效的核心原因,因为浏览器会把style标签当作无效CSS忽略,@font-face规则根本没被解析。
2. 检查字体文件路径是否正确
确认fonts/omori.ttf的路径是否和你的文件结构匹配:
- 如果
style.css在网站根目录,fonts文件夹也在根目录,那路径是对的; - 如果
style.css在css/子文件夹里,路径应该改成../fonts/omori.ttf(用../回到上一级目录); - 你可以打开浏览器的开发者工具→Network面板,刷新页面,搜索
omori.ttf,看它的状态码:如果是404,说明路径错了;如果是200,说明路径没问题。
3. 补全字体格式以提升兼容性
只提供TTF格式可能在部分浏览器(比如旧版IE)里不兼容,建议添加更通用的woff/woff2格式,并明确指定格式类型,同时加上font-display避免页面加载时的字体闪烁:
@font-face { font-family: 'omo'; /* 优先加载体积更小的woff2 */ src: url('fonts/omori.woff2') format('woff2'), url('fonts/omori.woff') format('woff'), url('fonts/omori.ttf') format('truetype'); font-weight: normal; font-style: normal; font-display: swap; /* 先用系统字体占位,字体加载后替换 */ }
你可以用在线工具把TTF转换成woff/woff2格式,这样兼容性更好。
4. 检查浏览器缓存
有时候浏览器会缓存旧的CSS或字体文件,导致新的规则不生效:
- 强制刷新页面(Windows:
Ctrl+Shift+R;Mac:Cmd+Shift+R); - 打开开发者工具,在Network面板勾选「Disable cache」选项,然后刷新页面测试。
5. 确认字体文件本身没有损坏
可能是字体文件下载或存储时损坏了,你可以:
- 重新下载
omori.ttf文件; - 用系统自带的字体预览工具打开它,确认能正常显示文字;
- 换一个已知可用的字体文件测试,看@font-face是否能正常工作。
6. 检查文件权限(如果用本地服务器)
如果你是用本地服务器(比如XAMPP、WAMP)运行网站,要确保fonts文件夹和omori.ttf文件有可读权限,不然服务器会拒绝访问,返回403错误(同样在Network面板能看到)。
先从第一条开始排查,因为外部CSS里加style标签是非常常见的错误,解决这个之后再看其他问题~
内容的提问来源于stack exchange,提问作者minty




