xtd - Reference Guide 0.2.0
xtd::drawing::font Class Referencefinal

#include <font.h>

## Definition

Defines a particular format for text, including font face, size, and style attributes. This class cannot be inherited.

class drawing_export_ font final : public xtd::object
Inheritance
xtd::objectxtd::drawing::font
Namespace
xtd::drawing
Library
xtd.drawing
Examples:

## Constructors

font (const font &prototype, float em_size)
IInitializes a new Font that uses the specified existing xtd::drawing::font and size. More...

font (const font &prototype, float em_size, font_style style)
IInitializes a new Font that uses the specified existing xtd::drawing::font, size and font_style enumeration. More...

font (const font &prototype, font_style style)
IInitializes a new Font that uses the specified existing xtd::drawing::font and font_style enumeration. More...

font (xtd::ustring family_name, float em_size, font_style style, graphics_unit unit, uint8_t gdi_char_set, bool gdi_vertical_font)
IInitializes a new xtd::drawing::font using the specified size, style, unit, and character set. More...

font (const drawing::font_family &font_family, float em_size, font_style style, graphics_unit unit, uint8_t gdi_char_set, bool gdi_vertical_font)
Initializes a new xtd::drawing::font using the specified size, style, unit, and character set. More...

font (xtd::ustring family_name, float em_size, font_style style, graphics_unit unit, uint8_t gdi_char_set)
Initializes a new xtd::drawing::font using the specified size, style, unit, and character set. More...

font (const drawing::font_family &font_family, float em_size, font_style style, graphics_unit unit, uint8_t gdi_char_set)
Initializes a new xtd::drawing::font using the specified size, style, unit, and character set. More...

font (xtd::ustring family_name, float em_size, font_style style, graphics_unit unit)
Initializes a new xtd::drawing::font using the specified size, style and unit. More...

font (const drawing::font_family &font_family, float em_size, font_style style, graphics_unit unit)
Initializes a new xtd::drawing::font using the specified size, style and unit. More...

font (xtd::ustring family_name, float em_size, font_style style)
Initializes a new xtd::drawing::font using the specified size and style. More...

font (const drawing::font_family &font_family, float em_size, font_style style)
Initializes a new xtd::drawing::font using the specified size and style. More...

font (xtd::ustring family_name, float em_size, graphics_unit unit)
Initializes a new xtd::drawing::font using the specified size and unit. More...

font (const drawing::font_family &font_family, float em_size, graphics_unit unit)
Initializes a new xtd::drawing::font using the specified size and unit. More...

font (xtd::ustring family_name, float em_size)
Initializes a new xtd::drawing::font using the specified size and unit. More...

font (const drawing::font_family &font_family, float em_size)
Initializes a new xtd::drawing::font using the specified size. More...

## Properties

bool bold () const
Gets a value that indicates whether this xtd::drawing::font is bold. More...

drawing::font_family font_family () const
Gets the xtd::drawing::font_family associated with this xtd::drawing::font. More...

uint8_t gdi_char_set () const
Gets a byte value that specifies the GDI character set that this xtd::drawing::font uses. More...

bool gdi_vertical_font () const
Gets a Boolean value that indicates whether this xtd::drawing::font is derived from a GDI vertical font. More...

intptr_t handle () const
Gets the window handle that the font is bound to. More...

int32_t height () const
Gets the line spacing of this font. More...

bool is_system_font () const
Gets a value indicating whether the font is a member of xtd::drawing::system_fonts. More...

bool italic () const
Gets a value that indicates whether this xtd::drawing::font is italic. More...

const xtd::ustringname () const
Gets the face name of this xtd::drawing::font. More...

const xtd::ustringoriginal_font_name () const
Gets the face name of this Font. More...

float size () const
Gets the em-size of this xtd::drawing::font measured in the units specified by the unit property. More...

float size_in_points () const

bool strikeout () const
Gets a value that indicates whether this xtd::drawing::font is strikeout. More...

