Loading config file from /etc/fonts/conf.d/50-omarchy.conf done
Loading config file from /etc/fonts/conf.d/50-user.conf
Scanning config dir /home/guoxudong/.config/fontconfig/conf.d
Loading config file from /home/guoxudong/.config/fontconfig/conf.d/64-omarchycn-cjk.conf done
3. zh-cn 规则的 family 测试永远命中不了
64-omarchycn-cjk.conf 中的规则:
<matchtarget="pattern"><testname="lang"compare="contains"><string>zh-cn</string></test><testname="family"><string>sans-serif</string></test><editname="family"mode="prepend"binding="strong"><string>Noto Sans CJK SC</string></edit></match>
PASS font: Noto Sans CJK SC
PASS font: Noto Serif CJK SC
PASS font: Noto Sans Mono CJK SC
PASS fallback: zh-cn sans-serif -> Noto Sans CJK SC
PASS fallback: untagged CJK -> SC
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
System details
4.0.0.alpha-cn.7
What's wrong?
执行
omarchycn font apply后,内置检查部分失败:复现命令:
环境
/etc/fonts/conf.d/50-omarchy.conf(Omarchy 系统自带)~/.config/fontconfig/conf.d/64-omarchycn-cjk.conf(由omarchy-cn-font-apply从$OMARCHY_PATH/cn/fontconfig/复制)/usr/share/omarchy/bin/omarchy-cn-font-status根因
不是字体缺失,也不是用户配置未加载,而是 zh-cn 规则被系统配置静默架空。
1.
50-omarchy.conf用mode="assign"整体替换 generic 家族名assign(赋值替换,非追加)把 family 列表中的sans-serif直接替换为Liberation Sans。serif、monospace 同理:sans-serif→Liberation Sansserif→Liberation Serifmonospace→JetBrainsMono Nerd Font2. 加载顺序:用户 CJK 配置排在
50-omarchy.conf之后用户目录
~/.config/fontconfig/conf.d/是被/etc/fonts/conf.d/50-user.conf引入的,而同一目录按字典序加载:50-omarchy.conf<50-user.conf。FC_DEBUG 日志可证实:
3. zh-cn 规则的 family 测试永远命中不了
64-omarchycn-cjk.conf中的规则:当这条规则执行时,family 列表里的
sans-serif早已被替换成Liberation Sans,<test name="family">sans-serif</test>不成立 → 规则静默失效,匹配落回 Liberation Sans。附带说明
<test>,无条件append,不受assign影响。sans-serif)以相同方式失效,只是omarchy-cn-font-status没有检查它们。<alias>(针对 sans-serif/serif/monospace)同样失效——此时请求里已不存在这些 generic 家族名。修复方案(用户侧 workaround)
不能改
/etc/fonts/conf.d/50-omarchy.conf(系统文件,升级会被覆盖)。在用户配置中为每条 lang 规则增加并行的 match 块,同时测试被替换后的具体家族:serif/monospace 以及 ja/ko 规则同理,分别补测
Liberation Serif、JetBrainsMono Nerd Font。修复后验证:
上游修复建议
缺陷在 omarchycn 随包分发的模板
$OMARCHY_PATH/cn/fontconfig/64-omarchycn-cjk.conf:其规则默认 generic 家族名在执行时仍然存在,这一前提在 Omarchy 系统上不成立(被自家50-omarchy.conf破坏)。建议上游任选其一:Liberation Sans等替换后的具体家族(同上述 workaround);或langprepend 对应 CJK 变体(会连带影响 serif/mono 请求,需权衡);或50-omarchy.conf改用prepend而非assign保留 generic 名(影响面最大,需谨慎)。另外注意:用户自行修复
~/.config/下的副本后,重跑omarchycn font apply会用随包模板覆盖修复,需在上游修复前避免重跑。