尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Ubuntu下WPS字体缺失乱码?这套安装映射方案一次搞定

Ubuntu下WPS字体缺失乱码?这套安装映射方案一次搞定 简介这是一套专为Ubuntu系统下WPS办公软件准备的字体补齐方案目标用户是经常处理含特殊符号文档的Linux使用者用于解决打开文档时提示缺少Symbol、Wingdings、Wingdings 2、Wingdings 3等字体导致符号以问号或空白显示的问题。压缩包共129个文件核心是128个TTF标准字体文件覆盖常用符号字体、中文宋体及多语言显示所需字体另含一个install.sh一键安装脚本整体包体58.08MB解压后执行sudo ./install.sh即可自动安装到系统字体目录免去手动添加字体的麻烦。目前已有1414人学习下载安装后WPS将正确渲染符号、图形与特殊字符显著提升文档排版完整性和视觉效果适用于政企办公、学术论文、技术报告等对文档规范性要求较高的场景。整套方案目录结构简洁脚本已处理权限与目标路径无需额外配置不同技术水平的用户均可快速完成部署。 我刚在Ubuntu上装好WPS Office那会儿打开同事发来的docx文档满屏中文标题直接变成了一排排空心方块数字和英文倒是正常但汉字全军覆没。这种“豆腐块”问题在Linux下跑WPS的用户里太常见了说破天就是系统缺字体集不是软件坏了。这篇文章就围绕Ubuntu下WPS缺失字体集这件事从根源讲清楚为什么缺、最缺哪几个再给出一套从命令行安装到验证排查的完整方案照着做基本一次到位。适合刚切换到Linux办公、或者被字体问题折腾到想砸电脑的朋友。1. 为什么Linux版WPS老缺字体先搞清楚问题根源1.1 缺字体的本质字体渲染链和文档回退机制很多人以为字体缺失就是“系统里少个文件”装上就完了。但实际牵涉到Linux的字体查找机制。Linux系统里应用程序找字体不是直接去翻目录而是通过一个叫fontconfig的底层服务来查询。WPS启动后会根据文档里记录的字名去fontconfig里找对应的字形文件找到一个能匹配的就用找不到就按匹配规则回退到替代字体。Windows下办公文档常用的字体是宋体、黑体、仿宋、楷体、微软雅黑、等线这些字体在Windows系统里是“出厂自带”的所以文档作者完全不会意识到自己在依赖它们。而Ubuntu默认安装的字体以开源字体为主像Ubuntu自带的Cantarell、DejaVu这些压根没有中文字形系统也不会预装微软系中文字体。所以当WPS打开一个指定了“宋体”的docx时fontconfig找不到SimSun就只能在已安装字体里挑一个相似的去顶替如果连合适的CJK中日韩统一表意文字字体都没有渲染时就只能输出空白方块。这里有个容易混淆的点有时候同一个乱码文档在A机器上只是字体不对劲在B机器上却直接方块。区别就在于A机器装了某个可用的中文字体fontconfig回退到了它B机器连中文字体都没装渲染链彻底断裂。所以“看起来是WPS的问题”本质上永远是系统字体库的问题。1.2 哪些字体最容易成为“重灾区”根据我接触过的企业和个人文档下面这张表基本覆盖了90%的缺字场景字体名常见场景缺失后果Linux下常用替代方案宋体(SimSun)正文、公文、通知正文乱码或全部变成默认字体Noto Serif CJK SC、文泉驿正黑黑体(SimHei)标题、强调段落标题字体被替换层级感消失Noto Sans CJK SC、文泉驿微米黑仿宋_GB2312政府公文、红头文件整段排版错乱甚至连字号都变形朱雀仿宋、FZFangSong楷体(KaiTi)引文、签名、批注引文和正文分不清AR PL UKai、Kaiti SC微软雅黑(Microsoft YaHei)PPT、现代商务文档文字间距异常、标题不整齐Noto Sans CJK SC等线(DengXian)新版Office默认正文表格文字和正文全乱Noto Serif CJK SC注意表格里的替代方案并不是“完全等价”只是说显示效果和排版结果可用。真要做严格排版尤其涉及字号、字距、笔画粗细的项目最好还是通过fontconfig把字体名映射到本地最接近的字形而不是指望WPS自动选一个完美替代。这个映射方法后面第3章会给出具体配置。2. 动手前先备好“字体弹药”字体包选型与准备2.1 必装的开源字体包清单Ubuntu的软件源里其实已经打包了大量开源中文字体装起来非常方便。我平时在干净系统上第一轮会装这五个包fonts-noto-cjk谷歌思源黑体和思源宋体的Linux发行版包含Noto Sans CJK SC和Noto Serif CJK SC是现在Linux中文显示的事实标准必须装。fonts-wqy-microhei和fonts-wqy-zenhei文泉驿微米黑和正黑老牌开源中文字体兼容性好字体体积小。fonts-arphic-ukai和fonts-arphic-uming文鼎楷体和明体用于楷体、明体等特殊场景的补充。ttf-mscorefonts-installer微软核心字体安装包里面是Arial、Times New Roman等西文字体能改善英文混排效果。这里有个建议如果不是有明确的公文排版需求仿宋其实不用一开始就装。原因在于仿宋的开源替代品本来就少而且部分“开源仿宋”字体的授权和字形质量参差不齐。真需要的时候网上搜“朱雀仿宋”或者“FZFangSong”下载单款ttf文件手动安装就行比在apt源里大海捞针靠谱得多。2.2 网络不好时的离线字体包方案ttf-mscorefonts-installer这个包有点特殊它本身只是一个安装脚本真正的字体文件需要安装过程中从网上下载而且默认源在国外。国内网络环境下经常卡在“Downloading corefonts”这一步一直转圈最后报404。如果遇到这种情况先CtrlC中断安装然后换下面的离线方式用浏览器直接下载字体cab包比如Andale32.exe、arial32.exe、times32.exe这些微软官方安装程序。把这些文件放到/var/cache/mscorefonts/目录下。再次执行sudo apt install ttf-mscorefonts-installer安装脚本检测到本地缓存后就会优先使用不再走网络下载。我自己实际操作时还遇到过一种情况直接下载deb包到本地然后用dpkg -i安装结果它还是要联网拉字体。所以“先放缓存再装”这个方法更稳。注意这个目录需要root权限提前用sudo mkdir创建好。2.3 字体文件到底该放哪里Linux下字体可以装在两个层级系统级目录/usr/share/fonts和用户级目录~/.local/share/fonts老版本还有~/.fonts。系统级目录所有用户都能用需要sudo权限用户级目录只对当前用户生效不需要sudo。WPS通过fontconfig扫描这两处所以放哪里都能被识别。我个人习惯是把手动下载的字体放~/.local/share/fonts因为这样不影响系统全局重装系统后也不会遗留一堆没用的字体文件。需要注意放完字体后一定要执行sudo fc-cache -fv否则fontconfig的缓存不会更新WPS照样找不到新字体。3. 补齐字体的实操步骤从命令行到字体映射3.1 方案Aapt一键安装适合网络通畅的场景如果网络环境不错直接开终端执行sudo apt update sudo apt install fonts-noto-cjk fonts-wqy-microhei fonts-wqy-zenhei fonts-arphic-ukai fonts-arphic-uming ttf-mscorefonts-installer安装完成后刷新字体缓存sudo fc-cache -fv这一套下来系统里就有了思源黑体、思源宋体、文泉驿、楷体、明体和微软核心西文字体。对大多数日常Office文档来说已经能正常显示了。注意最后一行-fv参数会输出刷新的字体文件路径和数量如果你发现某个目录一个字体都没扫到那基本就是目录权限或者路径写错了。3.2 方案B手动安装字体文件适合手里有ttf/ttc的场景有时候你从同事那里拷来一个专用字体比如公司定制的标题字体就要手动安装。步骤很简单mkdir -p ~/.local/share/fonts cp 你的字体.ttf ~/.local/share/fonts/ fc-cache -fv这里有一个容易被忽略的细节字体文件的后缀必须是.ttf、.otf或.ttc如果是从Windows系统里拷出来的字体有时候文件名是中文的没关系fontconfig不挑文件名认的是字体内部的字体族名。但如果文件扩展名是.fon那就直接放弃吧这种老式位图字体Linux基本不认识。3.3 方案CFontconfig字体替换解决文档指定字体找不到的问题字体装好只是第一步还有一个更隐蔽的问题文档里指定的是“SimSun”你系统里装的是“Noto Serif CJK SC”fontconfig默认会帮你匹配但匹配的优先级不一定符合预期。最靠谱的办法是写一个fontconfig规则把Windows常用字体名映射到本地已有的字体。创建或编辑/etc/fonts/local.conf?xml version1.0? !DOCTYPE fontconfig SYSTEM fonts.dtd fontconfig match targetpattern test namefamilystringSimSun/string/test edit namefamily modeprepend bindingstrong stringNoto Serif CJK SC/string /edit /match match targetpattern test namefamilystringSimHei/string/test edit namefamily modeprepend bindingstrong stringNoto Sans CJK SC/string /edit /match match targetpattern test namefamilystringMicrosoft YaHei/string/test edit namefamily modeprepend bindingstrong stringNoto Sans CJK SC/string /edit /match /fontconfig编辑完后执行fc-cache -fv刷新再用fc-match SimSun验证fc-match SimSun如果输出是Noto Serif CJK SC说明映射已经生效。这个方法不光是WPS受益系统里所有依赖fontconfig的软件都会按这套规则来替换字体LibreOffice、GIMP这些都会更听话。3.4 不要忽略WPS自己的字体替换入口最后说一个很多人不知道的操作WPS关闭状态下手动删一次WPS的字体缓存。WPS会把扫描到的系统字体列表缓存下来你新装的字体未必会立刻出现在字体下拉框里。正常做法是彻底关闭WPS所有进程后重新打开如果还不行就删除用户配置目录下的字体缓存文件再启动。pkill -f wps rm -rf ~/.config/Kingsoft/office6/fontcache删除前建议先备份整个Kingsoft目录免得误删了登录状态和自定义设置。重启WPS后它就会重新扫描系统字体库。4. 装完别急着走验证与常见问题排查实录4.1 怎么确认字体真的装好了第一层验证在终端里用fc-list把字体列表拉出来看目标字体在不在fc-list | grep -i noto serif cjk fc-list | grep -i wqy第二层验证打开WPS新建一个文字文档在字体下拉框里输入“Noto”看能不能选到Noto Serif CJK SC。如果下拉框里能选到说明WPS已经识别到字体如果选不到大概率是WPS缓存没刷新。第三层验证也是最关键的打开之前乱码的那个docx文档把正文全选看字体名是否变成了可识别的中文字体再执行一次“输出为PDF”用PDF阅读器打开检查文字是否正常嵌入、能否选中复制。PDF导出如果正常基本可以确定字体链路完全打通了。4.2 常见问题与解决方法速查表下面这些是我在实际使用中遇到过的、以及周边同事反馈过的问题直接做成表格方便你对照排查现象可能原因解决办法字体装完WPS还是方块WPS字体缓存未刷新关闭WPS删除~/.config/Kingsoft/office6/fontcache重启WPS系统里fc-list能看到字体但WPS下拉框没有WPS扫描列表用的还是旧缓存用3.4节的办法强制重建WPS字体缓存中文正常但英文和数字发虚、模糊缺少合适的西文字体安装ttf-mscorefonts-installer或安装fonts-crosextra-carlito某些符号如希腊字母显示乱码缺少数学类字体安装fonts-lmodern、fonts-mathjax公文里的仿宋字体完全不对开源替代品字形差异大手动下载朱雀仿宋安装后用local.conf映射安装了mscorefonts时一直卡在下载网络无法访问国外字体源按2.2节离线方案处理4.3 一个经常被忽略的细节默认模板字体很多人在WPS里新建文档时默认正文用的是“宋体”或“等线”这两个字体在Linux下都需要依赖替代映射。与其每次手动改不如直接把WPS的默认模板改掉。打开WPS新建一个空白文档设置好默认字体为Noto Serif CJK SC、默认字号为12磅然后通过“文件-另存为模板”覆盖掉默认模板。这样每次新建文档都是已经设置好的状态不需要再跟字体较劲。我帮同事配置的几台Linux办公机几乎都是靠这个操作才真正告别字体问题。5. 踩过几次坑之后的个人心得字体这种问题看着是小事折腾起来是真的费神。先说一个我踩过的坑为了追求“和Windows一模一样”我曾经把Windows里的simsun.ttc、msyh.ttc、simhei.ttf全拷到Linux里用。结果WPS启动慢了两三秒字体下拉框卡顿甚至偶尔崩溃。后来想明白了这些Windows字体文件体积大、字形复杂Linux下的fontconfig处理起来负担不轻。现在我只保留必要的中文字体商务文档用Noto Serif CJK SC演示文档用Noto Sans CJK SC再配上文泉驿做备用系统既轻快又干净。再分享一个实用的小技巧遇到某一个文档还是不对劲时别急着全网搜“为什么”先在终端跑一条fc-match 文档里指定的字体名比如文档用的是“等线”你执行fc-match DengXian系统会直接告诉你它匹配到了哪个字体。看到结果就能判断是映射规则没生效还是字体压根没装。拿着这个结果再改local.conf比盲目重装字体高效得多。最后想说的是Ubuntu下用WPS心态上要接受“字体不可能和Windows一模一样”这件事。开源字体在屏幕上的渲染效果其实往往更清晰只是和Windows下的字形细节有差别等你习惯了Noto的笔画风格再回头看微软雅黑反而会觉得有点油腻。把字体集这个地基打好WPS在Linux下是完全能撑起日常办公的不管是写文档、做表格还是排PPT都能稳定输出。本文还有配套的精品资源点击获取
返回列表