JUCE  v6.1.6 (6.0.8-1114)
JUCE API
Looking for a senior C++ dev?
I'm looking for work. Hire me!
juce::Typeface Class Referenceabstract

A typeface represents a size-independent font. More...

#include <juce_Typeface.h>

Inheritance diagram for juce::Typeface:
Collaboration diagram for juce::Typeface:

Public Types

using Ptr = ReferenceCountedObjectPtr< Typeface >
 A handy typedef for a pointer to a typeface. More...
 

Public Member Functions

 ~Typeface () override
 Destructor. More...
 
void applyVerticalHintingTransform (float fontHeight, Path &path)
 Makes an attempt at performing a good overall distortion that will scale a font of the given size to align vertically with the pixel grid. More...
 
void decReferenceCount () noexcept
 Decreases the object's reference count. More...
 
bool decReferenceCountWithoutDeleting () noexcept
 Decreases the object's reference count. More...
 
virtual float getAscent () const =0
 Returns the ascent of the font, as a proportion of its height. More...
 
virtual float getDescent () const =0
 Returns the descent of the font, as a proportion of its height. More...
 
virtual EdgeTablegetEdgeTableForGlyph (int glyphNumber, const AffineTransform &transform, float fontHeight)
 Returns a new EdgeTable that contains the path for the given glyph, with the specified transform applied. More...
 
virtual void getGlyphPositions (const String &text, Array< int > &glyphs, Array< float > &xOffsets)=0
 Converts a line of text into its glyph numbers and their positions. More...
 
virtual float getHeightToPointsFactor () const =0
 Returns the value by which you should multiply a JUCE font-height value to convert it to the equivalent point-size. More...
 
const StringgetName () const noexcept
 Returns the font family of the typeface. More...
 
virtual bool getOutlineForGlyph (int glyphNumber, Path &path)=0
 Returns the outline for a glyph. More...
 
int getReferenceCount () const noexcept
 Returns the object's current reference count. More...
 
virtual float getStringWidth (const String &text)=0
 Measures the width of a line of text. More...
 
const StringgetStyle () const noexcept
 Returns the font style of the typeface. More...
 
void incReferenceCount () noexcept
 Increments the object's reference count. More...
 
virtual bool isHinted () const
 Returns true if the typeface uses hinting. More...
 
virtual bool isSuitableForFont (const Font &) const
 Returns true if this typeface can be used to render the specified font. More...
 

Static Public Member Functions

static void clearTypefaceCache ()
 Clears any fonts that are currently cached in memory. More...
 
static Ptr createSystemTypefaceFor (const Font &font)
 Creates a new system typeface. More...
 
static Ptr createSystemTypefaceFor (const void *fontFileData, size_t fontFileDataSize)
 Attempts to create a font from some raw font file data (e.g. More...
 
static void scanFolderForFonts (const File &folder)
 On some platforms, this allows a specific path to be scanned. More...
 
static void setTypefaceCacheSize (int numFontsToCache)
 Changes the number of fonts that are cached in memory. More...
 

Protected Member Functions

 Typeface (const String &name, const String &style) noexcept
 
void resetReferenceCount () noexcept
 Resets the reference count to zero without deleting the object. More...
 

Static Protected Member Functions

static Ptr getFallbackTypeface ()
 

Protected Attributes

String name
 
String style
 

Private Attributes

CriticalSection hintingLock
 
std::unique_ptr< HintingParams > hintingParams
 
Atomic< intrefCount { 0 }
 

Detailed Description

A typeface represents a size-independent font.

This base class is abstract, but calling createSystemTypefaceFor() will return a platform-specific subclass that can be used.

The CustomTypeface subclass allow you to build your own typeface, and to load and save it in the JUCE typeface format.

Normally you should never need to deal directly with Typeface objects - the Font class does everything you typically need for rendering text.

See also
CustomTypeface, Font

@tags{Graphics}

Member Typedef Documentation

◆ Ptr

A handy typedef for a pointer to a typeface.

Constructor & Destructor Documentation

◆ ~Typeface()

juce::Typeface::~Typeface ( )
override

Destructor.

◆ Typeface()

juce::Typeface::Typeface ( const String name,
const String style 
)
protectednoexcept

Member Function Documentation

◆ applyVerticalHintingTransform()

void juce::Typeface::applyVerticalHintingTransform ( float  fontHeight,
Path path 
)

Makes an attempt at performing a good overall distortion that will scale a font of the given size to align vertically with the pixel grid.

The path should be an unscaled (i.e. normalised to height of 1.0) path for a glyph.

◆ clearTypefaceCache()

static void juce::Typeface::clearTypefaceCache ( )
static

Clears any fonts that are currently cached in memory.

◆ createSystemTypefaceFor() [1/2]

static Ptr juce::Typeface::createSystemTypefaceFor ( const Font font)
static

Creates a new system typeface.

◆ createSystemTypefaceFor() [2/2]

static Ptr juce::Typeface::createSystemTypefaceFor ( const void *  fontFileData,
size_t  fontFileDataSize 
)
static

Attempts to create a font from some raw font file data (e.g.

a TTF or OTF file image). The system will take its own internal copy of the data, so you can free the block once this method has returned.

◆ decReferenceCount()

void juce::ReferenceCountedObject::decReferenceCount ( )
inlinenoexceptinherited

Decreases the object's reference count.

If the count gets to zero, the object will be deleted.

References jassert.

◆ decReferenceCountWithoutDeleting()

bool juce::ReferenceCountedObject::decReferenceCountWithoutDeleting ( )
inlinenoexceptinherited

Decreases the object's reference count.

If the count gets to zero, the object will not be deleted, but this method will return true, allowing the caller to take care of deletion.

References jassert.

◆ getAscent()

virtual float juce::Typeface::getAscent ( ) const
pure virtual

Returns the ascent of the font, as a proportion of its height.

The height is considered to always be normalised as 1.0, so this will be a value less that 1.0, indicating the proportion of the font that lies above its baseline.

Implemented in juce::CustomTypeface.

◆ getDescent()

virtual float juce::Typeface::getDescent ( ) const
pure virtual

Returns the descent of the font, as a proportion of its height.

The height is considered to always be normalised as 1.0, so this will be a value less that 1.0, indicating the proportion of the font that lies below its baseline.

Implemented in juce::CustomTypeface.

◆ getEdgeTableForGlyph()

virtual EdgeTable* juce::Typeface::getEdgeTableForGlyph ( int  glyphNumber,
const AffineTransform transform,
float  fontHeight 
)
virtual

Returns a new EdgeTable that contains the path for the given glyph, with the specified transform applied.

Reimplemented in juce::CustomTypeface.

◆ getFallbackTypeface()

static Ptr juce::Typeface::getFallbackTypeface ( )
staticprotected

◆ getGlyphPositions()

virtual void juce::Typeface::getGlyphPositions ( const String text,
Array< int > &  glyphs,
Array< float > &  xOffsets 
)
pure virtual

Converts a line of text into its glyph numbers and their positions.

The distances returned are based on the font having an normalised height of 1.0. You should never need to call this directly! Use Font::getGlyphPositions() instead!

Implemented in juce::CustomTypeface.

◆ getHeightToPointsFactor()

virtual float juce::Typeface::getHeightToPointsFactor ( ) const
pure virtual

Returns the value by which you should multiply a JUCE font-height value to convert it to the equivalent point-size.

Implemented in juce::CustomTypeface.

◆ getName()

const String& juce::Typeface::getName ( ) const
inlinenoexcept

Returns the font family of the typeface.

See also
Font::getTypefaceName

References juce::gl::name.

◆ getOutlineForGlyph()

virtual bool juce::Typeface::getOutlineForGlyph ( int  glyphNumber,
Path path 
)
pure virtual

Returns the outline for a glyph.

The path returned will be normalised to a font height of 1.0.

Implemented in juce::CustomTypeface.

◆ getReferenceCount()

int juce::ReferenceCountedObject::getReferenceCount ( ) const
inlinenoexceptinherited

Returns the object's current reference count.

◆ getStringWidth()

virtual float juce::Typeface::getStringWidth ( const String text)
pure virtual

Measures the width of a line of text.

The distance returned is based on the font having an normalised height of 1.0. You should never need to call this directly! Use Font::getStringWidth() instead!

Implemented in juce::CustomTypeface.

◆ getStyle()

const String& juce::Typeface::getStyle ( ) const
inlinenoexcept

Returns the font style of the typeface.

See also
Font::getTypefaceStyle

◆ incReferenceCount()

void juce::ReferenceCountedObject::incReferenceCount ( )
inlinenoexceptinherited

Increments the object's reference count.

This is done automatically by the smart pointer, but is public just in case it's needed for nefarious purposes.

Referenced by juce::ReferenceCountedObjectPtr< juce::ReferenceCountedObject >::operator=().

◆ isHinted()

virtual bool juce::Typeface::isHinted ( ) const
inlinevirtual

Returns true if the typeface uses hinting.

◆ isSuitableForFont()

virtual bool juce::Typeface::isSuitableForFont ( const Font ) const
inlinevirtual

Returns true if this typeface can be used to render the specified font.

When called, the font will already have been checked to make sure that its name and style flags match the typeface.

◆ resetReferenceCount()

void juce::ReferenceCountedObject::resetReferenceCount ( )
inlineprotectednoexceptinherited

Resets the reference count to zero without deleting the object.

You should probably never need to use this!

◆ scanFolderForFonts()

static void juce::Typeface::scanFolderForFonts ( const File folder)
static

On some platforms, this allows a specific path to be scanned.

On macOS you can load .ttf and .otf files, otherwise this is only available when using FreeType.

◆ setTypefaceCacheSize()

static void juce::Typeface::setTypefaceCacheSize ( int  numFontsToCache)
static

Changes the number of fonts that are cached in memory.

Member Data Documentation

◆ hintingLock

CriticalSection juce::Typeface::hintingLock
private

◆ hintingParams

std::unique_ptr<HintingParams> juce::Typeface::hintingParams
private

◆ name

String juce::Typeface::name
protected

◆ refCount

Atomic<int> juce::ReferenceCountedObject::refCount { 0 }
privateinherited

◆ style

String juce::Typeface::style
protected

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