Font Fallback

让终端可以显示的更美观。

字体问题

只从更换到 alacritty 作为主要的终端模拟器之后,一直对它很满意,唯一遇到的问题是部分字形无法 显示,例如 💻 是一个电脑的图标,但在我之前的终端上显示不出来。但这种字形平时很少遇到,网页 上显示也都正常,就一直没有管它。究其根源就是这些字形在我目前使用的字体文件中没有定义,所以 无法显示。

字体 Fallback

最近又试用了 ghostty,它却可以正常显示这些字形,于是萌生了提升 alacritty 体验的想法。经过调研 发现 alacritty 没有字体 fallback 的设置,只能依赖系统的设置。解决的办法就是创建一个字体配置文件: .config/fontconfig/fonts.conf,内容如下:

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>JetBrains Mono</family>
    <prefer>
      <family>JetBrains Mono</family>
      <family>Noto Color Emoji</family>
     </prefer>
  </alias>
    <alias>
    <family>JetBrains Mono Bold</family>
    <prefer>
      <family>JetBrains Mono Bold</family>
      <family>Noto Color Emoji</family>
    </prefer>
  </alias>
    <alias>
    <family>JetBrains Mono Italic</family>
    <prefer>
       <family>JetBrains Mono Italic</family>
      <family>Noto Color Emoji</family>
    </prefer>
  </alias>
</fontconfig>

这里定义了我如果使用 JetBrains Mono 字体的时候,如果遇到不能显示的字形,就要使用 Noto Color Emoji 字体来显示。设置之后重启 alacritty 就可以正确显示之前缺失的字形了。

存在的问题

  • Noto Color Emoji 是我为了这次调整新安装的字体,不知道有什么办法可以知道 ghostty 使用的什么字体,ghostty 甚至不依赖系统的字体设置。
  • alacritty 对字体的 ligature 没有支持,ghostty 支持的就很好。