☰
Ubuntu下WPS字体缺失修复:从fontconfig到字体集完整指南
2026/10/20 4:04:02 网站建设 项目流程

简介:在Ubuntu系统中使用WPS Office时,常因缺少Symbol、Wingdings及Wingdings 2/3等符号字体,打开文档会弹出“系统缺失字体”提示,导致特殊编号、箭头、项目符号等显示为空白方框或问号,影响文档编辑与打印。这份字体集正是针对该问题整理,压缩包内共129个文件,其中128个为TTF字体文件,涵盖Calibri、宋体、Segoe UI Symbol、Malgun等中西文与符号字体,另附1个install.sh安装脚本,整体大小约58MB。这些TTF为标准字体格式,兼容性好,脚本可自动完成字体部署,免去手动逐个添加的麻烦。安装完成后WPS即可正确识别这些字体,文档中的特殊符号、艺术字与列表符可完整呈现,避免出现空白方框或乱码,提升排版质量和阅读体验,确保办公文档的完整性与美观度。已有1442人下载学习,适合Ubuntu平台下希望快速修复WPS字体缺失问题的办公用户直接使用。

1. WPS 装完满屏“豆腐块”:Ubuntu 缺失字体集是头号元凶

在 Ubuntu 上装完 WPS 软件,第一周通常是最劝退的——不是软件起不来,而是打开同事发来的 docx 时,标题全变成空心方块,或者英文正常、中文全没了。我第一次遇到时还以为是显卡驱动或者 locale 出了问题,折腾一下午,最后才意识到是缺失字体集:WPS 渲染文档时依赖的宋体、黑体、Times New Roman、Symbol 这些字族,Ubuntu 默认字体体系里一个都对不上。

这个坑在 Ubuntu 上的翻车概率极高,任何用 WPS 打开 Windows 系文档的人都可能撞上。软件的安装本身相对顺利,真正血泪的是装完之后的字体适配。这篇就按实际部署顺序来:先讲版本差异和缺字体的根源,再讲字体集从哪拿、怎么灌进系统,然后给出踩过的坑和救法,最后落到验证跑通。跟着这套流程走,桌面干干净净,以后换发行版也不再怵它。

2. 别急着抄命令:WPS 版本差异与字体缺失的根源

2.1 为什么 Linux 版 WPS 装完总会缺字体

所有文字渲染异常,本质上都是“字体名找不到”的问题,不是软件坏了。docx 文档里保存的字体名绝大多数是 Office 体系的名字:宋体、黑体、仿宋、楷体、Times New Roman、Arial、Symbol、Wingdings。Linux 的字体匹配完全交给 fontconfig 处理,它拿到一个字族名(family)后,先在已安装字体里精确找,找不到不会当场报错,只会按 fallback 链悄悄选一个“长得接近”的字体替换。

这个机制看起来很温柔,实际上最折腾人。缺字体后的表现通常分三种:一是完全找不回,比如宋体被 fallback 成思源黑体,字形还在但字体气质变了;二是找回来的字体没覆盖需要的字形,符号和特殊字符直接渲染成方块,也就是大家常说的豆腐块;三是字体换对了、字形宽度对不上,中西文混排的行数、段落下滑全乱掉,打开文档跟 Windows 里看到的完全两回事。

WPS 的 Linux 版并不是没意识到这点——安装包里其实带了界面用的字体,在 /opt/kingsoft/wps-office 下的资源目录里,能保证软件按钮和菜单显示正常,但保证不了用户文档里的字体。这就是为什么你装好软件后界面一切正常,一打开别人的 docx 就露馅。我后来把逻辑简化成一句话:界面字体是 WPS 自己的,文档字体是系统的。所以在 Ubuntu 上给 WPS 补字体,本质上是给系统 fontconfig 配齐一套完整的字体集,让最常用的 Windows 字体名都有真实字体文件可以精确匹配。

2.2 安装包差异:官方 deb、第三方源与 rpm 转 deb 的取舍

在补字体之前,先确认自己装的是不是正经版本。Ubuntu 下 WPS 的安装来源常见有三种:官方下载的 deb 包、第三方源或用户仓库里的旧包、以及用 alien 把 rpm 转出来的包。后两种最容易引入问题:第三方源维护滞后,版本老旧,装完的依赖和字体配置跟新系统对不上;alien 转换出来的包,依赖关系写得稀烂,包能装上全靠运气。

首选官方 Linux 版,下载时对准 amd64 的 deb 包。安装拆成两步走:

sudo dpkg -i ./wps-office*.deb sudo apt-get install -f -y

dpkg 负责直接安装 deb 包,但 deb 声明的依赖不会自动补齐;第二句 apt-get install -f 会把缺的依赖自动装上。装完之后先验证一下运行入口是不是真的存在,再往下走:

which wps && dpkg -l | grep -i wps

输出里能看到 wps 可执行文件的绝对路径,dpkg 列出的包名带 wps-office 前缀就说明核心装上了。此刻别急着去打开文档——你大概率会看到第一张豆腐块截图。把后面第 3、4 章的字体集装完再启动,省得反复折腾。

有一个细节值得单独说:有些教程让你装商店里的版本,那个包虽然不是不能用,但字体目录、用户配置的路径和官方 deb 不在同一套体系里,后续你往系统字体目录塞字体,它识别起来更被动。既然目标是写一份字体集排错笔记,统一按“官方 deb + 系统字体目录”这个组合来,后面所有命令照抄就能跑通。

3. 字体集从哪拿:.ttf 格式、目录位置与一份够用的组合

3.1 一套能顶住的字体集至少要覆盖四类字形

先明确一件事:你要的不是一个字体文件,而是一组字体。WPS 打开 docx 时,最常被点名的字族有这四类:

  • 宋体 / SimSun:中文正文的默认选择,也是 fallback 链里最容易丢的一个,几乎所有 docx 都会引用。
  • 黑体 / SimHei、楷体 / KaiTi、仿宋 / FangSong:标题、公文、批注场景,缺失时会被无衬线字体替代,版面感完全不同。
  • Times New Roman、Arial:西文与数字正文,几乎每份文档都要用,缺了它西文直接落到系统默认无衬线字体。
  • Wingdings、Symbol、Webdings:项目符号、勾选框、数学符号,这三类缺了就是实打实的方块和问号。

这套组合覆盖了日常办公文档九成以上的字体名引用。网上能搜到各种打包好的 ttf 字体集资源,我判断一份合不合格只看两条:一是有没有宋体和黑体,二是有没有 Symbol 和 Wingdings。这两条缺一条,装完该是方块的地方还是方块。

获取渠道说点实在的:多数人是从自己 Windows 机器字体目录里拷出来的,文件名往往是 .ttf 或 .ttc,拷出来自用完全没问题,注意别拿去二次分发就行。另一类是直接找现成的 ttf 字体集压缩包,解压后灌进系统就能用。我自己的习惯是攒一份常用字体集存着,换机器、换发行版时直接灌,不用再东找西找。

3.2 全局目录还是用户目录:两个主流位置怎么选

Linux 的字体目录有两个常用位置:一个是系统全局的 /usr/share/fonts 以及它下面的子目录,另一个是用户态 XDG 标准的 ~/.local/share/fonts。WPS 是 Qt 程序,以普通用户身份运行,两个位置它都能扫到,但选择影响不小。

我一般推荐装到全局目录。原因是系统里不只 WPS 一个软件需要字体,LibreOffice、浏览器、命令行工具都会受益;全局目录由 root 统一管理,权限干净,不会出现多用户配置互相覆盖的问题;新装的软件直接就读到同一套字体集。代价是写入时需要 sudo,仅此而已。

用户态目录适合没有 root 权限的办公机器,或者你只想给当前用户补字体。注意别再用 ~/.fonts 这个老目录了,新版 fontconfig 默认扫描的是 ~/.local/share/fonts,老路径已经越来越不被待见——这一点很多人在升级系统后踩坑,我在第 5 章会专门写一条。

还有一个容易被忽略的细节:Windows 字体目录里的文件名可能带着大写、中文甚至空格,但在 Linux 字体配置体系里,fontconfig 认的是字体文件内嵌的 family 信息,跟文件名叫什么没关系。所以复制时不用费心改文件名,把字体文件堆进目标目录即可。

4. 安装与配置:字体灌进系统的每一步拆给你看

4.1 复制字体文件:先解压,再拷贝

字体集下载回来多半是个 zip 包。先别急着往系统目录灌,第一步先把它解压到一个临时目录,看看到底有几个文件、内部有没有子目录。盲拷贝最容易翻车,常见情况是解压出的顶层是一个带名字的文件夹,命令路径写错一次就得重来。

mkdir -p /tmp/wps-fonts unzip -d /tmp/wps-fonts ~/Downloads/字体集.zip ls -la /tmp/wps-fonts

-d 参数指定解压目标目录,避免 zip 里的文件散落当前目录;ls 先看一眼结构,如果里面有嵌套子目录,下面拷贝命令要加 -r 或者用通配符兜底。字体文件数量不多,路径看一眼就能记住,但这步能省下后面十分钟的排查时间。

然后把字体文件放进系统目录。我在 Ubuntu 上惯用的目录是 /usr/share/fonts/truetype/wps,一条命令就能建好并完成复制:

