![如何从特定应用程序中隐藏某些字体?](https://linux22.com/image/924915/%E5%A6%82%E4%BD%95%E4%BB%8E%E7%89%B9%E5%AE%9A%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E4%B8%AD%E9%9A%90%E8%97%8F%E6%9F%90%E4%BA%9B%E5%AD%97%E4%BD%93%EF%BC%9F.png)
我需要在装有 Kubuntu 20.04 的计算机上运行过时的软件 (Xilinx ISE),但 ISE 在加载 Noto 字体时出现段错误/usr/share/fonts/truetype/noto
(使用 找到strace
)。当我删除该文件夹时,软件可以正常启动,但 Noto 是 Kubuntu 的默认字体。即使更改了默认字体设置,某些应用程序也会损坏。
有没有办法让该文件夹对过时的软件隐藏?有没有标准且简单的解决方案可以解决我的问题?
答案1
你可以创建具有适当设置的新用户隐藏/显示资源,包括字体。
使用您选择的方法创建一个新用户。
man useradd
应该会有所帮助。/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>
根据需要创建其他字体配置文件。
如果您需要使特定字体可供应用程序使用,则可以将它们放在
/home/new-user/.local/share/fonts/
(或/home/new-user/.fonts/
,但此位置已被弃用)。测试字体是否隐藏:
sudo -H -u [new-user] fc-list | grep -i noto
运行程序:
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 或将其从某些应用程序中隐藏。您只需将其稍微降级即可。
对我来说有效的是
- 删除 Kubuntu 20.04 安装中的当前 noto 字体文件夹。
- 从 kubuntu 18.04 ISO 或安装中获取 noto 字体的副本。
- 将旧版本的 noto 文件夹放在新版本所在的位置。
您也可以从此处下载 noto 的 kubuntu18.04 版本https://drive.google.com/file/d/1kadGq6BGOyncoArN6Xqm1srJnFR8c0hK/view?usp=sharing