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.
This commit is contained in:
parent
a5b24c22a8
commit
96dc233091
1 changed files with 3 additions and 1 deletions
|
|
@ -104,6 +104,7 @@ static char *lines[] = {
|
||||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
"ABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
||||||
"abcdefghijklmnopqrstuvwxyz",
|
"abcdefghijklmnopqrstuvwxyz",
|
||||||
"g",
|
"g",
|
||||||
|
"┌┬┐├┼┤└┴┘│─",
|
||||||
"ὕαλον ϕαγεῖν δύναμαι· τοῦτο οὔ με βλάπτει.",
|
"ὕαλον ϕαγεῖν δύναμαι· τοῦτο οὔ με βλάπτει.",
|
||||||
"私はガラスを食べられます。それは私を傷つけません。",
|
"私はガラスを食べられます。それは私を傷つけません。",
|
||||||
"Aš galiu valgyti stiklą ir jis manęs nežeidžia",
|
"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);
|
bbox = CTFontGetBoundingBox(font);
|
||||||
x = (int)(bbox.size.width + 0.99999999);
|
x = (int)(bbox.size.width*2 + 0.99999999);
|
||||||
|
|
||||||
fontheight(f, size, &height, &ascent);
|
fontheight(f, size, &height, &ascent);
|
||||||
y = height;
|
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);
|
m1 = allocmemimage(Rect(0, 0, x, y), antialias ? GREY8 : GREY1);
|
||||||
memimagedraw(m1, m1->r, m, m->r.min, memopaque, ZP, S);
|
memimagedraw(m1, m1->r, m, m->r.min, memopaque, ZP, S);
|
||||||
freememimage(m);
|
freememimage(m);
|
||||||
|
freememimage(mc);
|
||||||
|
|
||||||
sf->name = nil;
|
sf->name = nil;
|
||||||
sf->n = hi+1 - lo;
|
sf->n = hi+1 - lo;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue