Skip to content

Commit 3097125

Browse files
committed
[TextParagraph/Button] Add support for line spacing.
1 parent 4c4e673 commit 3097125

File tree

12 files changed

+52
-14
lines changed

12 files changed

+52
-14
lines changed

doc/classes/Button.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,9 @@
127127
<theme_item name="icon_max_width" data_type="constant" type="int" default="0">
128128
The maximum allowed width of the [Button]'s icon. This limit is applied on top of the default size of the icon, or its expanded size if [member expand_icon] is [code]true[/code]. The height is adjusted according to the icon's ratio. If the button has additional icons (e.g. [CheckBox]), they will also be limited.
129129
</theme_item>
130+
<theme_item name="line_spacing" data_type="constant" type="int" default="0">
131+
Additional vertical spacing between lines (in pixels), spacing is added to line descent. This value can be negative.
132+
</theme_item>
130133
<theme_item name="outline_size" data_type="constant" type="int" default="0">
131134
The size of the text outline.
132135
[b]Note:[/b] If using a font with [member FontFile.multichannel_signed_distance_field] enabled, its [member FontFile.msdf_pixel_range] must be set to at least [i]twice[/i] the value of [theme_item outline_size] for outline rendering to look correct. Otherwise, the outline may appear to be cut off earlier than intended.

doc/classes/Label.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@
122122
[Color] of the text's shadow effect.
123123
</theme_item>
124124
<theme_item name="line_spacing" data_type="constant" type="int" default="3">
125-
Vertical space between lines in multiline [Label].
125+
Additional vertical spacing between lines (in pixels), spacing is added to line descent. This value can be negative.
126126
</theme_item>
127127
<theme_item name="outline_size" data_type="constant" type="int" default="0">
128128
Text outline size.

doc/classes/Label3D.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@
7979
Language code used for line-breaking and text shaping algorithms, if left empty current locale is used instead.
8080
</member>
8181
<member name="line_spacing" type="float" setter="set_line_spacing" getter="get_line_spacing" default="0.0">
82-
Vertical space between lines in multiline [Label3D].
82+
Additional vertical spacing between lines (in pixels), spacing is added to line descent. This value can be negative.
8383
</member>
8484
<member name="modulate" type="Color" setter="set_modulate" getter="get_modulate" default="Color(1, 1, 1, 1)" keywords="color, colour">
8585
Text [Color] of the [Label3D].

doc/classes/LabelSettings.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
Size of the text.
2020
</member>
2121
<member name="line_spacing" type="float" setter="set_line_spacing" getter="get_line_spacing" default="3.0">
22-
Vertical space between lines when the text is multiline.
22+
Additional vertical spacing between lines (in pixels), spacing is added to line descent. This value can be negative.
2323
</member>
2424
<member name="outline_color" type="Color" setter="set_outline_color" getter="get_outline_color" default="Color(1, 1, 1, 1)">
2525
The color of the outline.

doc/classes/RichTextLabel.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -810,7 +810,7 @@
810810
The default background color for odd rows.
811811
</theme_item>
812812
<theme_item name="line_separation" data_type="constant" type="int" default="0">
813-
The vertical space between lines.
813+
Additional vertical spacing between lines (in pixels), spacing is added to line descent. This value can be negative.
814814
</theme_item>
815815
<theme_item name="outline_size" data_type="constant" type="int" default="0">
816816
The size of the text outline.

doc/classes/TextEdit.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1624,7 +1624,7 @@
16241624
The caret's width in pixels. Greater values can be used to improve accessibility by ensuring the caret is easily visible, or to ensure consistency with a large font size. If set to [code]0[/code] or lower, the caret width is automatically set to 1 pixel and multiplied by the display scaling factor.
16251625
</theme_item>
16261626
<theme_item name="line_spacing" data_type="constant" type="int" default="4">
1627-
Sets the spacing between the lines.
1627+
Additional vertical spacing between lines (in pixels), spacing is added to line descent. This value can be negative.
16281628
</theme_item>
16291629
<theme_item name="outline_size" data_type="constant" type="int" default="0">
16301630
The size of the text outline.

doc/classes/TextMesh.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
Language code used for text shaping algorithms, if left empty current locale is used instead.
3838
</member>
3939
<member name="line_spacing" type="float" setter="set_line_spacing" getter="get_line_spacing" default="0.0">
40-
Vertical space between lines in multiline [TextMesh].
40+
Additional vertical spacing between lines (in pixels), spacing is added to line descent. This value can be negative.
4141
</member>
4242
<member name="offset" type="Vector2" setter="set_offset" getter="get_offset" default="Vector2(0, 0)">
4343
The text drawing offset (in pixels).

doc/classes/TextParagraph.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,9 @@
280280
<member name="justification_flags" type="int" setter="set_justification_flags" getter="get_justification_flags" enum="TextServer.JustificationFlag" is_bitfield="true" default="163">
281281
Line fill alignment rules. See [enum TextServer.JustificationFlag] for more information.
282282
</member>
283+
<member name="line_spacing" type="float" setter="set_line_spacing" getter="get_line_spacing" default="0.0">
284+
Additional vertical spacing between lines (in pixels), spacing is added to line descent. This value can be negative.
285+
</member>
283286
<member name="max_lines_visible" type="int" setter="set_max_lines_visible" getter="get_max_lines_visible" default="-1">
284287
Limits the lines of text shown.
285288
</member>

scene/gui/button.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -568,6 +568,7 @@ void Button::_shape(Ref<TextParagraph> p_paragraph, String p_text) {
568568
}
569569
autowrap_flags = autowrap_flags | TextServer::BREAK_TRIM_EDGE_SPACES;
570570
p_paragraph->set_break_flags(autowrap_flags);
571+
p_paragraph->set_line_spacing(theme_cache.line_spacing);
571572

572573
if (text_direction == Control::TEXT_DIRECTION_INHERITED) {
573574
p_paragraph->set_direction(is_layout_rtl() ? TextServer::DIRECTION_RTL : TextServer::DIRECTION_LTR);
@@ -840,6 +841,7 @@ void Button::_bind_methods() {
840841
BIND_THEME_ITEM(Theme::DATA_TYPE_CONSTANT, Button, icon_max_width);
841842

842843
BIND_THEME_ITEM(Theme::DATA_TYPE_CONSTANT, Button, align_to_largest_stylebox);
844+
BIND_THEME_ITEM(Theme::DATA_TYPE_CONSTANT, Button, line_spacing);
843845
}
844846

845847
Button::Button(const String &p_text) {

scene/gui/button.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ class Button : public BaseButton {
100100

101101
int h_separation = 0;
102102
int icon_max_width = 0;
103+
int line_spacing = 0;
103104
} theme_cache;
104105

105106
void _shape(Ref<TextParagraph> p_paragraph = Ref<TextParagraph>(), String p_text = "");

0 commit comments

Comments
 (0)