Font

继承: Resource < RefCounted < Object

派生: FontFile, FontVariation, SystemFont

字体和字体变体的抽象基类。

描述

不同字体类型的抽象基类。它具有绘制文本和字体字符内省的方法。

属性

方法

float

draw_char(canvas_item: RID, pos: Vector2, char: int, font_size: int, modulate: Color = Color(1, 1, 1, 1)) const

float

draw_char_outline(canvas_item: RID, pos: Vector2, char: int, font_size: int, size: int = -1, modulate: Color = Color(1, 1, 1, 1)) const

void

draw_multiline_string(canvas_item: RID, pos: Vector2, text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, max_lines: int = -1, modulate: Color = Color(1, 1, 1, 1), brk_flags: BitField[LineBreakFlag] = 3, justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0) const

void

draw_multiline_string_outline(canvas_item: RID, pos: Vector2, text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, max_lines: int = -1, size: int = 1, modulate: Color = Color(1, 1, 1, 1), brk_flags: BitField[LineBreakFlag] = 3, justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0) const

void

draw_string(canvas_item: RID, pos: Vector2, text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, modulate: Color = Color(1, 1, 1, 1), justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0) const

void

draw_string_outline(canvas_item: RID, pos: Vector2, text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, size: int = 1, modulate: Color = Color(1, 1, 1, 1), justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0) const

RID

find_variation(variation_coordinates: Dictionary, face_index: int = 0, strength: float = 0.0, transform: Transform2D = Transform2D(1, 0, 0, 1, 0, 0), spacing_top: int = 0, spacing_bottom: int = 0, spacing_space: int = 0, spacing_glyph: int = 0, baseline_offset: float = 0.0) const

float

get_ascent(font_size: int = 16) const

Vector2

get_char_size(char: int, font_size: int) const

float

get_descent(font_size: int = 16) const

int

get_face_count() const

String

get_font_name() const

int

get_font_stretch() const

BitField[FontStyle]

get_font_style() const

String

get_font_style_name() const

int

get_font_weight() const

float

get_height(font_size: int = 16) const

Vector2

get_multiline_string_size(text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, max_lines: int = -1, brk_flags: BitField[LineBreakFlag] = 3, justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0) const

Dictionary

get_opentype_features() const

Dictionary

get_ot_name_strings() const

Array[RID]

get_rids() const

int

get_spacing(spacing: SpacingType) const

Vector2

get_string_size(text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0) const

String

get_supported_chars() const

Dictionary

get_supported_feature_list() const

Dictionary

get_supported_variation_list() const

float

get_underline_position(font_size: int = 16) const

float

get_underline_thickness(font_size: int = 16) const

bool

has_char(char: int) const

bool

is_language_supported(language: String) const

bool

is_script_supported(script: String) const

void

set_cache_capacity(single_line: int, multi_line: int)


属性说明

Array[Font] fallbacks = [] 🔗

如果在当前Font中找不到字形,则使用后备Font数组作为替代。

如果此数组在FontVariation中为空,则使用FontVariation.base_font的回退。


方法说明

float draw_char(canvas_item: RID, pos: Vector2, char: int, font_size: int, modulate: Color = Color(1, 1, 1, 1)) const 🔗

使用字体在给定位置绘制单个Unicode字符char到画布项目中,使用modulate颜色。pos指定基线,而不是顶部。要从顶部绘制,必须将上升添加到Y轴。

注意:不要使用此函数逐个字符绘制字符串,而是使用draw_string()TextLine


float draw_char_outline(canvas_item: RID, pos: Vector2, char: int, font_size: int, size: int = -1, modulate: Color = Color(1, 1, 1, 1)) const 🔗

使用字体在给定位置绘制单个Unicode字符char轮廓,并使用modulate颜色和size轮廓大小。pos指定基线,而不是顶部。要从顶部绘制,必须将上升添加到Y轴。

