0031468: Visualization - add public interface to return embedding a single fallback...
authorosa <osa@opencascade.com>
Fri, 27 Mar 2020 13:09:10 +0000 (16:09 +0300)
committerbugmaster <bugmaster@opencascade.com>
Wed, 1 Apr 2020 10:34:08 +0000 (13:34 +0300)
src/Font/Font_FTFont.cxx
src/Font/Font_FontMgr.cxx
src/Font/Font_FontMgr.hxx

index bf2ca11..703d317 100755 (executable)
@@ -21,8 +21,6 @@
 #include <Message.hxx>
 #include <Message_Messenger.hxx>
 
-#include "Font_DejavuSans_Latin_woff.pxx"
-
 #include <algorithm>
 
 #include <ft2build.h>
@@ -191,11 +189,8 @@ Handle(Font_FTFont) Font_FTFont::FindAndCreate (const TCollection_AsciiString& t
         aParams.ToSynthesizeItalic = true;
         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();
-    if (aFont->Init (aBuffer, "Embed Fallback Font", aParams, 0))
+    if (aFont->Init (Font_FontMgr::EmbedFallbackFont(), "Embed Fallback Font", aParams, 0))
     {
       aFont->myFontAspect = aFontAspect;
       return aFont;
@@ -234,10 +229,7 @@ bool Font_FTFont::FindAndInit (const TCollection_AsciiString& theFontName,
     {
       aParams.ToSynthesizeItalic = true;
     }
-    Handle(NCollection_Buffer) aBuffer = new NCollection_Buffer (Handle(NCollection_BaseAllocator)(),
-                                                                 Font_DejavuSans_Latin_woff_size,
-                                                                 const_cast<Standard_Byte*>(Font_DejavuSans_Latin_woff));
-    return Init (aBuffer, "Embed Fallback Font", aParams, 0);
+    return Init (Font_FontMgr::EmbedFallbackFont(), "Embed Fallback Font", aParams, 0);
   }
   Release();
   return false;
index 9d226bb..249e674 100644 (file)
@@ -20,6 +20,7 @@
 #include <Font_SystemFont.hxx>
 #include <Message.hxx>
 #include <Message_Messenger.hxx>
+#include <NCollection_Buffer.hxx>
 #include <NCollection_List.hxx>
 #include <NCollection_Map.hxx>
 #include <OSD_Environment.hxx>
@@ -27,6 +28,8 @@
 #include <Standard_Type.hxx>
 #include <TCollection_HAsciiString.hxx>
 
+#include "Font_DejavuSans_Latin_woff.pxx"
+
 #include <ft2build.h>
 #include FT_FREETYPE_H
 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)();
 }
+
+// =======================================================================
+// 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));
+}
index 6ee2358..410bbf9 100644 (file)
@@ -30,6 +30,7 @@
 
 class Font_SystemFont;
 class TCollection_HAsciiString;
+class NCollection_Buffer;
 
 DEFINE_STANDARD_HANDLE(Font_FontMgr, Standard_Transient)
 
@@ -158,6 +159,12 @@ public:
   //! Clear registry. Can be used for testing purposes.
   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:
   
   //! Creates empty font manager object