[Pkg-cups-devel] Bug#670055: cups-filters: Printing a text file fails when Liberation is the only TrueType font available
Fabian Greffrath
fabian at greffrath.com
Thu Apr 26 14:38:54 UTC 2012
Am 26.04.2012 14:47, schrieb Brian Potkin:
> It's at times like this I begin to wonder what I have failed to do
> correctly. :)
Furthermore, could you please install the libfontconfig1-dev package
and compile the attached source with "gcc fc-test.c -o fc-test
-lfontconfig".
It's the relevant part from texttopdf.c copied into a dedicated
executable. Now please try "./fc-test FreeMono" and tell me the
results. As this is more or less a re-implementation of "fc-match -s",
the results should be identical up to the point where a monospaced
truetype font is found. Can you confirm?
- Fabian
-------------- next part --------------
#include <stdio.h>
#include <fontconfig/fontconfig.h>
int main (int argc, char *argv[])
{
char *font = argv[1];
FcPattern *pattern;
FcFontSet *candidates;
FcChar8 *fontname = NULL;
int i;
if (!font)
return 1;
FcInit ();
pattern = FcNameParse ((const FcChar8 *)font);
FcPatternAddInteger (pattern, FC_SPACING, FC_MONO);
FcConfigSubstitute (0, pattern, FcMatchPattern);
FcDefaultSubstitute (pattern);
candidates = FcFontSort (0, pattern, FcTrue, 0, 0);
FcPatternDestroy (pattern);
for (i = 0; i < candidates->nfont; i++) {
FcChar8 *fontformat=NULL;
int spacing=0;
FcPatternGetString (candidates->fonts[i], FC_FONTFORMAT, 0, &fontformat);
FcPatternGetInteger (candidates->fonts[i], FC_SPACING, 0, &spacing);
printf ("C: %s\n", FcPatternFormat (candidates->fonts[i], (const FcChar8 *)"%{file|cescape}"));
if ( (fontformat)&&(spacing == FC_MONO) ) {
if (strcmp((const char *)fontformat, "TrueType") == 0) {
fontname = FcPatternFormat (candidates->fonts[i], (const FcChar8 *)"%{file|cescape}/%{index}");
break;
} else if (strcmp((const char *)fontformat, "CFF") == 0) {
fontname = FcPatternFormat (candidates->fonts[i], (const FcChar8 *)"%{file|cescape}");
break;
}
}
}
FcFontSetDestroy (candidates);
if (fontname)
printf("S: %s\n", fontname);
return 0;
}
More information about the Pkg-cups-devel
mailing list