--- OpenCASCADE-6.5.2/ros/configure.ac 2011-09-30 13:32:47.000000000 -0300 +++ OpenCASCADE-6.5.2_patched/ros/configure.ac 2012-01-02 13:35:24.000000000 -0200 @@ -422,7 +422,7 @@ HAVE_FTGL=yes HAVE_FTGL_INC=yes CPPFLAGS="-I$ftgl/include $CPPFLAGS"; - AC_CHECK_HEADER( [FTGL/FTGL.h], [], [HAVE_FTGL_INC=no] ) + AC_CHECK_HEADER( [FTGL/ftgl.h], [], [HAVE_FTGL_INC=no] ) if test "x$HAVE_FTGL_INC" = "xyes"; then CSF_FTGL_INCLUDES="-I$ftgl/include/FTGL" HAVE_FTGL_LIB=yes @@ -431,9 +431,9 @@ LIBS_sv=$LIBS LIBS="-lftgl $CSF_OpenGlLibs_LIB $LIBS" #we have problem with unresolved symbols on 64 stations - CSF_FTGL_LIB="-L$ftgl/lib -lftgl" + CSF_FTGL_LIB="-L$ftgl/lib -lftgl -lfreetype" AC_TRY_LINK([ -#include +#include #include ], [ FTGLTextureFont font("");], [ --- OpenCASCADE-6.5.2/ros/inc/OpenGl_FontMgr.hxx 2011-09-02 12:43:25.000000000 -0300 +++ OpenCASCADE-6.5.2_patched/ros/inc/OpenGl_FontMgr.hxx 2012-01-02 13:32:57.000000000 -0200 @@ -6,7 +6,7 @@ # include #endif -#include +#include #include #include --- OpenCASCADE-6.5.2/ros/inc/OpenGl_TextRender.hxx 2011-09-02 12:43:25.000000000 -0300 +++ OpenCASCADE-6.5.2_patched/ros/inc/OpenGl_TextRender.hxx 2012-01-02 13:32:57.000000000 -0200 @@ -5,7 +5,7 @@ #include #include #include -#include +#include #define NUM_FONT_SIZES 40 #define NUM_CHAR_FONT 1024 --- OpenCASCADE-6.5.2/ros/src/OpenGl/OpenGl_FontMgr.cxx 2011-09-02 12:43:25.000000000 -0300 +++ OpenCASCADE-6.5.2_patched/ros/src/OpenGl/OpenGl_FontMgr.cxx 2012-01-02 13:32:57.000000000 -0200 @@ -1,8 +1,6 @@ #include -#include -#include -#include +#include #include #undef TRACE @@ -60,6 +58,8 @@ void OpenGl_FontMgr::_initializeFontDB() { Handle(OSD_FontMgr) fntMgr = OSD_FontMgr::GetInstance(); + FT_Library library; + int error = FT_Init_FreeType( &library ); if ( !fntMgr.IsNull() ) { OSD_NListOfSystemFont fontList = fntMgr->GetAvalableFonts(); @@ -68,13 +68,14 @@ OSD_NListOfSystemFont::Iterator it(fontList); for ( ; it.More(); it.Next() ) { OGLFont_SysInfo* info = new OGLFont_SysInfo(); - if ( it.Value()->FontAspect() == OSD_FA_Regular ) { + if ( it.Value()->FontAspect() == OSD_FA_Regular && !error ) { //this workaround for fonts with names dependent on system locale. //for example: "Times New Roman Fett Kursive" or "Times New Roman Gras Italiqui" - FTFace face(it.Value()->FontPath()->ToCString()); - - if ( face.Error() == FT_Err_Ok ) { - if ( (*face.Face())->style_flags == 0 ) { + FT_Face ftFace; + error = FT_New_Face(library, + it.Value()->FontPath()->ToCString(), 0, &ftFace); + if ( !error ) { + if ( ftFace->style_flags == 0 ) { info->SysFont = it.Value(); } else { @@ -82,27 +83,30 @@ #ifdef TRACE cout << "TKOpenGl::initializeFontDB() detected new font!\n" << "\tFont Previous Name: " << it.Value()->FontName()->ToCString() << endl - << "\tFont New Name: " << (*face.Face())->family_name << endl - << "\tFont Aspect: " << (*face.Face())->style_flags << endl; + << "\tFont New Name: " << ftFace->family_name << endl + << "\tFont Aspect: " << ftFace->style_flags << endl; #endif OSD_FontAspect aspect = OSD_FA_Regular; - if ( (*face.Face())->style_flags == (FT_STYLE_FLAG_ITALIC | FT_STYLE_FLAG_BOLD) ) + if ( ftFace->style_flags == (FT_STYLE_FLAG_ITALIC | FT_STYLE_FLAG_BOLD) ) aspect = OSD_FA_BoldItalic; - else if ( (*face.Face())->style_flags == FT_STYLE_FLAG_ITALIC ) + else if ( ftFace->style_flags == FT_STYLE_FLAG_ITALIC ) aspect = OSD_FA_Italic; - else if ( (*face.Face())->style_flags == FT_STYLE_FLAG_BOLD ) + else if ( ftFace->style_flags == FT_STYLE_FLAG_BOLD ) aspect = OSD_FA_Bold; #ifdef TRACE cout << "\tOSD_FontAspect: " << aspect << endl; #endif Handle(TCollection_HAsciiString) aFontName = - new TCollection_HAsciiString( (*face.Face())->family_name ); + new TCollection_HAsciiString( ftFace->family_name ); info->SysFont = new OSD_SystemFont( aFontName, aspect, it.Value()->FontPath() ); } } else + { + error = 0; continue; + } } else { info->SysFont = it.Value(); }