☰
银河麒麟系统 WPS 字体安装与 fontconfig 缓存排错指南
2026/10/23 8:22:12 网站建设 项目流程

一份红头模板从 Windows 拷到麒麟机器上,双击打开,WPS 弹一句"缺少字体",点了确定之后,原本板板正正的仿宋正文变成了等宽黑体,标题挤成两行,页脚跑位,表格框线错乱——这个场景我这一年里碰到不下十次。绝大多数人这时候的第一反应是去改字体大小、拉行距、调段落,折腾半小时才发现根子压根不在排版上,而是系统里根本没有那几款公文字体。银河麒麟系统 WPS 字体安装这件事,说穿了就是把 Windows 上自带的那些中文字库搬到 Linux 的字体体系里,再让 fontconfig 和 WPS 都认出来,可中间卡人的环节比想象中多得多:字体文件格式、家族名编码、缓存刷新时机、进程残留、文件权限,任何一环出问题,表面症状都一样——"没生效"。

这篇东西不讲大道理,就按我自己在麒麟桌面版上反复装字体的实际顺序走一遍:先搞清楚缺的是什么,再准备好文件,然后选一条靠谱的安装路径,最后把 WPS 不认字体的几个典型原因挨个拆开。适合两类人看——一类是刚接手国产化办公环境、被公文格式逼疯的普通用户;另一类是负责给一整批机器做统一配置的运维。前者照着做能解决自己的文档,后者可以直接把后面的脚本拿去批量跑。

1. 缺字体这件事,在麒麟上到底卡在哪一步

1.1 一份红头模板打开后的三种"变形"

字体缺失在 WPS 里的表现并不总是"弹窗报警"。我见过三种情况,症状完全不同,但根源是一个。

第一种最直白,打开文档立刻弹"文档中包含系统中不存在的字体",下面列出仿宋_GB2312、楷体_GB2312、方正小标宋简体。点"确定"之后 WPS 会做静默替换,通常替换成思源宋体或者系统默认的无衬线字体,页面看上去还能读,但字宽变了,本来一行放得下的标题被挤成两行,行末的标点跑到下一行开头。

第二种更阴险,不弹窗。文档能正常打开,字体下拉框里也显示"仿宋_GB2312",但实际渲染用的是替代字体。这种情况一般发生在文档里做了字体嵌入、或者 WPS 的字体替换表里有对应记录的时候。你以为没问题,直到打印出来发现字重不对、字形发飘。

第三种是纯排版崩坏:表格宽度、页边距、行距全都对,但整篇文字看起来"胖了一圈"或者"瘦了一圈"。这是因为替代字体和原字体的字符宽度(advance width)不一致,中文等宽字体之间差别还小,一旦被替换成非等宽或者西文优先的字体,整段就散了。

判断到底是哪一种,不用猜。把光标点到出问题的文字上,看 WPS 顶部字体框显示的名字,再对着系统里实际装了什么去比。名字对得上但样子不对,说明是渲染层的问题;名字直接变成一个陌生的字体名,那就是真缺。

1.2 Linux 的字体发现机制和 Windows 差在哪

很多人装字体失败,是因为脑子里还带着 Windows 的模型。Windows 的逻辑很简单:把 ttf 丢进C:\Windows\Fonts,注册表写一条,全系统立刻能用。Linux 完全不是这套。

Linux 这边管字体的是fontconfig,它干的事情是扫描一批约定好的目录,为每个字体文件建立索引缓存,然后应用要字体的时候通过fc-match这类接口去查。关键点在于"约定好的目录"和"缓存"这两件事。

约定目录大致是这几个:

层级路径生效范围
系统级/usr/share/fonts/及其子目录所有用户
系统级(额外)/usr/local/share/fonts/所有用户
用户级~/.local/share/fonts/仅当前用户
用户级(旧路径)~/.fonts/仅当前用户,仍兼容

