truetype 字体的位置

Sta*_*ked 23 linux fonts

我想创建一个小脚本,在用户系统上安装一些 truetype 字体。在我的 Ubuntu 机器上,truetype 字体位于/usr/share/fonts/truetype. 但是,我不确定这个位置是否在所有机器上都相同。有没有办法找出 truetypes 字体在任何 Linux 系统上的存储位置?

更新
经过一番研究,我发现该路径usr/share/fonts/truetype是在 XML 文件中指定的/etc/fonts/fonts.conf。这是一个 XML 文件,所以我可以使用 XPath 来获取目录:

xpath -q -e 'fontconfig/dir[1]/text()[1]' /etc/fonts/fonts.conf
Run Code Online (Sandbox Code Playgroud)

但是我不知道这个文件是否会存在于所有(或大多数)Linux 系统上。

ari*_*nmz 23

位于任何子目录下的每个字体/usr/share/fonts~/.fonts被扫描并添加到你能够使用集合。因此,只要您的字体位于它正确定位的这两个目录之一中,该位置对于几乎每个主要的 linux 发行版都是相同的。

更新:

顺便说一下,我可以确认fonts.confFedora 和 Ubuntu 上都存在该文件(以及它们的衍生物:Xubuntu、Lubuntu、Linux Mint、Cinnammon、Peppermint OS、Fedora 及其所有版本,等等)。


小智 6

在 Fedora 中,文件夹路径是 /home/{user}/.local/share/fonts

您可以在此处复制/粘贴字体文件。


gee*_*983 1

所有发行版都不同,您最好设置默认路径并让用户在默认路径和自定义路径之间进行选择。

编辑:

在我看来,您有三种解决方案,因为没有环境变量或函数。

  1. 设置默认路径并让用户在默认路径和自定义路径之间进行选择。
  2. 就像 dtrosset 所说,您可以使用您的字体为不同的发行版创建包。
  3. 您可以使用 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
Run Code Online (Sandbox Code Playgroud)

PS这只是我的意见...