Open CASCADE Technology  7.4.0.beta
Public Member Functions | Protected Member Functions
Font_BRepFont Class Reference

This tool provides basic services for rendering of vectorized text glyphs as BRep shapes. Single instance initialize single font for sequential glyphs rendering with implicit caching of already rendered glyphs. Thus position of each glyph in the text is specified by shape location. More...

#include <Font_BRepFont.hxx>

Inheritance diagram for Font_BRepFont:
Inheritance graph
[legend]

Public Member Functions

 Font_BRepFont ()
 Empty constructor. More...
 
 Font_BRepFont (const NCollection_String &theFontPath, const Standard_Real theSize)
 Constructor with initialization. More...
 
 Font_BRepFont (const NCollection_String &theFontName, const Font_FontAspect theFontAspect, const Standard_Real theSize, const Font_StrictLevel theStrictLevel=Font_StrictLevel_Any)
 Constructor with initialization. More...
 
virtual void Release () override
 Release currently loaded font. More...
 
bool Init (const NCollection_String &theFontPath, const Standard_Real theSize)
 Initialize the font. More...
 
bool FindAndInit (const TCollection_AsciiString &theFontName, const Font_FontAspect theFontAspect, const Standard_Real theSize, const Font_StrictLevel theStrictLevel=Font_StrictLevel_Any)
 Find (using Font_FontMgr) and initialize the font from the given name. Please take into account that size is specified NOT in typography points (pt.). If you need to specify size in points, value should be converted. Formula for pt. -> m conversion: aSizeMeters = 0.0254 * theSizePt / 72.0. More...
 
TopoDS_Shape RenderGlyph (const Standard_Utf32Char &theChar)
 Render single glyph as TopoDS_Shape. More...
 
void SetCompositeCurveMode (const Standard_Boolean theToConcatenate)
 Setup glyph geometry construction mode. By default algorithm creates independent TopoDS_Edge for each original curve in the glyph (line segment or Bezie curve). Algorithm might optionally create composite BSpline curve for each contour which reduces memory footprint but limits curve class to C0. Notice that altering this flag clears currently accumulated cache! More...
 
void SetWidthScaling (const float theScaleFactor)
 Setup glyph scaling along X-axis. By default glyphs are not scaled (scaling factor = 1.0) More...
 
Standard_Real Ascender () const
 
Standard_Real Descender () const
 
Standard_Real LineSpacing () const
 
Standard_Real PointSize () const
 Configured point size. More...
 
Standard_Real AdvanceX (const Standard_Utf32Char theUCharNext)
 Compute advance to the next character with kerning applied when applicable. Assuming text rendered horizontally. More...
 
Standard_Real AdvanceX (const Standard_Utf32Char theUChar, const Standard_Utf32Char theUCharNext)
 Compute advance to the next character with kerning applied when applicable. Assuming text rendered horizontally. More...
 
Standard_Real AdvanceY (const Standard_Utf32Char theUCharNext)
 Compute advance to the next character with kerning applied when applicable. Assuming text rendered vertically. More...
 
Standard_Real AdvanceY (const Standard_Utf32Char theUChar, const Standard_Utf32Char theUCharNext)
 Compute advance to the next character with kerning applied when applicable. Assuming text rendered vertically. More...
 
Standard_Real Scale () const
 Returns scaling factor for current font size. More...
 
Standard_MutexMutex ()
 Returns mutex. More...
 
bool Init (const NCollection_String &theFontName, const Font_FontAspect theFontAspect, const Standard_Real theSize)
 Find (using Font_FontMgr) and initialize the font from the given name. Alias for FindAndInit() for backward compatibility. More...
 

Protected Member Functions

Standard_Boolean renderGlyph (const Standard_Utf32Char theChar, TopoDS_Shape &theShape)
 Render single glyph as TopoDS_Shape. This method does not lock the mutex. More...
 
- Protected Member Functions inherited from Font_FTFont
template<typename theInput_t >
int32_t toFTPoints (const theInput_t thePointSize) const
 Convert value to 26.6 fixed-point format for FT library API. More...
 
template<typename theReturn_t , typename theFTUnits_t >
theReturn_t fromFTPoints (const theFTUnits_t theFTUnits) const
 Convert value from 26.6 fixed-point format for FT library API. More...
 
bool loadGlyph (const Standard_Utf32Char theUChar)
 Load glyph without rendering it. More...
 