把文件拷进去只是第一步,不刷新缓存等于没装。fontconfig 会读取已有的缓存索引,新文件不重新扫描就不会被登记。这就是为什么有人拷贝完字体、打开 WPS 一看还是没有,然后开始怀疑文件坏了——其实只是fc-cache没跑。

还有一层差异:WPS 这类大型办公套件为了启动速度,自己会维护一份字体列表快照。它在启动时向 fontconfig 要一次字体清单,然后在这一进程生命周期内就用这份清单。所以你哪怕在 WPS 开着的时候装好了字体、刷新了缓存,当前窗口里依然看不到,必须完全退出再启动。

1.3 三十秒判断字体到底装没装

在动手装之前,先确认目标状态。打开终端,跑一条:

fc-list :lang=zh | grep -Ei "fangsong|kaiti|simhei|song" | sort

这条命令的意思是:列出所有支持中文的字体,再用关键词过滤。如果输出里能看到类似

/usr/share/fonts/truetype/gongwen/simfang.ttf: FangSong_GB2312:style=Regular

说明仿宋_GB2312 已经在册。如果什么都没有,那就是真的没装。

更精确的验证用fc-match,它会告诉你"当有人要这个字体名时,系统实际给你哪一个":

fc-match "FangSong_GB2312" fc-match "KaiTi_GB2312" fc-match "方正小标宋简体"

返回结果如果是DejaVuSans.ttf: "DejaVu Sans" "Book"这类西文字体,说明系统在拿默认字体糊弄你,目标字体不存在。返回的正好是你装的那个文件,才算真正到位。

提示:fc-match的返回永远有值,它不会报错说"找不到"。所以判断标准不是"有没有输出",而是"输出的字体族名对不对"。这一点很多人第一次用会误解。

2. 备料:公文场景真正需要哪几个字体文件

2.1 一份最小可用的字体清单

公文类文档对字体的要求是固定的,不是随便挑好看的就行。按常见排版惯例,一套能覆盖 90% 场景的清单大概是这几款:

  • 方正小标宋简体:大标题专用,二号字,字形方正饱满,是红头文件标题的标志性字体
  • 仿宋_GB2312:正文主力,三号字,笔画细、字面小,长时间阅读不累
  • 楷体_GB2312:二级标题常用,三号字
  • 黑体:一级标题,三号字,视觉上区分层级
  • 宋体:表格内文字、附件说明等场景偶尔用到
  • Times New Roman:数字和英文混排时的标准搭配

前四款是硬需求,后两款属于锦上添花。如果机器存储紧张或者只想解决最痛的问题,优先把仿宋_GB2312 和方正小标宋简体装上,这两个缺失造成的排版偏差最明显。

需要提醒一点:仿宋 和 仿宋_GB2312 不是同一个东西。前者是 Windows 自带的"仿宋",后者是中易字库的扩展字符集版本,包含了更多生僻字和符号。公文场景通常要求的是带_GB2312后缀的那个。两个都装上也行,但 WPS 认的是字体族名,名字对不上照样白搭。

2.2 ttf、ttc、otf:格式选错了会白忙一场

字体文件格式这块,踩坑的人不少。

ttf是最稳的,单字体文件,fontconfig 和 WPS 都吃得下,优先选这个。

ttc是字体集合,一个文件里打包了好几款字体,Windows 的simsun.ttc就是典型例子,里面同时有宋体和新宋体。问题在于部分 WPS 版本对 ttc 的支持不完整,加载时只认集合里的第一个字体,后面的全丢。你把 ttc 拷进去,fc-list能看到它,但 WPS 字体框里只多出来一款,另外几款依然找不到。

解决办法是用 fontforge 把 ttc 拆开:

fontforge -lang=ff -c 'Open($1); SelectAll(); Generate($2)' simsun.ttc simsun.ttf

