TrueType字体的位置


19

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

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

xpath -q -e 'fontconfig/dir[1]/text()[1]' /etc/fonts/fonts.conf

但是,我不知道此文件是否将在所有(或大多数)Linux系统上存在。

Answers:


20

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

更新:

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


然后,为什么我在这些位置(和)中有字体Firefoxgnome-font-viewer又不存在?我使用Fedora 28/usr/share/fonts~/.fonts
会计师م18年

4

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

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


0

也许您可以考虑使用字体创建一个包。创建包描述文件和创建规则需要一些工作。但是您可以获得免费更新和卸载的功能。对于Ubuntu,您应该创建.deb文件。


0

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

编辑:

我认为,您有三种解决方案,因为没有为此的环境变量或函数。

  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

PS那只是我的意见...


-1哈克。这不是解决方案,在这种情况下,只会给开发人员StackedCrooked带来麻烦,因为我们不能依靠每个用户知道他们的ttf文件在哪里。如果甚至开发人员甚至都不知道文件在哪里,我们应该如何期望用户知道?
Nitrodist
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.