bool getKerning (FT_Vector &theKern, Standard_Utf32Char theUCharCurr, Standard_Utf32Char theUCharNext) const
 Wrapper for FT_Get_Kerning - retrieve kerning values. More...
 
bool findAndInitFallback (Font_UnicodeSubset theSubset)
 Initialize fallback font. More...
 
 Font_FTFont (const Handle< Font_FTLibrary > &theFTLib=Handle< Font_FTLibrary >())
 Create uninitialized instance. More...
 
virtual ~Font_FTFont ()
 Destructor. More...
 
bool IsValid () const
 
const Image_PixMapGlyphImage () const
 
bool Init (const TCollection_AsciiString &theFontPath, const Font_FTFontParams &theParams)
 Initialize the font from the given file path. More...
 
bool Init (const Handle< NCollection_Buffer > &theData, const TCollection_AsciiString &theFileName, const Font_FTFontParams &theParams)
 Initialize the font from the given file path or memory buffer. More...
 
bool FindAndInit (const TCollection_AsciiString &theFontName, Font_FontAspect theFontAspect, const Font_FTFontParams &theParams, Font_StrictLevel theStrictLevel=Font_StrictLevel_Any)
 Find (using Font_FontMgr) and initialize the font from the given name. More...
 
Standard_Boolean ToUseUnicodeSubsetFallback () const
 Return flag to use fallback fonts in case if used font does not include symbols from specific Unicode subset; TRUE by default. More...
 
void SetUseUnicodeSubsetFallback (Standard_Boolean theToFallback)
 Set if fallback fonts should be used in case if used font does not include symbols from specific Unicode subset. More...
 
bool IsSingleStrokeFont () const
 Return TRUE if this is single-stroke (one-line) font, FALSE by default. Such fonts define single-line glyphs instead of closed contours, so that they are rendered incorrectly by normal software. More...
 
void SetSingleStrokeFont (bool theIsSingleLine)
 Set if this font should be rendered as single-stroke (one-line). More...
 
bool ToSynthesizeItalic () const
 Return TRUE if italic style should be synthesized; FALSE by default. More...
 
bool RenderGlyph (const Standard_Utf32Char theChar)
 Render specified glyph into internal buffer (bitmap). More...
 
unsigned int GlyphMaxSizeX (bool theToIncludeFallback=false) const
 
unsigned int GlyphMaxSizeY (bool theToIncludeFallback=false) const
 
float Ascender () const
 
float Descender () const
 
float LineSpacing () const
 
unsigned int PointSize () const
 Configured point size. More...
 
void SetWidthScaling (const float theScaleFactor)
 Setup glyph scaling along X-axis. By default glyphs are not scaled (scaling factor = 1.0) More...
 
bool HasSymbol (Standard_Utf32Char theUChar) const
 Return TRUE if font contains specified symbol (excluding fallback list). More...
 
float AdvanceX (Standard_Utf32Char theUCharNext) const
 Compute horizontal advance to the next character with kerning applied when applicable. Assuming text rendered horizontally. More...
 
float AdvanceX (Standard_Utf32Char theUChar, Standard_Utf32Char theUCharNext)
 Compute horizontal advance to the next character with kerning applied when applicable. Assuming text rendered horizontally. More...
 
float AdvanceY (Standard_Utf32Char theUCharNext) const
 Compute vertical advance to the next character with kerning applied when applicable. Assuming text rendered vertically. More...
 
float AdvanceY (Standard_Utf32Char theUChar, Standard_Utf32Char theUCharNext)
 Compute vertical advance to the next character with kerning applied when applicable. Assuming text rendered vertically. More...
 
Standard_Integer GlyphsNumber (bool theToIncludeFallback=false) const
 Return glyphs number in this font. More...
 
void GlyphRect (Font_Rect &theRect) const
 Retrieve glyph bitmap rectangle. More...
 
Font_Rect BoundingBox (const NCollection_String &theString, const Graphic3d_HorizontalTextAlignment theAlignX, const Graphic3d_VerticalTextAlignment theAlignY)
 Computes bounding box of the given text using plain-text formatter (Font_TextFormatter). Note that bounding box takes into account the text alignment options. Its corners are relative to the text alignment anchor point, their coordinates can be negative. More...
 
bool Init (const NCollection_String &theFontPath, unsigned int thePointSize, unsigned int theResolution)
 Initialize the font. More...
 
bool Init (const NCollection_String &theFontName, Font_FontAspect theFontAspect, unsigned int thePointSize, unsigned int theResolution)
 Initialize the font. More...
 
