我喜欢一种等宽字体系列,称为 IBM Plex Mono。除了普通字体和粗体之外,它还提供多种字体粗细,即:
Thin
ExtraLight
Light
Regular
Medium
SemiBold
Bold
现在,我有两个经常使用的工作站。其中一个运行 Kubuntu 22.04,我已使用该字体系列(它在存储库中)安装了该字体。另一个运行 Fedora Kinoite,我已通过下载文件并将其复制到我的目录中来apt
安装该字体。.woff2
~/.local/share/fonts
在两台机器上,我都将默认等宽字体(使用 KDE 设置中的字体设置)设置为IBM Plex Medium,这是我在终端 (Konsole) 中喜欢使用的粗细。执行此操作后,Konsole 在终端中使用正确的中等粗细。
但是,两台机器在终端中呈现粗体echo -e "\033[1mBold\033[0m normal"
文本的方式不同,您可以通过运行使用 ANSI 转义码打印一些粗体文本来测试。
Bold
在 Kubuntu 机器上,使用更粗的字体粗细(我认为是粗细)。- 在 Fedora 机器上,字体粗细完全相同,就好像字体分辨率已经决定它
Medium
“已经”足够粗体了。
当然,我面临的问题是,我想弄清楚如何让 Fedora(或者至少是 Konsole)使用实际上更重的字体变体,以便我可以区分粗体和普通文本。
但我的问题比这更广泛——给定一堆.woff2
(或.ttf
或其他)文件~/.local/share/fonts
,并且我已将其中一个指定为我的默认等宽字体,当 Konsole 要求“默认等宽字体加粗”时,Linux 如何决定使用哪种变体?有没有办法可以自己控制它,例如在/etc/fonts/conf.d/
?
这个问题和我的类似,但是它相当老了,并没有真正涵盖如何设置这些类型的映射的“最佳实践”(例如,我应该将 XML 粘贴在哪里):如何将一个字体系列的粗体粗细别名为另一个字体系列的粗体粗细?
Fontconfig 是许多 Linux 系统上负责字体发现、匹配和配置的库。当应用请求特定字体粗细时,fontconfig 会根据可用的字体和配置文件确定最佳匹配。
控制字体粗细选择:
确保 IBM Plex Mono 的所有变体都已正确安装在您机器的 ~/.local/share/fonts 中。此目录应包含所有字体文件,包括不同粗细的字体。
然后更新字体缓存,以确保系统识别新字体:
然后创建一个字体配置文件来指定 fontconfig 如何处理不同的字体粗细。您可以在 ~/.config/fontconfig/conf.d/ 中创建一个新文件(如果不存在则创建目录)或在 /etc/fonts/conf.d/ 中创建一个新文件来进行系统范围的设置。例如(这个来自我的 Fedora Linux,据我所知,大多数发行版都一样),创建一个名为 10-ibm-plex-mono-bold.conf 的文件:
然后,再次更新缓存:
现在,您可以使用 fc-match 命令来验证 fontconfig 是否正确匹配请求的字体粗细:
具体映射示例
如果您想确保在请求粗体时 IBM Plex Mono Medium 映射到 IBM Plex Mono Bold,则可以使用以下特定配置:
谢谢你!