如何解决火狐浏览器在Linux环境下字体乱码的问题?
火狐浏览器在Linux环境下打开中文网页时显示方块、问号或错位符号,根本原因是系统缺少可用的中文字体或字体回退链断裂,不是单纯切换编码就能解决的问题。核心步骤其实就三个:确认locale、装对字体、修回退配置。下面一步步拆开说。

确认系统是否已启用中文语言环境
先打开终端跑一句 locale,看看输出。如果LANG那一行显示的是 C 或者 en_US.UTF-8,那就说明系统压根没激活中文支持——这时候哪怕把十几种中文字体都装进去,火狐也懒得搭理它们。
接下来根据发行版处理:Ubuntu/Debian 用 sudo locale-gen zh_CN.UTF-8 生成中文locale,然后 sudo localectl set-locale LANG=zh_CN.UTF-8(systemd系统)或者直接编辑 /etc/default/locale,写入 LANG="zh_CN.UTF-8"。这一步做完,
必须重启终端或重新登录用户会话
安装基础中文字体包
装字体这件事,根据发行版选对包就行。
Ubuntu/Debian
sudo apt update && sudo apt install fonts-wqy-zenhei。文泉驿正黑开源、兼容性好,覆盖绝大多数简体中文字符。
Fedora/RHEL/CentOS
sudo dnf install google-noto-sans-cjk-fonts。Noto Sans CJK由Google维护,字形更现代,对Emoji和扩展汉字支持更强。
如果是偏执型玩家,想上Windows字体(仅限可信来源),可以把 simhei.ttf、simfang.ttf 这类字体复制到 /usr/share/fonts/truetype/,然后依次 sudo mkfontscale → sudo mkfontdir → sudo fc-cache -fv 刷新字体缓存。不过说真的,文泉驿或Noto已经足够日常用了。
修复字体回退配置
字体装上了,locale也设好了,但打开网页还是方块?多半是Fontconfig的回退顺序没调对。
第一步先验证系统是否认出了中文字体:跑 fc-list :lang=zh。如果输出为空,说明字体没被Fontconfig识别,那就先 sudo fc-cache -fv 强制重建缓存。
最关键的一步:打开 /etc/fonts/conf.d/49-sansserif.conf,找到 那一行,在它内部的 标签里插入你喜欢的中文字体名,比如 WenQuanYi Zen Hei 或 Noto Sans CJK SC。注意顺序——正确写法是 。如果把中文字体写在最前面,英文会强行用中文字体渲染,字母变形得没法看。
调整火狐浏览器字体设置
最后一步进火狐内部调整。地址栏输入 about:config,搜索 font.name.sans-serif.zh-CN,双击修改值为 WenQuanYi Zen Hei, Noto Sans CJK SC, sans-serif。再搜 font.name.serif.zh-CN,设为 WenQuanYi Zen Hei, Noto Sans CJK SC, serif。
还有一个容易忽略的开关:搜索 browser.display.use_document_fonts,将其设为 false。很多网站指定的字体在Linux下根本不存在,强制禁用这个选项等于从源头掐断乱码。做完这些,重启浏览器,中文方块应该就变成正常文字了。