我的应用程序如何获取Linux上可用的True Type字体列表。
它们是否存储在不同发行版之间的标准目录中?或者有其他标准方法来定位它们吗?
我刚刚使用了一个叫做Pango的东西,它被GTK+所使用。我是通过查看Linux上字符映射程序(gucharmap)的代码找到它的。这里是基本思路:
PangoFontFamily **families;
...
pango_context_list_families (
gtk_widget_get_pango_context (GTK_WIDGET (notebook)),
&families, &fontCount);
printf("%d fonts found\n", fontCount);
for(i=0; i<fontCount; i++)
{
printf("[%s]\n", pango_font_family_get_name (families[i]));
}
这并不相关,但你可以使用fontmatrix
来显示所有字体及其预览(yum -y install fontmatrix)。
如果您正在使用像GTK+或Qt这样的高级工具包,那么可能有更好的函数可以为您完成;如果没有,fontconfig是实现它的事实标准方式。
如果您不是编写专有软件或任何与GPL不兼容的许可软件,您可以尝试查看xlsfonts代码以了解如何查询字体服务器。(字体服务器可以是X本身,但这并不重要。)