virtualx-engine/doc/classes/Font.xml
bruvzg ecec415988
Use system fonts as fallback and improve system font handling.
Add support for font weight and stretch selection when using system fonts.
Add function to get system fallback font from a font name, style, text, and language code.
Implement system font support for Android.
Use system fonts as a last resort fallback.
2022-12-04 18:44:20 +02:00

328 lines
18 KiB
XML

<?xml version="1.0" encoding="UTF-8" ?>
<class name="Font" inherits="Resource" version="4.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../class.xsd">
<brief_description>
Base class for fonts and font variations.
</brief_description>
<description>
Font is the abstract base class for font, so it shouldn't be used directly. Other types of fonts inherit from it.
</description>
<tutorials>
</tutorials>
<methods>
<method name="draw_char" qualifiers="const">
<return type="float" />
<param index="0" name="canvas_item" type="RID" />
<param index="1" name="pos" type="Vector2" />
<param index="2" name="char" type="int" />
<param index="3" name="font_size" type="int" />
<param index="4" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
<description>
Draw a single Unicode character [param char] into a canvas item using the font, at a given position, with [param modulate] color. [param pos] specifies the baseline, not the top. To draw from the top, [i]ascent[/i] must be added to the Y axis.
[b]Note:[/b] Do not use this function to draw strings character by character, use [method draw_string] or [TextLine] instead.
</description>
</method>
<method name="draw_char_outline" qualifiers="const">
<return type="float" />
<param index="0" name="canvas_item" type="RID" />
<param index="1" name="pos" type="Vector2" />
<param index="2" name="char" type="int" />
<param index="3" name="font_size" type="int" />
<param index="4" name="size" type="int" default="-1" />
<param index="5" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
<description>
Draw a single Unicode character [param char] outline into a canvas item using the font, at a given position, with [param modulate] color and [param size] outline size. [param pos] specifies the baseline, not the top. To draw from the top, [i]ascent[/i] must be added to the Y axis.
[b]Note:[/b] Do not use this function to draw strings character by character, use [method draw_string] or [TextLine] instead.
</description>
</method>
<method name="draw_multiline_string" qualifiers="const">
<return type="void" />
<param index="0" name="canvas_item" type="RID" />
<param index="1" name="pos" type="Vector2" />
<param index="2" name="text" type="String" />
<param index="3" name="alignment" type="int" enum="HorizontalAlignment" default="0" />
<param index="4" name="width" type="float" default="-1" />
<param index="5" name="font_size" type="int" default="16" />
<param index="6" name="max_lines" type="int" default="-1" />
<param index="7" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
<param index="8" name="brk_flags" type="int" enum="TextServer.LineBreakFlag" default="3" />
<param index="9" name="jst_flags" type="int" enum="TextServer.JustificationFlag" default="3" />
<param index="10" name="direction" type="int" enum="TextServer.Direction" default="0" />
<param index="11" name="orientation" type="int" enum="TextServer.Orientation" default="0" />
<description>
Breaks [param text] into lines using rules specified by [param brk_flags] and draws it into a canvas item using the font, at a given position, with [param modulate] color, optionally clipping the width and aligning horizontally. [param pos] specifies the baseline of the first line, not the top. To draw from the top, [i]ascent[/i] must be added to the Y axis.
See also [method CanvasItem.draw_multiline_string].
</description>
</method>
<method name="draw_multiline_string_outline" qualifiers="const">
<return type="void" />
<param index="0" name="canvas_item" type="RID" />
<param index="1" name="pos" type="Vector2" />
<param index="2" name="text" type="String" />
<param index="3" name="alignment" type="int" enum="HorizontalAlignment" default="0" />
<param index="4" name="width" type="float" default="-1" />
<param index="5" name="font_size" type="int" default="16" />
<param index="6" name="max_lines" type="int" default="-1" />
<param index="7" name="size" type="int" default="1" />
<param index="8" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
<param index="9" name="brk_flags" type="int" enum="TextServer.LineBreakFlag" default="3" />
<param index="10" name="jst_flags" type="int" enum="TextServer.JustificationFlag" default="3" />
<param index="11" name="direction" type="int" enum="TextServer.Direction" default="0" />
<param index="12" name="orientation" type="int" enum="TextServer.Orientation" default="0" />
<description>
Breaks [param text] to the lines using rules specified by [param brk_flags] and draws text outline into a canvas item using the font, at a given position, with [param modulate] color and [param size] outline size, optionally clipping the width and aligning horizontally. [param pos] specifies the baseline of the first line, not the top. To draw from the top, [i]ascent[/i] must be added to the Y axis.
See also [method CanvasItem.draw_multiline_string_outline].
</description>
</method>
<method name="draw_string" qualifiers="const">
<return type="void" />
<param index="0" name="canvas_item" type="RID" />
<param index="1" name="pos" type="Vector2" />
<param index="2" name="text" type="String" />
<param index="3" name="alignment" type="int" enum="HorizontalAlignment" default="0" />
<param index="4" name="width" type="float" default="-1" />
<param index="5" name="font_size" type="int" default="16" />
<param index="6" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
<param index="7" name="jst_flags" type="int" enum="TextServer.JustificationFlag" default="3" />
<param index="8" name="direction" type="int" enum="TextServer.Direction" default="0" />
<param index="9" name="orientation" type="int" enum="TextServer.Orientation" default="0" />
<description>
Draw [param text] into a canvas item using the font, at a given position, with [param modulate] color, optionally clipping the width and aligning horizontally. [param pos] specifies the baseline, not the top. To draw from the top, [i]ascent[/i] must be added to the Y axis.
See also [method CanvasItem.draw_string].
</description>
</method>
<method name="draw_string_outline" qualifiers="const">
<return type="void" />
<param index="0" name="canvas_item" type="RID" />
<param index="1" name="pos" type="Vector2" />
<param index="2" name="text" type="String" />
<param index="3" name="alignment" type="int" enum="HorizontalAlignment" default="0" />
<param index="4" name="width" type="float" default="-1" />
<param index="5" name="font_size" type="int" default="16" />
<param index="6" name="size" type="int" default="1" />
<param index="7" name="modulate" type="Color" default="Color(1, 1, 1, 1)" />
<param index="8" name="jst_flags" type="int" enum="TextServer.JustificationFlag" default="3" />
<param index="9" name="direction" type="int" enum="TextServer.Direction" default="0" />
<param index="10" name="orientation" type="int" enum="TextServer.Orientation" default="0" />
<description>
Draw [param text] outline into a canvas item using the font, at a given position, with [param modulate] color and [param size] outline size, optionally clipping the width and aligning horizontally. [param pos] specifies the baseline, not the top. To draw from the top, [i]ascent[/i] must be added to the Y axis.
See also [method CanvasItem.draw_string_outline].
</description>
</method>
<method name="find_variation" qualifiers="const">
<return type="RID" />
<param index="0" name="variation_coordinates" type="Dictionary" />
<param index="1" name="face_index" type="int" default="0" />
<param index="2" name="strength" type="float" default="0.0" />
<param index="3" name="transform" type="Transform2D" default="Transform2D(1, 0, 0, 1, 0, 0)" />
<description>
Returns [TextServer] RID of the font cache for specific variation.
</description>
</method>
<method name="get_ascent" qualifiers="const">
<return type="float" />
<param index="0" name="font_size" type="int" default="16" />
<description>
Returns the average font ascent (number of pixels above the baseline).
[b]Note:[/b] Real ascent of the string is context-dependent and can be significantly different from the value returned by this function. Use it only as rough estimate (e.g. as the ascent of empty line).
</description>
</method>
<method name="get_char_size" qualifiers="const">
<return type="Vector2" />
<param index="0" name="char" type="int" />
<param index="1" name="font_size" type="int" />
<description>
Returns the size of a character, optionally taking kerning into account if the next character is provided.
[b]Note:[/b] Do not use this function to calculate width of the string character by character, use [method get_string_size] or [TextLine] instead. The height returned is the font height (see also [method get_height]) and has no relation to the glyph height.
</description>
</method>
<method name="get_descent" qualifiers="const">
<return type="float" />
<param index="0" name="font_size" type="int" default="16" />
<description>
Returns the average font descent (number of pixels below the baseline).
[b]Note:[/b] Real descent of the string is context-dependent and can be significantly different from the value returned by this function. Use it only as rough estimate (e.g. as the descent of empty line).
</description>
</method>
<method name="get_face_count" qualifiers="const">
<return type="int" />
<description>
Returns number of faces in the TrueType / OpenType collection.
</description>
</method>
<method name="get_fallbacks" qualifiers="const">
<return type="Font[]" />
<description>
Returns array of fallback [Font]s.
</description>
</method>
<method name="get_font_name" qualifiers="const">
<return type="String" />
<description>
Returns font family name.
</description>
</method>
<method name="get_font_stretch" qualifiers="const">
<return type="int" />
<description>
Returns font stretch amount, compared to a normal width. A percentage value between [code]50%[/code] and [code]200%[/code].
</description>
</method>
<method name="get_font_style" qualifiers="const">
<return type="int" enum="TextServer.FontStyle" />
<description>
Returns font style flags, see [enum TextServer.FontStyle].
</description>
</method>
<method name="get_font_style_name" qualifiers="const">
<return type="String" />
<description>
Returns font style name.
</description>
</method>
<method name="get_font_weight" qualifiers="const">
<return type="int" />
<description>
Returns weight (boldness) of the font. A value in the [code]100...999[/code] range, normal font weight is [code]400[/code], bold font weight is [code]700[/code].
</description>
</method>
<method name="get_height" qualifiers="const">
<return type="float" />
<param index="0" name="font_size" type="int" default="16" />
<description>
Returns the total average font height (ascent plus descent) in pixels.
[b]Note:[/b] Real height of the string is context-dependent and can be significantly different from the value returned by this function. Use it only as rough estimate (e.g. as the height of empty line).
</description>
</method>
<method name="get_multiline_string_size" qualifiers="const">
<return type="Vector2" />
<param index="0" name="text" type="String" />
<param index="1" name="alignment" type="int" enum="HorizontalAlignment" default="0" />
<param index="2" name="width" type="float" default="-1" />
<param index="3" name="font_size" type="int" default="16" />
<param index="4" name="max_lines" type="int" default="-1" />
<param index="5" name="brk_flags" type="int" enum="TextServer.LineBreakFlag" default="3" />
<param index="6" name="jst_flags" type="int" enum="TextServer.JustificationFlag" default="3" />
<param index="7" name="direction" type="int" enum="TextServer.Direction" default="0" />
<param index="8" name="orientation" type="int" enum="TextServer.Orientation" default="0" />
<description>
Returns the size of a bounding box of a string broken into the lines, taking kerning and advance into account.
See also [method draw_multiline_string].
</description>
</method>
<method name="get_opentype_features" qualifiers="const">
<return type="Dictionary" />
<description>
Returns a set of OpenType feature tags. More info: [url=https://docs.microsoft.com/en-us/typography/opentype/spec/featuretags]OpenType feature tags[/url].
</description>
</method>
<method name="get_rids" qualifiers="const">
<return type="RID[]" />
<description>
Returns [Array] of valid [Font] [RID]s, which can be passed to the [TextServer] methods.
</description>
</method>
<method name="get_spacing" qualifiers="const">
<return type="int" />
<param index="0" name="spacing" type="int" enum="TextServer.SpacingType" />
<description>
Returns the spacing for the given [code]type[/code] (see [enum TextServer.SpacingType]).
</description>
</method>
<method name="get_string_size" qualifiers="const">
<return type="Vector2" />
<param index="0" name="text" type="String" />
<param index="1" name="alignment" type="int" enum="HorizontalAlignment" default="0" />
<param index="2" name="width" type="float" default="-1" />
<param index="3" name="font_size" type="int" default="16" />
<param index="4" name="jst_flags" type="int" enum="TextServer.JustificationFlag" default="3" />
<param index="5" name="direction" type="int" enum="TextServer.Direction" default="0" />
<param index="6" name="orientation" type="int" enum="TextServer.Orientation" default="0" />
<description>
Returns the size of a bounding box of a single-line string, taking kerning and advance into account. See also [method get_multiline_string_size] and [method draw_string].
For example, to get the string size as displayed by a single-line Label, use:
[codeblocks]
[gdscript]
var string_size = $Label.get_theme_font("font").get_string_size($Label.text, HORIZONTAL_ALIGNMENT_LEFT, -1, $Label.get_theme_font_size("font_size"))
[/gdscript]
[csharp]
Label label = GetNode&lt;Label&gt;("Label");
Vector2 stringSize = label.GetThemeFont("font").GetStringSize(label.Text, HorizontalAlignment.Left, -1, label.GetThemeFontSize("font_size"));
[/csharp]
[/codeblocks]
[b]Note:[/b] Real height of the string is context-dependent and can be significantly different from the value returned by [method get_height].
</description>
</method>
<method name="get_supported_chars" qualifiers="const">
<return type="String" />
<description>
Returns a string containing all the characters available in the font.
If a given character is included in more than one font data source, it appears only once in the returned string.
</description>
</method>
<method name="get_supported_feature_list" qualifiers="const">
<return type="Dictionary" />
<description>
Returns list of OpenType features supported by font.
</description>
</method>
<method name="get_supported_variation_list" qualifiers="const">
<return type="Dictionary" />
<description>
Returns list of supported [url=https://docs.microsoft.com/en-us/typography/opentype/spec/dvaraxisreg]variation coordinates[/url], each coordinate is returned as [code]tag: Vector3i(min_value,max_value,default_value)[/code].
Font variations allow for continuous change of glyph characteristics along some given design axis, such as weight, width or slant.
</description>
</method>
<method name="get_underline_position" qualifiers="const">
<return type="float" />
<param index="0" name="font_size" type="int" default="16" />
<description>
Returns average pixel offset of the underline below the baseline.
[b]Note:[/b] Real underline position of the string is context-dependent and can be significantly different from the value returned by this function. Use it only as rough estimate.
</description>
</method>
<method name="get_underline_thickness" qualifiers="const">
<return type="float" />
<param index="0" name="font_size" type="int" default="16" />
<description>
Returns average thickness of the underline.
[b]Note:[/b] Real underline thickness of the string is context-dependent and can be significantly different from the value returned by this function. Use it only as rough estimate.
</description>
</method>
<method name="has_char" qualifiers="const">
<return type="bool" />
<param index="0" name="char" type="int" />
<description>
Returns [code]true[/code] if a Unicode [param char] is available in the font.
</description>
</method>
<method name="is_language_supported" qualifiers="const">
<return type="bool" />
<param index="0" name="language" type="String" />
<description>
Returns [code]true[/code], if font supports given language ([url=https://en.wikipedia.org/wiki/ISO_639-1]ISO 639[/url] code).
</description>
</method>
<method name="is_script_supported" qualifiers="const">
<return type="bool" />
<param index="0" name="script" type="String" />
<description>
Returns [code]true[/code], if font supports given script ([url=https://en.wikipedia.org/wiki/ISO_15924]ISO 15924[/url] code).
</description>
</method>
<method name="set_cache_capacity">
<return type="void" />
<param index="0" name="single_line" type="int" />
<param index="1" name="multi_line" type="int" />
<description>
Sets LRU cache capacity for [code]draw_*[/code] methods.
</description>
</method>
<method name="set_fallbacks">
<return type="void" />
<param index="0" name="fallbacks" type="Font[]" />
<description>
Sets array of fallback [Font]s.
</description>
</method>
</methods>
</class>