1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-10 18:51:21 +03:00

0026611: Visualization, TKService - fix NULL-dereference in Font_FontMgr on broken font

Check FT_Face::family_name for NULL during detection.
Skip fonts without mandatory UNICODE charset in Font_FontMgr.
This commit is contained in:
kgv 2015-08-27 12:34:09 +03:00 committed by abv
parent 4ce07e4ec6
commit 0b94a4f33d

View File

@ -202,9 +202,14 @@ static Handle(Font_SystemFont) checkFont (const Handle(Font_FTLibrary)& theFTLib
anAspect = Font_FA_Bold;
}
Handle(TCollection_HAsciiString) aFontName = new TCollection_HAsciiString (aFontFace->family_name);
Handle(TCollection_HAsciiString) aFontPath = new TCollection_HAsciiString (theFontPath);
Handle(Font_SystemFont) aResult = new Font_SystemFont (aFontName, anAspect, aFontPath);
Handle(Font_SystemFont) aResult;
if (aFontFace->family_name != NULL // skip broken fonts (error in FreeType?)
&& FT_Select_Charmap (aFontFace, ft_encoding_unicode) == 0) // Font_FTFont supports only UNICODE fonts
{
Handle(TCollection_HAsciiString) aFontName = new TCollection_HAsciiString (aFontFace->family_name);
Handle(TCollection_HAsciiString) aFontPath = new TCollection_HAsciiString (theFontPath);
aResult = new Font_SystemFont (aFontName, anAspect, aFontPath);
}
FT_Done_Face (aFontFace);