
简介面向Ubuntu系统下WPS办公软件用户的字体补充包主要解决打开文档时提示缺少Symbol、Wingdings、Wingdings 2、Wingdings 3等符号字体的问题。这些字体对特殊符号与图形的排版显示至关重要缺失会导致文档内容显示为问号或空白影响阅读与打印。压缩包共129个文件含128个TrueType字体ttf与1个install.sh安装脚本整体大小58.08MB字体覆盖宋体、Calibri、Malgun、Segoe UI Symbol等常见办公场景所需字符集。通过脚本可自动完成字体部署免去手动逐个安装的繁琐流程适用于个人办公及企业批量部署场景。已有1432人学习下载适合刚在Linux平台迁移办公环境、或需要在WPS中兼容Windows文档样式的用户快速补齐字体短板。1. Ubuntu 下 WPS 报「缺失字体集」不只是弹窗是排版全崩第一次在 Ubuntu 里双击 WPS 打开一个 docx弹窗说“系统缺失字体集”的时候很多人跟我一样选择点“忽略”。忽略之后标题栏里原本的宋体全部变成方框正文里的英文歪歪扭扭表格缩成一团。这个问题的本质不是 WPS 坏了而是文档依赖的字体宋体、黑体、楷体、仿宋、Symbol 这类在 Ubuntu 默认环境里一个都没有。本文从“为什么缺”讲起给出一套把字体集补齐并让 WPS 稳定使用的最小操作路径适合刚迁移 Ubuntu 的办公用户也适合要给公司 Linux 办公机做标准化配置的运维。看完之后你应该能自己跑通从诊断、安装到验证的完整流程。2. 为什么 Ubuntu 上没有「宋体黑体」字体集机制与 WPS 的字体发现路径2.1 WPS 判定「缺失字体集」的机制不是看文件名是看字体族WPS 在 Linux 上通过 fontconfig 找字体而不是直接翻目录。打开文档时它按文档里记录的字体族名去查SimSun、SimHei、KaiTi、FangSong、Times New Roman、Symbol。fontconfig 返回的匹配结果如果没有这些家族WPS 就报缺。这也是为什么你明明装了字体打开文档还是弹窗——你装的是 Noto Serif CJK但文档要的是 SimSun两者不同名。WPS 自己还有一个“字体集”的概念把字体分成中文正文、中文标题、英文、符号等集合。缺失字体集弹窗一般出现在检测到文档引用了当前 fontconfig 里不存在的字体族时。它不只看一个家族名而是看一组比如打开一个中文论文文档要求 SimSun Times New Roman Symbol 三个一起存在。只要其中一个查不到弹窗就会出来。这也是很多人只装了中文字体弹窗依然存在的原因因为 Symbol 还在缺。这里有一个关键点WPS 的“缺失字体集”不等于“系统没有这个字体文件”而是“fontconfig 无法把这个字体族名解析到某个字体文件”。如果你想用开源字体顶替微软字体单纯把 Noto 装上是没用的必须让 fontconfig 把 SimSun 这个名字指到 Noto 上这部分我会在第 4 章展开。2.2 Ubuntu 字体目录与字体缓存WPS 在哪些路径找字体Ubuntu 通过 fontconfig 统一管理字体目录分三层用户级~/.fonts、~/.local/share/fonts系统级/usr/local/share/fonts、/usr/share/fonts应用级WPS 自身安装目录下的字体子目录比如/opt/kingsoft/wps-office附近WPS 会读这些目录但读的是 fontconfig 的缓存不是实时扫描。所以安装字体后必须执行fc-cache -fv刷新而且要把 WPS 完全退出不是关窗口是托盘里也退出再启动否则它用的还是旧缓存。这一条几乎覆盖了 90% 的“我明明装了字体”类问题。如果你把字体放到/usr/share/fonts需要 root 权限而且可能被系统升级覆盖。我一般优先放用户目录~/.local/share/fonts因为权限问题少迁移配置时直接打包复制即可。WPS 的安装目录里虽然也能放字体但包升级会被还原不建议作为主力目录。2.3 先用 fc-list 和 fc-match 自查你到底缺哪些字体在装任何东西之前先在终端里查一下现状明确缺口避免装了一堆不需要的字体。我一般跑这么几条命令# 1. 查看系统中已有的中文字体 fc-list :langzh | sort # 2. 模拟 WPS 对宋体的查找结果 fc-match SimSun # 3. 模拟 WPS 对黑体的查找结果 fc-match SimHei # 4. 检查 WPS 安装目录里有没有自带字体子目录 ls /opt/kingsoft/wps-office/ 2/dev/null | grep -iE font|fontconfigfc-match的输出是 fontconfig 认为最接近给定名称的字体文件。如果你执行fc-match SimSun返回的是Noto Serif CJK SC说明系统没有真正的 SimSunWPS 拿 Noto 顶替但顶替不代表不报缺。如果返回simsun.ttc说明你已经有宋体后面的问题就在别处。/opt/kingsoft/wps-office是 WPS 默认安装路径如果不存在就用which wps找到可执行文件再反查安装目录。这个自查过程一定要做因为不同发行版预装的字体差别很大。有些 Ubuntu 最小化安装连 fonts-noto-cjk 都没有缺的是一整类有些装了 WPS 的国际版缺的是 Symbol 这类符号字体集。先搞清楚缺什么再决定下一步。2.4 常见缺失字体族与开源替身对照文档中记录的字体族对应 Windows 字体文件开源替身备注SimSunsimsun.ttcNoto Serif CJK SC宋体最常缺SimHeisimhei.ttfNoto Sans CJK SC黑体KaiTisimkai.ttfAR PL UKai CN楷体FangSongsimfang.ttfAR PL UMing CN仿宋Times New Romantimes.ttfLiberation Serif西文衬线Arialarial.ttfLiberation Sans西文无衬线Symbolsymbol.ttf无直接替身必须复制微软专用字体注意表格里的“开源替身”不是自动生效的。你装了 Noto 之后fontconfig 不会自作主张把 SimSun 映射到 Noto这需要你手动配置否则 WPS 还是认为缺。这也是标题里“字体集”三个字最容易踩的坑很多人以为装上字体文件就结束了实际上还差一个“指路”的过程。3. 补全字体集实操两条主流路线与具体命令3.1 路线一全开源方案用思源/文泉驿加 fontconfig 替换这是我最推荐的日常办公方案。开源字体没有版权负担apt 安装零失误更新也方便。sudo apt update sudo apt install -y fonts-noto-cjk fonts-noto-cjk-extra fonts-wqy-zenhei fonts-wqy-microhei fc-cache -fvfonts-noto-cjk包含思源宋体和黑体即 Noto Serif CJK SC 与 Noto Sans CJK SC覆盖简繁日韩字重完整fonts-noto-cjk-extra补全更多字重文泉驿正黑和微米黑是老牌中文字体在低分辨率屏幕上更锐利。装完必须执行fc-cache -fv刷新缓存。这时你再跑fc-list :langzh应该能看到几十条中文字体记录。但这一步做完WPS 依旧会报缺 SimSun。因为 Noto 的 family 不叫 SimSunWPS 不认。你需要继续做第 4 章的 fontconfig 别名把 SimSun、SimHei 这些名字指到 Noto 上。如果你只想要系统级兜底可以直接用下面的配置一步到位这个我在第 4 章详细展开。3.2 路线二从 Windows 提取微软字体还原客户文档原貌如果你经常要打开客户发来的 docx里面有大量用宋体、黑体、仿宋排版的公文开源替身的观感还是有细微差异。常见做法是从一台 Windows 机器或 Office 安装介质里提取字体文件复制过来。从 Windows 系统的C:\Windows\Fonts提取时需要 simsun.ttc、simhei.ttf、simkai.ttf、simfang.ttf、simyou.ttf西文需要 times.ttf、arial.ttf、cour.ttf、symbol.ttf。在 Ubuntu 终端里如果双系统挂载了 Windows 分区可以这样mkdir -p ~/.local/share/fonts/windows cp /media/you/Windows/Windows/Fonts/{simsun.ttc,simhei.ttf,simkai.ttf,simfang.ttf,times.ttf,arial.ttf,symbol.ttf} ~/.local/share/fonts/windows/ fc-cache -fv注意/media/you/Windows是挂载点不同机器路径不同用lsblk查看分区名。复制后执行fc-list :langzh | grep -iE simsun|simhei验证。要特别说明微软字体有 EULA 限制个人办公或公司内网使用没问题但不能随你的 Linux 发行版重新分发。如果你的业务对外分发镜像建议用路线一。如果你没有 Windows 分区也可以从一台旧电脑的 Office 安装目录里找或者找公司 IT 要一个字体包。比较麻烦的是 simsun.ttc 这种 TTC 合集有些版本的 WPS 不认详见第 5 章避坑。3.3 路线三WPS 官方的字体集压缩包专治 SymbolWPS 在 Linux 上的历史版本里很多缺的不是中文字体而是 Symbol、MT Extra、Wingdings 这类符号字体。WPS 官方发布页或社区里流传着一个叫wps_symbol_fonts.zip的补充包解压后包含 mtextra.ttf、symbol.ttf、wingding.ttf、webdings.ttf 等。下载后放到用户字体目录unzip wps_symbol_fonts.zip -d ~/.local/share/fonts/wps-symbol fc-cache -fv fc-match Symbol这一步需要你自己在可信来源找这个包不同版本内容略有差异。下载后最好用fc-scan看一下内部字体族名确认是 Symbol 而不是别的。fc-match Symbol返回symbol.ttf就说明成功了。如果没有官方包直接从 Windows 的 Fonts 目录拷 symbol.ttf效果一样。除了 SymbolWPS 公式中还会用到 MT Extra这个字体在开源世界里几乎没有等价物。如果你的工作经常处理论文、试卷、数学公式建议直接走路线二把 Windows 的符号字体一次性补齐。3.4 优先级说明WPS 自带目录、用户目录、系统目录怎么选有朋友问过我为什么把字体放在/usr/share/fonts后 WPS 不认放在~/.local/share/fonts就认了。这和目录权限、fontconfig 配置有关。对于没有 root 权限的办公环境我一般优先用用户级目录因为不用 sudo也不影响系统其他用户。如果 WPS 是自己用 apt 装的装在/opt/kingsoft/wps-office它自身带了字体目录你也可以复制进去但包一旦升级就可能被还原维护成本高。一个比较稳的做法是把字体放用户目录把配置放 fontconfig 的用户配置目录这样整个~/.fonts和~/.config/fontconfig可以打包带到新机器。公司批量部署时用 Ansible 或 rsync 把这几个目录推下去一台机器五分钟配完。4. 配置 WPS 字体替换让宋体黑体「落到」Noto 上4.1 在 WPS 的弹窗里手动替换并保存WPS 打开一个有缺字文档时弹窗里通常有“替换字体”或“定义替换字体”入口。以常见版本为例在弹窗中把 SimSun 替换为 Noto Serif CJK SC把 SimHei 替换为 Noto Sans CJK SC然后勾选“总是替换”。WPS 会把这份映射写入用户配置文件。这个做法最直观但有两个问题一是每台机器要手动操作一遍二是某些版本不保存设置重启后打回原形。所以我不把它当唯一方案。它更适合临时应急比如你只是要把一份合同打印出来不想动系统配置。在 WPS 设置里也能找到“字体替换”的入口有些版本叫“字体集设置”。如果你打开的文档没有弹窗可以手动添加映射。注意 WPS 的替换规则是“源字体名 → 目标字体名”目标字体必须是系统里已经存在的 family 名否则替换无效。4.2 用 fontconfig 做全局别名一次配置所有软件生效与其依赖 WPS 自己的记忆不如让 fontconfig 直接把 SimSun 这个名字解析到你想要的字体。这样 WPS、LibreOffice、浏览器里所有要宋体的地方都走同一规则。创建或修改~/.config/fontconfig/fonts.conf?xml version1.0? !DOCTYPE fontconfig SYSTEM fonts.dtd fontconfig dir~/.local/share/fonts/dir alias familySimSun/family preferfamilyNoto Serif CJK SC/family/prefer /alias alias familySimHei/family preferfamilyNoto Sans CJK SC/family/prefer /alias alias familyKaiTi/family preferfamilyAR PL UKai CN/family/prefer /alias alias familyFangSong/family preferfamilyAR PL UMing CN/family/prefer /alias alias familyTimes New Roman/family preferfamilyLiberation Serif/family/prefer /alias /fontconfig保存后执行fc-cache -fv然后fc-match SimSun如果输出变成Noto Serif CJK SC说明映射生效。这里dir显式指定用户字体目录防止权限问题导致读不到。prefer表示优先使用该字体但不强制覆盖如果你希望任何直接请求 SimSun 的进程都只能用 Noto可以用accept或edit模式但在 WPS 场景下 prefer 够用。注意这个方案替代的是“弹窗里点替换”的操作它不能完全阻止 WPS 报“缺失字体集”。因为 WPS 检查的是“是否存在同名字体族”别名改的是查找结果。有些版本会在启动时先做一次严格检查别名不满足它解决办法是保留 WPS 弹窗中的替换规则作为第二层保障。我实际用下来先做 fontconfig 别名再去弹窗里把同样的映射点一遍之后基本就再不弹了。4.3 针对 WPS 启动脚本注入 fontconfig 路径如果你的用户目录配置没有生效可以在 WPS 启动脚本里强制指定 fontconfig 配置。常见做法是修改/usr/bin/wps或者桌面文件里的 Exec 行增加环境变量FONTCONFIG_FILEFONTCONFIG_FILE$HOME/.config/fontconfig/fonts.conf /opt/kingsoft/wps-office/office6/wps %U或者在用户环境变量里加echo export FONTCONFIG_FILE~/.config/fontconfig/fonts.conf ~/.bashrc这个做法的好处是不管 WPS 的 UI 层怎么判断底层字体的解析都会落到我们指定的别名上。缺点是不适用于 snap 版 WPS因为 snap 对用户主目录的访问受限。如果你用的是 deb 包安装这个方法非常可靠。4.4 替换规则的优先级真字体 别名 WPS 内替换如果你能拿到真正的微软字体文件并放在字体目录里那就不需要任何替换直接安装优先级最高。如果不想碰版权就用 fontconfig 别名。如果公司运维要求统一就结合 WPS 弹窗里的保存设置。我的建议是优先安装真字体其次 fontconfig 别名WPS 内替换作为兜底。避免三套规则同时生效且互相矛盾那样排查起来很头疼。还有一个细节WPS 的某些版本会读取自己的注册表文件把字体替换规则放在~/AppData类似位置。在 Linux 下对应~/.config/Kingsoft/Office.conf之类。如果你想批量下发可以把这个文件一起分发效果等同于手动勾选“总是替换”。5. WPS 缺失字体集避坑与排查五个真实翻车点5.1 装了 Noto 和文泉驿WPS 仍提示缺 Symbol 字体集现象中文字体恢复了弹窗还是提示缺失字体集而且打开公式、项目符号时显示方框。 原因WPS 的公式和符号区引用了 Symbol、MT Extra 这类专有符号字体Noto CJK 根本不包含。 解决下载wps_symbol_fonts.zip或从 Windows 拷 symbol.ttf、mtextra.ttf放置到字体目录。验证fc-match Symbol fc-match MT Extra如果两个都返回对应文件弹窗应该消失。注意 symbol.ttf 的 family 名是 Symbol不要在别名里把它改成别的否则公式渲染会出问题。5.2 复制 simsun.ttc 后 fc-list 里看不到它现象Windows 宋体文件复制到了~/.local/share/fonts/windows/但fc-list没有输出WPS 也不认。 原因TTC 是多个字体打成一个包fontconfig 依赖系统的 freetype 库解析。如果复制时文件不完整或者路径带中文解析就会失败。还有可能是文件名被 shell 转义错误。 解决先用fc-scan看能否识别fc-scan ~/.local/share/fonts/windows/simsun.ttc | head -30如果报错用 FontForge 把 simsun.ttc 拆成单个 ttffontforge -c open(simsun.ttc); generate(simsun.ttf)这个方式可以解决 WPS 对 TTC 支持的怪癖。注意拆出来后字体体积会变大但换来的是兼容性值得。拆完再执行fc-cache -fv。5.3 屏幕显示正常导出 PDF 后还是方块现象WPS 界面里看得清清楚楚导出 PDF 后用阅读器打开标题变成空框。 原因WPS 导出 PDF 时按文档原始字体名嵌入。如果你的替换是通过别名实现的PDF 导出模块可能不读别名直接按 SimSun 去系统里找真字体找不到就不嵌入。 解决在 WPS 导出 PDF 对话框中勾选“嵌入字体”或者先另存为 docx用 LibreOffice 导出 PDFLibreOffice 的字体替换更透明。我自己测试下来WPS 的导出引擎对别名支持不佳最终方案是把字体集真正装上而不是只做别名。5.4 换了新字体后 WPS 工具栏和菜单字体变乱现象字体补全成功但 WPS 界面本身的中文字体变得小而发虚菜单错位。 原因WPS 界面的默认字体也受 fontconfig 影响。当你把 SimSun 映射成 Noto Serif 后WPS UI 的默认字体可能被调度到了不合适的 Noto Sans而 WPS 对 UI 字号有自己的单位导致渲染异常。 解决在 WPS 设置里把界面字体从“跟随系统”改成固定指定字体比如 Noto Sans CJK SC。如果仍然乱重启 WPS 或注销一次会话。注意不要同时映射 Microsoft YaHei 到 Noto否则 UI 的默认字体变化更大。5.5 自动安装字体包后需要重启 X 会话现象所有命令都执行成功fc-match也正常但 WPS 打开新文档还是报缺。 原因fontconfig 缓存已经刷新但 WPS 进程是从图形会话启动的它持有的 fontconfig 对象还是旧快照。托盘图标还在的时候你杀了主窗口也没用WPS 后台进程会把配置带起来。 解决完整退出 WPSpkill -f wps然后再从桌面图标启动。如果还是不行注销重登一次。这是我排查这类问题最后的大招往往能解决 80% 的“命令都对了但没生效”。6. 用 pdffonts 验证字体集从“看起来正常”到“导出也正常”6.1 检查 PDF 里真实嵌入的字体前面几章解决了安装和替换但最终判断字体集是否真的补完要看导出 PDF 后嵌入的字体名单。我用的是系统自带的 pdffonts来自 poppler-utils。先安装sudo apt install -y poppler-utils pdffonts report.pdf输出中每一行代表一种字体name 列是字体内部名emb 列是 yes 或 no。如果 emb 是 no说明该字体没有嵌入换机器打开就会用别的字体顶替。对于缺失字体集问题我们需要看到的是 name 列是 Noto Serif CJK SC而不是 SimSun如果仍有 SimSun 且 emb 为 no说明 WPS 还在按原始文档字体名导出替换没真正落到字体对象里。6.2 一条命令验证常见字体族是否齐活我习惯把这些检查写成一个脚本放到~/bin新机器装完先跑一遍#!/bin/bash # fontcheck.sh - 快速检查 WPS 常用字体族是否可用 for f in SimSun SimHei KaiTi FangSong Symbol Times New Roman; do result$(fc-match $f) echo $f - $result done if [ -f $1 ]; then echo --- PDF 字体嵌入状态 --- pdffonts $1 fi脚本用法是fontcheck.sh 某个.pdf可选参数。看到 SimSun 映射到 Noto就知道还得加别名看到 Symbol 缺失就知道要用官方字体包。加参数时还会把 PDF 的嵌入情况带出来一步到位。我现在的习惯是在 Ubuntu 24.04 这种全新系统上装完 WPS 后先执行 fontcheck.sh 把家底摸清再决定走开源替换还是复制微软字体。以前我长时间只装字体不做别名结果每次打开客户文档都要手动点替换后来把 fontconfig 配好翻车次数少了大半。这套流程完整走下来新机器大概十分钟能配完之后很少再需要碰字体配置。希望帮到你。本文还有配套的精品资源点击获取