OnlyOffice中文显示异常(方框、错乱、偏移)主因是服务器缺失中文字体。需挂载字体目录并刷新缓存,或安装ttf-wqy字体包,重建AllFonts.js,启用GENERATE_FONTS环境变量,或直接使用预置中文字体的优化镜像。

如果您在使用OnlyOffice打开中文文档时出现文字显示为方框、项目符号错乱或排版偏移,这通常是由于服务器端缺失对应中文字体所致。以下是多种可立即实施的修复方法:
一、挂载自定义字体目录并刷新字体缓存
该方法通过将本地中文字体文件挂载至容器指定路径,并强制ONLYOFFICE重新扫描与索引字体,确保新字体被识别和注册进AllFonts.js及font_selection.bin。
1、准备包含常用中文字体(如simfang.ttf、simhei.ttf、msyh.ttc、simsun.ttc等)的文件夹,例如/opt/onlyoffice-fonts。
2、停止当前运行的onlyoffice容器:docker stop onlyoffice-docs。
3、以挂载方式重启容器,添加字体目录映射:docker run -d --name onlyoffice-docs -v /opt/onlyoffice-fonts:/usr/share/fonts/truetype/custom -p 9001:80 onlyoffice/documentserver。
4、进入容器执行字体缓存重建:docker exec -it onlyoffice-docs bash -c "cd /usr/bin && python3 ./generate_fonts.sh"。
5、确认字体已加载:docker exec onlyoffice-docs fc-list :lang=zh | grep -i "sim\|microsoft\|fangsong",若返回多行字体信息,则表示成功。
二、直接向容器内安装字体包(适用于临时调试)
该方法绕过挂载机制,在容器运行时手动安装ttf-wqy-zenhei、ttf-wqy-microhei等开源中文字体包,适合快速验证是否为字体缺失导致的问题。
1、进入容器交互终端:docker exec -it onlyoffice-docs bash。
2、更新APT源并安装文泉驿字体:apt-get update && apt-get install -y ttf-wqy-zenhei ttf-wqy-microhei。
3、手动触发字体缓存重建:fc-cache -fv。
4、重启onlyoffice服务:supervisorctl restart all。
注意:此操作在容器重启后失效,仅用于诊断;生产环境必须配合挂载或定制镜像使用。
三、替换AllFonts.js并重载字体索引
当挂载字体后仍无法在编辑器下拉菜单中看到新增字体时,说明AllFonts.js未正确更新。该文件是ONLYOFFICE识别字体的“花名册”,需人工介入确保其内容与实际字体库一致。
1、从运行中的容器中导出原始AllFonts.js:docker cp onlyoffice-docs:/usr/share/fonts/AllFonts.js ./AllFonts.js.bak。
构建并调试跨Office自动化流程,实现Word、Excel、PowerPoint之间的内容迁移,使用Open XML、VBA、python-docx、openpyxl、py...
2、使用fc-list --format="%{file} %{family[0]} %{style[0]} %{weight}" :lang=zh获取当前全部中文字体路径与元数据。
3、编写Python脚本生成新的AllFonts.js片段,确保每个字体条目包含family、fullName、path、weight、isBold、isItalic字段。
4、将新生成的AllFonts.js覆盖原文件:docker cp AllFonts.js onlyoffice-docs:/usr/share/fonts/AllFonts.js。
5、重启服务并清除浏览器字体缓存:supervisorctl restart all。
四、启用GENERATE_FONTS环境变量并验证启动日志
ONLYOFFICE 7.2+版本支持通过环境变量控制字体缓存行为。设置GENERATE_FONTS=true可确保每次容器启动时自动执行字体扫描与索引重建,避免因缓存陈旧导致字体不可见。
1、修改docker run命令,加入环境变量参数:-e GENERATE_FONTS=true。
2、启动容器后,实时查看日志确认字体处理流程:docker logs -f onlyoffice-docs | grep -i "font\|generate"。
3、等待日志中出现Font generation completed successfully字样,表明字体索引已完成。
关键提示:若日志中持续出现"Failed to generate font cache",请检查挂载字体目录权限是否为1000:1000且所有.ttf/.otf文件可读。
五、使用预置优化镜像替代官方镜像
该方案直接采用已集成完整中文字体集与解除协作限制的社区增强镜像,规避所有手动配置环节,适合对部署效率与稳定性要求较高的生产环境。
1、拉取经实测兼容性良好的定制镜像:docker pull frost1123/onlyoffice:8.0.1.45。
2、运行新镜像,保持原有端口与卷映射不变:docker run -d --name onlyoffice-prod -v /opt/onlyoffice-data:/var/lib/onlyoffice -v /opt/onlyoffice-fonts:/usr/share/fonts/truetype/custom -p 9001:80 frost1123/onlyoffice:8.0.1.45。
3、访问http://your-server:9001/healthcheck确认服务状态为OK。
4、上传含“微软雅黑”、“仿宋_GB2312”、“楷体”等字体的测试文档,观察是否正常渲染。










