惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Engineering at Meta
Engineering at Meta
T
Threatpost
P
Palo Alto Networks Blog
NISL@THU
NISL@THU
O
OpenAI News
Project Zero
Project Zero
G
GRAHAM CLULEY
P
Privacy International News Feed
A
Arctic Wolf
Microsoft Azure Blog
Microsoft Azure Blog
H
Help Net Security
M
MIT News - Artificial intelligence
T
Threat Research - Cisco Blogs
S
Security @ Cisco Blogs
Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
D
Docker
aimingoo的专栏
aimingoo的专栏
博客园 - 【当耐特】
N
Netflix TechBlog - Medium
云风的 BLOG
云风的 BLOG
雷峰网
雷峰网
W
WeLiveSecurity
P
Proofpoint News Feed
腾讯CDC
Cloudbric
Cloudbric
S
Secure Thoughts
C
Check Point Blog
博客园 - Franky
T
The Exploit Database - CXSecurity.com
T
Troy Hunt's Blog
GbyAI
GbyAI
Security Archives - TechRepublic
Security Archives - TechRepublic
Application and Cybersecurity Blog
Application and Cybersecurity Blog
月光博客
月光博客
C
Cyber Attacks, Cyber Crime and Cyber Security
I
Intezer
TaoSecurity Blog
TaoSecurity Blog
L
Lohrmann on Cybersecurity
V
Visual Studio Blog
F
Fortinet All Blogs
博客园 - 叶小钗
C
CXSECURITY Database RSS Feed - CXSecurity.com
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recorded Future
Recorded Future
C
Cisco Blogs
博客园 - 司徒正美
Stack Overflow Blog
Stack Overflow Blog
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research

少数派