font_style style () const
Gets style information for this xtd::drawing::font. More...

bool underline () const
Gets a value that indicates whether this xtd::drawing::font is underline. More...

graphics_unit unit () const
Gets the unit of measure for this xtd::drawing::font. More...

## Methods

float get_height () const
Returns the line spacing, in pixels, of this font. More...

float get_height (const graphics &graphics) const
Returns the line spacing, in the current unit of a specified xtd::drawing::graphics, of this font. More...

float get_height (float dpi) const
Returns the height, in pixels, of this Font when drawn to a device with the specified vertical resolution. More...

intptr_t to_hfont () const

xtd::ustring to_string () const noexcept override
Converts this font_family to a human-readable string representation. More...

static font from_hdc (const intptr_t hdc)
Creates a font from the specified Windows handle to a device context. More...

static font from_hfont (const intptr_t hfont)
Creates a font from the specified Windows handle. More...

Public Member Functions inherited from xtd::object
object ()=default
Create a new instance of the ultimate base class object. More...

virtual bool equals (const object &obj) const noexcept
Determines whether the specified object is equal to the current object. More...

virtual size_t get_hash_code () const noexcept
Serves as a hash function for a particular type. More...

template<typename object_t >
std::unique_ptr< object_t > memberwise_clone () const
Gets the type of the current instance. More...

Static Public Member Functions inherited from xtd::object
static bool equals (const object &object_a, const object &object_b) noexcept
Determines whether the specified object instances are considered equal. More...

static bool reference_equals (const object &object_a, const object &object_b) noexcept
Determines whether the specified object instances are the same instance. More...

## ◆ font() [1/15]

 xtd::drawing::font::font ( const font & prototype, float em_size )

IInitializes a new Font that uses the specified existing xtd::drawing::font and size.

Parameters
 prototype The existing xtd::drawing::font from which to create the new xtd::drawing::font. em_size The em-size of the new font in the units specified by the unit parameter.
Examples:
font_dialog.cpp.

## ◆ font() [2/15]

 xtd::drawing::font::font ( const font & prototype, float em_size, font_style style )

IInitializes a new Font that uses the specified existing xtd::drawing::font, size and font_style enumeration.

Parameters
 prototype The existing xtd::drawing::font from which to create the new xtd::drawing::font. em_size The em-size of the new font in the units specified by the unit parameter. style The font_style to apply to the new xtd::drawing::font. Multiple values of the font_style enumeration can be combined with the OR operator.

## ◆ font() [3/15]

 xtd::drawing::font::font ( const font & prototype, font_style style )

IInitializes a new Font that uses the specified existing xtd::drawing::font and font_style enumeration.

Parameters
 prototype The existing xtd::drawing::font from which to create the new xtd::drawing::font. style The font_style to apply to the new xtd::drawing::font. Multiple values of the font_style enumeration can be combined with the OR operator.

## ◆ font() [4/15]

 xtd::drawing::font::font ( xtd::ustring family_name, float em_size, font_style style, graphics_unit unit, uint8_t gdi_char_set, bool gdi_vertical_font )

IInitializes a new xtd::drawing::font using the specified size, style, unit, and character set.

Parameters
 family_name A string representation of the font_family for the new xtd::drawing::font. em_size The em-size of the new font in the units specified by the unit parameter. style The font_style of the new xtd::drawing::font. unit The graphics_unit of the new xtd::drawing::font. gdi_char_set A byte that specifies a GDI character set to use for this font. gdi_vertical_font A boolean value indicating whether the new xtd::drawing::font is derived from a GDI vertical font.
Exceptions
 std::invalid_param emSize is less than or equal to 0, evaluates to infinity, or is not a valid number.
Remarks
The gdiCharSet parameter takes a value from the list defined in the Windows SDK header file WinGDI.h. If the familyName parameter specifies a font that is not installed on the machine running the application or is not supported, Microsoft Sans Serif will be substituted.

