diff options
| author | Russ Cox <rsc@swtch.com> | 2015-02-17 12:16:20 -0500 |
|---|---|---|
| committer | Russ Cox <rsc@swtch.com> | 2015-02-17 20:51:23 +0000 |
| commit | 213fc4f6fb26bb5781ea3e489bf4cc5c2aca591e (patch) | |
| tree | f6a4f5bbb3244133a8b62b835176f09c9346cfe5 /src/libdraw/subfontname.c | |
| parent | 77f23268f7073b254e91748d4764768bab6d6f1f (diff) | |
| download | plan9port-213fc4f6fb26bb5781ea3e489bf4cc5c2aca591e.tar.gz plan9port-213fc4f6fb26bb5781ea3e489bf4cc5c2aca591e.zip | |
libdraw: autoscale fonts when moving between low and high dpi screens
Change-Id: I6093955b222db89dfe437fb723593b173d888d01
Reviewed-on: https://plan9port-review.googlesource.com/1170
Reviewed-by: Russ Cox <rsc@swtch.com>
Diffstat (limited to 'src/libdraw/subfontname.c')
| -rw-r--r-- | src/libdraw/subfontname.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/libdraw/subfontname.c b/src/libdraw/subfontname.c index 874528be..9280244a 100644 --- a/src/libdraw/subfontname.c +++ b/src/libdraw/subfontname.c @@ -9,14 +9,16 @@ char* subfontname(char *cfname, char *fname, int maxdepth) { - char *t, *u, *tmp1, *tmp2; - int i; + char *t, *u, *tmp1, *tmp2, *base; + int i, scale; + + scale = parsefontscale(fname, &base); t = strdup(cfname); /* t is the return string */ if(strcmp(cfname, "*default*") == 0) return t; if(t[0] != '/'){ - tmp2 = strdup(fname); + tmp2 = strdup(base); u = utfrrune(tmp2, '/'); if(u) u[0] = 0; @@ -38,13 +40,24 @@ subfontname(char *cfname, char *fname, int maxdepth) tmp2 = smprint("%s.%d", t, i); if(access(tmp2, AREAD) == 0) { free(t); + if(scale > 1) { + t = smprint("%d*%s", scale, tmp2); + free(tmp2); + tmp2 = t; + } return tmp2; } } /* try default */ - if(strncmp(t, "/mnt/font/", 10) == 0 || access(t, AREAD) == 0) + if(strncmp(t, "/mnt/font/", 10) == 0 || access(t, AREAD) == 0) { + if(scale > 1) { + tmp2 = smprint("%d*%s", scale, t); + free(t); + t = tmp2; + } return t; + } return nil; } |