派早报:Google 发布 Fitbit Air 等 - 少数派 「新人报到」確認需求,再開始 - 少数派 从 SOLO 独立开发者社区,我看到了越来越多开发者开始做自己的产品 - 少数派 我怎么管理那些"不常做,但总会忘"的生活事项 - 少数派 人形机器人量产元年,数据才是具身智能的“生死线” - 少数派 BuhoLaunchpad 高度还原 Mac 启动台:开发历程与思考 - 少数派 五年陪伴依然不舍,DIY 换壳后让罗技 MX Master 3 继续服役 - 少数派 新玩意 240|少数派的编辑们最近买了啥? - 少数派 一日一技|为什么你应该关闭 iOS 的键盘声音 - 少数派 我做了个插件和 Skills,一键提取任何网站的设计规范 Design.md - 少数派 住在三四线城市的你,该开始录播客了 - 少数派 甘南秘境,大白高国 - 少数派 AI的审美:谁让把我变成川内倫子 - 少数派 返工怎能不烦恼,打工人片单总有一部是你的「嘴替」 - 少数派 为了让「上厕所」更健康,我做了一个小工具 - 少数派 AI + Skill,能够让生成的文章去除 AI 味吗? - 少数派 新玩意|韶音OpenDots ONE 耳夹式耳机 - 少数派 《美满》| 在每一个春天的晚上相爱(362) - 少数派 新玩意|优篮子 PS01 MagSnap 磁吸支架 - 少数派 自我整合手记 | 我开始早睡了:用稳定规则,为自由托底 - 少数派 用龙虾(OpenClaw)两个多月,我最深的12个体会 - 少数派 听歌时间到,12 张你可能错过的 2025 华语乐坛好专辑 - 少数派 承诺能追吗 - 少数派 macOS 26启动台没了? 我做了个不一样的App启动器 - Keboard - 少数派 《四海为家的人》| INTJ对话INTJ(361) - 少数派 你发过的那些黑历史,是时候一次清干净了 - 少数派 新玩意:安安静静玩,越玩越专注:计客密码机 - 少数派 iPad 用户首次体验 Android 平板:vivo Pad6 Pro - 少数派 数据逻辑强 - 少数派 极北行+ | 一路向北,探访日本至北之地 | 001 - 少数派 万字剖析:千问App深度体验报告(2026) - 少数派 在2026年,如何真正防止别人抄袭你的作品 - 少数派 怎么用 50 块搭个 AI 语音助手?我踩了 3 天坑 - 少数派 YeeroAI:让 AI 对话真正成为知识管理的一部分 - 少数派 爬泰山 - 少数派 「旅图显影」 App 更新:这次,我们补上了一点「手感」 - 少数派 假期出门太折磨?我的 23 条经验帮你规划惬意旅行 - 少数派 工作流会变吗 - 少数派 Claude Opus 4.6 怎么用最省钱?我测了 5 种方案 - 少数派 GPT Image 2 让图文并茂不再稀罕 - 少数派 用户侧出发——什么是AI,我要不要学习? - 少数派 找片、转存、整理、播放一条龙!让你的付费网盘值回票价 - 少数派 欢迎试用!日课一问2.0插件 - 少数派 自己做的MDeditor,原本想购买 Typora 试了两次支付不成功,干脆自己做一个 - 少数派 vibe coding了一个 3MB 的小工具,让 ~/Downloads 彻底告别混乱 - 少数派 因为受不了 Mac 的风扇策略,我做了一个风扇控制工具 - 少数派 别只怪模型 - 少数派 Warp 终端的 AI 功能怎么用?我测了一周的体验 - 少数派 AI 写代码老是出 bug?这 5 个配置我后悔没早知道 - 少数派 「新玩意」苹果出相机可能就这样:Sigma BF + 45mm F2.8 DG Contemporary - 少数派 一个面向2030年的AI操作系统是什么样子的:浅谈cola这款有灵魂的Agent - 少数派 别只看写代码 - 少数派 每天解决10个问题,还是一口气攻坚解决400个? - 少数派 AI 交易机器人怎么搭?我用 Claude 跑了一周实盘 - 少数派 Maptoposter Online:把你爱的城市画成艺术海报 - 少数派 Function Calling 怎么用?我测了 3 个模型发现差距真大 - 少数派 Legend Talk:我做了个 AI 圆桌,让 160 位思想家围着你的问题转 - 少数派 如何找到自己的蓝方?在小县城寻找压力测试 - 少数派 语音输入与软件接口|2026年聊AI时,我们都聊些什么(上) - 少数派 混动已经卖爆,纯电又来补刀——钛7闪充版简直“不讲武德” - 少数派 本月玩什么|朋友收藏、识质存在、沙罗周期 - 少数派 为什么要每天坚持输出? - 少数派 Claude API 挂了好几个小时,你的项目有备用方案吗? - 少数派 Function Calling 没你想的复杂——我用它做了个有点用的工具 - 少数派 登录系统立即播放视频或者图片音乐的软件 - 少数派 我为什么创建 FlipHTML5 下载工具 - 少数派 残局没电?多品牌外设电量统一管理软件EasyBluetooth已支持RTSS游戏内显示以及AIDA64 - 少数派 前往通义路的路 - 少数派 太好看了,媲美Sun的个人导航页,NAS部署星云门户 - 少数派 乌黑嘴唇“一键检测”上线了 - 少数派 派早报:Claude AI 接入多个创意软件生态、FILCO 生产方接手品牌等 - 少数派 【更新】BearCLI、Claude 连接器与 MCP 服务器 - 少数派 记了上千条流水,还是看不懂财务?我做了一个让 AI 读懂账本的工作台 - 少数派 MINI R56 升级原厂 Sport 模式 - 少数派 新玩意 | 一棵柠檬树(仿真版) - 少数派 Momenta的“物理AI”野望,需迈过“含摩量”这道关 - 少数派 网页直接投屏控制手机!NAS一键部署PandaScrcpy,流畅丝滑可远程。 - 少数派 众测|邀你一同探索随身 AI 硬件入口 YoooClaw C·ONE - 少数派 2050大会:分享时间是真诚 参会记 - 少数派 iPad 赋能电影创作:国内首部宣纸手绘长片《燃比娃》的幕后故事 - 少数派 AI的审美:我用 8 个大模型给 100 张旅行照片打分 - 少数派 普通人如何破圈?去参加一个本地协会 - 少数派 把极空间的图标全换了,主题DIY全攻略打造你的专属NAS桌面 - 少数派 电子便签墙,帮你实现便签自由 - 少数派 我如何用三个 CLI 工具取代文档创建需求 - 少数派 原来真的有人可以玩一辈子 - 少数派 社区速递 139 | 派友热议三月买了啥、复古单反尼康 Df 体验 - 少数派 06 作品的赏析与评价 - 少数派 TDS REVIEW|索尼 WF-1000XM6 降噪真无线耳机体验 - 少数派 35.98万起售的第二代腾势D9,我看重的不是堆料,而是不凑合 - 少数派 鼠须管 Squirrel 皮肤配置指北 - 少数派 从watch ultra2换到redmi watch6 - 少数派 派早报:阿里巴巴发布视频生成模型 HappyHorse 1.0 等 - 少数派 别迷信1M - 少数派 家人们天塌了!网盘“大封杀”,多个渠道多条路,NAS部署PanHub - 少数派 AI与人勾心斗角!NAS一键部署AI狼人杀,假日休闲必备。 - 少数派 电商必备!Comfyui工作流批量生图插件,一次生成12张!支持Nano banana pro模型 - 少数派 Comfyui工作流配置Gpt-image-2模型教程,0.03/张 - 少数派 OpenClaw第三方APi怎么配置?可使用Gpt-image-2模型 - 少数派 会员社区话题精选 Ep. 103 - 少数派
学会配置 Fontconfig,让 Linux 中文字体更顺心 - 少数派
2024-10-22 · via 少数派

