文章目录
  1. 1. 安装字体
    1. 1.1. 安装Noto全系字体
    2. 1.2. 安装Meslo字体
  2. 2. 下载&放置字体配置文件
  3. 3. 刷新字体缓存
  4. 4. 设置字体DPI
  5. 5. 设置字体
  6. 6. 设置GTK程序的字体
  7. 7. 设置KDE4/Qt4程序的字体
  8. 8. 设置Wine程序的字体DPI
  9. 9. 使GTK程序能够显示彩色Emoji
  10. 10. 强制Firefox使用Noto Color Emoji
  11. 11. 注销,重新登入
  12. 12. 效果图
    1. 12.1. Konsole
    2. 12.2. KDevelop/Kate
    3. 12.3. gedit
    4. 12.4. Firefox

一直以来,字体渲染问题困扰着很多Linux新手甚至老手。我经常在各种群看到各种字体相关的问题,还有人搞什么Infinality。不要搞Infinality,不要搞Infinality,不要搞Infinality,重要的事情说三遍。是时候结束这个尴尬的局面了。Linux用户就只能面对糟糕的字体渲染吗?不!只要配置得当,Linux下的字体显示效果将是桌面系统(Linux/macOS/Windows)中最好的

首先说明一下我的环境:

  • OS: Arch Linux
  • DE: KDE

其他发行版/桌面环境道理都差不多,摸索着搞一下没问题的。

安装字体

安装Noto全系字体

1
sudo pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji

如果你也是KDE桌面,noto-fonts可能已被安装,因为它是plasma-integration这个包的依赖。

安装Meslo字体

1
yaourt -S ttf-meslo

下载&放置字体配置文件

我的字体配置可以在fontconfig-zh-cn这个仓库下到,配置文件fonts.conf放到~/.config/fontconfig下,如果已存在配置文件,覆盖即可。

刷新字体缓存

1
2
fc-cache --force --verbose
fc-cache-32 --force --verbose

设置字体DPI

CX CALC这个工具计算出对应你显示器分辨率的DPI值,填入系统设置->外观->字体->固定字体DPI

注:个人感觉CX CALC计算的值偏小,可在按本文全部配置完成后适当调高。

设置字体

还是在字体设置这个界面,按下图设置:

图中显示的无衬线和等宽是中文译名,分别对应点击右侧选择…按钮后弹出的字体列表中的:Sans SerifMonospace

设置GTK程序的字体

系统设置->外观->应用程序风格->GNOME 程序风格(GTK)->字体

设置KDE4/Qt4程序的字体

1
qtconfig-qt4

在弹出对话框中点击Fonts标签,按下图设置:

设置Wine程序的字体DPI

1
winecfg

在弹出的对话框中点击显示标签,DPI与刚才在KDE字体设置中设置的一致:

使GTK程序能够显示彩色Emoji

1
yaourt -S cairo-coloredemoji

mesa-libgl是该包的编译期依赖,如果你使用的是其他libgl实现(nvidia-libgl/nvidia-340xx-libgl/nvidia-304xx-libgl),需要在编译前修改PKGBUILD中的makedepends。我使用的是nvidia-libgl,所以将

1
makedepends=('mesa-libgl' 'librsvg' 'gtk2' 'poppler-glib' 'libspectre' 'gtk-doc' 'valgrind' 'git')

修改为

1
makedepends=('nvidia-libgl' 'librsvg' 'gtk2' 'poppler-glib' 'libspectre' 'gtk-doc' 'valgrind' 'git')

强制Firefox使用Noto Color Emoji

本想单独写篇Firefox字体问题的blog,又考虑到方案就包含在本篇使用的字体配置文件里面,还是顺便说了吧。Firefox唯一的问题就是其Linux版本从50.0开始使用内置的Emoji One。内置Emoji字体当然是有好处的,但也带来了一些问题:

  • 很多Emoji不能显示为彩色
  • Emoji字体不按Fontconfig的回滚顺序进行匹配,给想使用其他Emoji字体的用户带来了麻烦
    为了使更多Emoji显示为彩色以及与其他应用风格统一,针对Firefox添加了如下配置:
    fonts.conf
    1
    2
    3
    4
    5
    6
    7
    8
    <match target="pattern">
    <test name="prgname">
    <string>firefox</string>
    </test>
    <edit name="family" mode="prepend">
    <string>Noto Color Emoji</string>
    </edit>
    </match>

经测试,Firefox、Firefox Developer Edition与Firefox Nightly都是生效的,如果你使用的是后两者之一而配置没有生效,升级至最新即可解决问题。
已知Bug(Firefox Developer Edition/Firefox Nightly):只要有一个标签页的标题中含有Emoji,就会撑高整个标签栏,关闭所有这样的标签页后标签栏高度才能恢复正常。

注销,重新登入

效果图

Konsole



KDevelop/Kate


gedit

Firefox


注:由于Qt的一个Bug,中英文混在一块的时候可能会上下错位,本文用到的字体配置设法避开了这一问题。

如果你觉得按本文配置后效果不错,请给我的字体配置仓库点个⭐️,谢谢。后续我会写一些应用程序相关的字体配置文章,敬请期待😉。

文章目录
  1. 1. 安装字体
    1. 1.1. 安装Noto全系字体
    2. 1.2. 安装Meslo字体
  2. 2. 下载&放置字体配置文件
  3. 3. 刷新字体缓存
  4. 4. 设置字体DPI
  5. 5. 设置字体
  6. 6. 设置GTK程序的字体
  7. 7. 设置KDE4/Qt4程序的字体
  8. 8. 设置Wine程序的字体DPI
  9. 9. 使GTK程序能够显示彩色Emoji
  10. 10. 强制Firefox使用Noto Color Emoji
  11. 11. 注销,重新登入
  12. 12. 效果图
    1. 12.1. Konsole
    2. 12.2. KDevelop/Kate
    3. 12.3. gedit
    4. 12.4. Firefox