本文介绍Linux下的字体管理,不同字体族之间的关系,使用Fontconig管理字体,推荐了几款我使用的优秀字体。
三个通用字体族名 (generic family) #
- snas-serif 无衬线
- serif 衬线
- monospace 等宽字体
ttf 和otf 的区别 #
TTF(TrueType Font)是Apple公司和Microsoft公司共同推出的字体文件格式,随着windows的流行,已经变成最常用的一种字体文件表示方式。 而OTF(OpenType Font)是TTF 的升级版,而OTF 是采用的是PostScript 曲线,支持OpenType 高级特性的更高级字体。
字体文件存储目录 #
/usr/share/fonts —> 包管理安装
/usr/local/share/fonts —> 自己手动安装的全局字体
终端中查看字体
alias sf='fc-list : family style | fzf'
中文字体 #
中文字体推荐谷歌的思源黑体Noto Sans SC
,华为的鸿蒙黑体HarmonyOS Sans SC
,小米的MiSans
$ yay -S ttf-harmonyos-sans
Nerd字体 #
Nerd字体可以为原来的等宽字体添加图标,icon等符号,多用于终端和编程环境中,丰富显示效果,常用的Nerd字体。
yay -Qsq nerd
otf-comicshanns-nerd
otf-commit-mono-nerd
ttf-cascadia-code-nerd
ttf-fantasque-nerd
ttf-firacode-nerd
ttf-inconsolata-nerd
ttf-nerd-fonts-symbols
ttf-nerd-fonts-symbols-common
ttf-roboto-mono-nerd
emoji字体 #
# Twitter推出的emoji字体
$ yay -S ttf-twemoji-color
# Google Noto emoji fonts
$ yay -S extra/noto-fonts-emoji
Fontconfig #
Fontconfig可以用来对Linux下的字体进行统一的管理,任何使用 fontconfig 的程序都会遵守这一标准,不用为每个APP单独设置字体,统一使用字体族名就可以了。
$ nvim ~/.config/fontconfig/fonts.conf
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd">
<fontconfig>
<alias>
<family>serif</family>
<prefer>
<family>Noto Serif</family>
<family>Twitter Color Emoji</family>
<family>Noto Color Emoji</family>
<family>Symbols Nerd Font</family>
</prefer>
</alias>
<alias>
<family>sans-serif</family>
<prefer>
<family>HarmonyOS Sans SC</family>
<family>Noto Sans SC</family>
<family>Twitter Color Emoji</family>
<family>Noto Color Emoji</family>
<family>Symbols Nerd Font</family>
</prefer>
</alias>
<alias>
<family>monospace</family>
<prefer>
<family>Monaco Nerd Font</family>
<family>RobotoMono Nerd Font</family>
<family>FiraCode Nerd Font Mono</family>
<family>Noto Sans Mono</family>
<family>Noto Color Emoji</family>
<family>Braille</family>
</prefer>
</alias>
</fontconfig>
Warning! 经过测试这种方式只在LANG=en_US.UTF-8的环境中有效!
Unicode #
2023 年每个软件开发者都必须知道的关于 Unicode 的最基本的知识 https://blog.xinshijiededa.men/unicode/