## ◆ font() [5/15]

 xtd::drawing::font::font ( const drawing::font_family & font_family, float em_size, font_style style, graphics_unit unit, uint8_t gdi_char_set, bool gdi_vertical_font )
inline

Initializes a new xtd::drawing::font using the specified size, style, unit, and character set.

Parameters
 font_family The font_family of the new Font. em_size The em-size of the new font in the units specified by the unit parameter. style The font_style of the new xtd::drawing::font. unit The graphics_unit of the new xtd::drawing::font. gdi_char_set A byte that specifies a GDI character set to use for this font. gdi_vertical_font A boolean value indicating whether the new xtd::drawing::font is derived from a GDI vertical font.
Exceptions
 std::invalid_param emSize is less than or equal to 0, evaluates to infinity, or is not a valid number.
Remarks
The gdiCharSet parameter takes a value from the list defined in the Windows SDK header file WinGDI.h. If the familyName parameter specifies a font that is not installed on the machine running the application or is not supported, Microsoft Sans Serif will be substituted.

## ◆ font() [6/15]

 xtd::drawing::font::font ( xtd::ustring family_name, float em_size, font_style style, graphics_unit unit, uint8_t gdi_char_set )
inline

Initializes a new xtd::drawing::font using the specified size, style, unit, and character set.

Parameters
 family_name A string representation of the font_family for the new xtd::drawing::font. em_size The em-size of the new font in the units specified by the unit parameter. style The font_style of the new xtd::drawing::font. unit The graphics_unit of the new xtd::drawing::font. gdi_char_set A byte that specifies a GDI character set to use for this font.
Exceptions
 std::invalid_param emSize is less than or equal to 0, evaluates to infinity, or is not a valid number.
Remarks
The gdiCharSet parameter takes a value from the list defined in the Windows SDK header file WinGDI.h. If the familyName parameter specifies a font that is not installed on the machine running the application or is not supported, Microsoft Sans Serif will be substituted.

## ◆ font() [7/15]

 xtd::drawing::font::font ( const drawing::font_family & font_family, float em_size, font_style style, graphics_unit unit, uint8_t gdi_char_set )
inline

Initializes a new xtd::drawing::font using the specified size, style, unit, and character set.

Parameters
 font_family The font_family of the new Font. em_size The em-size of the new font in the units specified by the unit parameter. style The font_style of the new xtd::drawing::font. unit The graphics_unit of the new xtd::drawing::font. gdi_char_set A byte that specifies a GDI character set to use for this font.
Exceptions
 std::invalid_param emSize is less than or equal to 0, evaluates to infinity, or is not a valid number.
Remarks
The gdiCharSet parameter takes a value from the list defined in the Windows SDK header file WinGDI.h. If the familyName parameter specifies a font that is not installed on the machine running the application or is not supported, Microsoft Sans Serif will be substituted.

## ◆ font() [8/15]

 xtd::drawing::font::font ( xtd::ustring family_name, float em_size, font_style style, graphics_unit unit )
inline

Initializes a new xtd::drawing::font using the specified size, style and unit.

Parameters
 family_name A string representation of the font_family for the new xtd::drawing::font. em_size The em-size of the new font in the units specified by the unit parameter. style The font_style of the new xtd::drawing::font. unit The graphics_unit of the new xtd::drawing::font.
Exceptions
 std::invalid_param emSize is less than or equal to 0, evaluates to infinity, or is not a valid number.

## ◆ font() [9/15]

 xtd::drawing::font::font ( const drawing::font_family & font_family, float em_size, font_style style, graphics_unit unit )
inline

Initializes a new xtd::drawing::font using the specified size, style and unit.

Parameters
 font_family The font_family of the new Font. em_size The em-size of the new font in the units specified by the unit parameter. style The font_style of the new xtd::drawing::font. unit The graphics_unit of the new xtd::drawing::font.
Exceptions
 std::invalid_param emSize is less than or equal to 0, evaluates to infinity, or is not a valid number.

## ◆ font() [10/15]

 xtd::drawing::font::font ( xtd::ustring family_name, float em_size, font_style style )
inline

Initializes a new xtd::drawing::font using the specified size and style.

Parameters
 family_name A string representation of the font_family for the new xtd::drawing::font. em_size The em-size of the new font in the units specified by the unit parameter. style The font_style of the new xtd::drawing::font.
Exceptions
 std::invalid_param emSize is less than or equal to 0, evaluates to infinity, or is not a valid number.

## ◆ font() [11/15]

 xtd::drawing::font::font ( const drawing::font_family & font_family, float em_size, font_style style )
inline

Initializes a new xtd::drawing::font using the specified size and style.

Parameters
 font_family The font_family of the new Font. em_size The em-size of the new font in the units specified by the unit parameter. style The font_style of the new xtd::drawing::font.
Exceptions
 std::invalid_param emSize is less than or equal to 0, evaluates to infinity, or is not a valid number.

## ◆ font() [12/15]

 xtd::drawing::font::font ( xtd::ustring family_name, float em_size, graphics_unit unit )
inline

Initializes a new xtd::drawing::font using the specified size and unit.

Parameters
 family_name A string representation of the font_family for the new xtd::drawing::font. em_size The em-size of the new font in the units specified by the unit parameter. unit The graphics_unit of the new xtd::drawing::font.
Exceptions
 std::invalid_param emSize is less than or equal to 0, evaluates to infinity, or is not a valid number.

## ◆ font() [13/15]

 xtd::drawing::font::font ( const drawing::font_family & font_family, float em_size, graphics_unit unit )
inline

Initializes a new xtd::drawing::font using the specified size and unit.

Parameters
 font_family The font_family of the new Font. em_size The em-size of the new font in the units specified by the unit parameter. unit The graphics_unit of the new xtd::drawing::font.
Exceptions
 std::invalid_param emSize is less than or equal to 0, evaluates to infinity, or is not a valid number.

## ◆ font() [14/15]

 xtd::drawing::font::font ( xtd::ustring family_name, float em_size )
inline

Initializes a new xtd::drawing::font using the specified size and unit.

Parameters
 family_name A string representation of the font_family for the new xtd::drawing::font. em_size The em-size of the new font in the units specified by the unit parameter.
Exceptions
 std::invalid_param emSize is less than or equal to 0, evaluates to infinity, or is not a valid number.

## ◆ font() [15/15]

 xtd::drawing::font::font ( const drawing::font_family & font_family, float em_size )
inline

Initializes a new xtd::drawing::font using the specified size.

Parameters
 font_family The font_family of the new Font. em_size The em-size of the new font in the units specified by the unit parameter.
Exceptions
 std::invalid_param emSize is less than or equal to 0, evaluates to infinity, or is not a valid number.

## ◆ bold()

 bool xtd::drawing::font::bold ( ) const
inline

Gets a value that indicates whether this xtd::drawing::font is bold.

Returns
true if this xtd::drawing::font is bold; otherwise, false.

## ◆ font_family()

 drawing::font_family xtd::drawing::font::font_family ( ) const
inline

Gets the xtd::drawing::font_family associated with this xtd::drawing::font.

Returns
The font_family associated with this Font.
Remarks
A font_family represents a group of fonts that have a similar font face, but may have different sizes and styles (for example, Arial, Times New Roman, and Verdana).

## ◆ from_hdc()

 static font xtd::drawing::font::from_hdc ( const intptr_t hdc )
static

Creates a font from the specified Windows handle to a device context.

Parameters
 hdc A handle to a device context.
Returns
The font this method creates.

## ◆ from_hfont()

 static font xtd::drawing::font::from_hfont ( const intptr_t hfont )
static

Creates a font from the specified Windows handle.

Parameters
 hfont A Windows handle to a GDI font.
Returns
The font this method creates.

## ◆ gdi_char_set()

 uint8_t xtd::drawing::font::gdi_char_set ( ) const
inline

Gets a byte value that specifies the GDI character set that this xtd::drawing::font uses.

