summaryrefslogtreecommitdiffstats
path: root/src/libdraw/subfontname.c
diff options
context:
space:
mode:
authorRuss Cox <rsc@swtch.com>2015-02-17 12:16:20 -0500
committerRuss Cox <rsc@swtch.com>2015-02-17 20:51:23 +0000
commit213fc4f6fb26bb5781ea3e489bf4cc5c2aca591e (patch)
treef6a4f5bbb3244133a8b62b835176f09c9346cfe5 /src/libdraw/subfontname.c
parent77f23268f7073b254e91748d4764768bab6d6f1f (diff)
downloadplan9port-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.c21
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;
}