From 8d4a267a681da78408bf758106ca32be3a021dd7 Mon Sep 17 00:00:00 2001 From: Jerome St-Louis Date: Thu, 4 Aug 2016 05:37:39 -0400 Subject: [PATCH] ecere/gfx/fontRendering: Improved rendering of some fonts e.g. MS Sans Serif having 0 height - Also avoided a crash on null font --- ecere/src/gfx/drivers/OpenGLDisplayDriver.ec | 2 +- ecere/src/gfx/fontRendering.ec | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) 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; -- 1.8.3.1