Created
January 21, 2015 14:08
-
-
Save CallumDev/7c66b3f9cf7a876ef75f to your computer and use it in GitHub Desktop.
FontConfig sample in C
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//compiled gcc fonttest.c -o fonttest -lfontconfig | |
//Sample output: /usr/share/fonts/steam-fonts/arial.ttf | |
#include <stdio.h> | |
#include <stdlib.h> | |
#include <fontconfig/fontconfig.h> | |
int main() | |
{ | |
FcConfig* config = FcInitLoadConfigAndFonts(); | |
//make pattern from font name | |
FcPattern* pat = FcNameParse((const FcChar8*)"Arial"); | |
FcConfigSubstitute(config, pat, FcMatchPattern); | |
FcDefaultSubstitute(pat); | |
char* fontFile; //this is what we'd return if this was a function | |
// find the font | |
FcResult result; | |
FcPattern* font = FcFontMatch(config, pat, &result); | |
if (font) | |
{ | |
FcChar8* file = NULL; | |
if (FcPatternGetString(font, FC_FILE, 0, &file) == FcResultMatch) | |
{ | |
//we found the font, now print it. | |
//This might be a fallback font | |
fontFile = (char*)file; | |
printf("%s\n",fontFile); | |
} | |
} | |
FcPatternDestroy(pat); | |
return 0; | |
} |
It's a good example. Do I need to add FcConfigDestroy(config);
for every FcConfigGetCurrent()
?
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Thanks for this. But you need to also call FcInit() at the beginning and FcFini() at the end. Also, you need to call FcConfigDestroy(config) to free the config memory and FcPatternDestroy(font) to free the font memory.
//Reference
//https://www.freedesktop.org/software/fontconfig/fontconfig-devel/x103.html#AEN3038
Example: