JUCE: Font Class Reference

JUCE

Public Types | Public Member Functions | Static Public Member Functions | List of all members
Font Class Referencefinal
juce_graphics » fonts

Represents a particular font, including its size, style, etc. More...

`#include <juce_Font.h>`

## Public Types
enum | FontStyleFlags { plain = 0 , bold = 1 , italic = 2 , underlined = 4 }
| A combination of these values is used by the constructor to specify the style of font to use. More...

## Public Member Functions
| Font (float fontHeight, int styleFlags=plain)
| Creates a sans-serif font in a given size. More...
| Font (const String &typefaceName, float fontHeight, int styleFlags)
| Creates a font with a given typeface and parameters. More...
| Font (const String &typefaceName, const String &typefaceStyle, float fontHeight)
| Creates a font with a given typeface and parameters. More...
| Font (const Font &other) noexcept
| Creates a copy of another Font object. More...
| Font (const Typeface::Ptr &typeface)
| Creates a font for a typeface. More...
| Font ()
| Creates a basic sans-serif font at a default height. More...
| Font (Font &&other) noexcept
| Move constructor. More...
Font & | operator= (Font &&other) noexcept
| Move assignment operator. More...
Font & | operator= (const Font &other) noexcept
| Copies this font from another one. More...
bool | operator== (const Font &other) const noexcept
bool | operator!= (const Font &other) const noexcept
| ~Font () noexcept
| Destructor. More...
void | setTypefaceName (const String &faceName)
| Changes the font family of the typeface. More...
String | getTypefaceName () const noexcept
| Returns the font family of the typeface that this font uses. More...
String | getTypefaceStyle () const noexcept
| Returns the font style of the typeface that this font uses. More...
void | setTypefaceStyle (const String &newStyle)
| Changes the font style of the typeface. More...
JUCE_NODISCARD Font | withTypefaceStyle (const String &newStyle) const
| Returns a copy of this font with a new typeface style. More...
StringArray | getAvailableStyles () const
| Returns a list of the styles that this font can use. More...
JUCE_NODISCARD Font | withHeight (float height) const
| Returns a copy of this font with a new height. More...
JUCE_NODISCARD Font | withPointHeight (float heightInPoints) const
| Returns a copy of this font with a new height, specified in points. More...
void | setHeight (float newHeight)
| Changes the font's height. More...
void | setHeightWithoutChangingWidth (float newHeight)
| Changes the font's height without changing its width. More...
float | getHeight () const noexcept
| Returns the total height of this font, in pixels. More...
float | getHeightInPoints () const
| Returns the total height of this font, in points. More...
float | getAscent () const
| Returns the height of the font above its baseline, in pixels. More...
float | getAscentInPoints () const
| Returns the height of the font above its baseline, in points. More...
float | getDescent () const
| Returns the amount that the font descends below its baseline, in pixels. More...
float | getDescentInPoints () const
| Returns the amount that the font descends below its baseline, in points. More...
int | getStyleFlags () const noexcept
| Returns the font's style flags. More...
JUCE_NODISCARD Font | withStyle (int styleFlags) const
| Returns a copy of this font with the given set of style flags. More...
void | setStyleFlags (int newFlags)
| Changes the font's style. More...
void | setBold (bool shouldBeBold)
| Makes the font bold or non-bold. More...
JUCE_NODISCARD Font | boldened () const
| Returns a copy of this font with the bold attribute set. More...
bool | isBold () const noexcept
| Returns true if the font is bold. More...
void | setItalic (bool shouldBeItalic)
| Makes the font italic or non-italic. More...
JUCE_NODISCARD Font | italicised () const
| Returns a copy of this font with the italic attribute set. More...
bool | isItalic () const noexcept
| Returns true if the font is italic. More...
void | setUnderline (bool shouldBeUnderlined)
| Makes the font underlined or non-underlined. More...
bool | isUnderlined () const noexcept
| Returns true if the font is underlined. More...
float | getHorizontalScale () const noexcept
| Returns the font's horizontal scale. More...
JUCE_NODISCARD Font | withHorizontalScale (float scaleFactor) const
| Returns a copy of this font with a new horizontal scale. More...
void | setHorizontalScale (float scaleFactor)
| Changes the font's horizontal scale factor. More...
float | getExtraKerningFactor () const noexcept
| Returns the font's kerning. More...
JUCE_NODISCARD Font | withExtraKerningFactor (float extraKerning) const
| Returns a copy of this font with a new kerning factor. More...
void | setExtraKerningFactor (float extraKerning)
| Changes the font's kerning. More...
void | setSizeAndStyle (float newHeight, int newStyleFlags, float newHorizontalScale, float newKerningAmount)
| Changes all the font's characteristics with one call. More...
void | setSizeAndStyle (float newHeight, const String &newStyle, float newHorizontalScale, float newKerningAmount)
| Changes all the font's characteristics with one call. More...
int | getStringWidth (const String &text) const
| Returns the total width of a string as it would be drawn using this font. More...
float | getStringWidthFloat (const String &text) const
| Returns the total width of a string as it would be drawn using this font. More...
void | getGlyphPositions (const String &text, Array< int > &glyphs, Array< float > &xOffsets) const
| Returns the series of glyph numbers and their x offsets needed to represent a string. More...
Typeface::Ptr | getTypefacePtr () const
| Returns the typeface used by this font. More...
String | toString () const
| Creates a string to describe this font. More...