或者更直接,图形界面打开 ttc,会弹窗让你选择要打开哪一个子字体,选完另存为 ttf。这一步不难,但如果不知道 ttc 有这个问题,会一直以为是权限或者缓存的事儿,方向就错了。

otf要谨慎。它是 CFF 轮廓,理论上 fontconfig 支持,但 WPS 的渲染引擎在某些版本上对 otf 的中文字形处理有问题,表现为字重显示异常或者部分字符缺字。除非没有 ttf 版本,否则不建议用 otf 装公文字体。

2.3 来源与授权这条线不能踩

仿宋_GB2312、楷体_GB2312、方正小标宋这些,都是有明确版权归属的商业字库。这一点必须说清楚:个人在自己机器上学习研究用,和单位批量部署对外发文用,性质完全不同。

正规做法是从单位已有的授权渠道获取字体文件——很多单位在采购办公软件时已经买了字库授权,找信息部门要一份就行;或者购买对应字库的授权版本。从各种来路不明的"字体包"里下载,除了法律风险,还有个实际问题:这类打包文件经常被重新压过,字体内部的 name 表被改得乱七八糟,装上去家族名对不上,反而更难排查。

如果确实拿不到授权字体,退一步的选择是找开源的近似替代:

目标字体开源近似方案差异说明
仿宋_GB2312思源宋体(Source Han Serif SC)常规字重字形偏现代,笔画略粗,长文可读性好
楷体_GB2312霞鹜文楷(LXGW WenKai)楷味更足,但个别字的结体和标准楷体有出入
黑体思源黑体(Source Han Sans SC)相似度很高,日常够用
方正小标宋无完全等价方案只能用思源宋体 Bold 勉强顶,标题气势差一截

替换方案能让文档打开不崩,但不能用于正式对外发文,因为字形不符合规范。这个界限自己心里要有数。

3. 三条安装路径,以及我为什么推荐第二条

3.1 双击安装:快,但边界很窄

麒麟的 UKUI 桌面环境下,双击 ttf 文件通常会调用字体查看器,界面上有个"安装"按钮。点一下,字体会被装到~/.local/share/fonts/下,只对当前用户生效。

这条路径的优点是省事,不用终端不用 sudo。缺点也明显:

  • 只有当前用户能用。换个人登录,字体没了
  • 批量装二十个字体文件,要点二十次
  • 装完的字体散落在用户目录,将来排查问题不好找
  • 某些版本的字体查看器对 ttc 支持有问题,点了没反应

我一般只在自己临时用的测试机上这么干。真要给办公机器配环境,尤其是多人共用的机器,这条路不合适。

3.2 系统级目录 + 缓存刷新:一次装好全机器共用

这是我最推荐的方式。核心动作就四步:建目录、拷文件、改权限、刷缓存。

先建一个专门的目录,别往/usr/share/fonts/根下乱丢,将来要卸载或者排查一眼就能定位:

sudo mkdir -p /usr/share/fonts/truetype/gongwen

然后把准备好的字体文件全部拷进去:

