From: Jerome St-Louis Date: Thu, 4 Aug 2016 09:37:39 +0000 (-0400) Subject: ecere/gfx/fontRendering: Improved rendering of some fonts e.g. MS Sans Serif having... X-Git-Tag: 0.44.15~24 X-Git-Url: http://ecere.com/cgi-bin/gitweb.cgi?p=sdk;a=commitdiff_plain;h=8d4a267a681da78408bf758106ca32be3a021dd7 ecere/gfx/fontRendering: Improved rendering of some fonts e.g. MS Sans Serif having 0 height - Also avoided a crash on null font --- diff --git a/ecere/src/gfx/drivers/OpenGLDisplayDriver.ec b/ecere/src/gfx/drivers/OpenGLDisplayDriver.ec index 18b9b6f..289d981 100644 --- a/ecere/src/gfx/drivers/OpenGLDisplayDriver.ec +++ b/ecere/src/gfx/drivers/OpenGLDisplayDriver.ec @@ -2688,7 +2688,7 @@ class OpenGLDisplayDriver : DisplayDriver void WriteText(Display display, Surface surface, int x, int y, const char * text, int len, int prevGlyph, int * rPrevGlyph) { - if(len && text[0]) + if(len && text[0] && surface.font) { OGLSurface oglSurface = surface.driverData; OGLSystem oglSystem = display.displaySystem.driverData; diff --git a/ecere/src/gfx/fontRendering.ec b/ecere/src/gfx/fontRendering.ec index f94edda..8cdf1d6 100644 --- a/ecere/src/gfx/fontRendering.ec +++ b/ecere/src/gfx/fontRendering.ec @@ -879,6 +879,8 @@ public class Font : struct FT_Set_Transform(fontEntry.face, &matrix, &pen ); FaceSetCharSize(fontEntry.face, size); height = (int)((fontEntry.face->size->metrics.height) >> 6); //* y_scale; + if(!height) + height = size * 96 / 72 + 4; // printf("Font height is %d\n", height); this.fakeItalic = info.fakeItalic; } @@ -1183,6 +1185,8 @@ public class Font : struct int h = (int)face->size->metrics.height; int desc = (int)face->size->metrics.descender; int oy = (numGlyphs ? shaper_item.offsets[index].y : 0); + if(!h) + h = height * 64; oy += h + desc - glyph->by; oy >>= 6;