On 06/16/07 16:29, Anssi Hannula wrote:
Klaus Schmidinger wrote:
On 06/15/07 18:07, Anssi Hannula wrote:
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.htm...
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);
Thanks.
Actually, I was wrong here. This won't guarantee anything, as the preference priorities of parameters is predefined, and the family name and, apparently, various other parameters (which are actually left at their defaults) are given a priority over the font being scalable. I was hit with this when trying to select FC_FAMILY "Utopia", and it kept returning the non-scalable version, even though a scalable version with the same name is available.
Solution is given here: http://lists.freedesktop.org/archives/fontconfig/2006-March/002165.html
So it is doable, but you have to use FcFontSort() ( http://www.xemacs.org/Documentation/packages/html/fontconfig_3.html#SEC20 ), which returns a similar FcFontSet as the FcFontList() which is used for the font listing, but this time the fonts are ordered according to the closeness of match, allowing you to pick the first font with FC_SCALABLE being true.
[...]
I don't know if you have noticed / thought of these already, but few tips:
- For the fixed-size font list, you can use a match of FC_SPACING being
FC_MONO so that non-monospace fonts are not listed.
- Have a "default" (or "system default") font setting in the font list,
which causes VDR to use the default aliases instead of user-specified font
Since you're apparently getting more and more familiar with this, maybe you could provide a complete code sequence that does this:
- list all available fonts, as in "Arial", "Verdana", "Times New Roman", ...
- optionally list only monospaced fonts
- make sure there are only scalable fonts (i.e. ones that freetype can use)
- if possible, give information on whether a particular font is available as "bold" and/or "italic
From the setup menu I'd like to be able to call a function that delivers
a list of font names (much like it's currently done with the actual font file names) that looks like
Arial Arial:bold Arial:italic Arial:bold:italic Verdana Verdana:bold Verdana:italic ...
I would prepend that list with
sans-serif:bold sans-serif courier:bold
for the three default fonts.
Finally, such a string should be useable to select an actual font file.
Klaus