有些人拿到银河麒麟系统之后,第一件事就是装WPS Office,结果打开文档发现字体不对:要么中文字体全是宋体一种,要么标题该用黑体显示成楷体,更常见的是从Windows拷贝过来的文档,打开以后仿宋、小标宋全部变成默认字体,排版直接乱掉。这问题十有八九不是WPS坏了,而是系统里压根没装那些字体。
这篇文章就围绕“银河麒麟系统 + WPS Office 安装字体”这件事,把原理、步骤、坑一次性讲透。我自己在银河麒麟V10桌面版和服务器版上都折腾过好几轮,ARM架构和x86架构都试过,踩过的坑不少,把能直接用的经验整理出来,给正在做国产化替代或者日常办公迁移的朋友做个参考。
1. 先搞清楚字体为什么“装不上”
很多人第一次在麒麟系统上装字体,习惯性去双击字体文件,结果发现根本不像Windows那样弹出一个“安装”按钮,或者点了安装之后WPS里还是找不到。这个现象背后的原因,得从Linux系统的字体管理机制说起。
1.1 银河麒麟、WPS和字体三者是什么关系
银河麒麟是基于Linux内核的国产操作系统,底层用的是fontconfig来管理字体。WPS Office本身不直接读某个文件夹里的所有字体,而是通过fontconfig提供的字体列表来渲染文字。所以你在系统里装了字体,WPS不一定立刻认识它,得让系统的字体缓存刷新之后,WPS才能看到。
换个生活化的类比:fontconfig就像一个图书馆的图书管理系统,系统里每个字体文件相当于一本书,字体缓存就是书的索引目录。你往图书馆里塞了一本新书,但索引目录没更新,读者来查还是查不到。WPS就是那个读者,它永远只查索引,不自己翻书架。
所以“装字体”这个操作,实际上包含了两个动作:把字体文件放到系统指定的目录,然后刷新字体缓存,把新字体登记进索引里。缺了任何一个环节,WPS里都看不到新字体。
1.2 字体文件该放到哪里,各有什么讲究
Linux系统里字体能放的地方有好几个,但麒麟系统下常用的就两个:
- 系统级目录:
/usr/share/fonts/,所有用户都能用,需要root权限,适合给整台机器装字体。 - 用户级目录:
~/.local/share/fonts/,只对当前用户有效,不需要root权限,适合没有管理员权限的场景。
我个人的习惯是优先用系统级目录,因为办公环境下WPS一般是用普通账号跑的,但打印服务、其他桌面应用如果也要用字体,放用户目录就覆盖不到。而且很多公司做国产化替换的时候,机器是统一下发的,用系统级目录更利于后续批量分发和维护。
还有一个隐藏目录也值得提一下:~/.fonts。这个目录在部分老版本麒麟系统上仍然被支持,但官方已经不建议用了,因为fontconfig的新版本会把它的优先级排得很低,放到这里可能不被识别,或者识别了但WPS不优先使用。我实测过在银河麒麟V10 SP1版本上,~/.fonts里的字体会出现“WPS偶尔能看到、偶尔看不到”的问题,后来全部迁移到/usr/share/fonts下面才稳定。
1.3 字体文件的几种格式,哪些能用
Windows下常见的字体格式有ttf、ttc、otf,还有老一点fnt。Linux下fontconfig对ttf和otf的支持是最好的,ttc也就是TrueType字体集合也能识别,但要注意一点:ttc文件里可能打包了多个字体,比如“宋体”和“新宋体”在同一个ttc里,WPS能不能正确区分,取决于字体本身有没有正确的内部元数据。
less常见的情况是有人拿了一套Windows下的字体文件直接拷到麒麟上,结果发现otf格式的字体装不上。这个得分开说:
- otf格式本身没问题,fontconfig完全支持,问题是部分从Adobe或特殊渠道弄到的otf字体用的是PostScript轮廓,而系统里缺少对应的解析模块,或者字体的权限不对,root能读、普通用户读不了。
- 遇到这种情况,先别怀疑格式,先看权限——
chmod 644是最基本的,文件所有者是root也没关系,只要其他用户有读权限就行。
我见过不少人在这上面卡很久,其实是文件从Windows拷贝过来之后,权限位是600,只有属主能读,WPS跑在普通用户下自然读不到,就感觉“装了字体但没装上”。
2. 装字体前的准备工作,别急着复制粘贴
很多人拿到字体包,直接Ctrl+C、Ctrl+V就往/usr/share/fonts里丢,然后发现权限不够,再sudo一下,觉得完事了。其实还差几步,这几步决定了你后面会不会返工。
2.1 确认系统版本和架构,决定你从哪里找字体
银河麒麟系统分桌面版和服务器版,还分ARM和x86版本,这两点直接影响字体安装的细节。桌面版一般带图形化文件管理器,双击字体文件会调用系统自带的字体查看器,安装逻辑还算友好;服务器版往往装了最小化环境,连图形界面都没有,只能走命令行。
架构的影响就更实际了。x86版麒麟系统的很多字体包可以从Debian/Ubuntu的源里拿,字体本身和架构无关,.deb里的字体文件拷出来就能用。ARM架构这边,部分第三方字体包的依赖关系会有问题,尤其是一些老的deb包内置了x86版的可执行文件作为后安装脚本,这在ARM机器上会直接报错。所以我自己的建议是:字体一律用纯字体文件拷贝的方式,不依赖安装包,这样两个架构通用。
查看系统和架构的几条命令,收好:
# 查看系统版本 cat /etc/os-release # 查看系统架构 uname -m # 查看桌面环境(知道你用的是麒麟自研界面还是其他) echo $XDG_CURRENT_DESKTOPx86_64对应x86版本,aarch64对应ARM版本。这个是后面所有操作的前提,先做这个检查,别装到一半发现下载错了源。
2.2 字体目录的准备和权限设置
我把手动装字体的标准目录固定为/usr/share/fonts/custom,原因后面说。先按这个思路把目录建好:
sudo mkdir -p /usr/share/fonts/custom为什么要单开一个custom目录,而不是直接丢进/usr/share/fonts/truetype?因为truetype下已经有系统自带的字体,全混在一起容易搞混。你不知道哪个是自己装的,哪个是系统带的,后期要卸载的时候特别痛苦。单独一个custom目录,管理起来一目了然。
权限方面,给目录设置755,字体文件设置644:
sudo chmod 755 /usr/share/fonts/custom sudo chmod 644 /usr/share/fonts/custom/*这里有一个容易踩的坑:如果字体文件本身是Win下压缩包解出来的,经常带着奇怪的扩展名,比如.TTF、.TTc、.otf全大写。Linux对大小写敏感,fontconfig虽然能识别大写的.TTF,但个别老版本会漏掉,建议统一改成小写扩展名。
2.3 字体文件的来源,别乱用不明渠道的
字体文件本身就是可执行代码的载体,虽然大多数字体是纯轮廓数据,但解析不当也是有可能触发系统级漏洞的(这类问题在图形渲染上不是什么新鲜事)。所以字体文件最好从官方渠道获取,比如:
- 系统自带字体备份(从同型号的Windows机器或系统镜像里提取)。
- 购买正版字库后从官方下载。
- 开源字库,比如思源黑体、思源宋体,文泉驿系列。
没有可靠来源的字体文件,别为了省事随便从下载站拿,尤其是那些打着“破解字体全家桶”旗号的包,里面有什么谁也不知道。这个安全意识值得有。
3. 三种最常用的字体安装方式,按场景选
3.1 图形界面双击安装,适合临时应急
银河麒麟桌面版自带的字体查看器做得还可以,双击字体文件就能预览。预览窗口打开后,界面里通常带一个“安装”按钮,点击后系统自动把字体复制到用户字体目录,并且自动刷新缓存。
这个方式的优点是简单,缺点同样明显:
- 装到的是用户级目录,换一个账号登录就看不到了。
- 部分精简版麒麟系统没带这个图形工具,双击只会弹出文本编辑器或者啥反应都没有。
- WPS如果正在运行,装完刷新不及时,需要重启WPS才能看到。
所以我一般只在帮同事临时看一个字体效果时用这种方式,真正要长期用的,都用命令行。
3.2 命令行安装到系统目录,最推荐的方式
这是我最常用、也建议大家都掌握的方式,因为它稳定、可控、适合批量操作。
先建好目录,再拷贝字体文件,然后重建缓存:
# 1. 建目录 sudo mkdir -p /usr/share/fonts/custom # 2. 拷贝字体文件(以当前目录下的fonts文件夹为例) sudo cp ./fonts/*.ttf ./fonts/*.TTF ./fonts/*.otf ./fonts/*.ttc /usr/share/fonts/custom/ 2>/dev/null; true # 3. 修改权限 sudo chmod 644 /usr/share/fonts/custom/* # 4. 刷新字体缓存 sudo fc-cache -fvfc-cache -fv这步是关键,刷完之后可以用命令验证字体是否被系统识别:
fc-list | grep -i "仿宋" fc-list :lang=zh如果fc-list能看到对应字体,系统层面就OK了,接下来打开WPS,字体列表里如果没有,那就是WPS自己的缓存问题,后面专门讲。
有几点实操提醒:
fc-cache -fv里的-f代表强制刷新,-v是显示详细过程。不加-f的时候,如果系统认为字体目录没变化,可能会跳过重建,造成“明明文件拷进去了,但字体列表没更新”。- 拷贝时用了
2>/dev/null,因为可能目录里没有otf或ttc文件,Shell会报一个不存在的通配符错误,这不影响其他文件的拷贝,但会把没经验的用户吓一跳。 - 有的教程会让你先跑
mkfontscale和mkfontdir,这两个命令生成字体索引文件,在老X11时代是必须的,现在的fontconfig已经不需要了。麒麟V10上跑不跑都不影响,所以不用纠结。
3.3 用户目录安装,没有sudo权限时的备选
遇到策略限制,没有sudo权限,或者只是临时测试某个字体,就用用户级目录:
# 建用户字体目录 mkdir -p ~/.local/share/fonts # 拷贝字体 cp ./fonts/* /home/你的用户名/.local/share/fonts/ # 刷新缓存 fc-cache -fv ~/.local/share/fonts这种装法只对当前用户生效,WPS里能看到,打印服务也能用。但如果系统里跑着需要字体的守护进程或共享服务,那个服务是其他用户身份跑的,就看不到这字体。
有一个典型场景:公司部署了基于CUPS的共享打印服务器,用户在麒麟客户端上用WPS排版,打印服务在服务器端,字体装在客户端用户目录里,结果打印出来字体不对。这种情况只能把字体装到服务器的系统目录里,或者客户端用系统级目录安装。
3.4 安装之后怎么确认字体真的生效了
别急着开心,装完字体后先跑两条命令验证一下,比直接打开WPS试更高效:
# 1. 确认字体已经被fontconfig索引 fc-list | grep -i "字体名称关键词" > /dev/null && echo "字体存在" || echo "字体不存在" # 2. 查看字体详情,确认样式没有丢失 fc-list | grep -i "仿宋"比如装了仿宋_GB2312,fc-list里会显示类似FangSong_GB2312, 仿宋_GB2312这样的信息。如果显示出来的名称不对,或者只有一个英文名没有中文名,说明字体文件本身有问题,或者内部名称信息缺失。这种字体即使WPS识别了,用起来也别扭,因为你在WPS里看到的名字可能是一串乱码。
还有一种情况,fc-list里能看到两个同名但格式不同的字体,比如“仿宋”和“仿宋_GB2312”,实际是同一个字体家族的变体,WPS里会分开显示,用户容易混淆。这种一般不管它,用的时候注意选对即可。
4. WPS Office字体设置与公文字体实战
系统层面字体装好了,WPS里还是看不到,或者显示不对,这一步就要处理WPS自己那一套字体逻辑。
4.1 WPS的字体缓存,装完字体后要清一下
WPS和很多大型办公软件一样,有自己的字体缓存机制。WPS第一次启动时扫描系统字体并生成一个缓存文件,之后每次启动都优先读缓存,不重新扫描。这就是为什么你系统里装好了字体,WPS还是要重启,甚至重启都没用。
按照我踩坑的教训,WPS安装新字体后,按下面这个顺序做,成功率最高:
# 1. 完全退出WPS,包括WPS进程和后台驻留的wpscloudsvr killall wps wpp et 2>/dev/null; true killall wpscloudsvr 2>/dev/null; true # 2. 清理WPS字体缓存(版本不同路径略有差异,两个都试试) rm -rf ~/.config/Kingsoft/Office6/User Data/office6/font_cache.db 2>/dev/null; true rm -rf ~/.config/Kingsoft/office6/font_cache.db 2>/dev/null; true # 3. 重新打开WPS wps不同版本的WPS for Linux缓存文件位置不太一样,老版本在~/.config/Kingsoft/Office6/,新版本可能在~/.local/share/Kingsoft/Office6/。找不到就用find命令:
find ~ -name "*font*cache*" -o -name "*fontcache*" 2>/dev/null有的版本里没有font_cache.db这个文件,缓存是直接跟用户配置放在一起的。这种情况下最省事的办法是把~/.config/Kingsoft/Office6/整个临时改名,让WPS重新生成配置。不过这样会把你的WPS个性化设置也一起重置,用的时候先确认能接受。
4.2 公文字体实战:仿宋、黑体、楷体、小标宋怎么搭配
很多政府机关和事业单位用WPS处理公文,对字体有严格要求,常见的就是“标题用方正小标宋简体,正文用仿宋_GB2312,一级标题用黑体,二级标题用楷体_GB2312”。这些字体Windows系统里多半预装了,但麒麟系统默认不带,就得手动装。
我整理的公文场景字体清单,直接抄作业:
| 用途 | 字体名称 | 字体文件名习惯 |
|---|---|---|
| 标题 | 方正小标宋简体 | FZXiaoBiaoSong-B05S.ttf |
| 正文 | 仿宋_GB2312 | 仿宋_GB2312.ttf |
| 一级标题 | 黑体 | simhei.ttf |
| 二级标题 | 楷体_GB2312 | 楷体_GB2312.ttf |
| 英文数字 | Times New Roman | times.ttf |
安装方法跟前面一样,把字体文件都放到/usr/share/fonts/custom,刷新缓存,清理WPS缓存,重启WPS。
有一个特别容易出问题的地方:公文字体的“仿宋_GB2312”在很多Linux发行版上会让fontconfig检测为不带“Regular”样式,导致WPS里该用常规体的地方变斜体或者加粗异常。解决办法是装字体的时候确认字体文件本身包含正确的样式表信息,一般从正规渠道买的字体文件没有这个问题,反而是从各种压缩包里拿的“精简版”容易出幺蛾子。
4.3 WPS里指定默认字体,别每次手动调
字体装好之后,建议顺便把WPS的默认字体设置一下,不然每次新建文档都是默认的宋体,改来改去很烦。
WPS文字(wps组件)里:打开一个文档,点“开始”菜单栏的字体选择框,选中想要的字体(比如仿宋_GB2312),然后右键设成默认,或者通过“格式 -> 字体 -> 默认”来设置。
这个方法对大多数人够用了,但它只对WPS文字生效,表格(et)和演示(wpp)还得另外设置。有更高要求的,可以改WPS的配置文件实现统一设置,在~/.config/Kingsoft/Office6/下找到用户配置里的默认字体设置项。不过这个文件不同版本结构差异很大,改之前先备份。
5. 常见问题排查与避坑实录
这部分按理说应该放在文末,但我觉得它才是最有价值的。字体安装本身不难,难的是出了问题不知道怎么定位。我把实际遇到过的、网上被讨论最多的几个问题列出来,给对应解决方案。
5.1 字体装了、缓存刷了、WPS也重启了,还是看不到
这个问题我遇到过好几次,最典型的场景是fc-list能查到字体,但WPS字体列表里没有。
排查思路按顺序走:
确认你用的是不是snap或flatpak版WPS。麒麟应用商店里默认的WPS安装包可能是rpm或deb版,但也有人从官网下载了snap版。snap版跑在沙箱里,访问不了系统的
/usr/share/fonts,它只认自己沙箱里的字体目录,这种情况下装字体得装到snap的字体目录里,非常麻烦,不如直接卸了换成deb版。清理WPS缓存时没有完全退出WPS进程。WPS的驻留进程会在你清理缓存后重新写一份,旧的索引又回来了。用
ps -ef | grep wps看一下是不是有残留进程,先kill再清理。字体文件损坏或者字体名重复。之前碰到一个案例,系统里同时有一个“黑体”和一个“黑体-PRC”,WPS因为同名冲突,干脆把两个都不显示。这种情况只能删掉一个。
5.2 打开文档全是方块,字变成“豆腐块”
这种现象在Linux下很常见,本质是文档里用的字体在系统里完全不存在,系统用替代字体也替代不了。银河麒麟默认带了一些中文字体,但仍然覆盖不了Windows生态里的所有字体。
解决思路:
- 优先安装文档中常用的中文字体,仿宋、楷体、黑体、微软雅黑这种是高频需求。
- 如果还是有方块,看看WPS的字体替代功能。WPS文字菜单里有“工具 -> 选项”,里面可以设置字体替换规则,把找不到的字体替换成已有的字体。这个功能在查看别人发的文档时非常实用,尤其是那些用了特殊字体的。
- 字体名接近但不是同一个的,比如Windows的“楷体”和Linux的“KaiTi”,WPS默认是可以映射的,如果没映射上,手动替换一下。
5.3 打开WPS一直弹“密钥环已锁定”之类的窗口
这个跟字体没有直接关系,但很多人装完字体后顺便装了其他东西,突然弹出密钥环窗口,以为是自己装字体把系统搞坏了。其实这是麒麟系统的密钥环服务在“要密码”,可能是系统自动登录时无法解锁默认密钥环导致的。
处理办法:
# 查看当前密钥环状态,一般图形界面的“密码和密钥”应用里也能操作 seahorse在“密码和密钥”应用里,右键点击“默认密钥环”,选择“更改密码”,旧密码留空直接回车,新密码留空,保存,这样以后登录就不会弹了。
这个操作用的是seahorse图形工具,有些精简版麒麟没装,可以用命令安装:sudo apt install seahorse。另外,不推荐随意删密钥环目录,那可能让你存的Wi-Fi密码和浏览器密码全部丢失。
5.4 ARM架构上装字体有没有特殊要求
ARM架构(比如飞腾、鲲鹏平台的银河麒麟)上,字体安装方式和x86基本完全一样,因为字体文件跟CPU架构无关。但有一个坑:部分通过.deb包装的字体,安装脚本里带了x86二进制程序用于字体注册,这在ARM上会报“cannot execute binary file”。解决方法就是不用deb包,直接把deb包里的字体文件提取出来手动安装。
提取deb包里的字体:
# 用dpkg-deb解包,不安装 dpkg-deb -x 字体包.deb /tmp/font_extract # 找到ttf/otf文件 find /tmp/font_extract -name "*.ttf" -o -name "*.otf" -o -name "*.ttc" # 把字体复制到系统目录 sudo cp /tmp/font_extract/usr/share/fonts/.../* /usr/share/fonts/custom/这个问题在WPS官方社区里问的人不少,我去年帮客户适配飞腾FT-2000平台时也踩过一次,当时是从一个Windows软件安装包里提取的字体,安装脚本里居然还带了autorun的残留逻辑,ARM上直接傻眼。
5.5 装完字体后WPS打开变慢,或者直接卡死
这个通常不是字体文件本身引起的,而是系统里字体数量爆炸了。有些人图省事,一口气装了几百个Windows字体,全部丢进fontconfig的监控目录,WPS每次启动都要扫描一遍,自然慢。
解决办法:
- 精简字体数量,只装必要的,系统默认已经有一批文泉驿和Noto字体,不需要重复装。
- 字体文件本身比较大的,比如一个几十MB的otf,加载的时候本来就慢,尽量选体积小的版本。
- 有些字体包带了一堆“Ligarures”“Stylistic Sets”等OpenType特性,会加重WPS排版时的计算负担,列在候选字体中但不常用的,可以考虑移除。
6. 批量部署:给多台机器统一装字体
这个算是进阶内容。现在很多单位是成批采购麒麟系统设备,一台台手动装字体效率太低。我自己的做法是写一个简单脚本,通过系统自带的软件分发机制统一部署。
6.1 字体自动安装脚本,改改就能用
在本地写好字体安装脚本,核心其实就是把前面的命令串起来:
#!/bin/bash # font-install.sh # 适用于银河麒麟V10桌面版,x86和ARM通用 FONT_SOURCE_DIR="/path/to/your/fonts" FONT_TARGET_DIR="/usr/share/fonts/custom" if [ ! -d "$FONT_SOURCE_DIR" ]; then echo "字体源目录不存在,请检查路径" exit 1 fi sudo mkdir -p "$FONT_TARGET_DIR" sudo cp "$FONT_SOURCE_DIR"/*.tt[fc] "$FONT_TARGET_DIR"/ 2>/dev/null sudo cp "$FONT_SOURCE_DIR"/*.otf "$FONT_TARGET_DIR"/ 2>/dev/null sudo chmod 644 "$FONT_TARGET_DIR"/* sudo fc-cache -fv > /dev/null echo "字体安装完成,建议重启WPS"保存成.sh文件,加上执行权限chmod +x font-install.sh,在每台机器上跑一下就行。如果单位网络里有批量运维平台,可以把这个脚本放到平台的任务中心下发。
6.2 清理多余字体,别把系统搞得一团糟
字体装多了,后期想清理,也要有方法。单个字体文件直接删,再刷新缓存就行:
sudo rm /usr/share/fonts/custom/不想要的字体.ttf sudo fc-cache -fv批量清理某个字体家族的:
fc-list | grep "微软雅黑" | awk -F: '{print $2}' | while read fontfile; do sudo rm "$fontfile"; done sudo fc-cache -fv这个命令会把所有包含“微软雅黑”的字体文件路径提取出来然后删除,格式化输出方面可能有点乱,但结果没问题。实际操作的时候,我建议先fc-list | grep "微软雅黑"查看一下匹配到的文件,确认没有误伤其他字体再执行。
6.3 备份字体库,方便以后系统重装
字体配置文件和工作量也是资产。部署完一批机器、调好了字体环境,最好把/usr/share/fonts/custom目录打包备份一下,新机器来了直接解压,省得重新收集字体。
# 在源机器上备份 sudo tar czf fonts-custom-backup.tar.gz -C /usr/share/fonts custom # 在目标机器上还原 sudo tar xzf fonts-custom-backup.tar.gz -C /usr/share/fonts sudo fc-cache -fv这个备份包很小,一般几十兆,放到U盘或者网络共享盘里,做新环境初始化的时候非常方便。
我在实际部署中还有个习惯,就是顺便把WPS的字体替换规则也一起备份,因为不同单位的公文字体偏好不同,重新配置很麻烦。WPS的配置一般在~/.config/Kingsoft/Office6/下,复制到新机器相同路径就能生效。但要注意版本一致,旧配置给新版WPS用有时候会出兼容问题。
7. 最后一次经验分享,关于“字体装上就算完了”这件事
按我的经验,字体装上只是第一步。真正让WPS在麒麟系统上用得顺,还得把字体、WPS配置、打印驱动这几件事串起来,哪一环缺了都会出现“排好版的文档打印出来不对”这种尴尬问题。
个人觉得最值得养成的习惯是:每次装完字体后,顺手用WPS新建一个文档,把所有新字体都打一遍,检查中文、英文、数字的显示效果,再导出一份PDF看看有没有变化。这个检查过程只要两三分钟,但能省下后面做正式文件时发现字体出错的尴尬时间。
另外还建议把字体文件的来源、版本和维护记录留一份简单文档,尤其是有专人维护的单位。比如“这台机器装了方正小标宋简体V1.0,来源是购买的正版包”,这种记录关键时候特别值钱,尤其是字体出问题需要排查是否版权原因的时候。
字体安装这件事,看起来小,做起来坑不少。希望这篇文章能帮你在银河麒麟系统上把WPS的字体这一关顺利过掉,少走点我已经替你走过的弯路。