- cpp3ds
- Font
Class for loading and manipulating character fonts. More...
#include <Font.hpp>
Classes | |
struct | Info |
Holds various information about a font. More... | |
Public Member Functions | |
Font () | |
Default constructor. More... | |
Font (const Font ©) | |
Copy constructor. More... | |
~Font () | |
Destructor. More... | |
bool | loadFromFile (const std::string &filename) |
Load the font from a file. More... | |
bool | loadFromMemory (const void *data, std::size_t sizeInBytes) |
Load the font from a file in memory. More... | |
bool | loadFromStream (InputStream &stream) |
Load the font from a custom stream. More... | |
const Info & | getInfo () const |
Get the font information. More... | |
const Glyph & | getGlyph (Uint32 codePoint, unsigned int characterSize, bool bold) const |
Retrieve a glyph of the font. More... | |
int | getKerning (Uint32 first, Uint32 second, unsigned int characterSize) const |
Get the kerning offset of two glyphs. More... | |
int | getLineSpacing (unsigned int characterSize) const |
Get the line spacing. More... | |
const Texture & | getTexture (unsigned int characterSize) const |
Retrieve the texture containing the loaded glyphs of a certain size. More... | |
Font & | operator= (const Font &right) |
Overload of assignment operator. More... | |
Class for loading and manipulating character fonts.
Fonts can be loaded from a file, from memory or from a custom stream, and supports the most common types of fonts.
See the loadFromFile function for the complete list of supported formats.
Once it is loaded, a cpp3ds::Font instance provides three types of information about the font:
Fonts alone are not very useful: they hold the font data but cannot make anything useful of it. To do so you need to use the cpp3ds::Text class, which is able to properly output text with several options such as character size, style, color, position, rotation, etc. This separation allows more flexibility and better performances: indeed a cpp3ds::Font is a heavy resource, and any operation on it is slow (often too slow for real-time applications). On the other side, a cpp3ds::Text is a lightweight object which can combine the glyphs data and metrics of a cpp3ds::Font to display any text on a render target. Note that it is also possible to bind several cpp3ds::Text instances to the same cpp3ds::Font.
It is important to note that the cpp3ds::Text instance doesn't copy the font that it uses, it only keeps a reference to it. Thus, a cpp3ds::Font must not be destructed while it is used by a cpp3ds::Text (i.e. never write a function that uses a local cpp3ds::Font instance for creating a text).
Usage example:
Apart from loading font files, and passing them to instances of cpp3ds::Text, you should normally not have to deal directly with this class. However, it may be useful to access the font metrics or rasterized glyphs for advanced usage.
cpp3ds::Font::Font | ( | ) |
Default constructor.
This constructor defines an empty font
cpp3ds::Font::Font | ( | const Font & | copy | ) |
Copy constructor.
copy | Instance to copy |
cpp3ds::Font::~Font | ( | ) |
Destructor.
Cleans up all the internal resources used by the font
const Glyph& cpp3ds::Font::getGlyph | ( | Uint32 | codePoint, |
unsigned int | characterSize, | ||
bool | bold | ||
) | const |
Retrieve a glyph of the font.
codePoint | Unicode code point of the character to get |
characterSize | Reference character size |
bold | Retrieve the bold version or the regular one? |
const Info& cpp3ds::Font::getInfo | ( | ) | const |
Get the font information.
int cpp3ds::Font::getKerning | ( | Uint32 | first, |
Uint32 | second, | ||
unsigned int | characterSize | ||
) | const |
Get the kerning offset of two glyphs.
The kerning is an extra offset (negative) to apply between two glyphs when rendering them, to make the pair look more "natural". For example, the pair "AV" have a special kerning to make them closer than other characters. Most of the glyphs pairs have a kerning offset of zero, though.
first | Unicode code point of the first character |
second | Unicode code point of the second character |
characterSize | Reference character size |
int cpp3ds::Font::getLineSpacing | ( | unsigned int | characterSize | ) | const |
Get the line spacing.
Line spacing is the vertical offset to apply between two consecutive lines of text.
characterSize | Reference character size |
const Texture& cpp3ds::Font::getTexture | ( | unsigned int | characterSize | ) | const |
Retrieve the texture containing the loaded glyphs of a certain size.
The contents of the returned texture changes as more glyphs are requested, thus it is not very relevant. It is mainly used internally by cpp3ds::Text.
characterSize | Reference character size |
bool cpp3ds::Font::loadFromFile | ( | const std::string & | filename | ) |
Load the font from a file.
The supported font formats are: TrueType, Type 1, CFF, OpenType, SFNT, X11 PCF, Windows FNT, BDF, PFR and Type 42. Note that this function know nothing about the standard fonts installed on the user's system, thus you can't load them directly.
filename | Path of the font file to load |
bool cpp3ds::Font::loadFromMemory | ( | const void * | data, |
std::size_t | sizeInBytes | ||
) |
Load the font from a file in memory.
The supported font formats are: TrueType, Type 1, CFF, OpenType, SFNT, X11 PCF, Windows FNT, BDF, PFR and Type 42. Warning: SFML cannot preload all the font data in this function, so the buffer pointed by data has to remain valid as long as the font is used.
data | Pointer to the file data in memory |
sizeInBytes | Size of the data to load, in bytes |
bool cpp3ds::Font::loadFromStream | ( | InputStream & | stream | ) |
Load the font from a custom stream.
The supported font formats are: TrueType, Type 1, CFF, OpenType, SFNT, X11 PCF, Windows FNT, BDF, PFR and Type 42. Warning: SFML cannot preload all the font data in this function, so the contents of stream have to remain valid as long as the font is used.
stream | Source stream to read from |
Overload of assignment operator.
right | Instance to assign |