我想创建一个小脚本,在用户的系统上安装一些 truetype 字体。在我的 Ubuntu 机器上,truetype 字体位于/usr/share/fonts/truetype
。但是,我不确定这个位置是否在所有机器上都相同。有没有办法找出任何 Linux 系统上 truetypes 字体的存储位置?
更新
经过一番研究,我发现该路径usr/share/fonts/truetype
是在 XML 文件中指定的/etc/fonts/fonts.conf
。这是一个 XML 文件,因此我可以使用 XPath 来获取目录:
xpath -q -e 'fontconfig/dir[1]/text()[1]' /etc/fonts/fonts.conf
但我不知道这个文件是否存在于所有(或大多数)Linux 系统上。
答案1
位于任何子目录下的每种字体/usr/share/fonts
都会~/.local/share/fonts
被扫描并添加到您可以使用的集合中。因此,只要您的字体位于这两个目录之一内,它就位于正确的位置,该位置对于几乎所有主要的 Linux 发行版都是相同的。
我可以确认该fonts.conf
文件存在于 Fedora 和 Ubuntu(以及它们的衍生产品:Xubuntu、Lubuntu、Linux Mint、Cinnamon、Peppermint OS、Fedora 及其所有旋转版,仅举几例)。
答案2
在 Fedora 中,文件夹路径是
/home/{user}/.local/share/fonts
您可以在此处复制/粘贴字体文件。
答案3
所有分布都是不同的,您最好设置一个默认路径并让用户在默认路径和自定义路径之间进行选择。
编辑:
在我看来,您有三个解决方案,因为没有环境变量或函数。
- 设置默认路径并让用户在默认路径和自定义路径之间进行选择。
- 就像 dtrosset 所说,您可以为不同的发行版创建包含字体的包。
- 您可以使用 if/elif/else 和 test -e 来确定是否存在不同的字体服务器路径。如果不存在,则显示默认路径并让用户在该路径和自定义路径之间进行选择。
前任:
DEFAULT="$home/.fonts/"
UBUNTU_XFSTT="/usr/share/fonts/truetype/"
RHL52_XFS="/usr/X11R6/lib/X11/fonts/ttfonts/"
RHL6_XFSTT="/usr/X11R6/lib/X11/fonts/"
DEBIAN_XFSTT="/usr/share/fonts/truetype/"
#Test if directory exist
if test -e ${UBUNTU_XFSTT} ; then
echo ${UBUNTU_XFSTT}
elif test -e ${RHL52_XFS} ; then
echo ${RHL52_XFS}
elif test -e ${RHL6_XFSTT} ; then
echo ${RHL6_XFSTT}
elif test -e ${DEBIAN_XFSTT} ; then
echo ${DEBIAN_XFSTT}
else
echo ${DEFAULT}
fi
PS:这只是我的观点...
答案4
也许您可以考虑创建一个包含字体的软件包。创建软件包描述文件和创建规则需要一些工作。但您可以免费更新和卸载。对于 Ubuntu,您应该创建 .deb 文件。