相较于我们熟悉的 Windows,用户在使用 Linux 发行版的过程中,或多或少会面对各种各样的字体显示问题,非常影响使用体验,相信也让包括我在内的不少用户苦不堪言。

下面的情况,或许你遇到过:

  • 缺少熟悉的宋体、楷体、仿宋等字体,无法顺畅地在 Linux 下办公
  • 当系统语言并非简体中文时,简体中文字形变成日文、韩文的风格,很影响观感
  • Windows 下的「点阵字体」(字体的 hinting 优化)也出现在了 Linux 里
  • 安装第三方字体后,系统显示的中文字体会变成刚刚安装的字体
  • 还有其他潜伏着的问题……

但是,不要被这些问题给吓住。了解了 Linux 的字体配置机制,探究问题的本质,这些问题其实都是小意思,都可以用针对性的方案逐个击破。从此,Linux 也有了不输给 Windows 的使用体验,对于现在政企电脑国产化1,以及一般用户日常使用 Linux 的场景,都有极大益处。

在 Linux 当中,字体是由 fontconfig 来统一管理的,它是由 Free Desktop 推出的字体管理工具,通用于各大发行版,甚至在 Windows 下也能使用。

Fontconfig 拥有开箱即用的便捷性,可以自动扫描特定目录下的所有字体。使用 Windows 的用户或许有这样的体验:直接把字体文件放进 C:\Windows\Fonts 目录下,就能安装了。在Linux中,这同样可以做到——你只需把字体放在指定目录下即可,通常是系统字体目录(/usr/share/fonts/),或用户字体目录(如~/.fonts/)。2

然而另一方面,fontconfig 是由配置文件驱动的。配置文件的合理与否,直接关系到 Linux 字体显示的表现。Fontconfig 的配置文件采用 XML 格式,支持的功能特性极其强大;相应地,它的参数种类繁多,拥有一定的门槛。想要合理配置字体,还要一番功夫。

幸运的是,本教程只需使用 fontconfig 配置文件的极小一部分功能,包括后备字体的配置、禁用 hinting 功能。需要编写的 XML 代码量自然也少很多。

那么,接下来,笔者就将根据几个常见的问题场景,为大家提供各个击破的解决方案。且看下文分解。

注意:阅读本文,需要你了解 XML 文件的基础知识

安装基本字体,解决中文字体无法显示的问题

现在的 Linux 发行版,其默认字体以 Noto 系列为大宗,中文字体为对应的 Noto CJK 系列,3通常各大发行版都有自带。

但如果你用的是 Arch Linux、Alpine 这些需要「纯手工」配置的操作系统,这些字体包是不会默认安装的,需要你手动安装。一旦漏掉中文字体,那么在显示中文的地方,你就只能看到一片空白,或者是「豆腐块(囗)」。更麻烦的是,如果漏掉英文字体,且系统默认语言为英文,那么你就只能面对茫茫一片空白,只能对着界面「干瞪眼」。

要解决这个问题,只需安装对应发行版的 Noto 字体包,即可解决最基本的文字显示问题。以下列举部分发行版的安装命令:

# Arch Linux。其中noto-fonts为西文字体,noto-fonts-cjk为中日韩文字体
sudo pacman -S noto-fonts noto-fonts-cjk

# Ubuntu
sudo apt install fonts-noto-core fonts-noto-cjk

# Alpine
sudo apk update
sudo apk add --upgrade font-noto font-noto-cjk

# Void Linux
sudo xbps-install -Su noto-fonts-ttf noto-fonts-cjk

另外,如果你希望使用第三方字体来作为界面显示字体,则 Noto 字体包就不是刚需。你只需把你喜欢的字体复制到发行版的字体目录下即可,例如 Arch Linux 的字体目录为/usr/share/fonts/

注意:为便于管理,请将字体文件放到字体文件夹的二级目录里,例如/usr/share/fonts/TTF(或/usr/share/fonts/下的其他子目录)。

正确设置区域,解决字体显示混乱的问题

Linux 系统的区域(locale)设置,直接决定了系统显示的语言、时间格式、数字格式等体验。如果区域设置不符合规范,那么系统会使用内置的默认区域「C」,它会导致字体显示异常,例如:

  • 在终端应用(如 Konsole)里输入中文并按退格键时,文字还在,但只显示一半
  • Oh My Zsh 等使用特殊字符的终端扩展,在使用时会出现乱码
  • 部分软件在显示中文时可能出现乱码

要解决字体显示问题,你需要进入桌面环境的「区域设置」,将区域设置为正确的值。

0)确保已经激活了目标区域

Linux 发行版提供了世界各地各种语言的区域支持。一般像 Ubuntu、Deepin、Zorin OS、银河麒麟这些新手向发行版,默认已经帮你配置好。4但对于 Arch Linux 这些需要「纯手工」安装的发行版,往往需要我们自行检查并激活区域支持。

通常,我们至少需要保证英语、简体中文的区域支持打开。

  • 第一步:用 root 权限的文本编辑器打开/etc/locale.gen,找到以下几行,将它们前面的井号(「#」)删掉,然后保存:
#en_US.UTF-8 UTF-8
...
#zh_CN.UTF-8 UTF-8
  • 第二步:在终端中运行以下命令,让系统重新激活区域支持:
sudo locale-gen

命令执行结果如下所示:

sudo locale-gen
Generating locales...
  en_US.UTF-8... done
  zh_CN.UTF-8... done
Generation complete.
  • 提示:如果你还需要其他区域的支持,就取消相应行前的注释。例如,想启用日文支持,就取消注释ja_JP.UTF-8 UTF-8这一行。

1)在桌面环境的设置里设置区域

常用的桌面环境,通常在各自的「系统设置」程序中提供语言设置的入口,不同桌面环境的入口也有所不同。具体可参考各个发行版和桌面环境的文档。

  • Gnome:在「活动面板(Activities)」中,键入「Region & Language」
  • KDE:打开「系统设置(System Settings)」→「区域和语言(Region & Language)」→「语言(Language)」
  • Cinnamon:打开「系统设置(System Settings)」→「语言(Languages)」
  • Deepin、UOS:打开「控制中心」→「键盘和语言」5

2)对于轻量级桌面环境

有些轻量级桌面环境没有配备区域设置,例如 MATE Desktop。这时,你可以借助第三方软件 mintlocale 完成设置,它是 Linux Mint 的语言设置工具,通用于其他发行版。

Arch Linux 用户可以直接从 AUR 安装(假设你已经安装了 Yay 这款 AUR 助手):

yay -S mintlocale

在终端中运行 mintlocale,然后按你的需要,依次设置以下参数:

参数作用
Language决定系统语言。这是非常重要的参数
Region决定系统所在的地区。区域设置决定了数字、货币、度量衡等格式,为应用程序所采用
Time format决定时间/日期的格式,不同区域有不同的时间日期表示方式
System locale显示当前已设置的区域设置

你需要将这些参数设置为正确的国家/地区、语言,例如中国大陆的简体中文对应「Chinese, China」。

mintlocale的界面。

设置完成后,点击「Apply System-Wide」,全局应用区域设置。期间会要求你输入密码(该设置需要 root 权限)。

最后,重启电脑,即可生效。因区域设置导致的字体问题就得到解决。

安装 Windows 字体,解决办公缺少字体的问题

声明:

由于潜在的授权许可条款,使用 Windows 内置字体可能存在一定的法律风险。

这些字体应当用于个人及非商用场合;商用场合应当获得字体版权方的授权。

