如何从特定应用程序中隐藏某些字体?

如何从特定应用程序中隐藏某些字体?

我需要在装有 Kubuntu 20.04 的计算机上运行过时的软件 (Xilinx ISE),但 ISE 在加载 Noto 字体时出现段错误/usr/share/fonts/truetype/noto(使用 找到strace)。当我删除该文件夹时,软件可以正常启动,但 Noto 是 Kubuntu 的默认字体。即使更改了默认字体设置,某些应用程序也会损坏。

有没有办法让该文件夹对过时的软件隐藏?有没有标准且简单的解决方案可以解决我的问题?

答案1

你可以创建具有适当设置的新用户隐藏/显示资源,包括字体。

  1. 使用您选择的方法创建一个新用户。 man useradd应该会有所帮助。

  2. /home/new-user/.config/fontconfig/conf.d/00-reject-noto.conf创建包含以下内容的文件:

     <?xml version="1.0"?>
     <!DOCTYPE fontconfig SYSTEM "/etc/fonts/conf.d/fonts.dtd">
     <fontconfig>
    
     <selectfont>
        <rejectfont>
           <glob>/usr/share/fonts/truetype/noto</glob>
           <glob>/usr/share/fonts/opentype/noto</glob>
        </rejectfont>
     </selectfont>
    
     </fontconfig>
    
  3. 根据需要创建其他字体配置文件。

  4. 如果您需要使特定字体可供应用程序使用,则可以将它们放在/home/new-user/.local/share/fonts/(或/home/new-user/.fonts/,但此位置已被弃用)。

  5. 测试字体是否隐藏:sudo -H -u [new-user] fc-list | grep -i noto

  6. 运行程序:sudo -H -u [new-user] [command]

笔记:

  • 如果您不需要当前用户使用 Noto 字体,您可以跳过新用户创建步骤,只需将设置应用到当前主目录即可。

  • 如果要隐藏特定字体,可以在字体配置中使用<pattern>而不是:<glob>

     <rejectfont>
         <pattern><patelt name="family"><string>Noto Kufi Arabic</string></patelt></pattern>
     </rejectfont>
    
  • 要获取字体名称列表,您可以使用类似如下的命令:

     fc-list | grep -i noto | awk -F: '{ print $2 }' | sed 's/^\ //g ; s/,/\n/g' | sort -u
    

也可以看看:

答案2

您不必完全删除 noto-mono 或将其从某些应用程序中隐藏。您只需将其稍微降级即可。

对我来说有效的是

  1. 删除 Kubuntu 20.04 安装中的当前 noto 字体文件夹。
  2. 从 kubuntu 18.04 ISO 或安装中获取 noto 字体的副本。
  3. 将旧版本的 noto 文件夹放在新版本所在的位置。

您也可以从此处下载 noto 的 kubuntu18.04 版本https://drive.google.com/file/d/1kadGq6BGOyncoArN6Xqm1srJnFR8c0hK/view?usp=sharing

相关内容