sudo mkdir -p /usr/share/fonts/truetype/wps sudo cp -r /tmp/wps-fonts/*.tt* /usr/share/fonts/truetype/wps/ sudo chown -R root:root /usr/share/fonts/truetype/wps

mkdir -p 创建目录,父目录不存在时一并创建;cp 后面的.tt同时命中 .ttf 和 .ttc 两种字体格式——Windows 的宋体通常就是 .ttc,只写 *.ttf 会漏掉它。最后一步把字体文件属主重置为 root,避免从压缩包解出来的文件带着奇怪用户属性,影响其他账户读取。

提示:如果字体压缩包解出来是中文目录名,终端里 Tab 补全基本能搞定路径;实在不行就把解压目录改成一个纯英文的临时目录,比如 /tmp/wps-fonts。

另外记住,cp 目录时要小心所谓“目录带斜杠”的差异:把源目录写成 /tmp/wps-fonts/ 和 /tmp/wps-fonts 在部分场景下行为不同,但这里用的是通配符展开,所以基本不踩这个雷。

4.2 刷新字体缓存:fc-cache 参数怎么用

字体文件复制完,系统的 fontconfig 还不知情。它维护了一份字体缓存,默认放在 /var/cache/fontconfig,不会实时扫描目录变化。要手动触发一次扫描,命令是:

sudo fc-cache -f -v

-f 是 force,强制重建全部缓存;-v 打开 verbose,把每个被扫描的目录和发现的字体都打印出来。刷新完,输出里应该能看到 /usr/share/fonts/truetype/wps 这个路径,后面跟着缓存的统计信息。如果这一步没看到目标目录,说明字体放的位置不在 fontconfig 默认扫描目录里,回到 3.2 检查目录选型。

如果当时选择装到用户目录,那么这里去掉 sudo 执行,让缓存落到用户自己的缓存文件里。sudo 写出来的缓存属于 root,你以普通用户跑 WPS 时它不会认——这个权限方向的错位也是常见的小坑,方向反了,字体装了等于没装。

一般情况下不需要去改 /etc/fonts/fonts.conf。默认配置里已经包含了 /usr/share/fonts 和用户 fonts 目录的声明,90% 的场景都用不到它;只有你非要把字体放在一个自定义路径时,才需要往 /etc/fonts/local.conf 里加目录声明。

4.3 让 WPS 主动认字:字体替换表的配置方式

系统字体装好只完成一半,WPS 自己还有一套字体匹配逻辑。打开 WPS 文字,在工具栏的字体下拉框里,现在应该能看到宋体、黑体这些名字了。如果下拉框还是旧状态,先把 WPS 彻底退出再重新启动,它启动时会重新扫描系统字体列表。

有些文档里写的是字体别名,或者中文名和英文名混用,可以打开 WPS 的字体替换设置——在文字组件的“工具 → 选项 → 字体替换”里,能看到一个对照表,把文档里的字体名手动映射到系统字体。举个例子,文档里的 NSimSun(新宋体)在系统里有对应的宋体,就手动把前者映射到后者,保存后 WPS 会把这个映射写进用户配置目录,下次打开文档直接套用。

这是比改配置文件更可靠的做法,映射关系由界面写入,不容易把内容写坏。命令行也要跟手验证一下匹配状态:

fc-match SimSun fc-match "Times New Roman"

第一条应该输出一个实际的 .ttc 或 .ttf 路径,比如 /usr/share/fonts/truetype/wps/simsun.ttc;第二条同理。如果输出是 Noto Sans CJK 之类的系统默认字体路径,说明匹配链没走对,回到 4.2 确认字体缓存是否真的刷到了。

注意:WPS 字体下拉框和系统字体缓存不是实时同步的,刚装完字体后记得完全退出 WPS 再启动,不要只关窗口。

5. 避坑:字体装完还是乱,五个最容易翻车的点

5.1 字体装了、fc-list 也能看到,打开 WPS 依然豆腐块

现象:fc-list 里明确列出了 SimSun、SimHei,但 WPS 里选宋体,渲染出来还是方块。

原因:WPS 是 Qt 程序,启动时已经把字体表读进内存了。你放字体、刷缓存时 WPS 还在运行,它不会感知系统字体变化,必须重启进程才有效。很多人只关了主窗口,托盘区还挂着后台进程,于是“重启”跟没重启一样。

解决:先把 WPS 相关进程全部关掉:

pkill -f wps

执行前记得保存正在编辑的文档。之后再重新打开 WPS,字体基本就正常了。如果还不行,检查字体下拉框里到底有没有那个字族名——没有名字说明字体没被系统登记,回到第 4 章核对复制路径和缓存刷新。

5.2 正文正常,项目符号和特殊符号变成问号或方框

现象:正文文字显示正常,文档里的项目符号、复选框、数学符号全变成 □ 或 ?。

原因:这些符号不在这套中文字体里,引用的是 Symbol、Wingdings 这类符号字体。系统里没有这套字体时,fontconfig 尝试用中文字体兜底,中文字体又恰恰没收录这些码位,于是渲染成占位符。

解决:检查自己的字体集里有没有 symbol.ttf、wingding.ttf,没有就补上。装好后用一条命令验证:

fc-match Wingdings

输出必须是真实路径。如果输出的是 fallback 的提示,说明符号字体没进缓存,或者文件没放对地方。换字体集时也要优先保证符号字体齐全,这是最容易漏的一项。

5.3 字体能显示了,但版面串行、行数不对

现象:宋体字能正常渲染,但同一段文字在 WPS 里比 Windows 端多了几行,或者段落到处错位。

原因:fallback 链把宋体替换成了 Noto Sans CJK 这类无衬线字体,字形可读但字宽跟宋体差异很大,每行容纳的字数变了,整个版面连锁崩掉。这是“能显示但不精确”的典型场景,比豆腐块更隐蔽。

解决:验证要精确到“字族 + 语言”的匹配,不能只看 fc-list 里有没有名字:

fc-match "SimSun:lang=zh-cn"

输出必须落到宋体文件,而不是其它中文字体。另外,在 WPS 的字体替换表里把文档常用字体显式锁定到系统对应字体,让文档直接走精确匹配、绕开 fallback 链。这个坑我踩过好几次,以为字体“有了就行”,结果打开长期维护的合同,版面全不一样。

5.4 字体放进 ~/.fonts,重启后被系统无视

现象:按照老教程把字体放到了 ~/.fonts,当时 fc-list 能看到,重启或重新登录后,新文档又变回方块。

原因:较新版本的 fontconfig 把用户目录默认扫描位置指向 ~/.local/share/fonts,~/.fonts 在很多新环境里不再参与默认扫描,或者缓存文件路径对不上。

解决:把字体移到标准用户目录:

mkdir -p ~/.local/share/fonts mv ~/.fonts/*.tt* ~/.local/share/fonts/ fc-cache -f

移完可以顺手删掉空的 ~/.fonts 目录。现在我配置新机器时,直接写 ~/.local/share/fonts 的完整路径,不再用简写,省得以后升级系统再翻车。

5.5 字体文件权限不对,其他用户打开 WPS 还是缺字体

现象:root 用户下 fc-list 能看到全部字体,切换到普通用户跑 WPS,字体又变方块。

原因:很多字体压缩包解压后的文件权限五花八门,如果只复制给了当前用户而其他用户没有读权限,fontconfig 扫描时会把无权限的文件跳过,普通用户进程自然读不到。

解决:统一重置目录权限:

sudo chmod -R 644 /usr/share/fonts/truetype/wps/* sudo chmod 755 /usr/share/fonts/truetype/wps sudo fc-cache -f

644 保证文件可读,755 保证目录可进入。字体是只读资源,不需要执行权限。这一步做完,多用户登录同一台机器,字体表现才一致。

6. 验证跑通:三行命令加一份测试文档,装没装好当场见分晓

6.1 用 fc-list 验证字体族完整性

fc-list :lang=zh family | sort

输出会列出所有支持中文的字族名称,重点找 SimSun、SimHei、KaiTi、FangSong。这一条只证明字体进了系统库,还不代表 WPS 一定能按文档需求匹配上,所以还要走第二步。

6.2 用 fc-match 验证替换链指向

fc-match SimSun fc-match "Times New Roman" fc-match Wingdings

三条输出都应该指向真实存在的字体文件,而不是 Noto 或 DejaVu 的兜底路径。这是整个流程里最值得依赖的检查手段:fc-list 验证“有没有”,fc-match 验证“匹配到哪”,后者直接对应文档渲染质量。

6.3 一份测试文档的完整验收动作

打开 WPS 文字,新建文档:输入一段中文,设置宋体;再插入一个项目符号列表;西文输入几个单词设为 Times New Roman。确认显示正常后,导出 PDF,检查行数、项目符号和特殊字符是否跟编辑视图一致。这一步能同时确认 WPS 的字体替换配置是否真的写进了用户配置。

从那以后,每次换电脑装完 WPS,我都强制走一遍这三条命令加一份测试文档,确认 fc-match 全绿才把环境交付出去。过去那个“装完就完事,打开文档才发现满屏方块”的教训不再重复。这套流程也适用于其它带有字体依赖的 Linux 软件,希望帮到你。

本文还有配套的精品资源,点击获取

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询