- Protected Member Functions inherited from Standard_Transient
 Standard_Transient ()
 Empty constructor. More...
 
 Standard_Transient (const Standard_Transient &)
 Copy constructor – does nothing. More...
 
Standard_Transientoperator= (const Standard_Transient &)
 Assignment operator, needed to avoid copying reference counter. More...
 
virtual ~Standard_Transient ()
 Destructor must be virtual. More...
 
virtual void Delete () const
 Memory deallocator for transient classes. More...
 
virtual const opencascade::handle< Standard_Type > & DynamicType () const
 Returns a type descriptor about this object. More...
 
Standard_Boolean IsInstance (const opencascade::handle< Standard_Type > &theType) const
 Returns a true value if this is an instance of Type. More...
 
Standard_Boolean IsInstance (const Standard_CString theTypeName) const
 Returns a true value if this is an instance of TypeName. More...
 
Standard_Boolean IsKind (const opencascade::handle< Standard_Type > &theType) const
 Returns true if this is an instance of Type or an instance of any class that inherits from Type. Note that multiple inheritance is not supported by OCCT RTTI mechanism. More...
 
Standard_Boolean IsKind (const Standard_CString theTypeName) const
 Returns true if this is an instance of TypeName or an instance of any class that inherits from TypeName. Note that multiple inheritance is not supported by OCCT RTTI mechanism. More...
 
Standard_TransientThis () const
 Returns non-const pointer to this object (like const_cast). For protection against creating handle to objects allocated in stack or call from constructor, it will raise exception Standard_ProgramError if reference counter is zero. More...
 
Standard_Integer GetRefCount () const
 Get the reference counter of this object. More...
 
void IncrementRefCounter () const
 Increments the reference counter of this object. More...
 
Standard_Integer DecrementRefCounter () const
 Decrements the reference counter of this object; returns the decremented value. More...
 

Protected Attributes

Protected fields
NCollection_DataMap< Standard_Utf32Char, TopoDS_ShapemyCache
 glyphs cache More...
 
Standard_Mutex myMutex
 lock for thread-safety More...
 
Handle< Geom_SurfacemySurface
 surface to place glyphs on to More...
 
Standard_Real myPrecision
 algorithm precision More...
 
Standard_Real myScaleUnits
 scale font rendering units into model units More...
 
Standard_Boolean myIsCompositeCurve
 flag to merge C1 curves of each contour into single C0 curve, OFF by default More...
 
Shared temporary variables for glyph construction
Adaptor3d_CurveOnSurface myCurvOnSurf
 
Handle< Geom2dAdaptor_HCurvemyCurve2dAdaptor
 
Geom2dConvert_CompCurveToBSplineCurve myConcatMaker
 
TColgp_Array1OfPnt2d my3Poles
 
TColgp_Array1OfPnt2d my4Poles
 
BRep_Builder myBuilder
 
- Protected Attributes inherited from Font_FTFont
Handle< Font_FTLibrarymyFTLib
 handle to the FT library object More...
 
Handle< NCollection_BuffermyBuffer
 memory buffer More...
 
Handle< Font_FTFontmyFallbackFaces [Font_UnicodeSubset_NB]
 fallback fonts More...
 
FT_Face myFTFace
 FT face object. More...
 
FT_Face myActiveFTFace
 active FT face object (the main of fallback) More...
 
TCollection_AsciiString myFontPath
 font path More...
 
Font_FTFontParams myFontParams
 font initialization parameters More...
 
Font_FontAspect myFontAspect
 font initialization aspect More...
 
float myWidthScaling
 scale glyphs along X-axis More...
 
int32_t myLoadFlags
 default load flags More...
 
Image_PixMap myGlyphImg
 cached glyph plane More...
 
Standard_Utf32Char myUChar
 currently loaded unicode character More...
 
Standard_Boolean myToUseUnicodeSubsetFallback
 use default fallback fonts for extended Unicode sub-sets (Korean, CJK, etc.) More...
 

Additional Inherited Members

- Protected Types inherited from Standard_Transient
typedef void base_type
 Returns a type descriptor about this object. More...
 
- Static Protected Member Functions inherited from Font_FTFont
static Handle< Font_FTFontFindAndCreate (const TCollection_AsciiString &theFontName, const Font_FontAspect theFontAspect, const Font_FTFontParams &theParams, const Font_StrictLevel theStrictLevel=Font_StrictLevel_Any)
 Find the font Initialize the font. More...
 
