Open CASCADE Technology 7.8.2.dev
Font_FTFont Class Reference

Wrapper over FreeType font. Notice that this class uses internal buffers for loaded glyphs and it is absolutely UNSAFE to load/read glyph from concurrent threads! More...

#include <Font_FTFont.hxx>

Inheritance diagram for Font_FTFont:

Public Member Functions

 Font_FTFont (const Handle< Font_FTLibrary > &theFTLib=Handle< Font_FTLibrary >())
 Create uninitialized instance.
 
virtual ~Font_FTFont ()
 Destructor.
 
bool IsValid () const
 
const Image_PixMapGlyphImage () const
 
bool Init (const TCollection_AsciiString &theFontPath, const Font_FTFontParams &theParams, const Standard_Integer theFaceId=0)
 Initialize the font from the given file path.
 
bool Init (const Handle< NCollection_Buffer > &theData, const TCollection_AsciiString &theFileName, const Font_FTFontParams &theParams, const Standard_Integer theFaceId=0)
 Initialize the font from the given file path or memory buffer.
 
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.
 
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.
 
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.
 
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.
 
void SetSingleStrokeFont (bool theIsSingleLine)
 Set if this font should be rendered as single-stroke (one-line).
 
bool ToSynthesizeItalic () const
 Return TRUE if italic style should be synthesized; FALSE by default.
 
virtual void Release ()
 Release currently loaded font.
 
bool RenderGlyph (const Standard_Utf32Char theChar)
 Render specified glyph into internal buffer (bitmap).
 
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.
 
float WidthScaling () const
 Return glyph scaling along X-axis.
 
void SetWidthScaling (const float theScaleFactor)
 Setup glyph scaling along X-axis. By default glyphs are not scaled (scaling factor = 1.0)
 
bool HasSymbol (Standard_Utf32Char theUChar) const
 Return TRUE if font contains specified symbol (excluding fallback list).
 
float AdvanceX (Standard_Utf32Char theUCharNext) const
 Compute horizontal advance to the next character with kerning applied when applicable. Assuming text rendered horizontally.
 
float AdvanceX (Standard_Utf32Char theUChar, Standard_Utf32Char theUCharNext)
 Compute horizontal advance to the next character with kerning applied when applicable. Assuming text rendered horizontally.
 
float AdvanceY (Standard_Utf32Char theUCharNext) const
 Compute vertical advance to the next character with kerning applied when applicable. Assuming text rendered vertically.
 
float AdvanceY (Standard_Utf32Char theUChar, Standard_Utf32Char theUCharNext)
 Compute vertical advance to the next character with kerning applied when applicable. Assuming text rendered vertically.
 
Standard_Integer GlyphsNumber (bool theToIncludeFallback=false) const
 Return glyphs number in this font.
 
void GlyphRect (Font_Rect &theRect) const
 Retrieve glyph bitmap rectangle.
 
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.
 
const FT_OutlinerenderGlyphOutline (const Standard_Utf32Char theChar)
 Computes outline contour for the symbol.
 
bool Init (const NCollection_String &theFontPath, unsigned int thePointSize, unsigned int theResolution)
 Initialize the font.
 
bool Init (const NCollection_String &theFontName, Font_FontAspect theFontAspect, unsigned int thePointSize, unsigned int theResolution)
 Initialize the font.
 
- Public Member Functions inherited from Standard_Transient
 Standard_Transient ()
 Empty constructor.
 
 Standard_Transient (const Standard_Transient &)
 Copy constructor – does nothing.
 
Standard_Transientoperator= (const Standard_Transient &)
 Assignment operator, needed to avoid copying reference counter.
 
virtual ~Standard_Transient ()
 Destructor must be virtual.
 
virtual const opencascade::handle< Standard_Type > & DynamicType () const
 Returns a type descriptor about this object.
 
Standard_Boolean IsInstance (const opencascade::handle< Standard_Type > &theType) const
 Returns a true value if this is an instance of Type.
 
Standard_Boolean IsInstance (const Standard_CString theTypeName) const
 Returns a true value if this is an instance of TypeName.
 
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.
 
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.
 
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.
 
Standard_Integer GetRefCount () const noexcept
 Get the reference counter of this object.
 
void IncrementRefCounter () noexcept
 Increments the reference counter of this object.
 
Standard_Integer DecrementRefCounter () noexcept
 Decrements the reference counter of this object; returns the decremented value.
 
virtual void Delete () const
 Memory deallocator for transient classes.
 

Static Public Member Functions

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.
 
static bool IsCharFromCJK (Standard_Utf32Char theUChar)
 Return TRUE if specified character is within subset of modern CJK characters.
 
static bool IsCharFromHiragana (Standard_Utf32Char theUChar)
 Return TRUE if specified character is within subset of Hiragana (Japanese).
 
static bool IsCharFromKatakana (Standard_Utf32Char theUChar)
 Return TRUE if specified character is within subset of Katakana (Japanese).
 
static bool IsCharFromKorean (Standard_Utf32Char theUChar)
 Return TRUE if specified character is within subset of modern Korean characters (Hangul).
 
static bool IsCharFromArabic (Standard_Utf32Char theUChar)
 Return TRUE if specified character is within subset of Arabic characters.
 
static bool IsCharRightToLeft (Standard_Utf32Char theUChar)
 Return TRUE if specified character should be displayed in Right-to-Left order.
 
static Font_UnicodeSubset CharSubset (Standard_Utf32Char theUChar)
 Determine Unicode subset for specified character.
 
- Static Public Member Functions inherited from Standard_Transient
static constexpr const char * get_type_name ()
 Returns a type descriptor about this object.
 
static const opencascade::handle< Standard_Type > & get_type_descriptor ()
 Returns type descriptor of Standard_Transient class.
 

Protected Member Functions

template<typename theInput_t >
int32_t toFTPoints (const theInput_t thePointSize) const
 Convert value to 26.6 fixed-point format for FT library API.
 
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.
 
bool loadGlyph (const Standard_Utf32Char theUChar)
 Load glyph without rendering it.
 
bool getKerning (FT_Vector &theKern, Standard_Utf32Char theUCharCurr, Standard_Utf32Char theUCharNext) const
 Wrapper for FT_Get_Kerning - retrieve kerning values.
 
bool findAndInitFallback (Font_UnicodeSubset theSubset)
 Initialize fallback font.
 
void setLoadFlag (int32_t theFlag, bool theToEnable)
 Enable/disable load flag.
 

Protected Attributes

Handle< Font_FTLibrarymyFTLib
 handle to the FT library object
 
Handle< NCollection_BuffermyBuffer
 memory buffer
 
Handle< Font_FTFontmyFallbackFaces [Font_UnicodeSubset_NB]
 fallback fonts
 
FT_Face myFTFace
 FT face object.
 
FT_Face myActiveFTFace
 active FT face object (the main of fallback)
 
TCollection_AsciiString myFontPath
 font path
 
Font_FTFontParams myFontParams
 font initialization parameters
 
Font_FontAspect myFontAspect
 font initialization aspect
 
float myWidthScaling
 scale glyphs along X-axis
 
int32_t myLoadFlags
 default load flags
 
Image_PixMap myGlyphImg
 cached glyph plane
 
Standard_Utf32Char myUChar
 currently loaded unicode character
 
Standard_Boolean myToUseUnicodeSubsetFallback
 use default fallback fonts for extended Unicode sub-sets (Korean, CJK, etc.)
 

Additional Inherited Members

- Public Types inherited from Standard_Transient
typedef void base_type
 Returns a type descriptor about this object.
 

Detailed Description

Wrapper over FreeType font. Notice that this class uses internal buffers for loaded glyphs and it is absolutely UNSAFE to load/read glyph from concurrent threads!

Constructor & Destructor Documentation

◆ Font_FTFont()

Font_FTFont::Font_FTFont ( const Handle< Font_FTLibrary > & theFTLib = HandleFont_FTLibrary >())

Create uninitialized instance.

◆ ~Font_FTFont()

virtual Font_FTFont::~Font_FTFont ( )
virtual

Destructor.

Member Function Documentation

◆ AdvanceX() [1/2]

float Font_FTFont::AdvanceX ( Standard_Utf32Char theUChar,
Standard_Utf32Char theUCharNext )

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

Parameters
theUCharthe character to be loaded as current one
theUCharNextthe next character to compute advance from current one

◆ AdvanceX() [2/2]

float Font_FTFont::AdvanceX ( Standard_Utf32Char theUCharNext) const

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

Parameters
theUCharNextthe next character to compute advance from current one

◆ AdvanceY() [1/2]

float Font_FTFont::AdvanceY ( Standard_Utf32Char theUChar,
Standard_Utf32Char theUCharNext )

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

Parameters
theUCharthe character to be loaded as current one
theUCharNextthe next character to compute advance from current one

◆ AdvanceY() [2/2]

float Font_FTFont::AdvanceY ( Standard_Utf32Char theUCharNext) const

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

Parameters
theUCharNextthe next character to compute advance from current one

◆ Ascender()

float Font_FTFont::Ascender ( ) const
Returns
vertical distance from the horizontal baseline to the highest character coordinate.

◆ BoundingBox()

Font_Rect Font_FTFont::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.

◆ CharSubset()

static Font_UnicodeSubset Font_FTFont::CharSubset ( Standard_Utf32Char theUChar)
inlinestatic

Determine Unicode subset for specified character.

◆ Descender()

float Font_FTFont::Descender ( ) const
Returns
vertical distance from the horizontal baseline to the lowest character coordinate.

◆ FindAndCreate()

static Handle< Font_FTFont > Font_FTFont::FindAndCreate ( const TCollection_AsciiString & theFontName,
const Font_FontAspect theFontAspect,
const Font_FTFontParams & theParams,
const Font_StrictLevel theStrictLevel = Font_StrictLevel_Any )
static

Find the font Initialize the font.

Parameters
theFontNamethe font name
theFontAspectthe font style
theParamsinitialization parameters
theStrictLevelsearch strict level for using aliases and fallback
Returns
true on success

◆ FindAndInit()

bool Font_FTFont::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.

Parameters
theFontNamethe font name
theFontAspectthe font style
theParamsinitialization parameters
theStrictLevelsearch strict level for using aliases and fallback
Returns
true on success

◆ findAndInitFallback()

bool Font_FTFont::findAndInitFallback ( Font_UnicodeSubset theSubset)
protected

Initialize fallback font.

◆ fromFTPoints()

template<typename theReturn_t , typename theFTUnits_t >
theReturn_t Font_FTFont::fromFTPoints ( const theFTUnits_t theFTUnits) const
inlineprotected

Convert value from 26.6 fixed-point format for FT library API.

◆ getKerning()

bool Font_FTFont::getKerning ( FT_Vector & theKern,
Standard_Utf32Char theUCharCurr,
Standard_Utf32Char theUCharNext ) const
protected

Wrapper for FT_Get_Kerning - retrieve kerning values.

◆ GlyphImage()

const Image_PixMap & Font_FTFont::GlyphImage ( ) const
inline
Returns
image plane for currently rendered glyph

◆ GlyphMaxSizeX()

unsigned int Font_FTFont::GlyphMaxSizeX ( bool theToIncludeFallback = false) const
Returns
maximal glyph width in pixels (rendered to bitmap).

◆ GlyphMaxSizeY()

unsigned int Font_FTFont::GlyphMaxSizeY ( bool theToIncludeFallback = false) const
Returns
maximal glyph height in pixels (rendered to bitmap).

◆ GlyphRect()

void Font_FTFont::GlyphRect ( Font_Rect & theRect) const

Retrieve glyph bitmap rectangle.

◆ GlyphsNumber()

Standard_Integer Font_FTFont::GlyphsNumber ( bool theToIncludeFallback = false) const

Return glyphs number in this font.

Parameters
theToIncludeFallbackif TRUE then the number will include fallback list

◆ HasSymbol()

bool Font_FTFont::HasSymbol ( Standard_Utf32Char theUChar) const

Return TRUE if font contains specified symbol (excluding fallback list).

◆ Init() [1/4]

bool Font_FTFont::Init ( const Handle< NCollection_Buffer > & theData,
const TCollection_AsciiString & theFileName,
const Font_FTFontParams & theParams,
const Standard_Integer theFaceId = 0 )

Initialize the font from the given file path or memory buffer.

Parameters
theDatamemory to read from, should NOT be freed after initialization! when NULL, function will attempt to open theFileName file
theFileNameoptional path to the font
theParamsinitialization parameters
theFaceIdface id within the file (0 by default)
Returns
true on success

◆ Init() [2/4]

bool Font_FTFont::Init ( const NCollection_String & theFontName,
Font_FontAspect theFontAspect,
unsigned int thePointSize,
unsigned int theResolution )
inline

Initialize the font.

Parameters
theFontNamethe font name
theFontAspectthe font style
thePointSizethe face size in points (1/72 inch)
theResolutionthe resolution of the target device in dpi
Returns
true on success
Deprecated
("Deprecated method, Font_FTFontParams should be used for passing parameters")

◆ Init() [3/4]

bool Font_FTFont::Init ( const NCollection_String & theFontPath,
unsigned int thePointSize,
unsigned int theResolution )
inline

Initialize the font.

Parameters
theFontPathpath to the font
thePointSizethe face size in points (1/72 inch)
theResolutionthe resolution of the target device in dpi
Returns
true on success
Deprecated
("Deprecated method, Font_FTFontParams should be used for passing parameters")

◆ Init() [4/4]

bool Font_FTFont::Init ( const TCollection_AsciiString & theFontPath,
const Font_FTFontParams & theParams,
const Standard_Integer theFaceId = 0 )
inline

Initialize the font from the given file path.

Parameters
theFontPathpath to the font
theParamsinitialization parameters
theFaceIdface id within the file (0 by default)
Returns
true on success

◆ IsCharFromArabic()

static bool Font_FTFont::IsCharFromArabic ( Standard_Utf32Char theUChar)
inlinestatic

Return TRUE if specified character is within subset of Arabic characters.

◆ IsCharFromCJK()

static bool Font_FTFont::IsCharFromCJK ( Standard_Utf32Char theUChar)
inlinestatic

Return TRUE if specified character is within subset of modern CJK characters.

◆ IsCharFromHiragana()

static bool Font_FTFont::IsCharFromHiragana ( Standard_Utf32Char theUChar)
inlinestatic

Return TRUE if specified character is within subset of Hiragana (Japanese).

◆ IsCharFromKatakana()

static bool Font_FTFont::IsCharFromKatakana ( Standard_Utf32Char theUChar)
inlinestatic

Return TRUE if specified character is within subset of Katakana (Japanese).

◆ IsCharFromKorean()

static bool Font_FTFont::IsCharFromKorean ( Standard_Utf32Char theUChar)
inlinestatic

Return TRUE if specified character is within subset of modern Korean characters (Hangul).

◆ IsCharRightToLeft()

static bool Font_FTFont::IsCharRightToLeft ( Standard_Utf32Char theUChar)
inlinestatic

Return TRUE if specified character should be displayed in Right-to-Left order.

◆ IsSingleStrokeFont()

bool Font_FTFont::IsSingleStrokeFont ( ) const
inline

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.

◆ IsValid()

bool Font_FTFont::IsValid ( ) const
inline
Returns
true if font is loaded

◆ LineSpacing()

float Font_FTFont::LineSpacing ( ) const
Returns
default line spacing (the baseline-to-baseline distance).

◆ loadGlyph()

