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 <ritt.ks@gmail.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>bb10
parent
33739ccb95
commit
1edc7554de
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue