In the properties menu of a TextLabel or TextButton you will see the following properties:
- TextScaled (Bool)
- TextWrapped (Bool)
While you can enable Wrapped on it’s own, you cannot enable Scaled on it’s own. If you disable Wrapped while Scaled is enabled, Scaled will disable. If you enable Scaled with Wrapped disabled, Wrapped will enable.
Additionally, with wrapped, you have no control over how many lines it wraps to. It will simply wrap the text when it feels it needs to. When scaled is on with wrapped, I believe it wraps and scales to generate the largest font size but I don’t actually know the specifics of what it is doing to decide the best case scenario with both of those enabled.
My suggestion is to create a constraint, similar to UIStroke that overwrites these settings and gives us greater control.
Here is a hashed together mock up of what I’d be looking for:
TextWrapped
Similar to how UIStroke overwrites the settings of the stroke in the text label itself, my suggestion is that this setting overrides the text label’s settings.
In practice what this means is that if TextWrapped is disabled in the constraint, while TextScaled is enabled in the text label, then the text should be scaled to the largest singular line possible.
MaxWrappedLines
This would give a creator better control over exactly how many lines we want it to be. If we set it to 2 lines, it should maintain itself to two lines & will balance itself accordingly if scaled is also enabled to generate the largest font size while containing itself to 2 lines.
(I suppose alternatively we wouldn’t need the TextWrapped overwrite and could just have the MaxWrappedLines option set to 1 to generate the same behavior while Scaled is enabled but that may feel like hacky UX to generate that exactly. Either way, I want the functionality of “Give me the largest font possible while not wrapping the text” so whatever gets us there!)