bool Font_FTFont::loadGlyph ( const Standard_Utf32Char theUChar)
protected

Load glyph without rendering it.

◆ PointSize()

unsigned int Font_FTFont::PointSize ( ) const
inline

Configured point size.

◆ Release()

virtual void Font_FTFont::Release ( )
virtual

Release currently loaded font.

◆ RenderGlyph()

bool Font_FTFont::RenderGlyph ( const Standard_Utf32Char theChar)

Render specified glyph into internal buffer (bitmap).

◆ renderGlyphOutline()

const FT_Outline * Font_FTFont::renderGlyphOutline ( const Standard_Utf32Char theChar)

Computes outline contour for the symbol.

Parameters
theUChar[in] the character to be loaded as current one
theOutline[out] outline contour
Returns
true on success

◆ setLoadFlag()

void Font_FTFont::setLoadFlag ( int32_t theFlag,
bool theToEnable )
inlineprotected

Enable/disable load flag.

◆ SetSingleStrokeFont()

void Font_FTFont::SetSingleStrokeFont ( bool theIsSingleLine)
inline

Set if this font should be rendered as single-stroke (one-line).

◆ SetUseUnicodeSubsetFallback()

void Font_FTFont::SetUseUnicodeSubsetFallback ( Standard_Boolean theToFallback)
inline

Set if fallback fonts should be used in case if used font does not include symbols from specific Unicode subset.

◆ SetWidthScaling()

void Font_FTFont::SetWidthScaling ( const float theScaleFactor)
inline

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

◆ toFTPoints()

template<typename theInput_t >
int32_t Font_FTFont::toFTPoints ( const theInput_t thePointSize) const
inlineprotected

Convert value to 26.6 fixed-point format for FT library API.

◆ ToSynthesizeItalic()

bool Font_FTFont::ToSynthesizeItalic ( ) const
inline

Return TRUE if italic style should be synthesized; FALSE by default.

◆ ToUseUnicodeSubsetFallback()

Standard_Boolean Font_FTFont::ToUseUnicodeSubsetFallback ( ) const
inline

Return flag to use fallback fonts in case if used font does not include symbols from specific Unicode subset; TRUE by default.

See also
Font_FontMgr::ToUseUnicodeSubsetFallback()

◆ WidthScaling()

float Font_FTFont::WidthScaling ( ) const
inline

Return glyph scaling along X-axis.

Field Documentation

◆ myActiveFTFace

FT_Face Font_FTFont::myActiveFTFace
protected

active FT face object (the main of fallback)

◆ myBuffer

Handle< NCollection_Buffer > Font_FTFont::myBuffer
protected

memory buffer

◆ myFallbackFaces

Handle< Font_FTFont > Font_FTFont::myFallbackFaces[Font_UnicodeSubset_NB]
protected

fallback fonts

◆ myFontAspect

Font_FontAspect Font_FTFont::myFontAspect
protected

font initialization aspect

◆ myFontParams

Font_FTFontParams Font_FTFont::myFontParams
protected

font initialization parameters

◆ myFontPath

TCollection_AsciiString Font_FTFont::myFontPath
protected

font path

◆ myFTFace

FT_Face Font_FTFont::myFTFace
protected

FT face object.

◆ myFTLib

Handle< Font_FTLibrary > Font_FTFont::myFTLib
protected

handle to the FT library object

◆ myGlyphImg

Image_PixMap Font_FTFont::myGlyphImg
protected

cached glyph plane

◆ myLoadFlags

int32_t Font_FTFont::myLoadFlags
protected

default load flags

◆ myToUseUnicodeSubsetFallback

Standard_Boolean Font_FTFont::myToUseUnicodeSubsetFallback
protected

use default fallback fonts for extended Unicode sub-sets (Korean, CJK, etc.)

◆ myUChar

Standard_Utf32Char Font_FTFont::myUChar
protected

currently loaded unicode character

◆ myWidthScaling

float Font_FTFont::myWidthScaling
protected

scale glyphs along X-axis


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