From 4ebaf18e9234bf58aae7a5c47fc15ec4c80812b6 Mon Sep 17 00:00:00 2001 From: Mechiel Lukkien Date: Sat, 6 Jan 2018 18:01:55 +0100 Subject: fontsrv: skip only the surrogate pairs fontsrv wasn't rendering fontawesome icons, which uses the private use area around 0xf000. --- src/cmd/fontsrv/osx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/cmd/fontsrv') diff --git a/src/cmd/fontsrv/osx.c b/src/cmd/fontsrv/osx.c index f48f5b49..adb007c2 100644 --- a/src/cmd/fontsrv/osx.c +++ b/src/cmd/fontsrv/osx.c @@ -30,7 +30,7 @@ mapUnicode(char *name, int i) { int j; - if(0xd800 <= i && i < 0xe0000) // surrogate pairs, will crash OS X libraries! + if(0xd800 <= i && i < 0xe000) // surrogate pairs, will crash OS X libraries! return 0xfffd; for(j=0; j Date: Wed, 14 Mar 2018 22:45:33 -0500 Subject: fontsrv: enlarge drawing buffer for subfonts on macOS Double the width returned by CTFontGetBoundingBox when drawing. Add box drawing characters for determining the line height. Call freememimage(1) for the character memimage. Fixes #18. Fixes #120. Fixes #146. --- src/cmd/fontsrv/osx.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/cmd/fontsrv') diff --git a/src/cmd/fontsrv/osx.c b/src/cmd/fontsrv/osx.c index adb007c2..18197a23 100644 --- a/src/cmd/fontsrv/osx.c +++ b/src/cmd/fontsrv/osx.c @@ -104,6 +104,7 @@ static char *lines[] = { "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz", "g", + "┌┬┐├┼┤└┴┘│─", "ὕαλον ϕαγεῖν δύναμαι· τοῦτο οὔ με βλάπτει.", "私はガラスを食べられます。それは私を傷つけません。", "Aš galiu valgyti stiklą ir jis manęs nežeidžia", @@ -234,7 +235,7 @@ mksubfont(XFont *f, char *name, int lo, int hi, int size, int antialias) bbox = CTFontGetBoundingBox(font); - x = (int)(bbox.size.width + 0.99999999); + x = (int)(bbox.size.width*2 + 0.99999999); fontheight(f, size, &height, &ascent); y = height; @@ -343,6 +344,7 @@ mksubfont(XFont *f, char *name, int lo, int hi, int size, int antialias) m1 = allocmemimage(Rect(0, 0, x, y), antialias ? GREY8 : GREY1); memimagedraw(m1, m1->r, m, m->r.min, memopaque, ZP, S); freememimage(m); + freememimage(mc); sf->name = nil; sf->n = hi+1 - lo; -- cgit v1.2.3 From a3ec102dc7fee3d4ecb32ade5ec9d7de4b9b4304 Mon Sep 17 00:00:00 2001 From: Xiao-Yong Jin Date: Tue, 20 Mar 2018 22:17:05 -0500 Subject: fontsrv: fix some memory leaks --- src/cmd/fontsrv/osx.c | 4 +++- src/cmd/fontsrv/x11.c | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) (limited to 'src/cmd/fontsrv') diff --git a/src/cmd/fontsrv/osx.c b/src/cmd/fontsrv/osx.c index 18197a23..4d969290 100644 --- a/src/cmd/fontsrv/osx.c +++ b/src/cmd/fontsrv/osx.c @@ -245,8 +245,10 @@ mksubfont(XFont *f, char *name, int lo, int hi, int size, int antialias) if(m == nil) return nil; mc = allocmemimage(Rect(0, 0, x+1, y+1), GREY8); - if(mc == nil) + if(mc == nil){ + freememimage(m); return nil; + } memfillcolor(m, DBlack); memfillcolor(mc, DBlack); fc = malloc((hi+2 - lo) * sizeof fc[0]); diff --git a/src/cmd/fontsrv/x11.c b/src/cmd/fontsrv/x11.c index f106d253..a097ca4d 100644 --- a/src/cmd/fontsrv/x11.c +++ b/src/cmd/fontsrv/x11.c @@ -236,6 +236,7 @@ mksubfont(XFont *xf, char *name, int lo, int hi, int size, int antialias) m1 = allocmemimage(Rect(0, 0, x, y), antialias ? GREY8 : GREY1); memimagedraw(m1, m1->r, m, m->r.min, memopaque, ZP, S); freememimage(m); + freememimage(mc); sf->name = nil; sf->n = hi+1 - lo; -- cgit v1.2.3