在Linux上定位字体(用C++编写)

Kaz*_*ade 5 c++ linux fonts truetype locate

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

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

cma*_*ter 5

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

$ fc-match --format=%{file} LiberationSans-Regular.ttf
Run Code Online (Sandbox Code Playgroud)

将导致输出

/usr/share/fonts/truetype/liberation/LiberationSans-Regular.ttf
Run Code Online (Sandbox Code Playgroud)

取而代之的是字体文件名,还可以提供一个字体描述,可能是这样的mono,DejaVu,:weight=bold,DejaVu-12,或DejaVu:weight=bold.所以,例如,

$ fc-match --format=%{file} :weight=bold
Run Code Online (Sandbox Code Playgroud)

结果是

/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf
Run Code Online (Sandbox Code Playgroud)

在我的系统上.唯一似乎不起作用的是给出字体文件的完整路径.