## Static Public Member Functions
static const String & | getDefaultSansSerifFontName ()
| Returns a typeface font family that represents the default sans-serif font. More...
static const String & | getDefaultSerifFontName ()
| Returns a typeface font family that represents the default serif font. More...
static const String & | getDefaultMonospacedFontName ()
| Returns a typeface font family that represents the default monospaced font. More...
static const String & | getDefaultStyle ()
| Returns a font style name that represents the default style. More...
static Typeface::Ptr | getDefaultTypefaceForFont (const Font &font)
| Returns the default system typeface for the given font. More...
static float | getDefaultMinimumHorizontalScaleFactor () noexcept
| Returns the minimum horizontal scale to which fonts may be squashed when trying to create a layout. More...
static void | setDefaultMinimumHorizontalScaleFactor (float newMinimumScaleFactor) noexcept
| Sets the minimum horizontal scale to which fonts may be squashed when trying to create a text layout. More...
static void | findFonts (Array< Font > &results)
| Creates an array of Font objects to represent all the fonts on the system. More...
static StringArray | findAllTypefaceNames ()
| Returns a list of all the available typeface font families. More...
static StringArray | findAllTypefaceStyles (const String &family)
| Returns a list of all the available typeface font styles. More...
static const String & | getFallbackFontName ()
| Returns the font family of the typeface to be used for rendering glyphs that aren't found in the requested typeface. More...
static void | setFallbackFontName (const String &name)
| Sets the (platform-specific) font family of the typeface to use to find glyphs that aren't available in whatever font you're trying to use. More...
static const String & | getFallbackFontStyle ()
| Returns the font style of the typeface to be used for rendering glyphs that aren't found in the requested typeface. More...
static void | setFallbackFontStyle (const String &style)
| Sets the (platform-specific) font style of the typeface to use to find glyphs that aren't available in whatever font you're trying to use. More...
static Font | fromString (const String &fontDescription)
| Recreates a font from its stringified encoding. More...

## Detailed Description

Represents a particular font, including its size, style, etc.

Apart from the typeface to be used, a Font object also dictates whether the font is bold, italic, underlined, how big it is, and its kerning and horizontal scale factor.

See also
  Typeface

## Member Enumeration Documentation

## ◆ FontStyleFlags

enum Font::FontStyleFlags

A combination of these values is used by the constructor to specify the style of font to use.

Enumerator
plain | indicates a plain, non-bold, non-italic version of the font. See also setStyleFlags
bold | boldens the font. See also setStyleFlags
italic | finds an italic version of the font. See also setStyleFlags
underlined | underlines the font. See also setStyleFlags

## Constructor & Destructor Documentation

## ◆ Font() [1/7]

Font::Font | ( | float | fontHeight,
|  | int | styleFlags = `plain`
| ) |  |