长期以来,在政府、企业办公领域主流的操作系统都是 Windows。在这一背景下,Windows 自带的中易宋体(SimSun)、仿宋(SimFang)、楷体(SimKai)、Times New Roman 等字体都成为了规范字体;微软雅黑等用于界面显示的字体也深入人心,是PPT制作的常备字体。

不过,上面这些字体由于涉及到授权许可问题,是不会随 Linux 发行版提供的。有些开发者也设计了这些字体的开源「平替」,例如 UKai、UMing,但它们的显示效果还是和 Windows 自带的字体有明显区别,不能完全替代。

因此,如果你需要使用 Linux 办公,尤其是在政企中使用,那么就有必要将 Windows 的这些字体安装到系统中。

1)通用的方式:直接从 Windows 中复制

最直接、最简单的方法,就是从一台 Windows 电脑中提取字体。

  • 第一步,你可以直接进入 Windows 的字体目录(如C:\Windows\Fonts\),选中你需要的字体,然后按 Ctrl+C 复制,粘贴到可移动磁盘中,或者是刻录成光盘,等。6
在 Windows 的字体目录中,选择你要导出的字体。
  • 第二步,在你的 Linux 电脑上,插入你保存了字体的磁盘或光盘。打开文件管理器,浏览到磁盘或光盘的路径,右击空白处选择「打开终端」(或其他类似的选项)。
  • 第三步,在终端中运行以下命令,将字体复制到 Linux 发行版的字体目录中。注意,你需要 root 权限。
# 建立一个专门的子目录,存放来自Windows的字体
sudo mkdir /usr/share/fonts/Windows_TTF/

# 由于Linux下的文件区分大小写,因此我们要兼顾大小写,以便所有字体都能复制到目标位置
sudo cp *.TTF *.ttf *.OTF *.otf /usr/share/fonts/Windows_TTF/
  • 第四步,在终端中运行fc-cache,刷新字体缓存,使更改生效:
fc-cache -v

2)如果你是 Arch Linux 用户:可以安装 AUR 包

如果你是 Arch Linux 及其衍生版(如 Manjaro)的用户,AUR里提供了几组字体安装包,可以极其方便地为 Arch Linux 补充 Windows 必备字体。

构建过程中,它们会实时从微软的官方镜像7获取字体文件,因此安装过程需要全程保持网络畅通。

这些包有以下几种类型:

包名说明
ttf-ms-win10-auto-<区域>

从 Windows 10 安装镜像中获取指定区域的系统基础字体。

<区域>为小写的区域代码,例如,中文对应的包名为ttf-ms-win10-auto-zh_cn

ttf-ms-win10-auto从 Windows 10 安装镜像中获取系统基础字体,主要是英文字体(如 Segoe UI、Times New Roman)。
ttf-ms-win11-auto-<区域>类似于ttf-ms-win10-auto-<区域>,区别在于它从 Windows 11 镜像中获取。
ttf-ms-win11-auto类似于ttf-ms-win10-auto,区别在于它从 Windows 11 镜像中获取。
ttf-ms-win11-fod-auto-<语言>

从 Windows 11 可选功能包中,获取指定语言的扩展字体。

<语言>为目标语言的代码,例如简体中文对应hans,繁体中文对应hant,日语对应jpan

对于简体中文用户,笔者建议选择基于 Windows 11 的包,以保证字体的更新。你可以通过 Yay 来进行安装:

yay -S --noconfirm ttf-ms-win11-auto ttf-ms-win11-auto-zh_cn ttf-ms-win11-fod-auto-hans

上述三个包,包含了以下字体:

包名包含的字体
ttf-ms-win11-autoSegoe UI、Times New Roman、Courier New 等
ttf-ms-win11-auto-zh_cn中易宋体、微软雅黑
ttf-ms-win11-fod-auto-hans中易楷体、中易仿宋、中易黑体、等线

安装完成后,这些字体就可以使用了。8

注意:

  • 安装过程使用 httpdirfs 来远程在线挂载微软官方 ISO 镜像,因此需要全程保持网络畅通。视网络环境不同,安装速度也有所不同,请保持耐心。
  • AUR还提供了不带auto字样的包(例如ttf-ms-win11),但是笔者不建议安装,因为它们需要你自己下载安装镜像,并自行提取镜像里的文件,很麻烦。

设置后备字体,解决字体显示「变色龙」的问题

在按照上一章的步骤安装 Windows 字体后,你或许会发现这样一种情况:中文字体变了

原本统一使用 Noto Sans CJK 字体显示(与 Android 的默认字体一致),但现在竟然莫名其妙地变成了微软雅黑,甚至是仿宋和楷体。

而如果你的系统语言并不是简体中文,或者是软件的字体设置为英文字体(如,Hack Nerd Font),那么在显示简中汉字的时候也会出现问题:字形不是大陆规范字形,而是变成日文甚至韩文的汉字字形。

那么,这个问题又将如何解决?

日文系统环境下,Bing 的搜索结果,可见这里混杂了 MS Gothic 与微软雅黑这两种字体。

1)「罪魁祸首」:Fontconfig 的后备字体机制

造成以上这两种情况的原因,就来自 fontconfig 的后备字体(fallback font)机制。它会在显示一个字形而当前字体没有该字形时,自动选择另一种字体来显示。

如果后备字体没有配置好,fontconfig 就会按特定规则选择字体,例如你刚刚安装的字体,这样一来字体显示就会变得很「诡异」。

接下来,不妨更进一步分析前文的两个问题。

  • 看看第一个问题。现在的桌面环境,设置的默认字体都为英文字体,例如 Noto Sans。这些字体是不包含中文字符的,一旦显示中文字符,就会触发 fontconfig 的后备字体机制。在安装 Windows 字体前,电脑没有其他中文字体,因此自然会选中 Noto Sans CJK;然而,安装仿宋、楷体这样的中文字体后,fontconfig 有了「新选择」,原先的后备字体就被顶掉了。
  • 再看看第二个问题。对于多语言的环境,fontconfig 会根据系统语言选择对应语言的字体,例如,日文环境下就选择 Noto Sans CJK JP、MS Gothic 等9。但是,日文字体没有收录简体汉字,因此在显示简体汉字的场合,同样会触发 fontconfig 的后备字体机制,优先选择新安装的中文字体。于是,同样会导致字体显示效果变得诡异。

因此,只有正确配置 fontconfig 的后备字体,才能改善字体的显示表现。

2)如何配置后备字体?

接下来,我们就来编写一个 fontconfig 配置文件,为常见的字体配置一个后备字体序列。

  • 第一步:在用户主目录的.config/fontconfig子目录下,创建文件fonts.conf。如果没有该目录,就新建一个。
  • 第二步:打开fonts.conf,填入以下内容。务必结合你的实际情况,参考代码中的注释来修改。

注意:如果fonts.conf已有内容,就把<fontconfig>节点里的所有 XML 节点都追加到现有的<fontconfig>节点里。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">

<fontconfig>
    <!--
        为你电脑上的字体配置后备字体序列。
        每个字体对应一个<alias> 小节。
    -->
    <alias>
        <!--
            <family> 字段,是你要设置后备字体的字体名称。
            【提示】字体名称可以是字体的中文名(在WPS等软件看到的名字),例如“宋体”
        -->
        <family>Cantarell</family> <!-- 这里的Cantarell是一个英文字体,我们需要为其配置后备中文字体。 -->
        <!--
            <prefer> 字段,是一个后备字体的列表,可以包含多个<family>字段。
            后备字体的显示顺序自上而下排列,优先显示排序靠前的字体,
            如果靠前的字体没有可以显示的字符,那么后面的字体就会顶上。
        -->
        <prefer>
            <family>DengXian</family>
            <family>Noto Sans CJK SC</family>            <!-- 建议使用 Noto Sans CJK SC 作为兜底 -->
        </prefer>
    </alias>

    <!--
        后面的设置项,格式都是一样的,这里不再赘述。
    -->
    <alias>
        <family>Hack Nerd Font</family>
        <prefer>
            <family>Noto Sans CJK SC</family>
        </prefer>
    </alias>

    <alias>
        <family>Noto Sans</family>
        <prefer>
            <family>Noto Sans CJK SC</family>
        </prefer>
    </alias>

    <alias>
        <family>Noto Sans Mono</family>
        <prefer>
            <family>Noto Sans Mono CJK SC</family>
            <family>Noto Sans CJK SC</family>
        </prefer>
    </alias>

    <alias>
        <family>Noto Serif</family>
        <prefer>
            <family>Noto Serif CJK SC</family>
        </prefer>
    </alias>

    <!--
        这里的MS Gothic是Windows自带的日文字体,相当于我们的黑体。
        该字体没有收录简体中文字符,所以我们要设置中易黑体(SimHei)作为后备。
    -->
    <alias>
        <family>MS Gothic</family>
        <prefer>
            <family>SimHei</family>
            <family>Noto Sans CJK SC</family>
        </prefer>
    </alias>

    <alias>
        <family>sans-serif</family>
        <prefer>
            <family>Noto Sans CJK SC</family>
        </prefer>
    </alias>

