Blame


1 76193d7c 2003-09-30 devnull #include <u.h>
2 76193d7c 2003-09-30 devnull #include <libc.h>
3 76193d7c 2003-09-30 devnull #include <draw.h>
4 76193d7c 2003-09-30 devnull
5 76193d7c 2003-09-30 devnull /*
6 76193d7c 2003-09-30 devnull * Default version: convert to file name
7 76193d7c 2003-09-30 devnull */
8 76193d7c 2003-09-30 devnull
9 76193d7c 2003-09-30 devnull char*
10 76193d7c 2003-09-30 devnull subfontname(char *cfname, char *fname, int maxdepth)
11 76193d7c 2003-09-30 devnull {
12 213fc4f6 2015-02-17 rsc char *t, *u, *tmp1, *tmp2, *base;
13 213fc4f6 2015-02-17 rsc int i, scale;
14 213fc4f6 2015-02-17 rsc
15 213fc4f6 2015-02-17 rsc scale = parsefontscale(fname, &base);
16 76193d7c 2003-09-30 devnull
17 d4aef6a0 2005-05-12 devnull t = strdup(cfname); /* t is the return string */
18 76193d7c 2003-09-30 devnull if(strcmp(cfname, "*default*") == 0)
19 d4aef6a0 2005-05-12 devnull return t;
20 76193d7c 2003-09-30 devnull if(t[0] != '/'){
21 213fc4f6 2015-02-17 rsc tmp2 = strdup(base);
22 76193d7c 2003-09-30 devnull u = utfrrune(tmp2, '/');
23 76193d7c 2003-09-30 devnull if(u)
24 76193d7c 2003-09-30 devnull u[0] = 0;
25 76193d7c 2003-09-30 devnull else
26 76193d7c 2003-09-30 devnull strcpy(tmp2, ".");
27 d4aef6a0 2005-05-12 devnull tmp1 = smprint("%s/%s", tmp2, t);
28 d4aef6a0 2005-05-12 devnull free(tmp2);
29 d4aef6a0 2005-05-12 devnull free(t);
30 76193d7c 2003-09-30 devnull t = tmp1;
31 76193d7c 2003-09-30 devnull }
32 76193d7c 2003-09-30 devnull
33 76193d7c 2003-09-30 devnull if(maxdepth > 8)
34 76193d7c 2003-09-30 devnull maxdepth = 8;
35 76193d7c 2003-09-30 devnull
36 161060a4 2003-10-11 devnull for(i=3; i>=0; i--){
37 161060a4 2003-10-11 devnull if((1<<i) > maxdepth)
38 161060a4 2003-10-11 devnull continue;
39 76193d7c 2003-09-30 devnull /* try i-bit grey */
40 d4aef6a0 2005-05-12 devnull tmp2 = smprint("%s.%d", t, i);
41 d4aef6a0 2005-05-12 devnull if(access(tmp2, AREAD) == 0) {
42 d4aef6a0 2005-05-12 devnull free(t);
43 213fc4f6 2015-02-17 rsc if(scale > 1) {
44 213fc4f6 2015-02-17 rsc t = smprint("%d*%s", scale, tmp2);
45 213fc4f6 2015-02-17 rsc free(tmp2);
46 213fc4f6 2015-02-17 rsc tmp2 = t;
47 213fc4f6 2015-02-17 rsc }
48 d4aef6a0 2005-05-12 devnull return tmp2;
49 d4aef6a0 2005-05-12 devnull }
50 76193d7c 2003-09-30 devnull }
51 76193d7c 2003-09-30 devnull
52 76193d7c 2003-09-30 devnull /* try default */
53 213fc4f6 2015-02-17 rsc if(strncmp(t, "/mnt/font/", 10) == 0 || access(t, AREAD) == 0) {
54 213fc4f6 2015-02-17 rsc if(scale > 1) {
55 213fc4f6 2015-02-17 rsc tmp2 = smprint("%d*%s", scale, t);
56 213fc4f6 2015-02-17 rsc free(t);
57 213fc4f6 2015-02-17 rsc t = tmp2;
58 213fc4f6 2015-02-17 rsc }
59 d4aef6a0 2005-05-12 devnull return t;
60 213fc4f6 2015-02-17 rsc }
61 76193d7c 2003-09-30 devnull
62 76193d7c 2003-09-30 devnull return nil;
63 76193d7c 2003-09-30 devnull }