Creates a sans-serif font in a given size.

Parameters

  fontHeight | the height in pixels (can be fractional)
  styleFlags | the style to use - this can be a combination of the Font::bold, Font::italic and Font::underlined, or just Font::plain for the normal style.

See also
  FontStyleFlags, getDefaultSansSerifFontName

## ◆ Font() [2/7]

Font::Font | ( | const String & | typefaceName,
|  | float | fontHeight,
|  | int | styleFlags
| ) |  |

Creates a font with a given typeface and parameters.

Parameters

  typefaceName | the font family of the typeface to use
  fontHeight | the height in pixels (can be fractional)
  styleFlags | the style to use - this can be a combination of the Font::bold, Font::italic and Font::underlined, or just Font::plain for the normal style.

See also
  FontStyleFlags, getDefaultSansSerifFontName

## ◆ Font() [3/7]

Font::Font | ( | const String & | typefaceName,
|  | const String & | typefaceStyle,
|  | float | fontHeight
| ) |  |

Creates a font with a given typeface and parameters.

Parameters

  typefaceName | the font family of the typeface to use
  typefaceStyle | the font style of the typeface to use
  fontHeight | the height in pixels (can be fractional)

## ◆ Font() [4/7]

Font::Font | ( | const Font & | other | ) |
| noexcept

Creates a copy of another Font object.

## ◆ Font() [5/7]

Font::Font | ( | const Typeface::Ptr & | typeface | ) |

Creates a font for a typeface.

## ◆ Font() [6/7]

Font::Font | ( |  | ) |

Creates a basic sans-serif font at a default height.

You should use one of the other constructors for creating a font that you're planning on drawing with - this constructor is here to help initialise objects before changing the font's settings later.

## ◆ Font() [7/7]

Font::Font | ( | Font && | other | ) |
| noexcept

Move constructor.

## ◆ ~Font()

Font::~Font | ( |  | ) |
| noexcept

Destructor.

## Member Function Documentation

## ◆ operator=() [1/2]

Font & Font::operator= | ( | Font && | other | ) |
| noexcept

Move assignment operator.

## ◆ operator=() [2/2]

Font & Font::operator= | ( | const Font & | other | ) |
| noexcept

Copies this font from another one.

## ◆ operator==()

bool Font::operator== | ( | const Font & | other | ) | const
| noexcept

## ◆ operator!=()

bool Font::operator!= | ( | const Font & | other | ) | const
| noexcept

## ◆ setTypefaceName()

void Font::setTypefaceName | ( | const String & | faceName | ) |

Changes the font family of the typeface.

e.g. "Arial", "Courier", etc.

This may also be set to Font::getDefaultSansSerifFontName(), Font::getDefaultSerifFontName(), or Font::getDefaultMonospacedFontName(), which are not actual platform-specific font family names, but are generic font family names that are used to represent the various default fonts. If you need to know the exact typeface font family being used, you can call Font::getTypefacePtr()->getName(), which will give you the platform-specific font family.

If a suitable font isn't found on the machine, it'll just use a default instead.

## ◆ getTypefaceName()

String Font::getTypefaceName | ( |  | ) | const
| noexcept

Returns the font family of the typeface that this font uses.

e.g. "Arial", "Courier", etc.

This may also be set to Font::getDefaultSansSerifFontName(), Font::getDefaultSerifFontName(), or Font::getDefaultMonospacedFontName(), which are not actual platform-specific font family names, but are generic font family names that are used to represent the various default fonts.

If you need to know the exact typeface font family being used, you can call Font::getTypefacePtr()->getName(), which will give you the platform-specific font family.

## ◆ getTypefaceStyle()

String Font::getTypefaceStyle | ( |  | ) | const
| noexcept

Returns the font style of the typeface that this font uses.

See also
  withTypefaceStyle, getAvailableStyles()

## ◆ setTypefaceStyle()

void Font::setTypefaceStyle | ( | const String & | newStyle | ) |

Changes the font style of the typeface.

See also
  getAvailableStyles()

## ◆ withTypefaceStyle()

JUCE_NODISCARD Font Font::withTypefaceStyle | ( | const String & | newStyle | ) | const

Returns a copy of this font with a new typeface style.

See also
  getAvailableStyles()

## ◆ getAvailableStyles()

StringArray Font::getAvailableStyles | ( |  | ) | const

Returns a list of the styles that this font can use.

## ◆ getDefaultSansSerifFontName()

static const String & Font::getDefaultSansSerifFontName | ( |  | ) |
| static

Returns a typeface font family that represents the default sans-serif font.

This is also the typeface that will be used when a font is created without specifying any typeface details.

Note that this method just returns a generic placeholder string that means "the default sans-serif font" - it's not the actual font family of this font.

See also
  setTypefaceName, getDefaultSerifFontName, getDefaultMonospacedFontName

## ◆ getDefaultSerifFontName()

static const String & Font::getDefaultSerifFontName | ( |  | ) |
| static

Returns a typeface font family that represents the default serif font.

Note that this method just returns a generic placeholder string that means "the default serif font" - it's not the actual font family of this font.

See also
  setTypefaceName, getDefaultSansSerifFontName, getDefaultMonospacedFontName

## ◆ getDefaultMonospacedFontName()

static const String & Font::getDefaultMonospacedFontName | ( |  | ) |
| static

Returns a typeface font family that represents the default monospaced font.

Note that this method just returns a generic placeholder string that means "the default monospaced font" - it's not the actual font family of this font.

See also
  setTypefaceName, getDefaultSansSerifFontName, getDefaultSerifFontName

## ◆ getDefaultStyle()

static const String & Font::getDefaultStyle | ( |  | ) |
| static

Returns a font style name that represents the default style.

Note that this method just returns a generic placeholder string that means "the default font style" - it's not the actual name of the font style of any particular font.

See also
  setTypefaceStyle

## ◆ getDefaultTypefaceForFont()

static Typeface::Ptr Font::getDefaultTypefaceForFont | ( | const Font & | font | ) |
| static

Returns the default system typeface for the given font.

## ◆ withHeight()

JUCE_NODISCARD Font Font::withHeight | ( | float | height | ) | const

Returns a copy of this font with a new height.

## ◆ withPointHeight()

JUCE_NODISCARD Font Font::withPointHeight | ( | float | heightInPoints | ) | const

Returns a copy of this font with a new height, specified in points.

## ◆ setHeight()

void Font::setHeight | ( | float | newHeight | ) |

Changes the font's height.

See also
  getHeight, withHeight, setHeightWithoutChangingWidth

## ◆ setHeightWithoutChangingWidth()

void Font::setHeightWithoutChangingWidth | ( | float | newHeight | ) |

Changes the font's height without changing its width.

This alters the horizontal scale to compensate for the change in height.

## ◆ getHeight()

float Font::getHeight | ( |  | ) | const
| noexcept

Returns the total height of this font, in pixels.

This is the maximum height, from the top of the ascent to the bottom of the descenders.

See also
  withHeight, setHeightWithoutChangingWidth, getAscent

## ◆ getHeightInPoints()

float Font::getHeightInPoints | ( |  | ) | const

Returns the total height of this font, in points.

This is the maximum height, from the top of the ascent to the bottom of the descenders.

See also
  withPointHeight, getHeight

## ◆ getAscent()

float Font::getAscent | ( |  | ) | const

Returns the height of the font above its baseline, in pixels.

This is the maximum height from the baseline to the top.

See also
  getHeight, getDescent

## ◆ getAscentInPoints()

float Font::getAscentInPoints | ( |  | ) | const

Returns the height of the font above its baseline, in points.

This is the maximum height from the baseline to the top.

See also
  getHeight, getDescent

## ◆ getDescent()

float Font::getDescent | ( |  | ) | const

Returns the amount that the font descends below its baseline, in pixels.

This is calculated as (getHeight() - getAscent()).

See also
  getAscent, getHeight

## ◆ getDescentInPoints()

float Font::getDescentInPoints | ( |  | ) | const

Returns the amount that the font descends below its baseline, in points.

This is calculated as (getHeight() - getAscent()).

See also
  getAscent, getHeight

## ◆ getStyleFlags()

int Font::getStyleFlags | ( |  | ) | const
| noexcept

Returns the font's style flags.

This will return a bitwise-or'ed combination of values from the FontStyleFlags enum, to describe whether the font is bold, italic, etc.

See also
  FontStyleFlags, withStyle

## ◆ withStyle()

JUCE_NODISCARD Font Font::withStyle | ( | int | styleFlags | ) | const

Returns a copy of this font with the given set of style flags.

Parameters

  styleFlags | a bitwise-or'ed combination of values from the FontStyleFlags enum.

See also
  FontStyleFlags, getStyleFlags

## ◆ setStyleFlags()

void Font::setStyleFlags | ( | int | newFlags | ) |

Changes the font's style.

Parameters

  newFlags | a bitwise-or'ed combination of values from the FontStyleFlags enum.

See also
  FontStyleFlags, withStyle

## ◆ setBold()

void Font::setBold | ( | bool | shouldBeBold | ) |

Makes the font bold or non-bold.

## ◆ boldened()

JUCE_NODISCARD Font Font::boldened | ( |  | ) | const

Returns a copy of this font with the bold attribute set.

If the font does not have a bold version, this will return the default font.

## ◆ isBold()

bool Font::isBold | ( |  | ) | const
| noexcept

Returns true if the font is bold.

## ◆ setItalic()

void Font::setItalic | ( | bool | shouldBeItalic | ) |

Makes the font italic or non-italic.

## ◆ italicised()

JUCE_NODISCARD Font Font::italicised | ( |  | ) | const

Returns a copy of this font with the italic attribute set.

## ◆ isItalic()

bool Font::isItalic | ( |  | ) | const
| noexcept

Returns true if the font is italic.

## ◆ setUnderline()

void Font::setUnderline | ( | bool | shouldBeUnderlined | ) |

Makes the font underlined or non-underlined.

## ◆ isUnderlined()

bool Font::isUnderlined | ( |  | ) | const
| noexcept

Returns true if the font is underlined.

## ◆ getHorizontalScale()

float Font::getHorizontalScale | ( |  | ) | const
| noexcept

Returns the font's horizontal scale.

A value of 1.0 is the normal scale, less than this will be narrower, greater than 1.0 will be stretched out.

See also
  withHorizontalScale

## ◆ withHorizontalScale()

JUCE_NODISCARD Font Font::withHorizontalScale | ( | float | scaleFactor | ) | const

Returns a copy of this font with a new horizontal scale.

Parameters

  scaleFactor | a value of 1.0 is the normal scale, less than this will be narrower, greater than 1.0 will be stretched out.

See also
  getHorizontalScale

## ◆ setHorizontalScale()

void Font::setHorizontalScale | ( | float | scaleFactor | ) |

Changes the font's horizontal scale factor.

Parameters

  scaleFactor | a value of 1.0 is the normal scale, less than this will be narrower, greater than 1.0 will be stretched out.

## ◆ getDefaultMinimumHorizontalScaleFactor()

static float Font::getDefaultMinimumHorizontalScaleFactor | ( |  | ) |
| staticnoexcept

Returns the minimum horizontal scale to which fonts may be squashed when trying to create a layout.

See also
  setDefaultMinimumHorizontalScaleFactor

## ◆ setDefaultMinimumHorizontalScaleFactor()

static void Font::setDefaultMinimumHorizontalScaleFactor | ( | float | newMinimumScaleFactor | ) |
| staticnoexcept

Sets the minimum horizontal scale to which fonts may be squashed when trying to create a text layout.

See also
  getDefaultMinimumHorizontalScaleFactor

## ◆ getExtraKerningFactor()

float Font::getExtraKerningFactor | ( |  | ) | const
| noexcept

Returns the font's kerning.

This is the extra space added between adjacent characters, as a proportion of the font's height.

A value of zero is normal spacing, positive values will spread the letters out more, and negative values make them closer together.

## ◆ withExtraKerningFactor()

JUCE_NODISCARD Font Font::withExtraKerningFactor | ( | float | extraKerning | ) | const