static bool IsCharFromCJK (Standard_Utf32Char theUChar)
 Return TRUE if specified character is within subset of modern CJK characters. More...
 
static bool IsCharFromHiragana (Standard_Utf32Char theUChar)
 Return TRUE if specified character is within subset of Hiragana (Japanese). More...
 
static bool IsCharFromKatakana (Standard_Utf32Char theUChar)
 Return TRUE if specified character is within subset of Katakana (Japanese). More...
 
static bool IsCharFromKorean (Standard_Utf32Char theUChar)
 Return TRUE if specified character is within subset of modern Korean characters (Hangul). More...
 
static bool IsCharFromArabic (Standard_Utf32Char theUChar)
 Return TRUE if specified character is within subset of Arabic characters. More...
 
static bool IsCharRightToLeft (Standard_Utf32Char theUChar)
 Return TRUE if specified character should be displayed in Right-to-Left order. More...
 
static Font_UnicodeSubset CharSubset (Standard_Utf32Char theUChar)
 Determine Unicode subset for specified character. More...
 
- Static Protected Member Functions inherited from Standard_Transient
static const char * get_type_name ()
 Returns a type descriptor about this object. More...
 
static const opencascade::handle< Standard_Type > & get_type_descriptor ()
 Returns type descriptor of Standard_Transient class. More...
 

Detailed Description

This tool provides basic services for rendering of vectorized text glyphs as BRep shapes. Single instance initialize single font for sequential glyphs rendering with implicit caching of already rendered glyphs. Thus position of each glyph in the text is specified by shape location.

Please notice that this implementation uses mutex for thread-safety access, thus may lead to performance penalties in case of concurrent access. Although caching should eliminate this issue after rendering of sufficient number of glyphs.

Constructor & Destructor Documentation

◆ Font_BRepFont() [1/3]

Font_BRepFont::Font_BRepFont ( )

Empty constructor.

◆ Font_BRepFont() [2/3]

Font_BRepFont::Font_BRepFont ( const NCollection_String theFontPath,
const Standard_Real  theSize 
)

Constructor with initialization.

Parameters
theFontPathFULL path to the font
theSizethe face size in model units

◆ Font_BRepFont() [3/3]

Font_BRepFont::Font_BRepFont ( const NCollection_String theFontName,
const Font_FontAspect  theFontAspect,
const Standard_Real  theSize,
const Font_StrictLevel  theStrictLevel = Font_StrictLevel_Any 
)

Constructor with initialization.

Parameters
theFontNamethe font name
theFontAspectthe font style
theSizethe face size in model units
theStrictLevelsearch strict level for using aliases and fallback

Member Function Documentation

◆ AdvanceX() [1/2]

Standard_Real Font_BRepFont::AdvanceX ( const Standard_Utf32Char  theUCharNext)
inline

Compute advance to the next character with kerning applied when applicable. Assuming text rendered horizontally.

◆ AdvanceX() [2/2]

Standard_Real Font_BRepFont::AdvanceX ( const Standard_Utf32Char  theUChar,
const Standard_Utf32Char  theUCharNext 
)
inline

Compute advance to the next character with kerning applied when applicable. Assuming text rendered horizontally.

◆ AdvanceY() [1/2]

Standard_Real Font_BRepFont::AdvanceY ( const Standard_Utf32Char  theUCharNext)
inline

Compute advance to the next character with kerning applied when applicable. Assuming text rendered vertically.

◆ AdvanceY() [2/2]

Standard_Real Font_BRepFont::AdvanceY ( const Standard_Utf32Char  theUChar,
const Standard_Utf32Char  theUCharNext 
)
inline

Compute advance to the next character with kerning applied when applicable. Assuming text rendered vertically.

◆ Ascender()

Standard_Real Font_BRepFont::Ascender ( ) const
inline
Returns
vertical distance from the horizontal baseline to the highest character coordinate.

◆ Descender()

Standard_Real Font_BRepFont::Descender ( ) const
inline
Returns
vertical distance from the horizontal baseline to the lowest character coordinate.

◆ FindAndInit()

bool Font_BRepFont::FindAndInit ( const TCollection_AsciiString theFontName,
const Font_FontAspect  theFontAspect,
const Standard_Real  theSize,
const Font_StrictLevel  theStrictLevel = Font_StrictLevel_Any 
)

Find (using Font_FontMgr) and initialize the font from the given name. Please take into account that size is specified NOT in typography points (pt.). If you need to specify size in points, value should be converted. Formula for pt. -> m conversion: aSizeMeters = 0.0254 * theSizePt / 72.0.

Parameters
theFontNamethe font name
theFontAspectthe font style
theSizethe face size in model units
theStrictLevelsearch strict level for using aliases and fallback
Returns
true on success

◆ Init() [1/2]

bool Font_BRepFont::Init ( const NCollection_String theFontPath,
const Standard_Real  theSize 
)

Initialize the font.

Parameters
theFontPathFULL path to the font
theSizethe face size in model units
Returns
true on success

◆ Init() [2/2]

bool Font_BRepFont::Init ( const NCollection_String theFontName,
const Font_FontAspect  theFontAspect,
const Standard_Real  theSize 
)
inline

Find (using Font_FontMgr) and initialize the font from the given name. Alias for FindAndInit() for backward compatibility.

◆ LineSpacing()

Standard_Real Font_BRepFont::LineSpacing ( ) const
inline
Returns
default line spacing (the baseline-to-baseline distance).

◆ Mutex()

Standard_Mutex& Font_BRepFont::Mutex ( )
inline

Returns mutex.

◆ PointSize()

Standard_Real Font_BRepFont::PointSize ( ) const
inline

Configured point size.

◆ Release()

virtual void Font_BRepFont::Release ( )
overridevirtual

Release currently loaded font.

Reimplemented from Font_FTFont.

◆ RenderGlyph()

TopoDS_Shape Font_BRepFont::RenderGlyph ( const Standard_Utf32Char theChar)

Render single glyph as TopoDS_Shape.

Parameters
theCharglyph identifier
Returns
rendered glyph within cache, might be NULL shape

◆ renderGlyph()

Standard_Boolean Font_BRepFont::renderGlyph ( const Standard_Utf32Char  theChar,
TopoDS_Shape theShape 
)
protected

Render single glyph as TopoDS_Shape. This method does not lock the mutex.

Parameters
theCharglyph identifier
theShaperendered glyph within cache, might be NULL shape
Returns
true if glyph's geometry is available

◆ Scale()

Standard_Real Font_BRepFont::Scale ( ) const
inline

Returns scaling factor for current font size.

◆ SetCompositeCurveMode()

void Font_BRepFont::SetCompositeCurveMode ( const Standard_Boolean  theToConcatenate)

Setup glyph geometry construction mode. By default algorithm creates independent TopoDS_Edge for each original curve in the glyph (line segment or Bezie curve). Algorithm might optionally create composite BSpline curve for each contour which reduces memory footprint but limits curve class to C0. Notice that altering this flag clears currently accumulated cache!

◆ SetWidthScaling()

void Font_BRepFont::SetWidthScaling ( const float  theScaleFactor)
inline

Setup glyph scaling along X-axis. By default glyphs are not scaled (scaling factor = 1.0)

Field Documentation

◆ my3Poles

TColgp_Array1OfPnt2d Font_BRepFont::my3Poles
protected

◆ my4Poles

TColgp_Array1OfPnt2d Font_BRepFont::my4Poles
protected

◆ myBuilder

BRep_Builder Font_BRepFont::myBuilder
protected

◆ myCache

NCollection_DataMap<Standard_Utf32Char, TopoDS_Shape> Font_BRepFont::myCache
protected

glyphs cache

◆ myConcatMaker

Geom2dConvert_CompCurveToBSplineCurve Font_BRepFont::myConcatMaker
protected

◆ myCurve2dAdaptor

Handle< Geom2dAdaptor_HCurve > Font_BRepFont::myCurve2dAdaptor
protected

◆ myCurvOnSurf

Adaptor3d_CurveOnSurface Font_BRepFont::myCurvOnSurf
protected

◆ myIsCompositeCurve

Standard_Boolean Font_BRepFont::myIsCompositeCurve
protected

flag to merge C1 curves of each contour into single C0 curve, OFF by default

◆ myMutex

Standard_Mutex Font_BRepFont::myMutex
protected

lock for thread-safety

◆ myPrecision

Standard_Real Font_BRepFont::myPrecision
protected

algorithm precision

◆ myScaleUnits

Standard_Real Font_BRepFont::myScaleUnits
protected

scale font rendering units into model units

◆ mySurface

Handle< Geom_Surface > Font_BRepFont::mySurface
protected

surface to place glyphs on to


The documentation for this class was generated from the following file: