1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-04-08 18:40:55 +03:00

0031468: Visualization - add public interface to return embedding a single fallback font

This commit is contained in:
osa 2020-03-27 16:09:10 +03:00 committed by bugmaster
parent 420f5c8682
commit 21095f2dc2
3 changed files with 23 additions and 10 deletions

@ -21,8 +21,6 @@
#include <Message.hxx> #include <Message.hxx>
#include <Message_Messenger.hxx> #include <Message_Messenger.hxx>
#include "Font_DejavuSans_Latin_woff.pxx"
#include <algorithm> #include <algorithm>
#include <ft2build.h> #include <ft2build.h>
@ -191,11 +189,8 @@ Handle(Font_FTFont) Font_FTFont::FindAndCreate (const TCollection_AsciiString& t
aParams.ToSynthesizeItalic = true; aParams.ToSynthesizeItalic = true;
break; break;
} }
Handle(NCollection_Buffer) aBuffer = new NCollection_Buffer (Handle(NCollection_BaseAllocator)(),
Font_DejavuSans_Latin_woff_size,
const_cast<Standard_Byte*>(Font_DejavuSans_Latin_woff));
Handle(Font_FTFont) aFont = new Font_FTFont(); Handle(Font_FTFont) aFont = new Font_FTFont();
if (aFont->Init (aBuffer, "Embed Fallback Font", aParams, 0)) if (aFont->Init (Font_FontMgr::EmbedFallbackFont(), "Embed Fallback Font", aParams, 0))
{ {
aFont->myFontAspect = aFontAspect; aFont->myFontAspect = aFontAspect;
return aFont; return aFont;
@ -234,10 +229,7 @@ bool Font_FTFont::FindAndInit (const TCollection_AsciiString& theFontName,
{ {
aParams.ToSynthesizeItalic = true; aParams.ToSynthesizeItalic = true;
} }
Handle(NCollection_Buffer) aBuffer = new NCollection_Buffer (Handle(NCollection_BaseAllocator)(), return Init (Font_FontMgr::EmbedFallbackFont(), "Embed Fallback Font", aParams, 0);
Font_DejavuSans_Latin_woff_size,
const_cast<Standard_Byte*>(Font_DejavuSans_Latin_woff));
return Init (aBuffer, "Embed Fallback Font", aParams, 0);
} }
Release(); Release();
return false; return false;

@ -20,6 +20,7 @@
#include <Font_SystemFont.hxx> #include <Font_SystemFont.hxx>
#include <Message.hxx> #include <Message.hxx>
#include <Message_Messenger.hxx> #include <Message_Messenger.hxx>
#include <NCollection_Buffer.hxx>
#include <NCollection_List.hxx> #include <NCollection_List.hxx>
#include <NCollection_Map.hxx> #include <NCollection_Map.hxx>
#include <OSD_Environment.hxx> #include <OSD_Environment.hxx>
@ -27,6 +28,8 @@
#include <Standard_Type.hxx> #include <Standard_Type.hxx>
#include <TCollection_HAsciiString.hxx> #include <TCollection_HAsciiString.hxx>
#include "Font_DejavuSans_Latin_woff.pxx"
#include <ft2build.h> #include <ft2build.h>
#include FT_FREETYPE_H #include FT_FREETYPE_H
IMPLEMENT_STANDARD_RTTIEXT(Font_FontMgr,Standard_Transient) IMPLEMENT_STANDARD_RTTIEXT(Font_FontMgr,Standard_Transient)
@ -1035,3 +1038,14 @@ Handle(Font_SystemFont) Font_FontMgr::Font_FontMap::Find (const TCollection_Asci
} }
return Handle(Font_SystemFont)(); return Handle(Font_SystemFont)();
} }
// =======================================================================
// function : EmbedFallbackFont
// purpose :
// =======================================================================
Handle(NCollection_Buffer) Font_FontMgr::EmbedFallbackFont()
{
return new NCollection_Buffer (Handle(NCollection_BaseAllocator)(),
Font_DejavuSans_Latin_woff_size,
const_cast<Standard_Byte*>(Font_DejavuSans_Latin_woff));
}

@ -30,6 +30,7 @@
class Font_SystemFont; class Font_SystemFont;
class TCollection_HAsciiString; class TCollection_HAsciiString;
class NCollection_Buffer;
DEFINE_STANDARD_HANDLE(Font_FontMgr, Standard_Transient) DEFINE_STANDARD_HANDLE(Font_FontMgr, Standard_Transient)
@ -158,6 +159,12 @@ public:
//! Clear registry. Can be used for testing purposes. //! Clear registry. Can be used for testing purposes.
Standard_EXPORT void ClearFontDataBase(); Standard_EXPORT void ClearFontDataBase();
//! Return DejaVu font as embed a single fallback font.
//! It can be used in cases when there is no own font file.
//! Note: result buffer is readonly and should not be changed,
//! any data modification can lead to unpredictable consequences.
Standard_EXPORT static Handle(NCollection_Buffer) EmbedFallbackFont();
private: private:
//! Creates empty font manager object //! Creates empty font manager object