1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
/* This file brings from GetFont.c */
#include <FVWMconfig.h>
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xlocale.h>
#include <fvwm/fvwmlib.h>
XFontSet GetFontSetOrFixedCLocale(Display *disp, char *fontname);
/*
** loads fontset or "fixed" on failure
*/
XFontSet GetFontSetOrFixed(Display *disp, char *fontname)
{
XFontSet fontset;
char **ml;
int mc;
char *ds;
if ((fontset = XCreateFontSet(disp,fontname,&ml,&mc,&ds))==NULL)
{
fprintf(stderr,
"[GetFontSetOrFixed]: WARNING -- can't get fontset %s, trying 'fixed'\n",
fontname);
/* fixed should always be avail, so try that */
if ((fontset = XCreateFontSet(disp,"fixed",&ml,&mc,&ds))==NULL)
{
fprintf(stderr,"[GetFontSetOrFixed]: ERROR -- can't get fontset 'fixed'\n");
fprintf(stderr,"[GetFontSetOrFixed]: Trying C locale as last resort\n");
fontset = GetFontSetOrFixedCLocale(disp, fontname);
}
}
return fontset;
}
XFontSet GetFontSetOrFixedCLocale(Display *disp, char *fontname)
{
XFontSet fontset;
char **ml;
int mc;
char *ds;
setlocale(LC_CTYPE, "C");
if ((fontset = XCreateFontSet(disp,fontname,&ml,&mc,&ds))==NULL)
{
fprintf(stderr,
"[GetFontSetOrFixedCLocale]: WARNING -- can't get fontset %s, trying 'fixed'\n",
fontname);
/* fixed should always be avail, so try that */
if ((fontset = XCreateFontSet(disp,"fixed",&ml,&mc,&ds))==NULL)
{
fprintf(stderr,"[GetFontSetOrFixedCLocale]: ERROR -- can't get fontset 'fixed'\n");
}
}
setlocale(LC_CTYPE, "");
return fontset;
}
|