我想创建一个小脚本,在用户系统上安装一些 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 及其所有版本,等等)。
所有发行版都不同,您最好设置默认路径并让用户在默认路径和自定义路径之间进行选择。
编辑:
在我看来,您有三种解决方案,因为没有环境变量或函数。
前任:
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这只是我的意见...
| 归档时间: |
|
| 查看次数: |
67027 次 |
| 最近记录: |