commit 1fcdefc5854ff5708ad545eb047075838eda55ff from: Xiao-Yong Jin via: Dan Cross date: Tue Jul 26 16:15:07 2022 UTC fontsrv: always compute new height and ascent for the font file commit - 85bfd19a7beb628f24b051d23e6c94ecc6e4babc commit + 1fcdefc5854ff5708ad545eb047075838eda55ff blob - 54cd52a8b7ef5b6a556a23b7c066a6ae2c46c9b9 blob + fd629801aa1ec893625d67e30ddcd3f6ed5afd04 --- src/cmd/fontsrv/main.c +++ src/cmd/fontsrv/main.c @@ -287,6 +287,7 @@ xread(Req *r) Fmt fmt; XFont *f; char *data; + char *buf; Memsubfont *sf; Memimage *m; @@ -309,20 +310,24 @@ xread(Req *r) readstr(r, "font missing\n"); break; } + height = 0; + ascent = 0; + if(f->unit > 0) { + height = f->height * (int)QSIZE(path)/f->unit + 0.99999999; + ascent = height - (int)(-f->originy * (int)QSIZE(path)/f->unit + 0.99999999); + } + if(f->loadheight != nil) + f->loadheight(f, QSIZE(path), &height, &ascent); + fmtprint(&fmt, "%11d %11d\n", height, ascent); if(f->fonttext == nil) { - height = 0; - ascent = 0; - if(f->unit > 0) { - height = f->height * (int)QSIZE(path)/f->unit + 0.99999999; - ascent = height - (int)(-f->originy * (int)QSIZE(path)/f->unit + 0.99999999); - } - if(f->loadheight != nil) - f->loadheight(f, QSIZE(path), &height, &ascent); - fmtprint(&fmt, "%11d %11d\n", height, ascent); for(i=0; infile; i++) fmtprint(&fmt, "0x%06x 0x%06x x%06x.bit\n", f->file[i]*SubfontSize, ((f->file[i]+1)*SubfontSize) - 1, f->file[i]*SubfontSize); f->fonttext = fmtstrflush(&fmt); f->nfonttext = strlen(f->fonttext); + } else { + buf = fmtstrflush(&fmt); + strncpy(f->fonttext, buf, strlen(buf)); // Do not copy the null byte. + free(buf); } readbuf(r, f->fonttext, f->nfonttext); break;