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>
This commit is contained in:
parent
77f23268f7
commit
213fc4f6fb
9 changed files with 243 additions and 28 deletions
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue