如何覆盖特定字形的终端字体系列?

如何覆盖特定字形的终端字体系列?

我已将其设置Source Code Pro为默认等宽字体,Noto Color Emoji对于表情符号,在 fontconfig 中设置如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <alias>
    <family>serif</family>
    <prefer>
      <family>Noto Color Emoji</family>
      <family>DejaVu Sans</family>
    </prefer>
  </alias>
  <alias>
    <family>sans-serif</family>
    <prefer>
      <family>Noto Color Emoji</family>
      <family>DejaVu Serif</family>
    </prefer>
  </alias>
  <alias>
    <family>monospace</family>
    <prefer>
      <family>Noto Color Emoji</family>
      <family>Source Code Pro</family>
    </prefer>
  </alias>
</fontconfig>

这对于 Gnome 应用程序来说效果很好,但我的终端 [Allacritty] 仍然在不使用表情符号字体的情况下显示一些表情符号。我怀疑这是由于Source Code Pro具有这些字形,因为它们可以按预期与其他字体(例如 Inconsolata)一起工作。

例如 ☕ 和

答案1

我对非常相似的 fontconfig-config 遇到了同样的问题。添加这个有帮助:

  <match target="scan">
    <test name="family" compare="contains">
      <string>Source</string>
    </test>
    <edit name="charset" mode="assign" binding="same">
      <minus>
        <name>charset</name>
        <charset>
          <int>0x2611</int> <!-- ☑ -->
          <int>0x2615</int> <!-- ☕ -->
          <int>0x263a</int> <!-- ☺ -->
          <int>0x2665</int> <!-- ♥ -->
          <int>0x2713</int> <!-- ✓ -->
          <int>0x2714</int> <!-- ✔ -->
          <int>0x2764</int> <!-- ❤ -->
          <int>0x1f4a9</int> <!-- 

相关内容