</fontconfig>
  • 第三步:写好fonts.conf之后,刷新字体缓存。注意这里的fc-cache需要带上-f参数,强制刷新,否则后备字体有可能不会生效。
fc-cache -f -v

完成字体缓存刷新后,重新打开应用程序,你就能看到更改生效。

设置了后备字体的效果。虽然是 Noto Sans CJK SC 与 JP 的混杂,但明显比设置前协调多了。

按照以上的方法设置后,你的电脑字体显示就会非常稳定,不会再出现字体显示不统一等问题。

注意:后备字体设置只对fonts.conf当中的字体生效。如果你还使用其他字体,你需要为这些字体增加相应的配置。

禁用 Hinting,解决特定字体显示效果拉胯的问题

熟悉 Windows 的朋友都知道,在 Windows 当中,若屏幕分辨率和缩放比率较低,则一些字体显示出来的效果一言难尽,例如:

  • 宋体、细明体(PMingLiU)、MS Gothic、MS Mincho 等东亚语言字体,统统显示为点阵
  • 微软雅黑的显示效果与打印效果大相径庭

以上这些现象的产生,是因为这些字体自带了 hinting(字体微调)数据,会在特定的字号下,显示经过专门设计的位图字体。宋体的点阵就是这么来的。该技术的初衷是保证在低分辨率下,屏幕界面的文字依然能清晰显示,但随着高分屏的普及,这一技术如今反而拖了显示效果的后腿。

不幸的是,Linux 发行版的字体渲染也支持 hinting。因此,同样的 Windows 字体,如果安装到 Linux 中,你同样要面对让你一言难尽的显示效果,不知道该用什么语言来形容。

以国考的报名系统为例。文本框中的提示文字为宋体,但因 hinting 而显示为我们熟悉的点阵。

幸运的是,同样通过配置 fontconfig,我们可以轻松禁用这些字体的 hinting 功能。

  • 第一步:打开用户主目录的.config/fontconfig/fonts.conf。如果没有,那就新建一个。
  • 第二步:<fontconfig>节点中,补充与 hinting 设置相关的节点。同样是每个字体对应一个<match>节点。

  <!--
    禁用特定字体的Hinting功能。
    下面的代码就是让Fontconfig匹配特定的字体,然后修改参数以禁用它们的Hinting功能。
  -->
  <match target="font">
    <test name="family" compare="eq" ignore-blanks="true">
    <!-- <string>节点,在这里指定字体的名字。例如中易宋体就是SimSun -->
    <!-- 【提示】字体名称可以是字体的中文名(在WPS等软件看到的名字),例如“宋体” -->
      <string>宋体</string>  
    </test>
    <edit name="hinting" mode="assign">
      <bool>false</bool>
    </edit>
  </match>
  • 第三步:设置完成后,更新字体缓存:
fc-cache -fv

这样,重新打开相应的程序,你就会看到字体渲染有了明显改善:

禁用 hinting 后,没有了点阵,宋体的显示效果与打印效果一致。

写在最后

作为日常使用 Arch Linux 的作者,笔者一直致力于让自己的电脑用起来更加舒服,尤其是字体显示的表现。

以上的经验,就是我自己在「调教」Arch Linux 字体显示中积累而成的,一步步实践下来,现在屏幕上的字体显示格外舒适,无论是日常使用,还是作为重中之重的办公,都与 Windows 不相上下,扫清了顾虑,迎来了舒爽。

如果你也像我一样日常使用 Linux,或者是因工作需要而离不开 Linux──尤其是使用政企统一配备的国产电脑、国产 Linux 发行版,那么期待这篇教程能对你有所启发。

关联阅读:

> 关注 少数派小红书,感受精彩数字生活 🍃

> 实用、好用的 正版软件,少数派为你呈现 🚀