Returns
A byte value that specifies the GDI character set that this xtd::drawing::font uses. The default is 1.
Remarks
This property returns 1, unless a different character set is specified in the font(string, float, font_style, graphics_unit, uint8_t) constructor. This property takes a value from the list defined in the Windows SDK header file WinGDI.h. The character sets and byte values are listed in the following table.
Character set  Value
ANSI 0
DEFAULT 1
SYMBOL  2
SHIFTJIS 128
HANGEUL 129
HANGUL 129
GB2312 134
CHINESEBIG5 136
OEM  255
JOHAB  130
HEBREW 177
ARABIC  178
GREEK  161
TURKISH 162
VIETNAMESE 163
THAI  222
EASTEUROPE  238
RUSSIAN  204
MAC 77
BALTIC  186

## ◆ gdi_vertical_font()

 bool xtd::drawing::font::gdi_vertical_font ( ) const
inline

Gets a Boolean value that indicates whether this xtd::drawing::font is derived from a GDI vertical font.

Returns
true if this xtd::drawing::font is derived from a GDI vertical font; otherwise, false.
Remarks
Use this property to determine if a font is compatible with native Win32 controls on non-Unicode platforms.
gdi_vertical_font only returns true if this font was created from a classic GDI font definition, like a LOGFONT or HFONT.

## ◆ get_height() [1/3]

 float xtd::drawing::font::get_height ( ) const

Returns the line spacing, in pixels, of this font.

Returns
The line spacing, in pixels, of this font.
Remarks
The line spacing of a xtd::drawing::font is the vertical distance between the base lines of two consecutive lines of text. Thus, the line spacing includes the blank space between lines along with the height of the character itself.
If the unit property of the font is set to anything other than graphics_unit::pixel, the height (in pixels) is calculated using the vertical resolution of the screen display. For example, suppose the font unit is inches and the font size is 0.3. Also suppose that for the corresponding font family, the em-height is 2048 and the line spacing is 2355. For a screen display that has a vertical resolution of 96 dots per inch, you can calculate the height as follows:
2355*(0.3/2048)*96 = 33.11719

## ◆ get_height() [2/3]

 float xtd::drawing::font::get_height ( const graphics & graphics ) const

Returns the line spacing, in the current unit of a specified xtd::drawing::graphics, of this font.

Parameters
 graphics A xtd::drawing::graphics that holds the vertical resolution, in dots per inch, of the display device as well as settings for page unit and page scale.
Returns
The line spacing, in pixels, of this font.
Remarks
The line spacing of a xtd::drawing::font is the vertical distance between the base lines of two consecutive lines of text. Thus, the line spacing includes the blank space between lines along with the height of the character itself.
If the unit property of the font is set to anything other than graphics_unit::pixel, the height (in pixels) is calculated using the vertical resolution of the screen display. For example, suppose the font unit is inches and the font size is 0.3. Also suppose that for the corresponding font family, the em-height is 2048 and the line spacing is 2355. For a screen display that has a vertical resolution of 96 dots per inch, you can calculate the height as follows:
2355*(0.3/2048)*96 = 33.11719

## ◆ get_height() [3/3]

 float xtd::drawing::font::get_height ( float dpi ) const

Returns the height, in pixels, of this Font when drawn to a device with the specified vertical resolution.

Parameters
 dpi The vertical resolution, in dots per inch, used to calculate the height of the font.
Returns
The height, in pixels, of this xtd::drawing::font.
Remarks
If the unit property of the font is set to anything other than graphics_unit::pixel, the height (in pixels) is calculated using the vertical resolution of the screen display. For example, suppose the font unit is inches and the font size is 0.3. Also suppose that for the corresponding font family, the em-height is 2048 and the line spacing is 2355. If the specified vertical resolution is 96 dots per inch, the height is calculated as follows:
2355*(0.3/2048)*96 = 33.1171875

## ◆ handle()

 intptr_t xtd::drawing::font::handle ( ) const
inline