注意:不要使用此函数逐个字符绘制字符串,而是使用draw_string()TextLine


void draw_multiline_string(canvas_item: RID, pos: Vector2, text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, max_lines: int = -1, modulate: Color = Color(1, 1, 1, 1), brk_flags: BitField[LineBreakFlag] = 3, justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0) const 🔗

使用brk_flags指定的规则将text分成行,并在给定位置使用字体将其绘制到画布项目中,使用modulate颜色,可选地裁剪宽度并水平对齐。pos指定第一行的基线,而不是顶部。要从顶部绘制,必须将ascent添加到Y轴。

另请参见CanvasItem.draw_multiline_string()


void draw_multiline_string_outline(canvas_item: RID, pos: Vector2, text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, max_lines: int = -1, size: int = 1, modulate: Color = Color(1, 1, 1, 1), brk_flags: BitField[LineBreakFlag] = 3, justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0) const 🔗

使用brk_flags指定的规则将text中断到行中,并在给定位置使用字体将文本轮廓绘制到画布项目中,使用modulate颜色和size轮廓大小,可选地裁剪宽度并水平对齐。pos指定第一行的基线,而不是顶部。要从顶部绘制,必须将上升添加到Y轴。

另请参见CanvasItem.draw_multiline_string_outline()


void draw_string(canvas_item: RID, pos: Vector2, text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, modulate: Color = Color(1, 1, 1, 1), justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0) const 🔗

在给定位置使用字体将text绘制到画布项目中,使用modulate颜色,可选择裁剪宽度并水平对齐。pos指定基线,而不是顶部。要从顶部绘制,必须将ascent添加到Y轴。

另请参见CanvasItem.draw_string()


void draw_string_outline(canvas_item: RID, pos: Vector2, text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, size: int = 1, modulate: Color = Color(1, 1, 1, 1), justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0) const 🔗

在给定位置使用字体将text轮廓绘制到画布项目中,使用modulate颜色和size轮廓大小,可选地裁剪宽度并水平对齐。pos指定基线,而不是顶部。要从顶部绘制,必须将上升添加到Y轴。

另请参见CanvasItem.draw_string_outline()


RID find_variation(variation_coordinates: Dictionary, face_index: int = 0, strength: float = 0.0, transform: Transform2D = Transform2D(1, 0, 0, 1, 0, 0), spacing_top: int = 0, spacing_bottom: int = 0, spacing_space: int = 0, spacing_glyph: int = 0, baseline_offset: float = 0.0) const 🔗

返回特定变体的字体缓存的TextServerRID。


float get_ascent(font_size: int = 16) const 🔗

返回平均字体上升(基线上方的像素数)。

注意:字符串的实际上升取决于上下文,并且可能与此函数返回的值显着不同。仅将其用作粗略估计(例如作为空行的上升)。


Vector2 get_char_size(char: int, font_size: int) const 🔗

返回字符的大小。不考虑字距调整。

注意:不要使用此函数逐个字符计算字符串的宽度,而是使用get_string_size()TextLine。返回的高度是字体高度(另见get_height()),与字形高度无关。


float get_descent(font_size: int = 16) const 🔗

返回平均字体下降(基线以下的像素数)。

注意:字符串的实际下降取决于上下文,并且可能与此函数返回的值显着不同。仅将其用作粗略估计(例如作为空行的下降)。


int get_face_count() const 🔗

返回TrueType/OpenType集合中的面数。


String get_font_name() const 🔗

返回字体族名。


int get_font_stretch() const 🔗

与正常宽度相比,返回字体拉伸量。50%200%之间的百分比值。


BitField[FontStyle] get_font_style() const 🔗

返回字体样式标志,请参阅FontStyle


String get_font_style_name() const 🔗

返回字体样式名称。


int get_font_weight() const 🔗

返回字体的权重(粗体)。100…999范围内的值,正常字体权重为400,粗体字体权重为700


