File: GetFontSet.c

package info (click to toggle)
fvwm95 2.0.43ba-15
  • links: PTS
  • area: main
  • in suites: potato
  • size: 6,356 kB
  • ctags: 4,759
  • sloc: ansic: 46,398; makefile: 1,586; sh: 782; perl: 328
file content (64 lines) | stat: -rw-r--r-- 1,659 bytes parent folder | download | duplicates (3)
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;
}