From 1edc7554deb557e3045076336e4b036109906db1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9rgio=20Martins?= Date: Wed, 26 Nov 2014 10:12:55 +0000 Subject: FreeType: Fix font rendering with fonts with embedded bitmaps Only reproduced with Windows font Calibri. This font has both outline (vector) and bitmap glyphs. QFontEngine_FT has an hack to get metrics from EBLC table, but this might fail, resulting in a 0 ascender and descender, meaning QFontMetrics::height() will be 0, meaning totally broken text. This patch checks for that failure, and fallbacks to the outline metrics instead of the bitmap ones. Task-number: QTBUG-42898 Change-Id: If33fc3404d0c7f84557f8c4a5ae71b30f78d60a7 Reviewed-by: Konstantin Ritt Reviewed-by: Friedemann Kleint Reviewed-by: Eskil Abrahamsen Blomfeldt --- src/gui/text/qfontengine_ft.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/gui') diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp index e2c8f905b9..0a8be67e43 100644 --- a/src/gui/text/qfontengine_ft.cpp +++ b/src/gui/text/qfontengine_ft.cpp @@ -762,8 +762,10 @@ bool QFontEngineFT::init(FaceId faceId, bool antialias, GlyphFormat format, face->face_flags &= ~FT_FACE_FLAG_SCALABLE; FT_Select_Size(face, i); - metrics.ascender = face->size->metrics.ascender; - metrics.descender = face->size->metrics.descender; + if (face->size->metrics.ascender + face->size->metrics.descender > 0) { + metrics.ascender = face->size->metrics.ascender; + metrics.descender = face->size->metrics.descender; + } FT_Set_Char_Size(face, xsize, ysize, 0, 0); face->face_flags |= FT_FACE_FLAG_SCALABLE; -- cgit v1.2.3