Open CASCADE Technology  7.7.0.dev
Public Member Functions | Static Public Member Functions | Protected Member Functions

StdPrs_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 <StdPrs_BRepFont.hxx>

Inheritance diagram for StdPrs_BRepFont:
Inheritance graph
[legend]

Public Member Functions

 StdPrs_BRepFont ()
 Empty constructor. More...
 
 StdPrs_BRepFont (const NCollection_String &theFontPath, const Standard_Real theSize, const Standard_Integer theFaceId=0)
 Constructor with initialization. More...
 
 StdPrs_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 ()
 Release currently loaded font. More...
 
bool Init (const NCollection_String &theFontPath, const Standard_Real theSize, const Standard_Integer theFaceId)
 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...
 
const Handle< Font_FTFont > & FTFont () const
 Return wrapper over FreeType font. 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...
 
- Public 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...
 

Static Public Member Functions

static Handle< StdPrs_BRepFontFindAndCreate (const TCollection_AsciiString &theFontName, const Font_FontAspect theFontAspect, const Standard_Real theSize, const Font_StrictLevel theStrictLevel=Font_StrictLevel_Any)
 Find the font Initialize the font. More...
 
- Static Public 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...
 

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 Attributes

Protected fields
Handle< Font_FTFontmyFTFont
 wrapper over FreeType font More...
 
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_CurvemyCurve2dAdaptor
 
Geom2dConvert_CompCurveToBSplineCurve myConcatMaker
 
TColgp_Array1OfPnt2d my3Poles
 
TColgp_Array1OfPnt2d my4Poles
 
BRep_Builder myBuilder
 

Additional Inherited Members

- Public Types inherited from Standard_Transient
typedef void base_type
 Returns a type descriptor about this object. 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

◆ StdPrs_BRepFont() [1/3]

StdPrs_BRepFont::StdPrs_BRepFont ( )

Empty constructor.

◆ StdPrs_BRepFont() [2/3]

StdPrs_BRepFont::StdPrs_BRepFont ( const NCollection_String theFontPath,
const Standard_Real  theSize,
const Standard_Integer  theFaceId = 0 
)

Constructor with initialization.

Parameters
theFontPathFULL path to the font
theSizethe face size in model units
theFaceIdface id within the file (0 by default)

◆ StdPrs_BRepFont() [3/3]

StdPrs_BRepFont::StdPrs_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 StdPrs_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.

◆ AdvanceX() [2/2]

Standard_Real StdPrs_BRepFont::AdvanceX ( 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 StdPrs_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.

◆ AdvanceY() [2/2]

Standard_Real StdPrs_BRepFont::AdvanceY ( const Standard_Utf32Char  theUCharNext)
inline

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

◆ Ascender()

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

◆ Descender()

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

◆ FindAndCreate()

static Handle< StdPrs_BRepFont > StdPrs_BRepFont::FindAndCreate ( const TCollection_AsciiString theFontName,
const Font_FontAspect  theFontAspect,
const Standard_Real  theSize,
const Font_StrictLevel  theStrictLevel = Font_StrictLevel_Any 
)
static

Find the font Initialize the font.

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

◆ FindAndInit()

bool StdPrs_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

◆ FTFont()

const Handle< Font_FTFont >& StdPrs_BRepFont::FTFont ( ) const
inline

Return wrapper over FreeType font.

◆ Init() [1/2]

bool StdPrs_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.

◆ Init() [2/2]

bool StdPrs_BRepFont::Init ( const NCollection_String theFontPath,
const Standard_Real  theSize,
const Standard_Integer  theFaceId 
)

Initialize the font.

Parameters
theFontPathFULL path to the font
theSizethe face size in model units
theFaceIdface id within the file (0 by default)
Returns
true on success

◆ LineSpacing()

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

◆ Mutex()

Standard_Mutex& StdPrs_BRepFont::Mutex ( )
inline

Returns mutex.

◆ PointSize()

Standard_Real StdPrs_BRepFont::PointSize ( ) const
inline

Configured point size.

◆ Release()

virtual void StdPrs_BRepFont::Release ( )
virtual

Release currently loaded font.

◆ RenderGlyph()

TopoDS_Shape StdPrs_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 StdPrs_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 StdPrs_BRepFont::Scale ( ) const
inline

Returns scaling factor for current font size.

◆ SetCompositeCurveMode()

void StdPrs_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 StdPrs_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 StdPrs_BRepFont::my3Poles
protected

◆ my4Poles

TColgp_Array1OfPnt2d StdPrs_BRepFont::my4Poles
protected

◆ myBuilder

BRep_Builder StdPrs_BRepFont::myBuilder
protected

◆ myCache

NCollection_DataMap<Standard_Utf32Char, TopoDS_Shape> StdPrs_BRepFont::myCache
protected

glyphs cache

◆ myConcatMaker

Geom2dConvert_CompCurveToBSplineCurve StdPrs_BRepFont::myConcatMaker
protected

◆ myCurve2dAdaptor

Handle< Geom2dAdaptor_Curve > StdPrs_BRepFont::myCurve2dAdaptor
protected

◆ myCurvOnSurf

Adaptor3d_CurveOnSurface StdPrs_BRepFont::myCurvOnSurf
protected

◆ myFTFont

Handle< Font_FTFont > StdPrs_BRepFont::myFTFont
protected

wrapper over FreeType font

◆ myIsCompositeCurve

Standard_Boolean StdPrs_BRepFont::myIsCompositeCurve
protected

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

◆ myMutex

Standard_Mutex StdPrs_BRepFont::myMutex
protected

lock for thread-safety

◆ myPrecision

Standard_Real StdPrs_BRepFont::myPrecision
protected

algorithm precision

◆ myScaleUnits

Standard_Real StdPrs_BRepFont::myScaleUnits
protected

scale font rendering units into model units

◆ mySurface

Handle< Geom_Surface > StdPrs_BRepFont::mySurface
protected

surface to place glyphs on to


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