summaryrefslogtreecommitdiff
path: root/doc/classes/Font.xml
blob: 4b46f0082115ea5584d3c3889e77ee34f15ef5dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
<?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, advance and subpixel positioning 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] Since kerning, advance and subpixel positioning are taken into account by [method get_string_size], using separate [method get_string_size] calls on substrings of a string then adding the results together will return a different result compared to using a single [method get_string_size] call on the full string.
				[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.
				To print available variation axes of a variable font:
				[codeblock]
				var fv = FontVariation.new()
				fv.set_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])
				[/codeblock]
				[b]Note:[/b] To set and get variation coordinates of a [FontVariation], use [member FontVariation.variation_opentype].
			</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>