Gets the window handle that the font is bound to.

Returns
An intptr_t that contains the window handle (hfont) of the font.

## ◆ height()

 int32_t xtd::drawing::font::height ( ) const

Gets the line spacing of this font.

Returns
The line spacing, in pixels, of this font.
Remarks
The line spacing is the vertical distance between the base lines of two consecutive lines of text. Thus, the line spacing includes the blank space between lines along with the height of the character itself.
If the unit property of the font is set to anything other than graphics_unit::pixel, the height (in pixels) is calculated using the vertical resolution of the screen display. For example, suppose the font unit is inches and the font size is 0.3. Also suppose that for the corresponding font family, the em-height is 2048 and the line spacing is 2355. For a screen display that has a vertical resolution of 96 dots per inch, you can calculate the height as follows:
2355*(0.3/2048)*96 = 33.11719
The value returned by the get_height method would be 33.11719, and the value returned by the height property would be 34. The height property is the value returned by get_height, rounded up to the nearest integer.

## ◆ is_system_font()

 bool xtd::drawing::font::is_system_font ( ) const
inline

Gets a value indicating whether the font is a member of xtd::drawing::system_fonts.

Returns
true if the font is a member of xtd::drawing::system_fonts; otherwise, false. The default is false.
Remarks
When the user changes the system font, the is_system_font property could return true, even if the font is not actually a system font.

## ◆ italic()

 bool xtd::drawing::font::italic ( ) const
inline

Gets a value that indicates whether this xtd::drawing::font is italic.

Returns
true if this xtd::drawing::font is italic; otherwise, false.

## ◆ name()

 const xtd::ustring& xtd::drawing::font::name ( ) const
inline

Gets the face name of this xtd::drawing::font.

Returns
A string representation of the face name of this xtd::drawing::font.

## ◆ original_font_name()

 const xtd::ustring& xtd::drawing::font::original_font_name ( ) const
inline

Gets the face name of this Font.

Returns
A string representation of the face name of this Font.

## ◆ size()

 float xtd::drawing::font::size ( ) const
inline

Gets the em-size of this xtd::drawing::font measured in the units specified by the unit property.

Returns
The em-size of this xtd::drawing::font.

## ◆ size_in_points()

 float xtd::drawing::font::size_in_points ( ) const

Gets the em-size, in points, of this xtd::drawing::font.

Returns
The em-size, in points, of this xtd::drawing::font.

## ◆ strikeout()

 bool xtd::drawing::font::strikeout ( ) const
inline

Gets a value that indicates whether this xtd::drawing::font is strikeout.

Returns
true if this xtd::drawing::font is strikeout; otherwise, false.

## ◆ style()

 font_style xtd::drawing::font::style ( ) const
inline

Gets style information for this xtd::drawing::font.

Returns
A font_style enumeration that contains style information for this xtd::drawing::font.

## ◆ to_hfont()

 intptr_t xtd::drawing::font::to_hfont ( ) const
Returns
Returns a handle to this xtd::drawing::font.
A Windows handle to this xtd::drawing::font.
Remarks
When using this method, you must dispose of the resulting Hfont using the GDI DeleteObject method to ensure the resources are released.

## ◆ to_string()

 xtd::ustring xtd::drawing::font::to_string ( ) const
inlineoverridevirtualnoexcept

Converts this font_family to a human-readable string representation.

Returns
The string that represents this font_family.

Reimplemented from xtd::object.

## ◆ underline()

 bool xtd::drawing::font::underline ( ) const
inline

Gets a value that indicates whether this xtd::drawing::font is underline.

Returns
true if this xtd::drawing::font is underline; otherwise, false.

## ◆ unit()

 graphics_unit xtd::drawing::font::unit ( ) const
inline

Gets the unit of measure for this xtd::drawing::font.

Returns
A graphics_unit that represents the unit of measure for this xtd::drawing::font.

The documentation for this class was generated from the following file:
• xtd.drawing/include/xtd/drawing/font.h