Font

Inherits: Resource < Reference < Object

Inherited By: BitmapFont, DynamicFont

Internationalized font and text drawing support.

Description

Font contains a Unicode-compatible character set, as well as the ability to draw it with variable width, ascent, descent and kerning. For creating fonts from TTF files (or other font formats), see the editor support for fonts.

Note: If a DynamicFont doesn't contain a character used in a string, the character in question will be replaced with codepoint 0xfffd if it's available in the DynamicFont. If this replacement character isn't available in the DynamicFont, the character will be hidden without displaying any replacement character in the string.

Note: If a BitmapFont doesn't contain a character used in a string, the character in question will be hidden without displaying any replacement character in the string.

Note: Unicode characters after 0xffff (such as most emoji) are not supported on Windows. They will display as unknown characters instead. This will be resolved in Godot 4.0.

Methods

void

draw ( RID canvas_item, Vector2 position, String string, Color modulate=Color( 1, 1, 1, 1 ), int clip_w=-1, Color outline_modulate=Color( 1, 1, 1, 1 ) ) const

float

draw_char ( RID canvas_item, Vector2 position, int char, int next=-1, Color modulate=Color( 1, 1, 1, 1 ), bool outline=false ) const

float

get_ascent ( ) const

Dictionary

get_char_contours ( int char, int next=0 ) const

Vector2

get_char_size ( int char, int next=0 ) const

RID

get_char_texture ( int char, int next=0, bool outline=false ) const

Vector2

get_char_texture_size ( int char, int next=0, bool outline=false ) const

Vector2

get_char_tx_offset ( int char, int next=0, bool outline=false ) const

Vector2

get_char_tx_size ( int char, int next=0, bool outline=false ) const

Rect2

get_char_tx_uv_rect ( int char, int next=0, bool outline=false ) const

float

get_descent ( ) const

float

get_height ( ) const

Vector2

get_string_size ( String string ) const

Vector2

get_wordwrap_string_size ( String string, float width ) const

bool

has_outline ( ) const

bool

is_distance_field_hint ( ) const

void

update_changes ( )


Enumerations

enum ContourPointTag:

ContourPointTag CONTOUR_CURVE_TAG_ON = 1

Contour point is on the curve.

ContourPointTag CONTOUR_CURVE_TAG_OFF_CONIC = 0

Contour point isn't on the curve, but serves as a control point for a conic (quadratic) Bézier arc.

ContourPointTag CONTOUR_CURVE_TAG_OFF_CUBIC = 2

Contour point isn't on the curve, but serves as a control point for a cubic Bézier arc.


Method Descriptions

void draw ( RID canvas_item, Vector2 position, String string, Color modulate=Color( 1, 1, 1, 1 ), int clip_w=-1, Color outline_modulate=Color( 1, 1, 1, 1 ) ) const

Draw string into a canvas item using the font at a given position, with modulate color, and optionally clipping the width. position specifies the baseline, not the top. To draw from the top, ascent must be added to the Y axis.

See also CanvasItem.draw_string.


float draw_char ( RID canvas_item, Vector2 position, int char, int next=-1, Color modulate=Color( 1, 1, 1, 1 ), bool outline=false ) const

Draw character char into a canvas item using the font at a given position, with modulate color, and optionally kerning if next is passed. clipping the width. position specifies the baseline, not the top. To draw from the top, ascent must be added to the Y axis. The width used by the character is returned, making this function useful for drawing strings character by character.

If outline is true, the outline of the character is drawn instead of the character itself.


float get_ascent ( ) const

Returns the font ascent (number of pixels above the baseline).


Dictionary get_char_contours ( int char, int next=0 ) const

Returns outline contours of the glyph as a Dictionary with the following contents:

points - PoolVector3Array, containing outline points. x and y are point coordinates. z is the type of the point, using the ContourPointTag values.

contours - PoolIntArray, containing indices the end points of each contour.

orientation - bool, contour orientation. If true, clockwise contours must be filled.


Vector2 get_char_size ( int char, int next=0 ) const

Returns the size of a character, optionally taking kerning into account if the next character is provided. Note that the height returned is the font height (see get_height) and has no relation to the glyph height.


RID get_char_texture ( int char, int next=0, bool outline=false ) const

Returns resource id of the cache texture containing the char.


Vector2 get_char_texture_size ( int char, int next=0, bool outline=false ) const

Returns size of the cache texture containing the char.


Vector2 get_char_tx_offset ( int char, int next=0, bool outline=false ) const

Returns char offset from the baseline.


Vector2 get_char_tx_size ( int char, int next=0, bool outline=false ) const

Returns size of the char.


Rect2 get_char_tx_uv_rect ( int char, int next=0, bool outline=false ) const

Returns rectangle in the cache texture containing the char.


float get_descent ( ) const

Returns the font descent (number of pixels below the baseline).


float get_height ( ) const

Returns the total font height (ascent plus descent) in pixels.


Vector2 get_string_size ( String string ) const

Returns the size of a string, taking kerning and advance into account. Note that the height returned is the font height (see get_height) and has no relation to the string.


Vector2 get_wordwrap_string_size ( String string, float width ) const

Returns the size that the string would have with word wrapping enabled with a fixed width.


bool has_outline ( ) const

Returns true if the font has an outline.


bool is_distance_field_hint ( ) const

There is currently no description for this method. Please help us by contributing one!


void update_changes ( )

After editing a font (changing size, ascent, char rects, etc.). Call this function to propagate changes to controls that might use it.