float get_height(font_size: int = 16) const 🔗

以像素为单位返回总平均字体高度(上升加下降)。

注意:字符串的实际高度取决于上下文,并且可能与此函数返回的值显着不同。仅将其用作粗略估计(例如作为空行的高度)。


Vector2 get_multiline_string_size(text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, max_lines: int = -1, brk_flags: BitField[LineBreakFlag] = 3, justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0) const 🔗

返回分割成行的字符串的边界框的大小,并考虑到字距和前进。

另见draw_multiline_string()


Dictionary get_opentype_features() const 🔗

返回一组OpenType功能标签。更多信息:OpenType功能标签


Dictionary get_ot_name_strings() const 🔗

返回带有OpenType字体名称字符串(本地化字体名称、版本、描述、许可证信息、示例文本等)的Dictionary


Array[RID] get_rids() const 🔗

返回有效FontRIDs的Array,可以传递给TextServer方法。


int get_spacing(spacing: SpacingType) const 🔗

返回给定类型的行间距(参见SpacingType)。


Vector2 get_string_size(text: String, alignment: HorizontalAlignment = 0, width: float = -1, font_size: int = 16, justification_flags: BitField[JustificationFlag] = 3, direction: Direction = 0, orientation: Orientation = 0) const 🔗

返回单行字符串边界框的大小,同时考虑字距调整、步进量和亚像素定位。另请参见get_multiline_string_size()draw_string()

例如,要获取单行标签显示的字符串大小,请使用:

var string_size = $Label.get_theme_font("font").get_string_size($Label.text, HORIZONTAL_ALIGNMENT_LEFT, -1, $Label.get_theme_font_size("font_size"))

注意:由于get_string_size()考虑了字距、步进量和亚像素定位,因此对字符串的子字符串分别调用get_string_size()并将结果相加,得到的结果与对整个字符串调用get_string_size()的结果不同。

注意:字符串的实际高度取决于上下文,可能与get_height()的返回值有显著差异。


String get_supported_chars() const 🔗

返回包含字体中所有可用字符的字符串。

如果给定字符包含在多个字体数据源中,则它在返回的字符串中只出现一次。


Dictionary get_supported_feature_list() const 🔗

返回字体支持的OpenType功能列表。


Dictionary get_supported_variation_list() const 🔗

返回支持的变体坐标列表,坐标以tag: Vector3i(min_value,max_value,default_value)的形式返回。。

字体变体能够沿着某个给定的设计轴对字形的特性进行连续的变化,例如字重、宽度、斜度。

要输出可变字体的可用变体轴:

var fv = FontVariation.new()
fv.base_font = load("res://RobotoFlex.ttf")
var variation_list = fv.get_supported_variation_list()
for tag in variation_list:
    var name = TextServerManager.get_primary_interface().tag_to_name(tag)
    var values = variation_list[tag]
    print("variation axis: %s (%d)\n\tmin, max, default: %s" % [name, tag, values])

注意:FontVariation变体坐标的设置和获取请使用FontVariation.variation_opentype


float get_underline_position(font_size: int = 16) const 🔗

返回基线下方下划线的平均像素偏移量。

注意:字符串的实下划线位置取决于上下文,并且可能与此函数返回的值显着不同。仅将其用作粗略估计。


float get_underline_thickness(font_size: int = 16) const 🔗

返回下划线的平均厚度。

注意:字符串的真实下划线厚度取决于上下文,并且可能与此函数返回的值显着不同。仅将其用作粗略估计。


bool has_char(char: int) const 🔗

如果字体中有Unicodechar,则返回true


bool is_language_supported(language: String) const 🔗

如果字体支持给定的语言(ISO 639代码),则返回true


bool is_script_supported(script: String) const 🔗

如果字体支持给定的脚本(ISO 15924代码),则返回true


void set_cache_capacity(single_line: int, multi_line: int) 🔗

draw_*方法设置LRU缓存容量。