您尚未登录。

#1 2023-04-28 08:01:25

Bryan2333
会员
注册时间: 2023-01-19
帖子: 104

[已解决] 字体优先级问题

情况是这样的:

这是我字体的配置文件: https://pastebin.com/8rd9H7Mp

我通过 alias 给 monospace字体设置了一个优先级,Hack Nerd Mono Font 在 Noto Sans Mono CJK SC前面

但是当我在终端执行 fc-match monospace 时,它的返回的字体却是 Noto Sans Mono CJK SC,而不是 Hack Nerd Font Mono.

请问一下是我哪里配置的有问题吗?

最近编辑记录 Bryan2333 (2023-04-29 23:23:40)

离线

#2 2023-04-28 09:14:02

BRS5672023
会员
注册时间: 2020-07-07
帖子: 102

Re: [已解决] 字体优先级问题

🙃具体我也不太清楚要怎么弄,不过可以参照https://wiki.archlinux.org/title/Font_c … on/Chinese的内容,先添加一个

  <match target="pattern">
    <test qual="any" name="family">
      <string>monospace</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>DejaVu Sans Mono</string>
    </edit>
  </match>

然后再设置zh-cn以及另外的locale的字体

  <match>
    <test name="lang" compare="contains">
      <string>zh</string>
    </test>
    <test name="family">
      <string>monospace</string>
    </test>
    <edit name="family" mode="prepend">
      <string>Noto Sans Mono CJK SC</string>
    </edit>
  </match>

然后关于 prefer 的设置,我发现在我 link 文件 09-texlive-fonts.conf 到 /etc/fonts/conf.d 之后,可能会影响 prefer 的设置,特别是 waybar 上面基于 fontawesome 的字符显示,会以某些 texlive 字体的字符进行显示。。但是如果我添加 prefer 的内容到 ~/.config/fontconfig/fonts.conf 就能让这个 prefer 的设置生效,比如

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
 <alias>
  <family>sans-serif</family>
  <prefer>
   <family>HarmonyOS Sans SC</family>
   <family>Font Awesome 6 Free</family>
  </prefer>
 </alias>
</fontconfig>

但同样的内容放到 /etc/fonts/local.conf 就会被前面所说的 texlive 字体文件影响。。

最近编辑记录 BRS5672023 (2023-04-28 09:15:51)

在线

#3 2023-04-28 09:15:59

Bryan2333
会员
注册时间: 2023-01-19
帖子: 104

Re: [已解决] 字体优先级问题

感谢你的回复,我一下添加

    <match>
        <test qual="any" name="family">
            <string>Noto Sans Mono CJK SC</string>
        </test>
        <edit name="family" mode="prepend" binding="strong">
            <string>Hack Nerd Font Mono</string>
        </edit>
    </match>

后,就正常了。

离线

#4 2023-04-28 09:18:04

BRS5672023
会员
注册时间: 2020-07-07
帖子: 102

Re: [已解决] 字体优先级问题

Bryan2333 说:

感谢你的回复,我一下添加

    <match>
        <test qual="any" name="family">
            <string>Noto Sans Mono CJK SC</string>
        </test>
        <edit name="family" mode="prepend" binding="strong">
            <string>Hack Nerd Font Mono</string>
        </edit>
    </match>

后,就正常了。

但这个做法不是把 noto sans mono cjk sc 给替换成 hack nerd font mono 这个字体吗?那你这么做显示 CJK 等宽字符不会出问题吗?

在线

#5 2023-04-28 09:21:20

Bryan2333
会员
注册时间: 2023-01-19
帖子: 104

Re: [已解决] 字体优先级问题

这个的话,我也要有考虑过。但是结合个人的使用情况来说,我遇到CJK等宽字符的情况非常少,这个可以暂时不管。

最近编辑记录 Bryan2333 (2023-04-28 09:21:34)

离线

#6 2023-04-28 10:15:11

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,483
个人网站

Re: [已解决] 字体优先级问题

你把那一大波语言特定的设置放到后边试试?

离线

#7 2023-04-28 10:23:39

Bryan2333
会员
注册时间: 2023-01-19
帖子: 104

Re: [已解决] 字体优先级问题

依云 说:

你把那一大夫语言特定的设置放到后边试试?

试了一下,没用。

离线

#8 2023-04-28 10:25:16

Bryan2333
会员
注册时间: 2023-01-19
帖子: 104

Re: [已解决] 字体优先级问题

我又花了点时间配置字体文件,刚才的那个问题解决了。现在有遇到了新的奇怪问题。

理论上来说,我在终端执行 fc-match serif:charset=7300:lang=ja ,返回的字体应该是 Noto Serif CJK JP 才对,但是却返回了 Noto Serif CJK SC。

然而我将命令改成了env LANG=ja_JP.UTF-8 fc-match serif:charset=7300:lang=ja 后,它就返回了 Noto Serif CJK JP。

这是什么问题导致的?

离线

#9 2023-04-28 10:58:13

依云
会员
所在地: a.k.a. 百合仙子
注册时间: 2011-08-21
帖子: 8,483
个人网站

Re: [已解决] 字体优先级问题

你自己开 FC_DEBUG 看匹配的过程吧。你配置的这些字体我都没有所以无法复现。

离线

#10 2023-04-29 23:23:12

Bryan2333
会员
注册时间: 2023-01-19
帖子: 104

Re: [已解决] 字体优先级问题

字体配置文件终于弄好了,同时解决了monospace字体匹配和CJK字体匹配的问题。

离线

页脚