Klaus Schmidinger wrote: > On 06/10/07 17:53, Anssi Hannula wrote: >> ... >> Alternatively, you could use the fontconfig library [1] for managing >> fonts. This would also allow using using the system default fonts via >> aliases like 'sans-serif' etc, and using a font list instead of having >> to manually write the font filename via OSD. >> >> You can get a quick idea from looking at the patch which added >> fontconfig support for mplayer [2], though of course you should look in >> fontconfig documentation instead of copying conventions from mplayer :) >> >> [1] http://fontconfig.org/ >> [2] >> http://lists.mplayerhq.hu/pipermail/mplayer-dev-eng/2003-November/022218.html > > When I do > > const char *font_name = "sans-serif"; > FcInit(); > FcPattern *fc_pattern = FcNameParse((FcChar8 *)font_name);
While fontconfig is usually configured to ignore bitmap fonts anyway, I think you should enforce that by putting this call here: FcPatternAddBool(fc_pattern, FC_SCALABLE, FcTrue); > FcConfigSubstitute(0, fc_pattern, FcMatchPattern); > FcDefaultSubstitute(fc_pattern); > fc_pattern = FcFontMatch(0, fc_pattern, 0); > FcChar8 *s; > FcPatternGetString(fc_pattern, FC_FILE, 0, &s); > fprintf(stderr, "font '%s'\n", s);//XXX > free(fc_pattern); Use FcPatternDestroy(fc_pattern) instead, using free() here causes an error for me. > FcFini(); > > it prints > > font '/usr/share/fonts/truetype/arial.ttf' > > which looks good. However, when I use "courier" instead of "sans-serif", I get > > font '/usr/share/fonts/URW/n022003l.pfb' > > which is not a truetype font and therefore can't be used with VDR's font > rendering. Hmm... AFAIK it is scalable and freetype can use it. Or is there some another restriction regarding VDR font rendering? > > Is there a way to make fontconfig only return truetype fonts? > > > Also: is there a way to get a list of available truetype fonts from > fontconfig? That's what would be needed to allow the user to select > a desired font in VDR's Setup/OSD menu. Gathering from http://www.xemacs.org/Documentation/packages/html/fontconfig_3.html , it can be done with something like this: // what info is requested: FcObjectSet *os = FcObjectSetBuild(FC_FAMILY, NULL); // what fonts are requested: FcPattern *pat = FcPatternBuild(NULL, FC_SCALABLE, FcTypeBool, FcTrue, NULL); FcFontSet* fontset = FcFontList(0, pat, os); FcObjectSetDestroy(os); FcPatternDestroy(pat); for (int i = 0; i < fontset->nfont ; i++) { FcChar8 *t; FcPatternGetString(fontset->fonts[i], FC_FAMILY, 0, &t); fprintf(stderr, "font '%s'\n", t); } FcFontSetDestroy(fontset); Note that I am only googling this info, I don't really know about fontconfig myself ;) -- Anssi Hannula _______________________________________________ vdr mailing list vdr@linuxtv.org http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr