Fonts Emacs没有列出半光字体?

Fonts Emacs没有列出半光字体?,fonts,emacs,Fonts,Emacs,我想用一种半光字体。但是,出于某种原因,emacs没有列出semilight字体。我遗漏了什么吗 在我的init.el中,我有以下内容: (set-face-attribute 'default nil :family "Cascadia Code" :weight 'semilight) 然而,当在任何字符上运行descripe char时,我发现它使用的是-SAJA Cascadia code light normal-*-13-*-*-*-*-*-m-0-iso106

我想用一种
半光
字体。但是,出于某种原因,emacs没有列出
semilight
字体。我遗漏了什么吗

在我的
init.el
中,我有以下内容:

(set-face-attribute 'default nil :family "Cascadia Code" :weight 'semilight)
然而,当在任何字符上运行
descripe char
时,我发现它使用的是
-SAJA Cascadia code light normal-*-13-*-*-*-*-*-m-0-iso10646-1
,它来自CascadiaCode-Regular.otf

我试图找到它发生的主要原因:

  • 当我运行
    descripe font
    时,在我的系统中似乎找不到任何
    semilight
    字体(即
    weight=55
    )。唯一显示为
    半轻
    的字体是重量为75的字体

  • 运行
    x-select-font
    将列出
    semilight
    字体

我真的不确定这里发生了什么。emacs不应该显示这些字体的
weight=55
?如果是这样的话,有没有想过为什么不会发生这种情况


环境:

  • GNU Emacs 27.2(版本1,x86_64-redhat-linux-GNU,GTK+版本3.24.29,开罗版本 2021年4月27日第1.17.4)条
  • 软呢帽34

在深入研究了
fontconfig
对OTF文件所做的操作,以及emacs如何解析
fontconfig
给出的字体权重后,我找到了真正的罪魁祸首

这可能是emacs中的一个bug。那是因为与之相比,有一些不同。值得注意的是,其中之一涉及到
半轻型
字体重量

一种解决方法是使用
fontforge
,并将OTF字体大小更改为emacs能够理解的大小。例如:

  • 例如,将Cascadia Code SemiLight.OTF的OTF字体大小从350(fontconfig's SemiLight)更改为380(fontconfig's book)
  • fontconfig
    将根据
    FC\u WEIGHT\u BOOK
    (75)转换该值
  • emacs将显示为半光

  • 在深入研究了
    fontconfig
    对OTF文件的处理,以及emacs如何解析
    fontconfig
    给出的字体权重后,我找到了真正的罪魁祸首

    这可能是emacs中的一个bug。那是因为与之相比,有一些不同。值得注意的是,其中之一涉及到
    半轻型
    字体重量

    一种解决方法是使用
    fontforge
    ,并将OTF字体大小更改为emacs能够理解的大小。例如:

  • 例如,将Cascadia Code SemiLight.OTF的OTF字体大小从350(fontconfig's SemiLight)更改为380(fontconfig's book)
  • fontconfig
    将根据
    FC\u WEIGHT\u BOOK
    (75)转换该值
  • emacs将显示为半光

  • 更改字体文件有点过于繁重,而且无法维护,因为Cascadia是相当新的,并且经常发布

    在缓存重建期间,可以将
    半光灯
    权重值(55)替换为
    书本
    (75),这使得当
    “半光灯
    被指定为面的
    :权重
    属性时,Emacs可以愉快地显示Cascadia半光灯变体。不幸的是,这个技巧只能通过缓存的字体描述来实现。Fontconfig是深奥的

    将此配置文件放入由
    fc缓存扫描的位置:每个用户,或放入所有用户的
    /etc/fonts/conf.d
    (通常;
    fc conflist
    会告诉它正在查看哪些目录;文件
    50 user.conf
    通常包括主目录中的
    .conf
    文件)。影响缓存扫描的文件通常以80到89之间的数字作为前缀。我的文件名为
    /etc/font/conf.d/80 cascadia semilight.conf
    ;你可能有自己的偏好

    
    调整Emacs的Cascadia字体的权重
    卡斯卡迪亚莫诺酒店
    半光灯
    书
    

    或者去做吧。

    更改字体文件有点过于繁重,而且无法维护,因为Cascadia是相当新的,而且经常发布

    在缓存重建期间,可以将
    半光灯
    权重值(55)替换为
    书本
    (75),这使得当
    “半光灯
    被指定为面的
    :权重
    属性时,Emacs可以愉快地显示Cascadia半光灯变体。不幸的是,这个技巧只能通过缓存的字体描述来实现。Fontconfig是深奥的

    将此配置文件放入由
    fc缓存扫描的位置:每个用户,或放入所有用户的
    /etc/fonts/conf.d
    (通常;
    fc conflist
    会告诉它正在查看哪些目录;文件
    50 user.conf
    通常包括主目录中的
    .conf
    文件)。影响缓存扫描的文件通常以80到89之间的数字作为前缀。我的文件名为
    /etc/font/conf.d/80 cascadia semilight.conf
    ;你可能有自己的偏好

    
    调整Emacs的Cascadia字体的权重
    卡斯卡迪亚莫诺酒店
    半光灯
    书
    
    或者,我明白了