5

当给定字体名称(如果存在)时,我希望能够在 Linux 上获取 ttf 字体文件的绝对路径。是否有返回该信息的命令或 API?

例如,给定“arial.ttf”,我想在任何地方找到绝对路径(例如/usr/share/fonts/truetype/msttcorefonts/arial.ttf)。

4

2 回答 2

4

最简单的方法可能是fontconfig--format选项一起使用:

$ fc-match --format=%{file} LiberationSans-Regular.ttf

将导致输出

/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf

除了字体文件名,您还可以提供字体描述,可能类似于monoDejaVu:weight=boldDejaVu-12DejaVu:weight=bold. 所以,例如,

$ fc-match --format=%{file} :weight=bold

结果是

/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf

在我的系统上。唯一似乎不起作用的是提供字体文件的完整路径。

于 2014-04-23T13:18:46.073 回答
0

可以说,尝试通过路径访问字体是一个非常糟糕的主意,linux 字体堆栈不是这样设计的。位置不会有任何稳定性,并且用户在字体列表中期望的许多“字体”不会映射到单个字体文件,而是多个字体文件的组合。

如果您想与所有其他桌面应用程序保持一致(并且用户希望字体选择在所有应用程序中以相同的方式工作),您需要通过 fontconfig 间接层(使用 pango-cairo 或 QT)按模式访问字体和接受结果可能很复杂且不直观。

对您来说它似乎不那么直观并不重要,重要的是字体选择与所有其他应用程序的工作方式相同。并且通常有很好的理由选择 fontconfig 映射。

于 2014-04-24T12:08:22.857 回答