You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Doom Emacs中Noto Color Emoji与阿拉伯语字体配置冲突解决方案问询

解决方案

你可以从Emacs配置或系统字体配置两个维度修复该问题,优先推荐Emacs层面的修改,不会影响其他应用的字体渲染规则:

方案1:Emacs配置层面修复(推荐)

1.1 提高阿拉伯语字体配置优先级

原有配置没有显式指定优先级,安装Noto Color Emoji后Emacs的默认字体匹配规则会优先使用后加载的字体,修改配置为如下形式,显式将阿拉伯语字体规则前置:

;; 显式指定阿拉伯语字体优先级最高,避免被 emoji 字体覆盖
(set-fontset-font t 'arabic (font-spec :family "Noto Naskh Arabic") nil 'prepend)

1.2 单独指定Emoji字体(可选)

如果同时需要保证Emacs内emoji正常显示,可以追加emoji专属字体配置,和阿拉伯语字体规则互不干扰:

(set-fontset-font t 'emoji (font-spec :family "Noto Color Emoji") nil 'prepend)

1.3 Doom Emacs专属适配

将上述配置放在~/.config/doom/config.el的末尾,或者包裹在after-init-hook中,确保配置在Doom的默认字体加载逻辑完成后执行:

(add-hook! 'after-init-hook
  (set-fontset-font t 'arabic (font-spec :family "Noto Naskh Arabic") nil 'prepend)
  (set-fontset-font t 'emoji (font-spec :family "Noto Color Emoji") nil 'prepend))

修改完成后执行doom sync重启Emacs即可生效。

方案2:系统字体配置层面修复

如果希望所有应用都遵循阿拉伯语优先使用Noto Naskh Arabic的规则,可以修改Fontconfig配置:

  1. 新建字体优先级配置文件:~/.config/fontconfig/conf.d/99-prefer-arabic-font.conf
  2. 写入如下内容:
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
  <match target="pattern">
    <test name="lang" compare="contains">
      <string>ar</string>
    </test>
    <edit name="family" mode="prepend" binding="strong">
      <string>Noto Naskh Arabic</string>
    </edit>
  </match>
</fontconfig>
  1. 执行fc-cache -fv刷新字体缓存即可生效。

内容的提问来源于stack exchange,提问作者zakissimo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 03:15:03