ARTICLE · 1224052
飞牛OS在线文档没有中文字体?手把手教你给 OnlyOffice 装上宋体、黑体、等线
用飞牛 NAS 办公的朋友都遇到过:打开一份 Word 文档,正文里的宋体全变成了"不认识的字体",排版稀碎;想在字体下拉里找个"等线",翻到底也没有。
今天就手把手教你把中文字体装进飞牛 OS 的在线文档,并且把我实测踩过的 4 个坑全部标出来,让你一次成功。
一、先搞清楚:飞牛的 OnlyOffice 藏在哪里
很多人第一反应是去 Docker 里找 OnlyOffice 容器——找不到。
飞牛 OS 的「文档」应用(trim.docs)是官方原生部署的 OnlyOffice DocumentServer,不跑在 Docker 里。它的关键位置:
/vol1/@appmeta/trim.docs/documentserver/ | |
/var/apps/trim.docs/cmd/main | |
trim-docs-docservicetrim-docs-fileconverter | |
/usr/share/fonts/truetype/custom/ |
后面所有操作都围绕这几个路径,SSH 登录你的飞牛 NAS 即可(需要能 sudo 的账号)。
二、准备工作:字体文件
把需要的字体(.ttf / .ttc / .otf)准备好,比如公文常用的:
宋体 simsun.ttc、黑体simhei.ttf、楷体simkai.ttf、仿宋simfang.ttf等线 Deng.ttf/Dengb.ttf/Dengl.ttf方正小标宋简体、楷体_GB2312、仿宋_GB2312 等
一个血泪提醒:字体文件本身必须是完好的。如果你的字体是从安卓系统里提取的、或者从不明网站下载的,很可能内部结构已经损坏——这种文件 Windows 和 fontconfig 能"忍",OnlyOffice 会直接拒绝。后面第三大节会讲怎么检查和确认。
三、五步安装法
第 1 步:上传字体并放入系统字体目录
# 把字体 scp 到 NAS 后(假设放在 /tmp/myfonts):sudo mkdir -p /usr/share/fonts/truetype/customsudo cp /tmp/myfonts/*.ttf /tmp/myfonts/*.ttc /usr/share/fonts/truetype/custom/sudo chmod 644 /usr/share/fonts/truetype/custom/*sudo fc-cache -f
如果你是从 Mac 打包的 zip,记得解压时排除
__MACOSX目录,别把垃圾文件传上去。
chmod 644 是让 OnlyOffice 的服务进程有权限读字体文件,别漏了。
验证一下系统是否识别:
fc-list | grep custom
第 2 步:重建字体索引(最关键的一步)
OnlyOffice不直接读系统字体目录,必须用索引生成工具重建字体清单和字体数据。飞牛的应用包里自带了官方命令,直接调用:
cd /var/apps/trim.docs/cmdsudo bash main gen_all_fonts
跑 1~2 分钟,它会一次性生成四样东西:
前端字体清单 sdkjs/common/AllFonts.js转换器字体清单 server/FileConverter/bin/AllFonts.js字体数据 font_selection.binfonts/目录下的编号字体数据文件(编辑器真正渲染用的就是这些)
⚠️ 不要图省事直接手动调
allfontsgen工具。手动调用缺参数,只会更新清单文件而不重建字体数据,编辑器立刻弹"字体未加载"——这个坑我替你踩过了。
第 3 步:重启服务
sudo systemctl restart trim-docs-docservice trim-docs-fileconverter第 4 步:验证
# 确认字体进了索引(以宋体为例)grep -c SimSun /vol1/@appmeta/trim.docs/documentserver/sdkjs/common/AllFonts.js# 确认服务正常systemctl is-active trim-docs-docservice trim-docs-fileconverter
第 5 步:浏览器强制刷新!
这是最后也是最容易被忽略的一步。AllFonts.js 是长缓存静态文件,普通刷新、关掉重开文档都不会重新下载它,你会一直看到旧字体列表。
Windows: Ctrl + Shift + RMac: Cmd + Shift + R
还不行就清除该站点的缓存数据,或者开个隐私窗口测试(隐私窗口不带旧缓存,最适合验证)。
四、我踩过的 4 个坑(血泪实录)
这次实操前后花了好几个小时,把能踩的坑都踩了一遍,全部记录给你:
坑 1:装完了,字体列表里就是没有
服务器日志显示浏览器压根没重新请求 AllFonts.js——纯浏览器缓存问题。强制刷新解决。
坑 2:搜"宋体"搜不到
OnlyOffice 的字体列表只显示字体的英文族名,不显示中文名。对照表收好:
坑 3:弹窗"字体未加载,请与文档服务器管理员联系"
这是索引文件和字体数据文件版本不匹配导致的。原因:只更新了 AllFonts.js 而没有重建 fonts/ 数据文件。用第 2 步的官方命令完整重建即可,它能保证两者同步。
坑 4:某个字体死活不进索引
我把字体拉回本地用 fontTools 解剖,发现文件的 name 表(名称信息)和 cmap 表(字符映射)全部损坏——这是从安卓系统里提取的字体,被工具破坏过。fc-list 之所以能显示它,是 FreeType 的兜底行为:解析失败就直接拿文件名当字体名,极具迷惑性。
校验字体是否完好的方法(任意装了 Python 的机器):
pip install fonttoolspython3 -c ”from fontTools.ttLib import TTFontf = TTFont('Deng.ttf')print({n.toUnicode() for n in f['name'].names if n.nameID == 1})”# 正常的等线会输出 {'DengXian', '等线'}# 损坏的字体会报 'name' table stringOffset incorrect
如果 Windows 复制来的字体也坏,在 Windows 上跑 certutil -hashfile C:\Windows\Fonts\Deng.ttf MD5 算个哈希,和 NAS 上的文件对比,不一样就说明传输过程出了问题,换种方式重传(打包 zip 或 scp 直传)。
五、一键脚本
嫌麻烦?我把整个流程封装成了一键脚本,把字体放进一个目录,一行命令搞定:
sudo bash install-fonts.sh /path/to/字体目录
脚本自动完成:复制字体 → 修正权限 → 刷新缓存 → 备份旧索引 → 官方命令重建 → 重启服务 → 逐字体验证。开源地址见文末。
六、两个后续注意事项
应用升级后要重建:字体文件放在系统目录,升级不会丢;但 trim.docs 应用升级会覆盖文档服务目录,只需重新执行第 2、3 步(重建索引+重启)即可,不用重新传字体。 多用户都要刷新:NAS 上其他使用者的浏览器同样缓存了旧字体列表,装完字体通知大家强制刷新一次。
项目已开源,包含一键安装脚本和完整的 AI Agent Skill(可以让 AI 助手自动帮你装):
GitHub 搜索 fnos-onlyoffice-fonts 即可找到,欢迎 Star 和提 Issue。
觉得有用就点个"在看",转发给同样在用飞牛 NAS 办公的朋友吧~















































