Returns a copy of this font with a new kerning factor.

Parameters

  extraKerning | a multiple of the font's height that will be added to space between the characters. So a value of zero is normal spacing, positive values spread the letters out, negative values make them closer together.

## ◆ setExtraKerningFactor()

void Font::setExtraKerningFactor | ( | float | extraKerning | ) |

Changes the font's kerning.

Parameters

  extraKerning | a multiple of the font's height that will be added to space between the characters. So a value of zero is normal spacing, positive values spread the letters out, negative values make them closer together.

## ◆ setSizeAndStyle() [1/2]

void Font::setSizeAndStyle | ( | float | newHeight,
|  | int | newStyleFlags,
|  | float | newHorizontalScale,
|  | float | newKerningAmount
| ) |  |

Changes all the font's characteristics with one call.

## ◆ setSizeAndStyle() [2/2]

void Font::setSizeAndStyle | ( | float | newHeight,
|  | const String & | newStyle,
|  | float | newHorizontalScale,
|  | float | newKerningAmount
| ) |  |

Changes all the font's characteristics with one call.

## ◆ getStringWidth()

int Font::getStringWidth | ( | const String & | text | ) | const

Returns the total width of a string as it would be drawn using this font.

For a more accurate floating-point result, use getStringWidthFloat().

## ◆ getStringWidthFloat()

float Font::getStringWidthFloat | ( | const String & | text | ) | const

Returns the total width of a string as it would be drawn using this font.

See also
  getStringWidth

## ◆ getGlyphPositions()

void Font::getGlyphPositions | ( | const String & | text,
|  | Array< int > & | glyphs,
|  | Array< float > & | xOffsets
| ) |  | const

Returns the series of glyph numbers and their x offsets needed to represent a string.

An extra x offset is added at the end of the run, to indicate where the right hand edge of the last character is.

## ◆ getTypefacePtr()

Typeface::Ptr Font::getTypefacePtr | ( |  | ) | const

Returns the typeface used by this font.

## ◆ findFonts()

static void Font::findFonts | ( | Array< Font > & | results | ) |
| static

Creates an array of Font objects to represent all the fonts on the system.

If you just need the font family names of the typefaces, you can also use findAllTypefaceNames() instead.

Parameters

  results | the array to which new Font objects will be added.

## ◆ findAllTypefaceNames()

static StringArray Font::findAllTypefaceNames | ( |  | ) |
| static

Returns a list of all the available typeface font families.

The names returned can be passed into setTypefaceName().

You can use this instead of findFonts() if you only need their font family names, and not font objects.

## ◆ findAllTypefaceStyles()

static StringArray Font::findAllTypefaceStyles | ( | const String & | family | ) |
| static

Returns a list of all the available typeface font styles.

The names returned can be passed into setTypefaceStyle().

You can use this instead of findFonts() if you only need their styles, and not font objects.

## ◆ getFallbackFontName()

static const String & Font::getFallbackFontName | ( |  | ) |
| static

Returns the font family of the typeface to be used for rendering glyphs that aren't found in the requested typeface.

## ◆ setFallbackFontName()

static void Font::setFallbackFontName | ( | const String & | name | ) |
| static

Sets the (platform-specific) font family of the typeface to use to find glyphs that aren't available in whatever font you're trying to use.

## ◆ getFallbackFontStyle()

static const String & Font::getFallbackFontStyle | ( |  | ) |
| static

Returns the font style of the typeface to be used for rendering glyphs that aren't found in the requested typeface.

## ◆ setFallbackFontStyle()

static void Font::setFallbackFontStyle | ( | const String & | style | ) |
| static

Sets the (platform-specific) font style of the typeface to use to find glyphs that aren't available in whatever font you're trying to use.

## ◆ toString()

String Font::toString | ( |  | ) | const

Creates a string to describe this font.

The string will contain information to describe the font's typeface, size, and style. To recreate the font from this string, use fromString().

## ◆ fromString()

static Font Font::fromString | ( | const String & | fontDescription | ) |
| static

Recreates a font from its stringified encoding.

This method takes a string that was created by toString(), and recreates the original font.

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

- juce_Font.h