Я только что сделал это, используя что-то под названием Pango, которое используется GTK +. Я нашел это, посмотрев код для программы linux 'Character Map' (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]));
}