-
Notifications
You must be signed in to change notification settings - Fork 31
/
pcf2bmf.c
105 lines (97 loc) · 2.17 KB
/
pcf2bmf.c
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include <stdio.h>
#include <stdlib.h>
#include <locale.h>
#include <string.h>
#include <wchar.h>
#include <getopt.h>
#include "pcf.h"
char sOutFilename[256];
int nFontCount = 65535;
int nAddGap = 0;
static void help(void)
{
printf("Usage: pcf2bmf [options] ...\n"
" -h --help\t\t\tPrint this help message\n"
" -f --file\t\t\tpcf name to process \n"
" -o --output\t\t\toutput filename\n"
" -c --count\t\t\tgenerate font count\n"
" -g --gap\t\t\tadd 1 pixel to the right of each character\n"
" -m --merge\t\tbase bmf file name for the pcf file to be merged into\n"
);
}
static struct option opts[] = {
{ "help", 0, 0, 'h' },
{ "file", 1, 0, 'f' },
{ "output", 1, 0, 'o' },
{ "count", 1, 0, 'c' },
{ "gap", 0, 0, 'g' },
{ "merge", 1, 0, 'm' },
{ NULL, 0, NULL, 0 }
};
int main(int argc, char *argv[])
{
char sPcfFilename[256];
char sBmfFilename[256];
pcffont_t pcfFont;
setlocale( LC_ALL, "" );
if(argc < 3)
{
help();
exit(2);
}
int oc;
nFontCount = 65535;
memset(sPcfFilename, 0, sizeof(sPcfFilename));
memset(sBmfFilename, 0, sizeof(sBmfFilename));
memset(sOutFilename, 0, sizeof(sOutFilename));
while((oc=getopt_long(argc,argv,"hf:m:n:o:c:gpq", opts, NULL))!=-1)
{
switch (oc) {
case 'h':
help();
exit(0);
break;
case 'f':
strncpy(sPcfFilename, optarg, sizeof(sPcfFilename) - 1);
sPcfFilename[sizeof(sPcfFilename) - 1] = '\0';
break;
case 'm':
strncpy(sBmfFilename, optarg, sizeof(sBmfFilename) - 1);
sBmfFilename[sizeof(sBmfFilename) - 1] = '\0';
break;
case 'o':
strncpy(sOutFilename, optarg, sizeof(sOutFilename) - 1);
sOutFilename[sizeof(sOutFilename) - 1] = '\0';
break;
case 'c':
nFontCount = atoi(optarg);
break;
case 'g':
nAddGap = 1;
break;
default:
help();
exit(2);
}
}
if (sPcfFilename[0])
{
pcfFont.file = sPcfFilename;
if (load_pcf(&pcfFont, sBmfFilename) >= 0)
{
fprintf(stdout, "%d %d %d\n", pcfFont.Fmetrics.ascent, pcfFont.Fmetrics.descent,
pcfFont.Fmetrics.linespace);
return 0;
}
else
{
fprintf(stdout,"Fail to load font file: %s\n", sPcfFilename);
return -1;
}
}
else
{
fprintf(stdout,"No PCF file specified.\n");
return -1;
}
}