sudo cp ~/Downloads/fonts/*.ttf /usr/share/fonts/truetype/gongwen/

第三步权限,这一步很多人漏掉,也是后面"装了不生效"的高发原因:

sudo chown -R root:root /usr/share/fonts/truetype/gongwen sudo chmod 644 /usr/share/fonts/truetype/gongwen/*.ttf

为什么要 644?fontconfig 扫描时是以普通用户身份读文件的,如果文件权限是 600 且属主不是当前用户,扫描器读不到内容,字体就不会进索引。从 Windows 拷过来的文件经过 U 盘、压缩包几道转手,权限经常是 600 甚至 700,必须显式改回来。

第四步刷缓存:

sudo fc-cache -f /usr/share/fonts/truetype/gongwen

只刷指定目录,比全量刷新快得多。刷完立刻验证:

fc-list :lang=zh | grep -i gongwen

能看到文件路径就说明进索引了。

3.3 用户级目录:没有管理员权限时的兜底

有些环境拿不到 sudo,或者机器是多人共用、不方便改系统目录。这时候走用户级:

mkdir -p ~/.local/share/fonts/gongwen cp ~/Downloads/fonts/*.ttf ~/.local/share/fonts/gongwen/ chmod 644 ~/.local/share/fonts/gongwen/*.ttf fc-cache -f ~/.local/share/fonts/gongwen

注意用户级不需要 sudo,属主天然就是自己,权限那步可以省但建议保留,防止文件从别处拷来时带着奇怪的权限位。

用户级目录的字体优先级高于系统级同名字体。这意味着你可以在系统装了旧版仿宋的情况下,用自己的目录覆盖掉它,而不影响其他用户。这个特性在测试新版本字体时很好用。

3.4 fc-cache 的几个参数别用错

fc-cache的参数看着简单,用错了会浪费很多时间。

参数作用什么时候用
-f强制重建,忽略时间戳装了新字体之后,必加
-v输出详细过程排查问题时加,正常装完不用
-r删除已有缓存再重建缓存疑似损坏、字体删了还在列表里时用
不带路径扫描全部配置目录全量刷新,慢但彻底
带路径只处理指定目录日常增量安装,快

有个坑要说:fc-cache不加-f的时候,它会比较文件时间戳,觉得"这个目录没变化"就跳过。但从 U 盘拷过来的文件,修改时间可能是几年前,比缓存还旧,于是被判定为"不需要更新",白跑一趟。所以装完字体一定加-f。

另外,如果遇到字体明明删掉了、fc-list里还顽固地显示,大概率是缓存没清干净。手动清一下:

sudo rm -rf /var/cache/fontconfig/* rm -rf ~/.cache/fontconfig/* sudo fc-cache -fv

清完重新扫一遍,一般都能恢复。

4. 装完了 WPS 里还是没有:四个高频原因逐个拆

4.1 字体家族名和文件名完全是两回事

这是最容易被忽略、也最难自己想到的一条。

fc-list显示的是字体文件里的family name(家族名),而 WPS 字体下拉框里显示的就是这个家族名。文件名根本不参与匹配。你把文件命名成仿宋_GB2312.ttf,但文件内部的 family name 是FangSong,那 WPS 里就只能找到"FangSong",找不到"仿宋_GB2312"。

Windows 上的仿宋_GB2312 家族名是FangSong_GB2312,WPS 在 Linux 上做字体匹配时,会拿文档里记录的字体名去和系统里的家族名比对。名字差一个下划线、差一个大小写,都可能匹配失败。

查看真实家族名:

fc-scan --format "%{family}\n%{fullname}\n%{style}\n" /usr/share/fonts/truetype/gongwen/simfang.ttf

如果输出里 family 是 GB 编码的乱码,或者只有中文没有对应的英文名,就需要用 fontforge 修正:

fontforge -lang=ff -c 'Open($1); SetFontNames("FangSong_GB2312","FangSong_GB2312","FangSong_GB2312 Regular","Regular"); Generate($1)' simfang.ttf

命令里的三个参数依次是家族名、全名、PostScript 名。改完重新刷缓存,WPS 里就能看到了。

注意:改动字体元数据会影响文件的完整性校验,改之前先备份原件。而且改过的字体不要在正式授权场景下对外分发,容易引起授权争议。

4.2 WPS 的进程缓存与配置残留

WPS 启动时会向 fontconfig 要一次字体清单,然后在进程内缓存。你装完字体、刷新了缓存,只要 WPS 还开着,它就看不见新字体。

标准动作是完全退出再启动。这里有个细节:点右上角关闭按钮,很多版本只是把窗口隐藏了,进程还在后台跑。验证方法:

pgrep -af wps

如果还有输出,说明进程没死。手动结束:

pkill -f wps

等两秒再启动。这一步顺序不能反——先退干净,再启动,顺序错了等于没做。

如果重启之后依然看不到,那就得怀疑配置残留。WPS 的用户配置在~/.config/Kingsoft/下,里面有字体相关的记录。极端情况下可以把这个目录整体备份后清空,让 WPS 重新生成一份。但要提前说清楚:这个目录里同时也存着你的个人设置、最近文档列表、自定义快捷键,清掉就全没了。所以务必先备份:

mv ~/.config/Kingsoft ~/.config/Kingsoft.bak

重启 WPS,让它重建配置,然后再看字体有没有出来。确认没问题之后,可以从备份里把需要的东西挑回来。

有一部分版本支持在配置文件里显式追加字体搜索路径,做法是编辑~/.config/Kingsoft/Office.conf,在合适的位置加一段路径声明。这个做法不同版本差异较大,没有通用保证,改之前一定要备份,改完不行就回滚。

4.3 权限、属主与文件属性的隐性坑

前面提过 644 的事,这里再补几个相关的。

属主问题。系统级目录下的字体文件属主应该是 root。如果从别的机器 scp 过来,属主可能变成了某个普通用户,某些安全策略下会被拒绝读取。统一chown -R root:root一下最省心。

SELinux。麒麟的服务器版本默认可能开启 SELinux。默认的安全上下文里,/usr/share/fonts/是有专门的标签的,但如果你的子目录是新建的、或者文件是从/tmp、/root直接mv过来的,上下文标签可能不对,导致读不到。查看:

ls -Z /usr/share/fonts/truetype/gongwen/

如果标签不是system_u:object_r:fonts_t:s0这类,可以手动恢复:

sudo restorecon -Rv /usr/share/fonts/truetype/gongwen/

这条命令会根据策略把标签改成该路径应有的值。桌面版一般不强制开 SELinux,碰到的概率不高,但服务器版要注意。

文件系统挂载参数。极少数情况下,/usr分区被挂成只读,拷贝看似成功其实没写进去。mount | grep usr看一眼有没有ro字样,有的话得先重挂。

4.4 ttc 合集只认第一款字重

前面提过 ttc 的问题,这里说清楚它的表现和应对。

一个典型的simsun.ttc里可能打包了宋体、新宋体、宋体-粗体三款。fontconfig 识别 ttc 时,理想情况是把里面每一款都登记为独立的 family,但实际行为取决于 fontconfig 版本和文件本身的组织方式。WPS 侧读取的时候,部分版本只取集合里索引为 0 的那一款,其余的视而不见。

表现出来就是:fc-list能看到三行记录,fc-match "新宋体"也能返回正确结果,但 WPS 字体框里只有"宋体",选不到"新宋体"。

应对办法有两个。一是拆包,用 fontforge 把每款单独导出成 ttf,稳妥但费事。二是找单独的 ttf 版本,仿宋_GB2312 和楷体_GB2312 通常都有独立的 ttf 文件,反而是宋体这一类经常只以 ttc 形式存在。

拆包的时候注意,fontforge 打开 ttc 会弹一个选择对话框列出所有子字体,选中后File > Generate Fonts,格式选 TrueType,导出即可。批量处理可以用脚本循环,但如果只有一两个文件,手动点更省时间。

5. 让麒麟上的排版效果向 Windows 对齐

5.1 在 WPS 里把字体绑进样式而不是手动选

字体装好只是前提,能不能稳定复现格式,取决于你怎么用。

我见过太多人是这样操作的:全选文字,字体框里选"仿宋_GB2312",字号选三号,行距手动调成 28 磅。这样写出来的文档,每次打开都要重新确认一遍,稍不留神就漏了某一段。

正确做法是改样式。WPS 里打开样式面板,找到"正文"样式,右键修改,把字体、字号、行距、段落缩进全部设进去。这样所有套用"正文"样式的段落自动就是对的,不用逐个检查。

标题同理,新建一个"公文一级标题"样式,绑定黑体三号、段前段后间距、固定行距。多建几个样式,把常用的层级都覆盖住,以后写文档就是选样式而不是调格式。

这套做法还有个额外好处:将来换机器、换字体版本,只要样式里的字体名对应的家族变了,全文档统一跟着变,不用一段一段改。

5.2 公文常用的字号、行距、页边距对照表

这些参数最好一次性记住或者存成模板,每次新建文档直接用。

位置字体字号对应磅值
大标题方正小标宋简体二号22 pt
一级标题黑体三号16 pt
二级标题楷体_GB2312三号16 pt
三级标题仿宋_GB2312 加粗三号16 pt
正文仿宋_GB2312三号16 pt
表格内文字仿宋_GB2312小四 或 五号12 pt / 10.5 pt

常用字号和磅值的对应关系也一并记住:初号 42、小初 36、一号 26、小一 24、二号 22、小二 18、三号 16、小三 15、四号 14、小四 12、五号 10.5、小五 9。

页面设置这边,通行的取值是上边距 37 mm、下边距 35 mm、左边距 28 mm、右边距 26 mm。正文行距用固定值 28 磅,标题行距可以放大到 35 磅左右。

这些数字看着琐碎,但差一点点,打印出来的版心位置就不对。特别是行距,如果用"单倍行距"或者"1.5 倍行距",不同字体算出来的实际行高不一样,在麒麟上排好的文档拿到 Windows 上一开,页数都能变。固定值行距是跨平台一致性的关键,这一点务必坚持。

5.3 一份可复用的安装自检脚本

给需要批量部署的人准备两段脚本。第一段负责安装:

#!/bin/bash # install_gongwen_fonts.sh # 用法: sudo ./install_gongwen_fonts.sh /path/to/font_dir set -u SRC_DIR="${1:-}" DEST_DIR="/usr/share/fonts/truetype/gongwen" if [ -z "$SRC_DIR" ] || [ ! -d "$SRC_DIR" ]; then echo "用法: $0 <字体文件所在目录>" exit 1 fi if [ "$(id -u)" -ne 0 ]; then echo "请用 root 或 sudo 运行" exit 1 fi mkdir -p "$DEST_DIR" count=0 while IFS= read -r -d '' f; do cp -f "$f" "$DEST_DIR"/ count=$((count + 1)) echo " 拷入: $(basename "$f")" done < <(find "$SRC_DIR" -maxdepth 1 -type f \ \( -iname "*.ttf" -o -iname "*.ttc" -o -iname "*.otf" \) -print0) if [ "$count" -eq 0 ]; then echo "源目录里没找到字体文件" exit 1 fi chown -R root:root "$DEST_DIR" chmod 644 "$DEST_DIR"/* # SELinux 环境下的标签修复,失败不影响主流程 command -v restorecon >/dev/null 2>&1 && restorecon -Rv "$DEST_DIR" >/dev/null 2>&1 fc-cache -f "$DEST_DIR" echo "共处理 $count 个字体文件,当前中文可用字体:" fc-list :lang=zh | grep -i gongwen | sort

第二段负责校验,装完之后跑一遍,把每个目标字体的实际匹配结果打出来:

#!/bin/bash # check_fonts.sh TARGETS=( "FangSong_GB2312" "KaiTi_GB2312" "SimHei" "方正小标宋简体" "SimSun" ) for name in "${TARGETS[@]}"; do matched=$(fc-match -f "%{family}" "$name" 2>/dev/null) if [ "$matched" = "$name" ]; then printf " [OK] %-20s -> %s\n" "$name" "$matched" else printf " [FAIL] %-20s -> 实际匹配到 %s\n" "$name" "$matched" fi done

[OK]的判定条件是fc-match返回的家族名和请求的名字完全一致。只要出现[FAIL],就说明系统在拿别的字体顶替,回上面第 4 章挨个排查。

提示:fc-match返回的家族名可能带空格或者大小写差异,严格比对偶尔会误判。如果你确定字体装上了但脚本报 FAIL,把fc-match -f "%{family}\n"单独跑一下,看看实际返回的字符串长什么样,再调整比对逻辑。

5.4 用 fontconfig 别名给缺失字体兜底

还有一个偏进阶但很实用的手段:给字体配置别名映射。

场景是这样:单位下发的模板用的是仿宋_GB2312,但你这台机器上暂时没有授权字体,只能用思源宋体顶着。与其每次打开都看 WPS 弹窗,不如在 fontconfig 层面做一层映射,让它自动把请求转到替代字体上,至少版式不会彻底崩。

新建~/.config/fontconfig/fonts.conf:

<?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <fontconfig> <alias binding="same"> <family>FangSong_GB2312</family> <prefer> <family>Source Han Serif SC</family> </prefer> </alias> <alias binding="same"> <family>KaiTi_GB2312</family> <prefer> <family>LXGW WenKai</family> </prefer> </alias> </fontconfig>

存盘之后刷缓存:

fc-cache -f fc-match "FangSong_GB2312"

如果返回的是Source Han Serif SC,说明映射生效了。

这套机制的局限要讲清楚:它只在使用方走 fontconfig 查询时起作用。WPS 内部有一部分字体匹配是自己做的,不一定完全遵循 fontconfig 规则。所以别名方案是"减少伤害",不是"解决问题"。真要符合公文规范,还是得把正主装上。

另外<prefer>和<accept>有区别:prefer保留原请求名的优先级,替代字体排在后面;accept则是直接接受替代,优先级更高,但可能导致你装了正版字体之后依然走替代。日常用prefer更稳。

6. 几个踩过才知道的细节

装字体这件事,流程本身不复杂,麻烦全在边角。记几条我自己反复验证过的经验。

先查后装,别急着拷文件。拿到一台新机器,第一件事是fc-list :lang=zh看看已经有什么。有些麒麟版本预装了思源系列,中文显示本身没问题,缺的只是公文专用字体。搞清楚缺什么,能少拷一堆用不上的文件。

改完字体一定重启 WPS 进程。这条我已经强调过,但还是值得再说一遍。我见过有人装完字体、刷新缓存、重新打开文档,依然没效果,最后发现 WPS 只是最小化到了托盘,进程根本没退。pgrep -af wps是每次排查的第一步。

字体名对不上时优先用 fc-scan 看真相。不要凭文件名猜,也不要凭 WPS 字体框里显示的名字猜。fc-scan --format "%{family}\n"输出的才是 fontconfig 认的那个名字。中文名和英文名不一致的字体很多,特别是从旧系统迁移过来的 GB2312 字库。

批量部署前先在一台机器上跑通全流程。看似一样的机器,装完可能因为 SELinux 状态、分区挂载方式、桌面环境版本不同而出现差异。先把脚本在一台机器上完整验证,确认字体在 WPS 里能正常选中、能正常渲染、打印预览不错位,再横向铺开。

保留一份原始字体文件的备份。改过 name 表的字体、拆过包的 ttc,都不适合作为长期存档。原件留一份在固定位置,将来换机器或者出问题时能快速恢复。

别忽略打印环节。屏幕上显示正常不等于打印正常。装完字体验证的时候,顺手做一次打印预览,重点看页脚位置和表格边框有没有偏移。有些字体在屏幕渲染时用的是系统字体,打印时用的是文档嵌入或者驱动侧替换,两边不一致的情况确实存在。

最后提一句卸载。这套流程是可逆的——删掉/usr/share/fonts/truetype/gongwen整个目录,跑一次sudo fc-cache -fv,字体会从索引里消失。如果之前清过缓存还不干净,手动删一下/var/cache/fontconfig/下的内容再重建。整个过程不碰系统其他部分,干净利落。

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

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

立即咨询