Table of Contents

Class FontVariation

A variation of a font with additional settings.

Inheritance
FontVariation

Remarks

Provides OpenType variations, simulated bold / slant, and additional font settings like OpenType features and extra spacing.

To use simulated bold font variant:

var fv = FontVariation.new()
fv.base_font = load("res://BarlowCondensed-Regular.ttf")
fv.variation_embolden = 1.2
$Label.add_theme_font_override("font", fv)
$Label.add_theme_font_size_override("font_size", 64)

To set the coordinate of multiple variation axes:

var fv = FontVariation.new();
var ts = TextServerManager.get_primary_interface()
fv.base_font = load("res://BarlowCondensed-Regular.ttf")
fv.variation_opentype = { ts.name_to_tag("wght"): 900, ts.name_to_tag("custom_hght"): 900 }

Properties

base_font

Base font used to create a variation. If not set, default Theme font is used.

var base_font : Font

Property Value

Font

Remarks

  • void set_base_font(Font value)
  • Font get_base_font

baseline_offset

Extra baseline offset (as a fraction of font height).

var baseline_offset : float = 0.0

Property Value

float

Remarks

  • void set_baseline_offset(float value)
  • float get_baseline_offset

opentype_features

A set of OpenType feature tags. More info: OpenType feature tags.

var opentype_features : Dictionary = {}

Property Value

Dictionary

Remarks

spacing_bottom

Extra spacing at the bottom of the line in pixels.

var spacing_bottom : int = 0

Property Value

int

Remarks

  • void set_spacing(int spacing, int value)
  • int get_spacing

spacing_glyph

Extra spacing between graphical glyphs.

var spacing_glyph : int = 0

Property Value

int

Remarks

  • void set_spacing(int spacing, int value)
  • int get_spacing

spacing_space

Extra width of the space glyphs.

var spacing_space : int = 0

Property Value

int

Remarks

  • void set_spacing(int spacing, int value)
  • int get_spacing

spacing_top

Extra spacing at the top of the line in pixels.

var spacing_top : int = 0

Property Value

int

Remarks

  • void set_spacing(int spacing, int value)
  • int get_spacing

variation_embolden

If is not equal to zero, emboldens the font outlines. Negative values reduce the outline thickness.

Note: Emboldened fonts might have self-intersecting outlines, which will prevent MSDF fonts and TextMesh from working correctly.

var variation_embolden : float = 0.0

Property Value

float

Remarks

  • void set_variation_embolden(float value)
  • float get_variation_embolden

variation_face_index

Active face index in the TrueType / OpenType collection file.

var variation_face_index : int = 0

Property Value

int

Remarks

  • void set_variation_face_index(int value)
  • int get_variation_face_index

variation_opentype

Font OpenType variation coordinates. More info: OpenType variation tags.

Note: This Dictionary uses OpenType tags as keys. Variation axes can be identified both by tags (int, e.g. 0x77678674) and names (String, e.g. wght). Some axes might be accessible by multiple names. For example, wght refers to the same axis as weight. Tags on the other hand are unique. To convert between names and tags, use TextServer.name_to_tag and TextServer.tag_to_name.

Note: To get available variation axes of a font, use get_supported_variation_list.

var variation_opentype : Dictionary = {}

Property Value

Dictionary

Remarks

variation_transform

2D transform, applied to the font outlines, can be used for slanting, flipping and rotating glyphs.

For example, to simulate italic typeface by slanting, apply the following transform Transform2D(1.0, slant, 0.0, 1.0, 0.0, 0.0).

var variation_transform : Transform2D = Transform2D(1, 0, 0, 1, 0, 0)

Property Value

Transform2D

Remarks

Methods

set_spacing(int, int)

Sets the spacing for spacing (see SpacingType) to value in pixels (not relative to the font size).

void set_spacing(int spacing, int value)

Parameters

spacing int
value int