我希望能够在给定字体名称(如果存在)时获取Linux上ttf字体文件的绝对路径。是否有返回该信息的命令或API?
例如,给定“arial.ttf”我想在任何地方找到绝对路径(例如/usr/share/fonts/truetype/msttcorefonts/arial.ttf)。
答案 0 :(得分:5)
最简单的方法可能是将fontconfig
与--format
选项一起使用:
$ fc-match --format=%{file} LiberationSans-Regular.ttf
将导致输出
/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf
您还可以提供类似mono
,DejaVu
,:weight=bold
,DejaVu-12
或{{1}的字体说明,而不是字体文件名称。 }}。所以,例如,
DejaVu:weight=bold
结果
$ fc-match --format=%{file} :weight=bold
在我的系统上。唯一似乎不起作用的是给出字体文件的完整路径。
答案 1 :(得分:0)
你看过How to get a list of installed True Type Fonts on Linux using C or C++?吗?
那里没有可接受的答案,但它有一个良好的开端。
答案 2 :(得分:0)
可以说,尝试通过路径访问字体是一个非常糟糕的主意,linux字体堆栈不是这样设计的。地点不会有任何稳定性,用户在字体列表中预期的很多“字体”都不会映射到单个字体文件,而是多个字体文件的复合体。
如果您希望与所有其他桌面应用程序保持一致(并且用户希望字体选择在所有应用程序中以相同的方式工作),则需要通过fontconfig间接层按模式访问字体(使用pango-cairo,或者QT)并接受结果可能很复杂而且不直观。
对你而言,这似乎不那么直观并不重要,唯一重要的是字体选择与所有其他应用程序的工作方式相同。通常有很好的理由选择fontconfig映射。